diff options
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 7b2ca8046..2ddf0b104 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -664,6 +664,17 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 664 | const bool is_amd = | 664 | const bool is_amd = |
| 665 | driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE; | 665 | driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE; |
| 666 | if (is_amd) { | 666 | if (is_amd) { |
| 667 | // TODO(lat9nq): Add an upper bound when AMD fixes their VK_KHR_push_descriptor | ||
| 668 | const bool has_broken_push_descriptor = VK_VERSION_MAJOR(properties.driverVersion) == 2 && | ||
| 669 | VK_VERSION_MINOR(properties.driverVersion) == 0 && | ||
| 670 | VK_VERSION_PATCH(properties.driverVersion) >= 226; | ||
| 671 | if (khr_push_descriptor && has_broken_push_descriptor) { | ||
| 672 | LOG_WARNING( | ||
| 673 | Render_Vulkan, | ||
| 674 | "Disabling AMD driver 2.0.226 and later from broken VK_KHR_push_descriptor"); | ||
| 675 | khr_push_descriptor = false; | ||
| 676 | } | ||
| 677 | |||
| 667 | // AMD drivers need a higher amount of Sets per Pool in certain circunstances like in XC2. | 678 | // AMD drivers need a higher amount of Sets per Pool in certain circunstances like in XC2. |
| 668 | sets_per_pool = 96; | 679 | sets_per_pool = 96; |
| 669 | // Disable VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT on AMD GCN4 and lower as it is broken. | 680 | // Disable VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT on AMD GCN4 and lower as it is broken. |