summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 9ee837c68..248b09855 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -498,14 +498,18 @@ 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 && is_s8gen2) { 501 if (extensions.extended_dynamic_state2 && is_qualcomm) {
502 // Qualcomm S8gen2 drivers do not properly support extended_dynamic_state2. 502 const u32 version = (properties.properties.driverVersion << 3) >> 3;
503 LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken VK_EXT_extended_dynamic_state2"); 503 if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) {
504 features.extended_dynamic_state2.extendedDynamicState2 = false; 504 // Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2.
505 features.extended_dynamic_state2.extendedDynamicState2LogicOp = false; 505 LOG_WARNING(Render_Vulkan,
506 features.extended_dynamic_state2.extendedDynamicState2PatchControlPoints = false; 506 "Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2");
507 extensions.extended_dynamic_state2 = false; 507 features.extended_dynamic_state2.extendedDynamicState2 = false;
508 loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); 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 }
509 } 513 }
510 if (extensions.extended_dynamic_state3 && is_radv) { 514 if (extensions.extended_dynamic_state3 && is_radv) {
511 LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation"); 515 LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation");
@@ -534,13 +538,17 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
534 loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); 538 loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
535 } 539 }
536 } 540 }
537 if (extensions.vertex_input_dynamic_state && is_qualcomm && is_s8gen2) { 541 if (extensions.vertex_input_dynamic_state && is_qualcomm) {
538 // Qualcomm S8gen2 drivers do not properly support vertex_input_dynamic_state. 542 const u32 version = (properties.properties.driverVersion << 3) >> 3;
539 LOG_WARNING(Render_Vulkan, 543 if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) {
540 "Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state"); 544 // Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state.
541 features.vertex_input_dynamic_state.vertexInputDynamicState = false; 545 LOG_WARNING(
542 extensions.vertex_input_dynamic_state = false; 546 Render_Vulkan,
543 loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); 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 }
544 } 552 }
545 553
546 sets_per_pool = 64; 554 sets_per_pool = 64;