radeonsi/gfx9: work around a GPU hang due to broken indirect indexing in LLVM

Fixes: 6d19120da8 "radeonsi/gfx9: workaround for INTERP with indirect indexing"
Cc: 18.1 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
(cherry picked from commit 597b9e8810)
This commit is contained in:
Marek Olšák 2018-05-01 20:16:19 -04:00 committed by Dylan Baker
parent 421aedcc59
commit 1def4eaa5c

View file

@ -484,6 +484,15 @@ static int si_get_shader_param(struct pipe_screen* pscreen,
!sscreen->llvm_has_working_vgpr_indexing)
return 0;
/* Doing indirect indexing on GFX9 with LLVM 6.0 hangs.
* This means we don't support INTERP instructions with
* indirect indexing on inputs.
*/
if (shader == PIPE_SHADER_FRAGMENT &&
!sscreen->llvm_has_working_vgpr_indexing &&
HAVE_LLVM < 0x0700)
return 0;
/* TCS and TES load inputs directly from LDS or offchip
* memory, so indirect indexing is always supported.
* PS has to support indirect indexing, because we can't