diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2014-03-14 17:19:38 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2014-04-25 17:32:19 -0700 |
commit | 5702e43335190a945f0de107ee18c821689060d7 (patch) | |
tree | 27770bc3e642169b15601350095949f1edcdda7e /tests/all.py | |
parent | 8b2caa1aacdf7311fdd69de653eb85fc2dcb427e (diff) |
sso: Verify results of program pipeline validation when a conflicting sampler configuration is used.
Section 2.11.11 (Shader Execution), subheading "Validation," of the
OpenGL 4.1 spec says:
"[INVALID_OPERATION] is generated by any command that transfers
vertices to the GL if:
...
- Any two active samplers in the current program object are of
different types, but refer to the same texture image unit."
This test verifies this behavior several ways. First, an invalid
configuration is constructed. When the pipeline is in the invalid
configuration, glValidateProgramPipeline is used to determine the
status.
The pipeline is then transitioned to a valid configuration, and
glValidateProgramPipeline is called again.
The pipeline is then transitioned back to the invalid configuration.
Without calling glValidateProgramPipeline, glDrawArrays is called. This
should generate the aforementioned error. While still in the invalid
state glValidateProgramPipeline is called a third time.
Finally, the pipeline is transitioned back to the valid configuration.
Without calling glValidateProgramPipeline, glDrawArrays is called. This
should not generate any error.
All of the state flip-flopping is done in an attempt to catch
implementations that latch state in glValidateProgramPipeline and do not
re-validate in glDrawArrays.
NOTE: The work-in-progress GL_ARB_separate_shader_objects implementation
for Mesa currently fails this test because glValidateProgramPipeline
always succeeds, and it does not generate GL_INVALID_OPERATION the first
time glDrawArrays is called.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Diffstat (limited to 'tests/all.py')
-rw-r--r-- | tests/all.py | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/tests/all.py b/tests/all.py index 922e44479..fd9618498 100644 --- a/tests/all.py +++ b/tests/all.py @@ -1804,6 +1804,7 @@ arb_separate_shader_objects['Rendezvous by location'] = plain_test('arb_separate arb_separate_shader_objects['ValidateProgramPipeline'] = concurrent_test('arb_separate_shader_object-ValidateProgramPipeline') arb_separate_shader_objects['400 combinations by location'] = plain_test('arb_separate_shader_object-400-combinations -fbo --by-location') arb_separate_shader_objects['400 combinations by name'] = plain_test('arb_separate_shader_object-400-combinations -fbo') +arb_separate_shader_objects['active sampler conflict'] = concurrent_test('arb_separate_shader_object-active-sampler-conflict') # Group ARB_sampler_objects arb_sampler_objects = {} |