diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index e5487fa665c..56b987afda9 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -290,6 +290,12 @@ radv_shader_compile_to_nir(struct radv_device *device, nir_variable_mode indirect_mask = 0; indirect_mask |= nir_var_shader_in; + if (!llvm_has_working_vgpr_indexing && + (nir->info.stage == MESA_SHADER_VERTEX || + nir->info.stage == MESA_SHADER_TESS_EVAL || + nir->info.stage == MESA_SHADER_FRAGMENT)) + indirect_mask |= nir_var_shader_out; + /* TODO: We shouldn't need to do this, however LLVM isn't currently * smart enough to handle indirects without causing excess spilling * causing the gpu to hang.