From b8465770370049eb222769254d773174e1323125 Mon Sep 17 00:00:00 2001 From: Aydar Kamaltdinov Date: Tue, 1 Sep 2026 18:48:39 +0200 Subject: [PATCH] vulkan: force subgroup-in-geometry fallback on Turnip (#4344) Turnip reports VK_SHADER_STAGE_GEOMETRY_BIT in supportedStages, but its ballot/shuffle results in the geometry stage are wrong, corrupting the compaction-based draws (missing/incorrect meshes and textures observed in NieR Automata). Vendor Qualcomm drivers don't advertise geometry support and use the existing fallback correctly. Force the fallback on Turnip too, ignoring the advertised capability. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4344 Reviewed-by: CamilleLaVey --- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index a6005a7c5b..b9e5886945 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -369,7 +369,8 @@ PipelineCache::PipelineCache(Tegra::MaxwellDeviceMemoryManager& device_memory_, Shader::Stage::TessellationControl) | subgroup_stage_bit(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, Shader::Stage::TessellationEval) | - subgroup_stage_bit(VK_SHADER_STAGE_GEOMETRY_BIT, Shader::Stage::Geometry) | + subgroup_stage_bit(driver_id == VK_DRIVER_ID_MESA_TURNIP ? 0 : VK_SHADER_STAGE_GEOMETRY_BIT, + Shader::Stage::Geometry) | subgroup_stage_bit(VK_SHADER_STAGE_FRAGMENT_BIT, Shader::Stage::Fragment) | subgroup_stage_bit(VK_SHADER_STAGE_COMPUTE_BIT, Shader::Stage::Compute)}; profile = Shader::Profile{