glsl/nir: Fix copying 64-bit values in uniform storage
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Sat, 22 Jun 2019 00:11:54 +0000 (17:11 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Mon, 24 Jun 2019 18:32:14 +0000 (11:32 -0700)
The iterator `i` already walks the right amount now that is
incremented by `dmul`, so no need to `* 2`.  Fixes invalid memory
access in upcoming ARB_gl_spirv tests.

Failure bisected by Arcady Goldmints-Orlov.

Fixes: b019fe8a5b6 "glsl/nir: Fix handling of 64-bit values in uniform storage"
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/glsl/gl_nir_link_uniform_initializers.c

index 1d2938dca0192a7fbba1e24a7e9db5bd559a82e2..53a3ab9a0a2d0be6458e53a4cfe804f78cdb9437 100644 (file)
@@ -145,7 +145,7 @@ copy_constant_to_storage(union gl_constant_value *storage,
          case GLSL_TYPE_UINT64:
          case GLSL_TYPE_INT64:
             /* XXX need to check on big-endian */
-            memcpy(&storage[i * 2].u, &val->values[row].f64, sizeof(double));
+            memcpy(&storage[i].u, &val->values[row].f64, sizeof(double));
             break;
          case GLSL_TYPE_BOOL:
             storage[i].b = val->values[row].u32 ? boolean_true : 0;