Bug 111113 - ANGLE BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL fails on Intel Ubuntu19.04
Summary: ANGLE BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL fails on Intel Ubu...
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: Other All
: medium normal
Assignee: Jason Ekstrand
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords: bisected, regression
: 111170 (view as bug list)
Depends on:
Blocks:
 
Reported: 2019-07-12 01:32 UTC by jchen10
Modified: 2019-08-05 13:33 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
angle_end2end_tests (25.61 MB, application/gzip)
2019-07-12 01:32 UTC, jchen10
Details

Description jchen10 2019-07-12 01:32:59 UTC
Created attachment 144769 [details]
angle_end2end_tests

Device: Mesa DRI Intel(R) Iris Pro 6200 (Broadwell GT3e)  (0x1622)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 19.2.0-develgit-9b0720c436b

To reproduce, simply extract the attachment and run "/angle_end2end_tests --gtest_filter=BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL", then you can see the failure below:


1 GPUs:
  0 - Intel device id: 0x1622

Active GPU: 0

Optimus: false
AMD Switchable: false


Skipping tests using configuration ES3_OpenGLES because it is not available.
Skipping tests using configuration ES3_1_OpenGLES because it is not available.
Skipping tests using configuration ES2_OpenGLES because it is not available.
Skipping tests using configuration ES1_OpenGLES because it is not available.
Skipping tests using configuration ES2_OpenGLES_NoFixture because it is not available.
Skipping tests using configuration ES3_OpenGLES_NoFixture because it is not available.
Skipping tests using configuration ES3_1_OpenGLES_NoFixture because it is not available.
Skipping tests using configuration ES2_OpenGLES_NoVirtual because it is not available.
Skipping tests using configuration ES3_OpenGLES_NoVirtual because it is not available.
Note: Google Test filter = BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from BlitFramebufferTest
[ RUN      ] BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL
../../src/tests/gl_tests/BlitFramebufferANGLETest.cpp:1266: Failure
Expected equality of these values:
  GLColor::red
    Which is: Red
  angle::ReadColor(0, 0)
    Which is: Green
../../src/tests/gl_tests/BlitFramebufferANGLETest.cpp:1267: Failure
Expected equality of these values:
  GLColor::red
    Which is: Red
  angle::ReadColor(255, 0)
    Which is: Green
../../src/tests/gl_tests/BlitFramebufferANGLETest.cpp:1268: Failure
Expected equality of these values:
  GLColor::red
    Which is: Red
  angle::ReadColor(0, 255)
    Which is: Green
../../src/tests/gl_tests/BlitFramebufferANGLETest.cpp:1269: Failure
Expected equality of these values:
  GLColor::red
    Which is: Red
  angle::ReadColor(255, 255)
    Which is: Green
../../src/tests/gl_tests/BlitFramebufferANGLETest.cpp:1270: Failure
Expected equality of these values:
  GLColor::red
    Which is: Red
  angle::ReadColor(127, 127)
    Which is: Green
[  FAILED  ] BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL, where GetParam() = ES3_OpenGL (98 ms)
[----------] 1 test from BlitFramebufferTest (98 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (98 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] BlitFramebufferTest.MultisampleDepthClear/ES3_OpenGL, where GetParam() = ES3_OpenGL

 1 FAILED TEST
Comment 1 jchen10 2019-07-12 01:34:58 UTC
"./angle_end2end_tests --gtest_filter=MaskedScissoredClearTest.Test/ES*_OpenGL*" also fails:

[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_d, where GetParam() = (ES2_OpenGL, 0, 1, 0, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_ds, where GetParam() = (ES2_OpenGL, 0, 1, 1, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_ds_mask_s, where GetParam() = (ES2_OpenGL, 0, 1, 2, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cd, where GetParam() = (ES2_OpenGL, 1, 1, 0, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds, where GetParam() = (ES2_OpenGL, 1, 1, 1, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds_mask_s, where GetParam() = (ES2_OpenGL, 1, 1, 2, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cd_mask_c, where GetParam() = (ES2_OpenGL, 2, 1, 0, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds_mask_c, where GetParam() = (ES2_OpenGL, 2, 1, 1, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES2_OpenGL_clear_cds_mask_cs, where GetParam() = (ES2_OpenGL, 2, 1, 2, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_d, where GetParam() = (ES3_OpenGL, 0, 1, 0, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_ds, where GetParam() = (ES3_OpenGL, 0, 1, 1, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_ds_mask_s, where GetParam() = (ES3_OpenGL, 0, 1, 2, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cd, where GetParam() = (ES3_OpenGL, 1, 1, 0, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds, where GetParam() = (ES3_OpenGL, 1, 1, 1, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds_mask_s, where GetParam() = (ES3_OpenGL, 1, 1, 2, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cd_mask_c, where GetParam() = (ES3_OpenGL, 2, 1, 0, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds_mask_c, where GetParam() = (ES3_OpenGL, 2, 1, 1, false)
[  FAILED  ] MaskedScissoredClearTest.Test/ES3_OpenGL_clear_cds_mask_cs, where GetParam() = (ES3_OpenGL, 2, 1, 2, false)
Comment 2 jchen10 2019-07-12 02:07:08 UTC
Also reproducible on HD Graphics 630.
Comment 3 Mark Janes 2019-07-12 09:10:18 UTC
Is this a regression?
Comment 4 Denis 2019-07-12 10:08:38 UTC
it looks like. I am on the middle of bisection now. Glance check showed that 17.1.1 version passed this test, and fails started from 18.0.0
Will provide result as soon as finish bisection
Comment 5 Denis 2019-07-12 15:05:32 UTC
Here is a bisected commit:

0ae9ce0f29ea1973b850a4e6c6cae8606973036e is the first bad commit
commit 0ae9ce0f29ea1973b850a4e6c6cae8606973036e
Author: Jason Ekstrand <jason.ekstrand@intel.com>
Date:   Sat Aug 19 20:31:03 2017 -0700

    i965/clear: Quantize the depth clear value based on the format
    
    In f9fd976e8adba733b08d we changed the clear value to be stored as an
    isl_color_value.  This had the side-effect same clear value check is now
    happening directly between the f32[0] field of the isl_color_value and
    ctx->Depth.Clear.  This isn't what we want for two reasons.  One is that
    the comparison happens in floating point even for Z16 and Z24 formats.
    Worse than that, ctx->Depth.Clear is a double so, even for 32-bit float
    formats, we were comparing as doubles and not floats.  This means that
    the test basically always fails for anything other than 0.0f and 1.0f.
    This caused a slight performance regression in Lightsmark 2008 because
    it was using a depth clear value of 0.999 which can't be stored in a
    32-bit float so we were doing unneeded resolves.
    
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
    Bugzilla: https://bugs.freedesktop.org/101678
    Cc: "17.2" <mesa-stable@lists.freedesktop.org>

 src/mesa/drivers/dri/i965/brw_clear.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)


And here is a fix which should fix an issue:
https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1329

As an original patch was related to benchmark, maybe it makes sense to re-run that bench one more time (current patch was tested on our CI branch)
Comment 6 Jason Ekstrand 2019-08-02 15:32:51 UTC
Should be fixed by the following commit in master:

commit a86eccfb78092493b3999849db62613838951756
Author: Sergii Romantsov <sergii.romantsov@globallogic.com>
Date:   Fri Jul 12 16:46:45 2019 +0300

    i965/clear: clear_value better precision
    
    Test-case with depth-clear 0.5 and format
    MESA_FORMAT_Z24_UNORM_X8_UINT fails due inconsistent
    clear-value of 0.4999997.
    Maybe its better to improve?
    
    CC: Jason Ekstrand <jason.ekstrand@intel.com>
    Fixes: 0ae9ce0f29ea (i965/clear: Quantize the depth clear value based on the format)
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111113
    Signed-off-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
    Signed-off-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
    Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Comment 7 Paul 2019-08-05 13:33:58 UTC
*** Bug 111170 has been marked as a duplicate of this bug. ***


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.