From: Dave Airlie <airl...@gmail.com> Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/glsl/link_uniforms.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp index de2f6c9..0abb858 100644 --- a/src/glsl/link_uniforms.cpp +++ b/src/glsl/link_uniforms.cpp @@ -51,6 +51,9 @@ values_for_type(const glsl_type *type) return 1; } else if (type->is_array() && type->fields.array->is_sampler()) { return type->array_size(); + } else if ((type->is_array() && type->fields.array->is_double()) || + type->is_double()) { + return 2 * type->component_slots(); } else { return type->component_slots(); } @@ -608,7 +611,11 @@ private: } if (type->without_array()->is_matrix()) { - this->uniforms[id].matrix_stride = 16; + const unsigned N = type->base_type == GLSL_TYPE_DOUBLE ? 8 : 4; + const unsigned items = row_major ? type->matrix_columns : type->vector_elements; + + assert(items <= 4); + this->uniforms[id].matrix_stride = glsl_align(items * N, 16); this->uniforms[id].row_major = row_major; } else { this->uniforms[id].matrix_stride = 0; -- 2.0.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev