[Mesa-dev] [PATCH] main: fix basename match's check if it's an array or struct
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Wed Oct 28 03:16:54 PDT 2015
On 28/10/15 11:13, Samuel Iglesias Gonsálvez wrote:
>
>
> On 28/10/15 10:31, Tapani Pälli wrote:
>> 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.
>>
>
> I checked out the same commits for both dEQP and Mesa. Run it on HSW
> laptop with MESA_EXTENSION_OVERRIDE=GL_ARB_compute_shader and
> MESA_GLES_VERSION_OVERRIDE=3.1. Both tests failed for me.
>
> $ ./deqp-gles31 -n
> 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 = 10.610000 ms
> Link time = 8.145000 ms
> Test case duration in microseconds = 26574 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.038000 ms
> Link time = 2.763000 ms
> Test case duration in microseconds = 7789 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-0325f68)
> OpenGL version string: 3.0 Mesa 11.1.0-devel (git-0325f68)
> OpenGL ES profile version string: OpenGL ES 3.1 Mesa 11.1.0-devel
> (git-0325f68)
>
Sorry, I used a later commit, but with 03c92ff I get the same result.
Sam
> Verify you don't have uncommitted local changes that can modify this
> result. If not, this is very strange indeed (or maybe HSW is doing
> something different when adding the resources).
>
> Sam
>
>>
>>>
>>> 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