Home | History | Annotate | Download | only in GLES31
      1 -------------------------------------------------------------------------
      2 drawElements Quality Program Test Specification
      3 -----------------------------------------------
      4 
      5 Copyright 2014 The Android Open Source Project
      6 
      7 Licensed under the Apache License, Version 2.0 (the "License");
      8 you may not use this file except in compliance with the License.
      9 You may obtain a copy of the License at
     10 
     11      http://www.apache.org/licenses/LICENSE-2.0
     12 
     13 Unless required by applicable law or agreed to in writing, software
     14 distributed under the License is distributed on an "AS IS" BASIS,
     15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 See the License for the specific language governing permissions and
     17 limitations under the License.
     18 -------------------------------------------------------------------------
     19     Separate shader object tests
     20 
     21 Tests:
     22  + dEQP-GLES31.separate_shader.*
     23 
     24 Includes:
     25 
     26  + Single-program and two-program pipelines
     27  + Replacement of pipeline stages
     28  + Independence of homonymous uniforms and constants in the pipeline's
     29    programs
     30  + Interface compatibility between shader stages
     31  + glProgramUniform on the pipeline's stages
     32  + glCreateShaderProgram
     33  + glActiveShaderProgram
     34  + glBindProgramPipeline vs glUseProgram priority
     35  + glGetProgramPipelineiv queries:
     36    - GL_ACTIVE_PROGRAM
     37    - GL_VERTEX_SHADER
     38    - GL_FRAGMENT_SHADER
     39 
     40 Excludes:
     41 
     42  + Testing pipeline rendering against a hardware-independent reference
     43    renderer
     44 
     45 
     46 The "api.current_program_priority" test case checks that a bound pipeline
     47 has no effect when there is a current program. The test creates a program
     48 pipeline and a differently behaving monolithic program. It then calls
     49 glUseProgram and and glBindProgramPipeline and draws a triangle. The
     50 resulting image is compared to a reference image drawn with the program
     51 but without a bound program pipeline.
     52 
     53 The "api.active_program_uniform" test case creates a pipeline and a
     54 program, binds the pipeline and sets that program as the pipeline's active
     55 program. After this, glUniform is called and a triangle is drawn. The
     56 resulting image is compared to a reference image from a similar program
     57 whose uniform was set after glUseProgram.
     58 
     59 The "api.pipeline_programs" test case checks that glGetProgramPipelineiv
     60 returns the correct programs for vertex and shader stages.
     61 
     62 The "api.pipeline_active" test case checks that glGetProgramPipelineiv
     63 returns the program that was set as the pipeline's active program.
     64 
     65 
     66 The following tests create a program pipeline with one or two programs,
     67 and then possibly replace either or both of the stages with a new
     68 single-shader program. A triangle is drawn with the pipeline and the
     69 result is compared to a triangle drawn with an equivalent monolithic
     70 program.
     71 
     72 In the "pipeline.*" test cases the shaders have uniforms or constants, but
     73 no varyings. The variables in distinct programs may have the same name.
     74 
     75 In the "program_uniform.*" test cases the shaders have uniforms which are
     76 set with glProgramUniform.
     77 
     78 In the "create_shader_program.*" test cases the single-shader programs in
     79 the pipeline are created with glCreateShaderProgram.
     80 
     81 In the "interface.*" test cases there is a varying between the vertex and
     82 fragment shaders. The declarations of the vertex output and fragment input
     83 variables may have different qualifiers or names.
     84 
     85 The "random.*" test cases create random pipeline configurations that mix
     86 properties of the previous test case groups. The shaders may have zero,
     87 one or more varyings. The values of different varyings are rendered as
     88 diagonal stripes in the drawn triangle.
     89