summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2023-07-03 16:59:29 -0700
committerGravatar GitHub2023-07-03 16:59:29 -0700
commit44af2e32a4da24d27ebcbd01796bb651396927e9 (patch)
treebffc68a5041279ece30a7d08ff5dae4c4dbb9c40
parentMerge pull request #10943 from t895/stick-modifiers (diff)
parentvideo_core: vulkan_device: Change to driver version check. (diff)
downloadyuzu-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.cpp30
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 &&