From: Vadim Girlin Date: Sat, 25 May 2013 18:56:53 +0000 (+0400) Subject: r600g/sb: fix handling of preloaded inputs for compute shaders X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=44a117ab9ac7e18ffddf4d59ae35fe2c266efc1d;p=mesa.git r600g/sb: fix handling of preloaded inputs for compute shaders For compute shaders we need to let the backend know that GPRs 0 and 1 are preloaded with some compute-specific input values, otherwise any use of these regs without previous definition is considered as undefined value and usually is simply replaced with 0. Signed-off-by: Vadim Girlin --- diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp index 3ea09cb73b4..c2443b8ef6c 100644 --- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp +++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp @@ -111,6 +111,10 @@ int bc_parser::parse_decls() { if (!pshader) { if (gpr_reladdr) sh->add_gpr_array(0, bc->ngpr, 0x0F); + + // compute shaders have some values preloaded in R0, R1 + sh->add_input(0 /* GPR */, true /* preloaded */, 0x0F /* mask */); + sh->add_input(1 /* GPR */, true /* preloaded */, 0x0F /* mask */); return 0; }