Browse Source

vulkan: determine correct supported api version

niki 2 years ago
parent
commit
50cc954d6a

+ 1 - 1
src/modules/graphics/vulkan/Graphics.cpp

@@ -82,7 +82,7 @@ Graphics::Graphics()
 
 	volkInitializeCustom((PFN_vkGetInstanceProcAddr)SDL_Vulkan_GetVkGetInstanceProcAddr());
 
-	vulkanApiVersion = volkGetInstanceVersion();
+	vulkanApiVersion = Vulkan::getSupportedVulkanApiVersion(volkGetInstanceVersion());
 }
 
 Graphics::~Graphics()

+ 0 - 14
src/modules/graphics/vulkan/Shader.cpp

@@ -275,20 +275,6 @@ VkPipeline Shader::getComputePipeline() const
 	return computePipeline;
 }
 
-static VkDescriptorImageInfo *createDescriptorImageInfo(graphics::Texture *texture, bool sampler)
-{
-	auto vkTexture = (Texture*)texture;
-
-	auto imageInfo = new VkDescriptorImageInfo();
-
-	imageInfo->imageLayout = vkTexture->getImageLayout();
-	imageInfo->imageView = (VkImageView)vkTexture->getRenderTargetHandle();
-	if (sampler)
-		imageInfo->sampler = (VkSampler)vkTexture->getSamplerHandle();
-
-	return imageInfo;
-}
-
 void Shader::newFrame(uint32_t frameIndex)
 {
 	currentFrame = frameIndex;

+ 18 - 0
src/modules/graphics/vulkan/Vulkan.cpp

@@ -58,6 +58,24 @@ int Vulkan::getVsync()
 	return vsync;
 }
 
+uint32_t Vulkan::getSupportedVulkanApiVersion(uint32_t suggested)
+{
+#ifdef VK_VERSION_1_3
+	if (suggested >= VK_API_VERSION_1_3)
+		return VK_API_VERSION_1_3;
+#endif
+#ifdef VK_VERSION_1_2
+	if (suggested >= VK_API_VERSION_1_2)
+		return VK_API_VERSION_1_2;
+#endif
+#ifdef VK_VERSION_1_1
+	if (suggested >= VK_API_VERSION_1_1)
+		return VK_API_VERSION_1_1;
+#endif
+
+	return VK_API_VERSION_1_0;
+}
+
 VkFormat Vulkan::getVulkanVertexFormat(DataFormat format)
 {
 	switch (format)

+ 1 - 0
src/modules/graphics/vulkan/Vulkan.h

@@ -59,6 +59,7 @@ public:
 	static void setVsync(int vsync);
 	static int getVsync();
 
+	static uint32_t getSupportedVulkanApiVersion(uint32_t suggested);
 	static VkFormat getVulkanVertexFormat(DataFormat format);
 	static TextureFormat getTextureFormat(PixelFormat);
 	static std::string getVendorName(uint32_t vendorId);