[Mesa-dev] [PATCH] glsl: set matrix_stride for non matrices with atomic counter buffers
Tapani Pälli
tapani.palli at intel.com
Fri Nov 13 09:22:04 PST 2015
On 11/13/2015 05:57 PM, Ilia Mirkin wrote:
> On Fri, Nov 13, 2015 at 10:53 AM, Tapani Pälli <tapani.palli at intel.com> wrote:
>> On 11/12/2015 05:47 PM, Ilia Mirkin wrote:
>>> On Mon, Nov 2, 2015 at 6:36 AM, Tapani Pälli <tapani.palli at intel.com>
>>> wrote:
>>>> 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 at intel.com>
>>>> ---
>>>> src/glsl/link_atomics.cpp | 2 ++
>>>> 1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/src/glsl/link_atomics.cpp b/src/glsl/link_atomics.cpp
>>>> index cdcc06d..3aa52db 100644
>>>> --- a/src/glsl/link_atomics.cpp
>>>> +++ b/src/glsl/link_atomics.cpp
>>>> @@ -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;
>>> Can atomics ever be in matrices?
>>
>> Nope, but one can query matrix stride property of a uniform that is 'backed
>> by' atomic counter buffer.
> Right, I get that... but why the if (!var->type->is_matrix())?
Yes that's right, we should be able to just initialize matrix_stride as
0 without check. I'll test this and then check can be removed.
// Tapani
More information about the mesa-dev
mailing list