Bug 71028 - [i965 Bisected]Piglit glean_occluquery fails
Summary: [i965 Bisected]Piglit glean_occluquery fails
Status: RESOLVED FIXED
Alias: None
Product: piglit
Classification: Unclassified
Component: tests (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: high major
Assignee: Eric Anholt
QA Contact: Eric Anholt
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-10-30 05:19 UTC by lu hua
Modified: 2017-12-18 13:07 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description lu hua 2013-10-30 05:19:27 UTC
System Environment:
--------------------------
Platform: GM45/Ironlake/Sandybridge/Ivybridge/Haswell
Libdrm:	(master)2.4.47
Mesa:	(master)8bd4476010444642cff71e64146c91a484238dc2
Xserver:(master)xorg-server-1.14.99.3-1-g7ecfab47eb221dbb996ea6c033348b8eceaeb893
Xf86_video_intel:(master)2.99.905-23-g54aaf14dbf33b0e81932507b8753a63d1c6c8e77
Cairo:	(master)98fef3cef2d0f7f463a2e4f9f1b35b09f7b6ea77
Libva:	(staging)1a011ce5bb0b80506797a25a988854f3f81ce909
Libva_intel_driver:(staging)1cee858036a87837deddc87586701ed869f96261
Kernel:	(drm-intel-nightly) 164a4cb4c1431a0689f85507868356fae24da638

Bug detailed description:
-------------------------
It fails on GM45/Ironlake/Sandybridge/Ivybridge/Haswell with mesa master branch, and works well on 9.2 branch.

Bisect shows:29996e219912fb1fdf35a6595d8f6261384a18dc is the first bad commit.
commit 29996e219912fb1fdf35a6595d8f6261384a18dc
Author:     Carl Worth <cworth@cworth.org>
AuthorDate: Thu Oct 17 10:54:56 2013 -0700
Commit:     Carl Worth <cworth@cworth.org>
CommitDate: Mon Oct 28 12:56:49 2013 -0700

    Remove error when calling glGenQueries/glDeleteQueries while a query is acti

    There is nothing in the OpenGL specification which prevents the user from
    calling glGenQueries to generate a new query object while another object is
    active. Neither is there anything in the Mesa implementation which prevents
    this. So remove the INVALID_OPERATION errors in this case.

    Similarly, it is explicitly allowed by the OpenGL specification to delete an
    active query, so remove the assertion for that case, replacing it with the
    necesssary state updates to end the query, (clear the bindpt pointer and cal
    into the driver's EndQuery hook).

    CC: <mesa-stable@lists.freedesktop.org>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Tested-by: Brian Paul <brianp@vmware.com>

output:
----------------------------------------------------------------------
Test occlusion query comformance.

occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, db, z24, s8, win+pmap, id 32
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, db, z24, s8, win+pmap, id 33
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, db, z24, s8, win+pmap, id 95
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, z24, s8, win+pmap, id 122
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, db, z24, s8, accrgba16, win+pmap, slow, id 123
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, z24, s8, win+pmap, id 126
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, db, z24, s8, win+pmap, id 127
        12 tests passed, 2 tests failed.
occluQry subcase PASS: conformOQ_GetQry_CnterBit test
occluQry subcase PASS: conformOQ_GetObjivAval_multi1 test
occluQry subcase PASS: conformOQ_GetObjivAval_multi2 test
occluQry subcase PASS: conformOQ_Begin_unused_id test
occluQry subcase PASS: conformOQ_EndAfter test
occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the progress of another.
occluQry subcase FAIL: conformOQ_GenIn test
occluQry subcase PASS: conformOQ_BeginIn test
occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the progress of another.
occluQry subcase FAIL: conformOQ_DeleteIn test
occluQry subcase PASS: conformOQ_GetObjAvalIn test
occluQry subcase PASS: conformOQ_GetObjResultIn test
occluQry subcase PASS: conformOQ_GetObjivAval test
occluQry subcase PASS: conformOQ_Gen_Delete test
occluQry subcase PASS: conformOQ_IsIdZero test
occluQry subcase PASS: conformOQ_BeginIdZero test
occluQry:  FAIL rgba8, db, z24, s8, accrgba16, win+pmap, slow, id 128
        12 tests passed, 2 tests failed.

Reproduce steps:
-------------------------
1. xinit
2. ./bin/glean -o -v -v -v -t +occluQry
Comment 1 Carl Worth 2013-10-30 17:01:13 UTC
(In reply to comment #0)
> occluQry: Error: No GL_INVALID_OPERATION generated if GenQueries in the
> progress of another.
> occluQry subcase FAIL: conformOQ_GenIn test
> occluQry subcase PASS: conformOQ_BeginIn test
> occluQry: Error: No GL_INVALID_OPERATION generated if DeleteQueries in the
> progress of another.

From the above results, it looks like this test is looking specifically for the
behavior that was intentionally changed in the Mesa commit.

We looked closely at the OpenGL specification and could not find justification
for generating an error if glGenQueries or glDeleteQueries is called while a
query is active. So we removed those errors from Mesa.

It looks here like the Glean test is expecting precisely those errors.

My opinion is that the test should be updated to not expect errors in these
cases.

-Carl
Comment 2 Ian Romanick 2013-10-30 19:02:23 UTC
Yes, the test needs to be updated.  It also seems like this should have been noticed before the Mesa patch landed.  Is that test not run as part of a full piglit run?
Comment 3 Carl Worth 2013-10-30 19:08:21 UTC
(In reply to comment #2)
> Yes, the test needs to be updated.  It also seems like this should have been
> noticed before the Mesa patch landed.  Is that test not run as part of a
> full piglit run?

Or, did I fail to perform a full piglit run before submitting and then pusing the patch? (*blush*)

I'll check one way or the other and resolve this.

For now, I'm re-opening the bug and re-assigning it to piglit.

-Carl
Comment 4 lu hua 2013-11-04 07:27:24 UTC
Fail on 9.2 branch. Fixed on master branch by commit cf6a41928fe8504e5d4949af0429483ffb546e27.
commit cf6a41928fe8504e5d4949af0429483ffb546e27
Author: Carl Worth 
Date: Wed Oct 30 17:17:03 2013 -0700

glean: Fix occlusion query test: expect Gen/DeleteQueries while active to work

A recent inspection of the latest OpenGL specification revealed that
there is no requirement for errors to be generated if GenQueries or
DeleteQueries are called while a query is active.

Specifically, in Section 4.2 of OpenGL 4.4 (Core Profile) the only
errors specified for GenQueries and DeleteQueries is INVALID_VALUE if
the ID is negative.

Additionally, the same section specifies what to do in case the active
Comment 5 Fabian Bieler 2017-12-18 13:07:33 UTC
The Piglit test "occlusion_query_conform" which replaces the Glean test does not test glGen/DeleteQueries during an active query.

The new Piglit test "gen_delete_while_active" tests for no error, as indicated by the spec.


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.