Check device extensions before enabling (this fixes renderdoc)
This commit is contained in:
parent
f4b6e2b08d
commit
a1bca32cd8
1 changed files with 29 additions and 14 deletions
43
vulkan_utl.h
43
vulkan_utl.h
|
@ -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
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue