Bug 49772 - [SNB]Oglc depth-stencil(basic.read.ds) regressed
Summary: [SNB]Oglc depth-stencil(basic.read.ds) regressed
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: Other All
: high major
Assignee: Kenneth Graunke
QA Contact:
: 44963 (view as bug list)
Depends on:
Reported: 2012-05-10 22:33 UTC by lu hua
Modified: 2012-08-21 05:17 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Note You need to log in before you can comment on or make changes to this bug.
Description lu hua 2012-05-10 22:33:51 UTC
System Environment:
Arch:           i386
Platform:       Sandybridge
Libdrm:		(master)2.4.33-20-gd72a44c7c4f5eea9c1e5bb0c36cb9e0224b9ca22
Mesa:		(master)729d9148244551c6bcae00a760f39a6902c925ef
Xserver:        (master)xorg-server-1.12.0-136-ge501c34d4937d5e6f19abd29f1ec7f95faa3bb55
Libva:		(vaapi-ext)f12f80371fb534e6bbf248586b3c17c298a31f4e
Kernel:	  (drm-intel-next-queued) 38e490fea7d2885d79fcd1ca37edb64e489d470d

Bug detailed description:
It failed on Sandybridge with mesa master and 8.0 branch. 
This case has Bug 44963 on SNB GT2.
The last known good commit:1bd3dafeca90f1293acd9b9ab63bf617139bfacf
The last known bad commit: 729d9148244551c6bcae00a760f39a6902c925ef

Reproduce steps:
1. start X
2. ./oglconform -z -suite all -v 2 -D 116 -test depth-stencil basic.read.ds
Comment 1 Eric Anholt 2012-08-06 15:54:06 UTC
When making a bug report, please show at least an excerpt of the actual failure report.


I get failure on both 8.0 and master on ivb, with minor accuracy errors.
Comment 2 Gordon Jin 2012-08-07 03:40:38 UTC
Hua to bisect.
Comment 3 lu hua 2012-08-07 03:46:04 UTC
In process.
Comment 4 lu hua 2012-08-08 04:26:32 UTC
Bisect shows: a7ac9c9c7dc7401ca6143d1e7476df5e3c2758b7 is the first bad commit.
commit a7ac9c9c7dc7401ca6143d1e7476df5e3c2758b7
Author: Marek Olšák <maraeo@gmail.com>
Date:   Mon Apr 23 18:11:38 2012 +0200

    vbo: move vbo_draw_method into vbo_context.h

But, revert the commit, this issue still exists. I will re-check.
Comment 5 lu hua 2012-08-09 04:25:51 UTC
Visual Report:
ID      |ACCELERA|DB      |REND_T  |SURF_T  |C_BUF_T |BUF_S   |RED_S   |
     141|       1|       1|      gl|  wipbpx|    rgba|      32|       8|

       8|       8|       8|      24|       8|      64|       0|       0|

      -1|       0|       0|    slow|   undef|       0|       0|       0

OpenGL Report.
    Vendor - 'Intel Open Source Technology Center'
    Renderer - 'Mesa DRI Intel(R) Sandybridge Desktop x86/MMX/SSE2'
    Version - '3.0 Mesa 8.1-devel (git-7528e21)' (3.0)
    GLSL Version - '1.30'
    Context Flags - None

>> Depth Stencil test (depth-stencil)  test:
--> 1.3.1 - basic.read.ds subcase:
    File - /GFX/build/testsuite/Oglconform_31/oglconform_31/src/OGLconform/depth-stencil.c, line - 1791.
        Error wrong output color values

Subcase Id: 1.3.1
Subcase Name: basic.read.ds
Title: Verify that OGL API allows depth stencil buffers read operation using DEPTH_STENCIL_EXT
Test Purpose:
Test should verify that for depth stencil buffers it is possible to use
GL_DEPTH_STENCIL_EXT and GL_UNSIGNED_INT_24_8_EXT while read operation.

Test Method:
Define basic shape of depth and stencil buffers in form of two neighbor quads.
Try to render two additional quads larger that those two wrote to depth/stencil buffers.
Left quad is red the right one is blue. Read back rendered buffers and verify colors
Read cycles should be performed several time in a loop with different region settings

Pass Criteria:
Test passes if updated and rendered buffers match with expected with defined epsilon
--< 1.3.1 - basic.read.ds subcase failed.
<< Depth Stencil test (depth-stencil)  test failed. (1 of 1 subcases)

Intel Conformance failed.
Total Passed : 0
Total Failed : 1
Total Not run: 0
Comment 6 Kenneth Graunke 2012-08-13 00:27:02 UTC
*** Bug 44963 has been marked as a duplicate of this bug. ***
Comment 7 Kenneth Graunke 2012-08-13 08:09:24 UTC
It turns out that the super-hardware-specific bug was actually a one line mistake in Mesa's software depth span unpacking code.  The original commit mentioned in #44963 changed DrawPixels to use a different unpack path, and that path happened to be slightly broken.

Patch out for review on the mailing list:
Comment 8 Kenneth Graunke 2012-08-14 04:36:59 UTC
commit 605f964d5cc7016fc74e0563829fa794da845c20
Author: Kenneth Graunke <kenneth@whitecape.org>
Date:   Mon Aug 13 00:35:41 2012 -0700

    mesa: Use GLdouble for depthMax in final unpack conversions.
    The final step of _mesa_unpack_depth_span is to take the temporary
    GLfloat depth values and convert them to the desired format.  When
    converting to GL_UNSIGNED_INTEGER with depthMax > 0xffffff, we use
    double-precision math to avoid overflow and precision problems.
    Or at least that's the idea.  Unfortunately
       GLdouble z = depthValues[i] * (GLfloat) depthMax;
    actually causes single-precision multiplication, since both operands are
    GLfloats.  Casting depthMax to GLdouble causes the scaling to be done
    with double-precision math.
    Fixes a regression in oglconform's depth-stencil basic.read.ds test
    since c60ac7b17993d28af65b04f9bbbf3ee74c35358c, where the expected and
    actual values differed slightly.  For example, 0xcfa7a6 vs. 0xcfa7a4.
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49772
    Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Comment 9 lu hua 2012-08-17 06:35:09 UTC
It fixed on mesa master commit 1597176f7090eea73f41b3114ae2a02a50ac7a12.

Can't find "mesa: Use GLdouble for depthMax in final unpack conversions." on mesa 8.0 branch. It still fail on mesa 8.0 branch.
Comment 10 Kenneth Graunke 2012-08-17 06:55:15 UTC
Thanks.  I just cherry-picked it to 8.0.
Comment 11 lu hua 2012-08-21 05:17:14 UTC
Verified. Fixed by 57295009e895b1d39c083c3873fdeaf4dadd778b on 8.0 branch.

commit 57295009e895b1d39c083c3873fdeaf4dadd778b
Author:     Kenneth Graunke <kenneth@whitecape.org>
AuthorDate: Mon Aug 13 00:35:41 2012 -0700
Commit:     Kenneth Graunke <kenneth@whitecape.org>
CommitDate: Thu Aug 16 23:50:28 2012 -0700

    mesa: Use GLdouble for depthMax in final unpack conversions.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct.