[Bug 86140] New: [BYT/HSW/BDW Bisected]SynMark2_v6_0_0_OglDrvShComp performance reduced ~60%

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Nov 11 01:19:56 PST 2014


            Bug ID: 86140
           Summary: [BYT/HSW/BDW Bisected]SynMark2_v6_0_0_OglDrvShComp
                    performance reduced ~60%
           Product: Mesa
           Version: unspecified
          Hardware: Other
                OS: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/DRI/i965
          Assignee: idr at freedesktop.org
          Reporter: wendy.wang at intel.com
        QA Contact: intel-3d-bugs at lists.freedesktop.org

Created attachment 109264
  --> https://bugs.freedesktop.org/attachment.cgi?id=109264&action=edit

Mesa:                  (master)f3b709c0ac073cd0ec90a3a0d91d1ee94668e043
Cairo:                   (master)a03f2ff72054c9530f98738aac729354a3f56102
Libva:                   (master)ccd93de5a707e92a629cccd595757c8d436fa3cc
Kernel:   (drm-intel-nightly)b921a5e434f541c6d96378838df47b4259cc3489

Bug detailed description:
SynMark2_v6_0_0_OglDrvShComp ~60% 
Issue happened on BYT/HSW/BDW

It's Mesa regression,bisect result show first bad commit as below:

Commit: a16ca4ac6a356e02c6aa03c1e305f613a4e23202
Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Wed Oct 29 20:56:07 2014 -0700

    glsl: Skip loop-too-large heuristic if indexing arrays of a certain size

    A pattern in certain shaders is:

       uniform vec4 colors[NUM_LIGHTS];

       for (int i = 0; i < NUM_LIGHTS; i++) {
          ...use colors[i]...

    In this case, the application author expects the shader compiler to
    unroll the loop.  By doing so, it replaces variable indexing of the
    array with constant indexing, which is more efficient.

    This patch extends the heuristic to see if arrays accessed within the
    loop are indexed by an induction variable, and if the array size exactly
    matches the number of loop iterations.  If so, the application author
    probably intended us to unroll it.  If not, we rely on the existing
    loop-too-large heuristic.

    Improves performance in a phong shading microbenchmark by 2.88x, and a
    shadow mapping microbenchmark by 1.63x.  Without variable indexing, we
    can upload the small uniform arrays as push constants instead of pull
    constants, avoiding shader memory access.  Affects several games, but
    doesn't appear to impact their performance.

    Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>
    Acked-by: Kristian Høgsberg <krh at bitplanet.net>

Reproduce steps:
1.            xinit&
2.            ./ Synmark2 OglDrvShComp

Xorg.0.log file attached.

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

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