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:
parent
379e00dc27
commit
2a4596a2f0
|
@ -6532,10 +6532,10 @@ st_translate_program(
|
||||||
/* Declare misc input registers
|
/* Declare misc input registers
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
GLbitfield sysInputs = proginfo->info.system_values_read;
|
GLbitfield64 sysInputs = proginfo->info.system_values_read;
|
||||||
|
|
||||||
for (i = 0; sysInputs; i++) {
|
for (i = 0; sysInputs; i++) {
|
||||||
if (sysInputs & (1 << i)) {
|
if (sysInputs & (1ull << i)) {
|
||||||
enum tgsi_semantic semName = _mesa_sysval_to_semantic(i);
|
enum tgsi_semantic semName = _mesa_sysval_to_semantic(i);
|
||||||
|
|
||||||
t->systemValues[i] = ureg_DECL_system_value(ureg, semName, 0);
|
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,
|
emit_wpos(st_context(ctx), t, proginfo, ureg,
|
||||||
program->wpos_transform_const);
|
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. */
|
/* This must be done before the uniform storage is associated. */
|
||||||
if (shader->Stage == MESA_SHADER_FRAGMENT &&
|
if (shader->Stage == MESA_SHADER_FRAGMENT &&
|
||||||
(prog->info.inputs_read & VARYING_BIT_POS ||
|
(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] = {
|
static const gl_state_index16 wposTransformState[STATE_LENGTH] = {
|
||||||
STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM
|
STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM
|
||||||
};
|
};
|
||||||
|
|
|
@ -951,9 +951,9 @@ st_translate_mesa_program(struct gl_context *ctx,
|
||||||
|
|
||||||
/* Declare misc input registers
|
/* Declare misc input registers
|
||||||
*/
|
*/
|
||||||
GLbitfield sysInputs = program->info.system_values_read;
|
GLbitfield64 sysInputs = program->info.system_values_read;
|
||||||
for (i = 0; sysInputs; i++) {
|
for (i = 0; sysInputs; i++) {
|
||||||
if (sysInputs & (1 << i)) {
|
if (sysInputs & (1ull << i)) {
|
||||||
unsigned semName = _mesa_sysval_to_semantic(i);
|
unsigned semName = _mesa_sysval_to_semantic(i);
|
||||||
|
|
||||||
t->systemValues[i] = ureg_DECL_system_value(ureg, semName, 0);
|
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)
|
semName == TGSI_SEMANTIC_POSITION)
|
||||||
emit_wpos(st_context(ctx), t, program, ureg);
|
emit_wpos(st_context(ctx), t, program, ureg);
|
||||||
|
|
||||||
sysInputs &= ~(1 << i);
|
sysInputs &= ~(1ull << i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue