summaryrefslogtreecommitdiff
path: root/tests/all.py
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2014-03-14 17:19:38 -0700
committerIan Romanick <ian.d.romanick@intel.com>2014-04-25 17:32:19 -0700
commit5702e43335190a945f0de107ee18c821689060d7 (patch)
tree27770bc3e642169b15601350095949f1edcdda7e /tests/all.py
parent8b2caa1aacdf7311fdd69de653eb85fc2dcb427e (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.py1
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 = {}