glsl: Set location on structure-split sampler uniform variables

gl_nir_lower_samplers_as_deref splits structure uniform variables,
creating new variables for individual fields.  As part of that, it
calculates a new location.  It then never set this on the new variables.

Thanks to Michael Fiano for finding this bug.  Fixes crashes on i965
with Piglit's new tests/spec/glsl-1.10/execution/samplers/uniform-struct
test, which was reduced from the failing case in Michael's app.

Fixes: f003859f97 nir: Make gl_nir_lower_samplers use gl_nir_lower_samplers_as_deref
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
(cherry picked from commit 9e0c744f07)
This commit is contained in:
Kenneth Graunke 2019-04-11 07:04:58 -07:00 committed by Dylan Baker
parent f9eaa873cf
commit 2e63686268

View file

@ -167,6 +167,7 @@ lower_deref(nir_builder *b, struct lower_samplers_as_deref_state *state,
} else {
var = nir_variable_create(state->shader, nir_var_uniform, type, name);
var->data.binding = binding;
var->data.location = location;
_mesa_hash_table_insert_pre_hashed(state->remap_table, hash, name, var);
}