[Mesa-dev] [PATCH] main: fix basename match's check if it's an array or struct

Tapani Pälli tapani.palli at intel.com
Wed Oct 28 02:31:11 PDT 2015


On 10/28/2015 09:09 AM, Samuel Iglesias Gonsálvez wrote:
>
> On 28/10/15 06:53, Tapani Pälli wrote:
>> On 10/27/2015 04:04 PM, Samuel Iglesias Gonsalvez wrote:
>>> Commit 4565b6f did not update the basename match's check for
>>> the case that string would exactly match the name of the
>>> variable if the suffix "[0]" were appended to it.
>>>
>>> Fixes two dEQP-GLES31 tests:
>>>
>>> dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array
>>>
>>> dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array_single_element
>>>
>> These tests are passing already with commit 4565b6f right? I think the
>> 'found' boolean already takes care of this, I need to step through again
>> to make sure though.
> No, they are failing in those cases because 'found' is true but then for
> either Uniform block or shader storage block, we check if the name is an
> array or struct:
>
>         if (found) {
>           switch (programInterface) {
>           case GL_UNIFORM_BLOCK:
>           case GL_SHADER_STORAGE_BLOCK:
>              /* Basename match, check if array or struct. */
>              if (name[baselen] == '\0' ||
>                  name[baselen] == '[' ||
>                  name[baselen] == '.') {
>              [...]
>
> As 'found' can be true because of two different cases, we need to take
> care of both in this 'if' condition.
>
> $ ./deqp-gles31 -n
> dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array*
> dEQP Core git-deb902685b9309a64b5e08c48157d3117cf27750 (0xdeb90268)
> starting..
>    target implementation = 'Default'
>
> Test case
> 'dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array'..
> Compute shader compile time = 16.732000 ms
> Link time = 14.251000 ms
> Test case duration in microseconds = 43993 us
>    Fail (GetProgramResourceIndex returned unexpected values)
>
> Test case
> 'dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array_single_element'..
> Compute shader compile time = 1.114000 ms
> Link time = 2.714000 ms
> Test case duration in microseconds = 8858 us
>    Fail (GetProgramResourceIndex returned unexpected values)
>
> DONE!
>
> Test run totals:
>    Passed:        0/2 (0.0%)
>    Failed:        2/2 (100.0%)
>    Not supported: 0/2 (0.0%)
>    Warnings:      0/2 (0.0%)
>
> $ glxinfo | grep git
>
>
> OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.1.0-devel
> (git-4565b6f)
> OpenGL version string: 3.0 Mesa 11.1.0-devel (git-4565b6f)
> OpenGL ES profile version string: OpenGL ES 3.1 Mesa 11.1.0-devel
> (git-4565b6f)

That is strange, for me these pass fine, I can see that our deqp version 
differ:

[tpalli at tpalli-mobl2 gles31]$ mesa_run ./deqp-gles31 
--deqp-case=dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array*
dEQP Core git-7d804783aef83f8f2784d99812d98bcfcf21e95f (0x7d804783) 
starting..
   target implementation = 'Default'

Test case 
'dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array'..
Compute shader compile time = 4.585000 ms
Link time = 3.678000 ms
Test case duration in microseconds = 12021 us
   Pass (Pass)

Test case 
'dEQP-GLES31.functional.program_interface_query.shader_storage_block.resource_list.block_array_single_element'..
Compute shader compile time = 0.822000 ms
Link time = 1.225000 ms
Test case duration in microseconds = 3682 us
   Pass (Pass)

DONE!

Test run totals:
   Passed:        2/2 (100.0%)
   Failed:        0/2 (0.0%)
   Not supported: 0/2 (0.0%)
   Warnings:      0/2 (0.0%)



This is with

MESA_EXTENSION_OVERRIDE=GL_ARB_compute_shader
MESA_GLES_VERSION_OVERRIDE=3.1

and current Mesa head (03c92ff), tested on Ivybridge laptop.


>
>   This function is becoming a bit of a pain because
>> different resources have different naming schemes, I'll have to see if
>> it could be somehow refactored simpler.
>>
> OK, thanks.
>
> Sam
>
>>> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
>>> ---
>>>    src/mesa/main/shader_query.cpp | 3 ++-
>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/mesa/main/shader_query.cpp
>>> b/src/mesa/main/shader_query.cpp
>>> index 59ec3d7..6cc91de 100644
>>> --- a/src/mesa/main/shader_query.cpp
>>> +++ b/src/mesa/main/shader_query.cpp
>>> @@ -592,7 +592,8 @@ _mesa_program_resource_find_name(struct
>>> gl_shader_program *shProg,
>>>                /* Basename match, check if array or struct. */
>>>                if (name[baselen] == '\0' ||
>>>                    name[baselen] == '[' ||
>>> -                name[baselen] == '.') {
>>> +                name[baselen] == '.' ||
>>> +                rname_has_array_index_zero) {
>>>                   return res;
>>>                }
>>>                break;
>>



More information about the mesa-dev mailing list