[Mesa-dev] [Bug 96698] [swrast] piglit glsl-array-bounds-05 regression

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Jun 27 20:42:53 UTC 2016


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

            Bug ID: 96698
           Summary: [swrast] piglit glsl-array-bounds-05 regression
           Product: Mesa
           Version: git
          Hardware: x86-64 (AMD64)
                OS: Linux (All)
            Status: NEW
          Keywords: bisected, regression
          Severity: normal
          Priority: medium
         Component: Mesa core
          Assignee: mesa-dev at lists.freedesktop.org
          Reporter: vlee at freedesktop.org
        QA Contact: mesa-dev at lists.freedesktop.org
                CC: kenneth at whitecape.org, t_arceri at yahoo.com.au

mesa: 6e4cf937f8e742433a4320b1b847454a06dacf03 (12.1.0-devel)

$ ./bin/shader_runner tests/shaders/glsl-array-bounds-05.shader_test -auto
Probe color at (15,15)
  Expected: 0.000000 1.000000 0.000000
  Observed: 1.000000 0.000000 0.000000
PIGLIT: {"result": "fail" }


c264fdbc073a0dfc393f53a8be880f535fd4b988 is the first bad commit
commit c264fdbc073a0dfc393f53a8be880f535fd4b988
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Mon Jun 20 11:20:51 2016 -0700

    glsl: Split arrays even in the presence of whole-array copies.

    Previously, we failed to split constant arrays.  Code such as

       int[2] numbers = int[](1, 2);

    would generates a whole-array assignment:

      (assign () (var_ref numbers)
                 (constant (array int 4) (constant int 1) (constant int 2)))

    opt_array_splitting generally tried to visit ir_dereference_array nodes,
    and avoid recursing into the inner ir_dereference_variable.  So if it
    ever saw a ir_dereference_variable, it assumed this was a whole-array
    read and bailed.  However, in the above case, there's no array deref,
    and we can totally handle it - we just have to "unroll" the assignment,
    creating assignments for each element.

    This was mitigated by the fact that we constant propagate whole arrays,
    so a dereference of a single component would usually get the desired
    single value anyway.  However, I plan to stop doing that shortly;
    early experiments with disabling constant propagation of arrays
    revealed this shortcoming.

    This patch causes some arrays in Gl32GSCloth's geometry shaders to be
    split, which allows other optimizations to eliminate unused GS inputs.
    The VS then doesn't have to write them, which eliminates the entire VS
    (5 -> 2 instructions).  It still renders correctly.

    No other change in shader-db.

    v2: Drop !AOA check and improve a comment (feedback from Tim Arceri).

    Cc: mesa-stable at lists.freedesktop.org
    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>

:040000 040000 5d96cd8ba322e2ac1857baf9e401b5d494a85ab2
2b920fe841296c89251cca630f51060de413cbb3 M      src
bisect run success

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160627/3ac4a9db/attachment-0001.html>


More information about the mesa-dev mailing list