i965: Don't allocate uniform space for samplers
authorTimothy Arceri <tarceri@itsqueeze.com>
Sun, 30 Apr 2017 02:12:35 +0000 (12:12 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Sun, 30 Apr 2017 21:54:18 +0000 (07:54 +1000)
Samplers are encoded into the instruction word, so there's no need to
make space in the uniform file.

Previously matrix_columns and vector_elements were set to 0, making this
else case a no-op. Commit 75a31a20af26 changed that, causing malloc
corruption in thousands of tests on i965.

Fixes: 75a31a20af26 ("glsl: set vector_elements to 1 for samplers")
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100871

src/mesa/drivers/dri/i965/brw_nir_uniforms.cpp

index f35e8f88dd2f5d43f952e82b1f84bacd119fe332..f0bccac14ef3cce96113ec70dcb97c3ce21a5b70 100644 (file)
@@ -135,7 +135,7 @@ brw_nir_setup_glsl_uniform(gl_shader_stage stage, nir_variable *var,
       struct gl_uniform_storage *storage =
          &prog->sh.data->UniformStorage[u];
 
-      if (storage->builtin)
+      if (storage->builtin || storage->type->is_sampler())
          continue;
 
       if (strncmp(var->name, storage->name, namelen) != 0 ||