radv: Don't use vgpr indexing for outputs on GFX9.

Due to LLVM bugs. Fixes a bunch of dEQP-VK.glsl.indexing.*
tests.

Fixes: e38685cc62 'Revert "radv: disable support for VEGA for now."'
Reviewed-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 6ce550453f)
[Bas Nieuwenhuizen: resolve conflicts]

Conflicts:
        src/amd/vulkan/radv_shader.c
This commit is contained in:
Bas Nieuwenhuizen 2017-11-07 10:00:49 +01:00 committed by Andres Gomez
parent 662cff8fe4
commit 9ba45e7d33

View file

@ -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.