glsl/nir: Fix copying vector constant values
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Fri, 21 Jun 2019 23:55:08 +0000 (16:55 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Mon, 24 Jun 2019 18:32:14 +0000 (11:32 -0700)
For n_columns == 1, we have a vector which is handled by the else
case.  Fixes invalid memory access in upcoming ARB_gl_spirv tests.

Failure bisected by Arcady Goldmints-Orlov.

Fixes: 81e51b412e9 "nir: Make nir_constant a vector rather than a matrix"
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/glsl/gl_nir_link_uniform_initializers.c

index 546da68927f8ffd665ae05daec28630376827024..1d2938dca0192a7fbba1e24a7e9db5bd559a82e2 100644 (file)
@@ -121,7 +121,7 @@ copy_constant_to_storage(union gl_constant_value *storage,
    unsigned dmul = glsl_base_type_is_64bit(base_type) ? 2 : 1;
    int i = 0;
 
-   if (n_columns > 0) {
+   if (n_columns > 1) {
       const struct glsl_type *column_type = glsl_get_column_type(type);
       for (unsigned int column = 0; column < n_columns; column++) {
          copy_constant_to_storage(&storage[i], val->elements[column],