aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2025-11-05 05:46:23 +0100
committercrueter <crueter@eden-emu.dev>2025-11-05 05:46:23 +0100
commit9406438d51a3d827c2d6b6bc77dc36734ec2f991 (patch)
tree9746fbe7dfb42df3983d3de7608d048e6ea20297 /src
parent612da00d1bf7415cc4c1c8ccfc6ce9216dcce7b4 (diff)
[vk] disable VK_EXT_vertex_input_dynamic_state again (#2954)
DO NOT REMOVE THIS! EVER! EVEN IF MESA CLAIMS TO FIX IT! A few months ago, Aleksandr and I did extensive testing on a 6600 and 6950XT and were able to confirm that VK_EXT_vertex_input_dynamic_state is indeed broken beyond repair on RADV. MESA has claimed multiple times to fix this, yet it's never budged once (average GitLab users) Most games literally do not work without this. DO. NOT. REMOVE. EVER! Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2954 Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 9b7f426266..170627ea1b 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -611,6 +611,24 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
dynamic_state3_enables = false;
}
}
+
+ // DO NOT REMOVE THIS!!!!!!!!!!!!!!!!!
+ // We have confirmed on multiple different occasions that this is completely broken on RADV
+ // Apparently very old versions of RADV on RDNA3 as well
+ // RDNA1 status is unknown
+ // https://gitlab.freedesktop.org/mesa/mesa/-/issues/6577
+ // MESA claims to have fixed it multiple times yet they haven't (expected for a project that uses GitLab)
+ if (extensions.vertex_input_dynamic_state && is_radv) {
+ const bool is_rdna2 =
+ supported_extensions.contains(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME);
+ if (is_rdna2 && !force_extensions) {
+ LOG_WARNING(Render_Vulkan,
+ "RADV has broken VK_EXT_vertex_input_dynamic_state on RDNA2 hardware");
+ RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
+ features.vertex_input_dynamic_state,
+ VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
+ }
+ }
if (extensions.extended_dynamic_state3 &&
(is_amd_driver || driver_id == VK_DRIVER_ID_SAMSUNG_PROPRIETARY) && !force_extensions) {
// AMD and Samsung drivers have broken extendedDynamicState3ColorBlendEquation