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     Geometry and tessellation shader interaction tests
     20 
     21 Tests:
     22  + dEQP-GLES31.functional.tessellation_geometry_interaction.*
     23  + dEQP-GLES31.stress.tessellation_geometry_interaction.*
     24 
     25 Includes:
     26  + Basic render tests using a shader program with tessellation and
     27    geometry shading stages.
     28  + Render tests with maximum geometry amplification in different stages
     29  + Scattering render tests where result primitives are scattered all
     30    over the viewport and render layers.
     31  + Basic transform feedback tests
     32  + Point size render tests
     33 
     34 Excludes:
     35  + Complex rendering tests
     36  + SSBO memory access ordering test between tessellation and geometry shaders
     37  + Transform feedback with all basic types
     38 
     39 Description:
     40 
     41 render.passthrough cases tests basic rendering with a shader program with
     42 attached tessellation and geometry shaders. Tests verify that attaching either a
     43 passthrough geometry or tessellation shader does not change the result image. In
     44 *_passthrough_geometry_* cases, the pattern is first rendered without a geometry
     45 shader and then with a passthrough geometry shader. In
     46 *_passthrough_tessellation_* cases, image is first rendered without a
     47 tessellation stage and then with a passthrough tessellation shader attached.
     48 
     49 render.limits.* cases test rendering with a five stage shader program with a
     50 shader that uses the maximum number of geometry output vertices, uses maximum
     51 number geometry shader instances, or sets the maximum tessellation level.
     52 *_required_* cases use the maximum limit as required by the extension
     53 specifications and *_implementation_* cases use the maximum limit reported by
     54 the glGetInteger(GL_MAX_...) queries. Cases render a grid of green and yellow
     55 cells, and the result image is verified.
     56 
     57 The
     58 dEQP-GLES31.stress.tessellation_geometry_interaction.render_multiple_limits.*
     59 cases are otherwise identical to the functional cases but the stress.*
     60 counterparts test multiple implementation and specification mandated limits at
     61 the same time. Due to the extreme geometry amplification in certain tests, the
     62 OUT_OF_MEMORY error is treated as a valid result (in addition to the valid
     63 render result).
     64 
     65 render.scatter.* cases use geometry shader to scatter the output primitives all
     66 over the viewport. In the geometry_scatter_instances case, each geometry shader
     67 instance emits its primitives near to each other but far form the primitives
     68 emitted by the other instances of the same geometry shader execution. In the
     69 geometry_scatter_primitives, each geometry shader instance emits its primitives
     70 far form each other. In geometry_scatter_layers case, each emitted primitive of
     71 a geometry shader instance is assigned a different layer index. Cases render a
     72 grid of green and yellow cells, and the result image is verified.
     73 
     74 feedback.tessellation_output_*_geometry_output_* cases test that transform
     75 feedback works with five stage shader programs with different tessellation and
     76 geometry output primitive types. Tests verify the validity of feedback results
     77 and the value GL_PRIMITIVES_GENERATED query and then compare the rendered image
     78 against the feedback results.
     79 
     80 feedback.record_variable_selection case tests that when using transform
     81 feedback the recorded variable is selected from the geometry shader if the
     82 geometry shader is active.
     83 
     84 point_size.* cases test reading and writing to gl_PointSize varible in different
     85 shader stages. In {vertex, control, evaluation, geometry}_set cases, a constant
     86 is assigned to the gl_PointSize in the corresponding shader stage. In {vertex,
     87 control, ...}_add cases, gl_PointSize is incremented by a constant. In {eval,
     88 default}_default cases, the corresponding shader stage is active, but it does
     89 not modify the point size or use the shader stage specific point size extension.
     90 The shader program is used to render a single point, and the rendered point size
     91 is then verified from the image.
     92