Check device extensions before enabling (this fixes renderdoc)

This commit is contained in:
mittorn 2024-10-31 04:07:59 +03:00
parent f4b6e2b08d
commit a1bca32cd8

View file

@ -373,20 +373,35 @@ struct VulkanDevice
};
const char *deviceExtensions[16];
uint32_t deviceExtensionsCount = 0;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME;
//deviceExtensions[deviceExtensionsCount++] = VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_BIND_MEMORY_2_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_MAINTENANCE1_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME;
deviceExtensions[deviceExtensionsCount++] = VK_KHR_SWAPCHAIN_EXTENSION_NAME;
uint32_t avCount = 0;
vkEnumerateDeviceExtensionProperties(physicalDevice, NULL, &avCount, NULL);
VkExtensionProperties props[avCount];
vkEnumerateDeviceExtensionProperties(physicalDevice, NULL, &avCount, props);
auto addExtension = [&](const char *Name){
int j;
for(j = 0; j < avCount; j++)
{
if(!strcmp(Name,props[j].extensionName))
break;
}
if(j == avCount)
printf("Extension %s not availaible\n", Name);
else
deviceExtensions[deviceExtensionsCount++] = Name;
};
addExtension(VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME);
//addExtension(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME);
addExtension(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME);
addExtension(VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME);
addExtension(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME);
addExtension(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME);
addExtension(VK_KHR_BIND_MEMORY_2_EXTENSION_NAME);
addExtension(VK_KHR_MAINTENANCE1_EXTENSION_NAME);
addExtension(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME);
addExtension(VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME);
addExtension(VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME);
addExtension(VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME);
addExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME);
VkPhysicalDeviceFeatures enabled_features = {
.samplerAnisotropy = VK_TRUE
};