glsl: set matrix_stride for non matrices with atomic counter buffers

Patch sets matrix_stride as 0 for non matrix uniforms that are in a
atomic counter buffer. Matrix stride calculation for actual matrix
uniforms is done during link_assign_uniform_locations.

From ARB_program_interface_query specification:

GL_MATRIX_STRIDE:

   "For active variables not declared as a matrix or array of matrices,
   zero is written to <params>.  For active variables not backed by a
   buffer object, -1 is written to <params>, regardless of the variable
   type."

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
This commit is contained in:
Tapani Pälli 2015-11-02 13:36:19 +02:00
parent 7e6dac1186
commit f2fe607261

View file

@ -240,6 +240,8 @@ link_assign_atomic_counter_resources(struct gl_context *ctx,
storage->offset = var->data.atomic.offset;
storage->array_stride = (var->type->is_array() ?
var->type->without_array()->atomic_size() : 0);
if (!var->type->is_matrix())
storage->matrix_stride = 0;
}
/* Assign stage-specific fields. */