diff options
| author | 2023-07-03 16:59:29 -0700 | |
|---|---|---|
| committer | 2023-07-03 16:59:29 -0700 | |
| commit | 44af2e32a4da24d27ebcbd01796bb651396927e9 (patch) | |
| tree | bffc68a5041279ece30a7d08ff5dae4c4dbb9c40 | |
| parent | Merge pull request #10943 from t895/stick-modifiers (diff) | |
| parent | video_core: vulkan_device: Change to driver version check. (diff) | |
| download | yuzu-44af2e32a4da24d27ebcbd01796bb651396927e9.tar.gz yuzu-44af2e32a4da24d27ebcbd01796bb651396927e9.tar.xz yuzu-44af2e32a4da24d27ebcbd01796bb651396927e9.zip | |
Merge pull request #10964 from bunnei/gpu-remove-qcom-check
video_core: vulkan_device: Fix S8Gen2 dynamic state checks.
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 421e71e5a..99ca7dbda 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -485,7 +485,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 485 | loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); | 485 | loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); |
| 486 | } | 486 | } |
| 487 | } | 487 | } |
| 488 | if (extensions.extended_dynamic_state2 && (is_radv || is_qualcomm)) { | 488 | if (extensions.extended_dynamic_state2 && is_radv) { |
| 489 | const u32 version = (properties.properties.driverVersion << 3) >> 3; | 489 | const u32 version = (properties.properties.driverVersion << 3) >> 3; |
| 490 | if (version < VK_MAKE_API_VERSION(0, 22, 3, 1)) { | 490 | if (version < VK_MAKE_API_VERSION(0, 22, 3, 1)) { |
| 491 | LOG_WARNING( | 491 | LOG_WARNING( |
| @@ -498,6 +498,19 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 498 | loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); | 498 | loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); |
| 499 | } | 499 | } |
| 500 | } | 500 | } |
| 501 | if (extensions.extended_dynamic_state2 && is_qualcomm) { | ||
| 502 | const u32 version = (properties.properties.driverVersion << 3) >> 3; | ||
| 503 | if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) { | ||
| 504 | // Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2. | ||
| 505 | LOG_WARNING(Render_Vulkan, | ||
| 506 | "Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2"); | ||
| 507 | features.extended_dynamic_state2.extendedDynamicState2 = false; | ||
| 508 | features.extended_dynamic_state2.extendedDynamicState2LogicOp = false; | ||
| 509 | features.extended_dynamic_state2.extendedDynamicState2PatchControlPoints = false; | ||
| 510 | extensions.extended_dynamic_state2 = false; | ||
| 511 | loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); | ||
| 512 | } | ||
| 513 | } | ||
| 501 | if (extensions.extended_dynamic_state3 && is_radv) { | 514 | if (extensions.extended_dynamic_state3 && is_radv) { |
| 502 | LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation"); | 515 | LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation"); |
| 503 | features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; | 516 | features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; |
| @@ -512,8 +525,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 512 | dynamic_state3_enables = false; | 525 | dynamic_state3_enables = false; |
| 513 | } | 526 | } |
| 514 | } | 527 | } |
| 515 | if (extensions.vertex_input_dynamic_state && (is_radv || is_qualcomm)) { | 528 | if (extensions.vertex_input_dynamic_state && is_radv) { |
| 516 | // Qualcomm S8gen2 drivers do not properly support vertex_input_dynamic_state. | ||
| 517 | // TODO(ameerj): Blacklist only offending driver versions | 529 | // TODO(ameerj): Blacklist only offending driver versions |
| 518 | // TODO(ameerj): Confirm if RDNA1 is affected | 530 | // TODO(ameerj): Confirm if RDNA1 is affected |
| 519 | const bool is_rdna2 = | 531 | const bool is_rdna2 = |
| @@ -526,6 +538,18 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 526 | loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); | 538 | loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); |
| 527 | } | 539 | } |
| 528 | } | 540 | } |
| 541 | if (extensions.vertex_input_dynamic_state && is_qualcomm) { | ||
| 542 | const u32 version = (properties.properties.driverVersion << 3) >> 3; | ||
| 543 | if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) { | ||
| 544 | // Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state. | ||
| 545 | LOG_WARNING( | ||
| 546 | Render_Vulkan, | ||
| 547 | "Qualcomm Adreno 7xx drivers have broken VK_EXT_vertex_input_dynamic_state"); | ||
| 548 | features.vertex_input_dynamic_state.vertexInputDynamicState = false; | ||
| 549 | extensions.vertex_input_dynamic_state = false; | ||
| 550 | loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); | ||
| 551 | } | ||
| 552 | } | ||
| 529 | 553 | ||
| 530 | sets_per_pool = 64; | 554 | sets_per_pool = 64; |
| 531 | if (extensions.extended_dynamic_state3 && is_amd_driver && | 555 | if (extensions.extended_dynamic_state3 && is_amd_driver && |