diff options
| author | Liam <byteslice@airmail.cc> | 2023-06-15 12:29:23 -0400 | 
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2023-06-15 12:29:54 -0400 | 
| commit | 3304d58edb257b8349bc06f9f95f92897d2a2d38 (patch) | |
| tree | eb03233071f25920762939fa67b6aaa0015cad15 /src/video_core | |
| parent | ce0510913a5531cfd58cba80791f45af8a8e7ec9 (diff) | |
vulkan_device: disable extended_dynamic_state2 on ARM drivers
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 15 | 
1 files changed, 10 insertions, 5 deletions
| diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index a46f9beed..3d2e9a16a 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -344,6 +344,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR      const bool is_qualcomm = driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY;      const bool is_turnip = driver_id == VK_DRIVER_ID_MESA_TURNIP;      const bool is_s8gen2 = device_id == 0x43050a01; +    const bool is_arm = driver_id == VK_DRIVER_ID_ARM_PROPRIETARY;      if ((is_mvk || is_qualcomm || is_turnip) && !is_suitable) {          LOG_WARNING(Render_Vulkan, "Unsuitable driver, continuing anyway"); @@ -391,7 +392,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR      CollectPhysicalMemoryInfo();      CollectToolingInfo(); -#ifdef ANDROID      if (is_qualcomm || is_turnip) {          LOG_WARNING(Render_Vulkan,                      "Qualcomm and Turnip drivers have broken VK_EXT_custom_border_color"); @@ -411,7 +411,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR          extensions.push_descriptor = false;          loaded_extensions.erase(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); -#ifdef ARCHITECTURE_arm64 +#if defined(ANDROID) && defined(ARCHITECTURE_arm64)          // Patch the driver to enable BCn textures.          const auto major = (properties.properties.driverVersion >> 24) << 2;          const auto minor = (properties.properties.driverVersion >> 12) & 0xFFFU; @@ -431,18 +431,23 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR          } else {              LOG_WARNING(Render_Vulkan, "Adreno driver can't be patched to enable BCn textures");          } -#endif // ARCHITECTURE_arm64 +#endif      } -    const bool is_arm = driver_id == VK_DRIVER_ID_ARM_PROPRIETARY;      if (is_arm) {          must_emulate_scaled_formats = true;          LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state");          extensions.extended_dynamic_state = false;          loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); + +        LOG_WARNING(Render_Vulkan, "ARM 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);      } -#endif // ANDROID      if (is_nvidia) {          const u32 nv_major_version = (properties.properties.driverVersion >> 22) & 0x3ff; | 
