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 <camillelavey99@gmail.com>
This commit is contained in:
Aydar Kamaltdinov
2026-09-01 18:48:39 +02:00
committed by crueter
parent d0a6e951ff
commit b846577037
@@ -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{