diff options
| author | 2023-11-30 09:21:27 -0500 | |
|---|---|---|
| committer | 2023-11-30 09:21:27 -0500 | |
| commit | 127bfb81d5f03eb86f21053e6423083fec18d3fa (patch) | |
| tree | 2c3c6f94801be28baefbf289d8b6d365445e5735 /src/video_core/vulkan_common | |
| parent | Merge pull request #12227 from jbeich/gamemode (diff) | |
| parent | renderer_vulkan: exclude more qcom drivers from extensions (diff) | |
| download | yuzu-127bfb81d5f03eb86f21053e6423083fec18d3fa.tar.gz yuzu-127bfb81d5f03eb86f21053e6423083fec18d3fa.tar.xz yuzu-127bfb81d5f03eb86f21053e6423083fec18d3fa.zip | |
Merge pull request #12229 from liamwhite/qcom-wtf
renderer_vulkan: exclude more qcom drivers from extensions
Diffstat (limited to 'src/video_core/vulkan_common')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 188ceeed7..1fda0042d 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -519,10 +519,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 519 | LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state"); | 519 | LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state"); |
| 520 | RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, | 520 | RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, |
| 521 | VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); | 521 | VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); |
| 522 | |||
| 523 | LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state2"); | ||
| 524 | RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2, | ||
| 525 | VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); | ||
| 526 | } | 522 | } |
| 527 | 523 | ||
| 528 | if (is_nvidia) { | 524 | if (is_nvidia) { |
| @@ -611,17 +607,12 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 611 | } | 607 | } |
| 612 | } | 608 | } |
| 613 | if (extensions.vertex_input_dynamic_state && is_qualcomm) { | 609 | if (extensions.vertex_input_dynamic_state && is_qualcomm) { |
| 614 | const u32 version = (properties.properties.driverVersion << 3) >> 3; | 610 | // Qualcomm drivers do not properly support vertex_input_dynamic_state. |
| 615 | if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) && | 611 | LOG_WARNING(Render_Vulkan, |
| 616 | version < VK_MAKE_API_VERSION(0, 0, 680, 0)) { | 612 | "Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state"); |
| 617 | // Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state. | 613 | RemoveExtensionFeature(extensions.vertex_input_dynamic_state, |
| 618 | LOG_WARNING( | 614 | features.vertex_input_dynamic_state, |
| 619 | Render_Vulkan, | 615 | VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); |
| 620 | "Qualcomm Adreno 7xx drivers have broken VK_EXT_vertex_input_dynamic_state"); | ||
| 621 | RemoveExtensionFeature(extensions.vertex_input_dynamic_state, | ||
| 622 | features.vertex_input_dynamic_state, | ||
| 623 | VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); | ||
| 624 | } | ||
| 625 | } | 616 | } |
| 626 | 617 | ||
| 627 | sets_per_pool = 64; | 618 | sets_per_pool = 64; |
| @@ -704,6 +695,22 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR | |||
| 704 | std::min(properties.properties.limits.maxVertexInputBindings, 16U); | 695 | std::min(properties.properties.limits.maxVertexInputBindings, 16U); |
| 705 | } | 696 | } |
| 706 | 697 | ||
| 698 | if (!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) { | ||
| 699 | LOG_INFO(Render_Vulkan, | ||
| 700 | "Removing extendedDynamicState2 due to missing extendedDynamicState"); | ||
| 701 | RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2, | ||
| 702 | VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); | ||
| 703 | } | ||
| 704 | |||
| 705 | if (!extensions.extended_dynamic_state2 && extensions.extended_dynamic_state3) { | ||
| 706 | LOG_INFO(Render_Vulkan, | ||
| 707 | "Removing extendedDynamicState3 due to missing extendedDynamicState2"); | ||
| 708 | RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3, | ||
| 709 | VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); | ||
| 710 | dynamic_state3_blending = false; | ||
| 711 | dynamic_state3_enables = false; | ||
| 712 | } | ||
| 713 | |||
| 707 | logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), | 714 | logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), |
| 708 | first_next, dld); | 715 | first_next, dld); |
| 709 | 716 | ||