[Bug 96349] [CTS,SKL,BSW,BDW,KBL,BXT] es31-cts.arrays_of_arrays.interactionuniformbuffers3

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Jun 3 00:19:05 UTC 2016


https://bugs.freedesktop.org/show_bug.cgi?id=96349

            Bug ID: 96349
           Summary: [CTS,SKL,BSW,BDW,KBL,BXT]
                    es31-cts.arrays_of_arrays.interactionuniformbuffers3
           Product: Mesa
           Version: git
          Hardware: x86-64 (AMD64)
                OS: Linux (All)
            Status: NEW
          Severity: critical
          Priority: medium
         Component: Drivers/DRI/i965
          Assignee: idr at freedesktop.org
          Reporter: mark.a.janes at intel.com
        QA Contact: intel-3d-bugs at lists.freedesktop.org

bin/cts/glcts --deqp-case=ES31-CTS.arrays_of_arrays.InteractionUniformBuffers3
dEQP Core GL-CTS-2.0 (0x0052484b) starting..
  target implementation = 'intel-gbm'

Test case 'ES31-CTS.arrays_of_arrays.InteractionUniformBuffers3'..
  Fail (Error in test execution)

DONE!

Test run totals:
  Passed:        0/1 (0.00%)
  Failed:        1/1 (100.00%)
  Not supported: 0/1 (0.00%)
  Warnings:      0/1 (0.00%)

Bisected to:
glsl: handle implicit sized arrays in ssbo

The current code disallows unsized arrays except at the end of
an SSBO but it is a bit overzealous in doing so.

struct a {
        int b[];
        int f[4];
};

is valid as long as b is implicitly sized within the shader,
i.e. it is accessed only by integer indices.

I've submitted some piglit tests to test for this.

This also has no regressions on piglit on my Haswell.
This fixes:
GL45-CTS.shader_storage_buffer_object.basic-syntax
GL45-CTS.shader_storage_buffer_object.basic-syntaxSSO

This patch moves a chunk of the linker code down, so
that we don't link the uniform blocks until after we've
merged all the variables. The logic went something like:

Removing the checks for last ssbo member unsized from
the compiler and into the linker, meant doing the check
in the link_uniform_blocks code. However to do that the
array sizing had to happen first, so we knew that the
only unsized arrays were in the last block. But array
sizing required the variable to be merged, otherwise
you'd get two different array sizes in different
version of two variables, and one would get lost
when merged. So the solution was to move array sizing
up, after variable merging, but before uniform block
visiting.

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-3d-bugs/attachments/20160603/4dea4956/attachment-0001.html>


More information about the intel-3d-bugs mailing list