summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2023-07-03 23:25:06 +0200
committerbunnei <bunneidev@gmail.com>2023-07-03 23:25:06 +0200
commitcef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74 (patch)
treed84234f18ed5c52e9021f0af5147fc356e1c38c2
parentvideo_core: vulkan_device: Scope S8Gen2 checks to just Qualcomm. (diff)
downloadyuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.tar
yuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.tar.gz
yuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.tar.bz2
yuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.tar.lz
yuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.tar.xz
yuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.tar.zst
yuzu-cef7aaa8ec35d378a1ad1e410f32c3aba3ddfa74.zip
-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
loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
}
}
- if (extensions.extended_dynamic_state2 && is_qualcomm && is_s8gen2) {
- // Qualcomm S8gen2 drivers do not properly support extended_dynamic_state2.
- LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken VK_EXT_extended_dynamic_state2");
- features.extended_dynamic_state2.extendedDynamicState2 = false;
- features.extended_dynamic_state2.extendedDynamicState2LogicOp = false;
- features.extended_dynamic_state2.extendedDynamicState2PatchControlPoints = false;
- extensions.extended_dynamic_state2 = false;
- loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
+ if (extensions.extended_dynamic_state2 && is_qualcomm) {
+ const u32 version = (properties.properties.driverVersion << 3) >> 3;
+ if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) {
+ // Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2.
+ LOG_WARNING(Render_Vulkan,
+ "Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2");
+ features.extended_dynamic_state2.extendedDynamicState2 = false;
+ features.extended_dynamic_state2.extendedDynamicState2LogicOp = false;
+ features.extended_dynamic_state2.extendedDynamicState2PatchControlPoints = false;
+ extensions.extended_dynamic_state2 = false;
+ loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
+ }
}
if (extensions.extended_dynamic_state3 && is_radv) {
LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation");
@@ -534,13 +538,17 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
}
}
- if (extensions.vertex_input_dynamic_state && is_qualcomm && is_s8gen2) {
- // Qualcomm S8gen2 drivers do not properly support vertex_input_dynamic_state.
- LOG_WARNING(Render_Vulkan,
- "Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state");
- features.vertex_input_dynamic_state.vertexInputDynamicState = false;
- extensions.vertex_input_dynamic_state = false;
- loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
+ if (extensions.vertex_input_dynamic_state && is_qualcomm) {
+ const u32 version = (properties.properties.driverVersion << 3) >> 3;
+ if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) {
+ // Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state.
+ LOG_WARNING(
+ Render_Vulkan,
+ "Qualcomm Adreno 7xx drivers have broken VK_EXT_vertex_input_dynamic_state");
+ features.vertex_input_dynamic_state.vertexInputDynamicState = false;
+ extensions.vertex_input_dynamic_state = false;
+ loaded_extensions.erase(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
+ }
}
sets_per_pool = 64;