st/mesa: gl_program::info.system_values_read is a 64-bit-field

We were dropping the upper 32 bits, which caused assertion failures in
some compute shader piglit tests with radeonsi since the commit below.

Fixes: 752e969703 ("compiler: Add two new system values for subgroups")
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Michel Dänzer 2018-03-08 17:32:50 +01:00 committed by Michel Dänzer
parent 379e00dc27
commit 2a4596a2f0
2 changed files with 7 additions and 7 deletions

View File

@ -6532,10 +6532,10 @@ st_translate_program(
/* Declare misc input registers
*/
{
GLbitfield sysInputs = proginfo->info.system_values_read;
GLbitfield64 sysInputs = proginfo->info.system_values_read;
for (i = 0; sysInputs; i++) {
if (sysInputs & (1 << i)) {
if (sysInputs & (1ull << i)) {
enum tgsi_semantic semName = _mesa_sysval_to_semantic(i);
t->systemValues[i] = ureg_DECL_system_value(ureg, semName, 0);
@ -6567,7 +6567,7 @@ st_translate_program(
emit_wpos(st_context(ctx), t, proginfo, ureg,
program->wpos_transform_const);
sysInputs &= ~(1 << i);
sysInputs &= ~(1ull << i);
}
}
}
@ -6864,7 +6864,7 @@ get_mesa_program_tgsi(struct gl_context *ctx,
/* This must be done before the uniform storage is associated. */
if (shader->Stage == MESA_SHADER_FRAGMENT &&
(prog->info.inputs_read & VARYING_BIT_POS ||
prog->info.system_values_read & (1 << SYSTEM_VALUE_FRAG_COORD))) {
prog->info.system_values_read & (1ull << SYSTEM_VALUE_FRAG_COORD))) {
static const gl_state_index16 wposTransformState[STATE_LENGTH] = {
STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM
};

View File

@ -951,9 +951,9 @@ st_translate_mesa_program(struct gl_context *ctx,
/* Declare misc input registers
*/
GLbitfield sysInputs = program->info.system_values_read;
GLbitfield64 sysInputs = program->info.system_values_read;
for (i = 0; sysInputs; i++) {
if (sysInputs & (1 << i)) {
if (sysInputs & (1ull << i)) {
unsigned semName = _mesa_sysval_to_semantic(i);
t->systemValues[i] = ureg_DECL_system_value(ureg, semName, 0);
@ -985,7 +985,7 @@ st_translate_mesa_program(struct gl_context *ctx,
semName == TGSI_SEMANTIC_POSITION)
emit_wpos(st_context(ctx), t, program, ureg);
sysInputs &= ~(1 << i);
sysInputs &= ~(1ull << i);
}
}