Although gl_SampleMaskIn is declared as an array in GLSL, it is effectively a 32 bit mask on all hardware supported by mesa, so the array indexing is ignored (Thanks Glenn Kennard for the explanation).
Add a comment that the assert is not made superfluos by the else branch. Corrects: piglit spec@arb_gpu_shader5@execution@samplemaskin-indirect for debug builds (it already passed in release). Signed-off-by: Gert Wollny <[email protected]> --- src/gallium/drivers/r600/sb/sb_bc_parser.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp index 970e4141d5..b92e058daf 100644 --- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp +++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp @@ -125,7 +125,9 @@ int bc_parser::parse_decls() { return 0; } - if (pshader->indirect_files & ~((1 << TGSI_FILE_CONSTANT) | (1 << TGSI_FILE_SAMPLER))) { + if (pshader->indirect_files & + ~((1 << TGSI_FILE_CONSTANT) | (1 << TGSI_FILE_SAMPLER) | + (1 << TGSI_FILE_SYSTEM_VALUE))) { assert(pshader->num_arrays); @@ -135,6 +137,10 @@ int bc_parser::parse_decls() { sh->add_gpr_array(a.gpr_start, a.gpr_count, a.comp_mask); } } else { + /* When the above assert is disabled and proper array info + * is missing for some reason then, as a fallback, make sure + * that all GPRs can be accessed indirectly. + */ sh->add_gpr_array(0, pshader->bc.ngpr, 0x0F); } } -- 2.13.6 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
