nir: Don't print swizzles when there are more than 4 components
... as can happen with various types like mat4, or else we'll smash the
stack writing past the end of components_local[].
Fixes: 5a0d3e1129
("nir: Print the components referenced for split or
packed shader in/outs.")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -457,7 +457,7 @@ print_var_decl(nir_variable *var, print_state *state)
|
|||||||
switch (var->data.mode) {
|
switch (var->data.mode) {
|
||||||
case nir_var_shader_in:
|
case nir_var_shader_in:
|
||||||
case nir_var_shader_out:
|
case nir_var_shader_out:
|
||||||
if (num_components != 4 && num_components != 0) {
|
if (num_components < 4 && num_components != 0) {
|
||||||
const char *xyzw = "xyzw";
|
const char *xyzw = "xyzw";
|
||||||
for (int i = 0; i < num_components; i++)
|
for (int i = 0; i < num_components; i++)
|
||||||
components_local[i + 1] = xyzw[i + var->data.location_frac];
|
components_local[i + 1] = xyzw[i + var->data.location_frac];
|
||||||
|
Reference in New Issue
Block a user