From 9ba45e7d33bb91d7b0fc65ecae9cbc8a2ba68593 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Tue, 7 Nov 2017 10:00:49 +0100 Subject: [PATCH] radv: Don't use vgpr indexing for outputs on GFX9. Due to LLVM bugs. Fixes a bunch of dEQP-VK.glsl.indexing.* tests. Fixes: e38685cc62e 'Revert "radv: disable support for VEGA for now."' Reviewed-by: Dave Airlie (cherry picked from commit 6ce550453f1df64caeb956f215d32da96b89f2b1) [Bas Nieuwenhuizen: resolve conflicts] Conflicts: src/amd/vulkan/radv_shader.c --- src/amd/vulkan/radv_pipeline.c | 6 ++++++ 1 file changed, 6 insertions(+) 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.