From 705ca3aef48fe0c05c365b1ad995b1a4eccdad85 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Mon, 2 Feb 2026 16:11:06 -0400 Subject: [PATCH] Revert "[vulkan, qcom] Removing faulty DepthTest from QCOM drivers" --- src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 5 +---- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 4 +--- src/video_core/vulkan_common/vulkan_device.cpp | 4 ---- src/video_core/vulkan_common/vulkan_device.h | 6 ------ 4 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index d46b201fe1..13044f18a0 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -844,6 +844,7 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { static constexpr std::array extended{ VK_DYNAMIC_STATE_CULL_MODE_EXT, VK_DYNAMIC_STATE_FRONT_FACE_EXT, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT, VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT, VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT, VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT, @@ -852,10 +853,6 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { }; dynamic_states.insert(dynamic_states.end(), extended.begin(), extended.end()); - if (device.SupportsDepthTestEnable()) { - dynamic_states.push_back(VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT); - } - // VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT if (!key.state.dynamic_vertex_input) { dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 5f39c8a691..4650e827b3 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -1026,9 +1026,7 @@ void RasterizerVulkan::UpdateDynamicStates() { UpdateStencilOp(regs); if (state_tracker.TouchStateEnable()) { UpdateDepthBoundsTestEnable(regs); - if (device.SupportsDepthTestEnable()) { - UpdateDepthTestEnable(regs); - } + UpdateDepthTestEnable(regs); UpdateDepthWriteEnable(regs); UpdateStencilTestEnable(regs); } diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index d062ecfea6..979f9a0ca7 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -502,10 +502,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR sets_per_pool = 1024; LOG_INFO(Render_Vulkan, "Qualcomm: forcing {} sets per pool", sets_per_pool); - LOG_WARNING(Render_Vulkan, - "Qualcomm: Disabling broken VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT"); - supports_depth_test_enable = false; - #if defined(ANDROID) && defined(ARCHITECTURE_arm64) // BCn patching only safe on Android 9+ (API 28+). Older versions crash on driver load. const auto major = (properties.properties.driverVersion >> 24) << 2; diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 351ea46beb..82f925d450 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -607,11 +607,6 @@ public: return extensions.extended_dynamic_state; } - /// Returns true if the device supports VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT. - bool SupportsDepthTestEnable() const { - return supports_depth_test_enable; - } - /// Returns true if the device supports VK_EXT_extended_dynamic_state2. bool IsExtExtendedDynamicState2Supported() const { return extensions.extended_dynamic_state2; @@ -1072,7 +1067,6 @@ private: bool dynamic_state3_provoking_vertex_mode{}; bool supports_conditional_barriers{}; ///< Allows barriers in conditional control flow. bool supports_dynamic_state{true}; ///< Core Vulkan 1.0 dynamic states - bool supports_depth_test_enable{true}; ///< Supports VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT size_t sampler_heap_budget{}; ///< Sampler budget for buggy drivers (0 = unlimited). u64 device_access_memory{}; ///< Total size of device local memory in bytes. u32 sets_per_pool{}; ///< Sets per Description Pool