You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
4.6 KiB
92 lines
4.6 KiB
-------------------------------------------------------------------------
|
|
drawElements Quality Program Test Specification
|
|
-----------------------------------------------
|
|
|
|
Copyright 2014 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-------------------------------------------------------------------------
|
|
Geometry and tessellation shader interaction tests
|
|
|
|
Tests:
|
|
+ dEQP-GLES31.functional.tessellation_geometry_interaction.*
|
|
+ dEQP-GLES31.stress.tessellation_geometry_interaction.*
|
|
|
|
Includes:
|
|
+ Basic render tests using a shader program with tessellation and
|
|
geometry shading stages.
|
|
+ Render tests with maximum geometry amplification in different stages
|
|
+ Scattering render tests where result primitives are scattered all
|
|
over the viewport and render layers.
|
|
+ Basic transform feedback tests
|
|
+ Point size render tests
|
|
|
|
Excludes:
|
|
+ Complex rendering tests
|
|
+ SSBO memory access ordering test between tessellation and geometry shaders
|
|
+ Transform feedback with all basic types
|
|
|
|
Description:
|
|
|
|
render.passthrough cases tests basic rendering with a shader program with
|
|
attached tessellation and geometry shaders. Tests verify that attaching either a
|
|
passthrough geometry or tessellation shader does not change the result image. In
|
|
*_passthrough_geometry_* cases, the pattern is first rendered without a geometry
|
|
shader and then with a passthrough geometry shader. In
|
|
*_passthrough_tessellation_* cases, image is first rendered without a
|
|
tessellation stage and then with a passthrough tessellation shader attached.
|
|
|
|
render.limits.* cases test rendering with a five stage shader program with a
|
|
shader that uses the maximum number of geometry output vertices, uses maximum
|
|
number geometry shader instances, or sets the maximum tessellation level.
|
|
*_required_* cases use the maximum limit as required by the extension
|
|
specifications and *_implementation_* cases use the maximum limit reported by
|
|
the glGetInteger(GL_MAX_...) queries. Cases render a grid of green and yellow
|
|
cells, and the result image is verified.
|
|
|
|
The
|
|
dEQP-GLES31.stress.tessellation_geometry_interaction.render_multiple_limits.*
|
|
cases are otherwise identical to the functional cases but the stress.*
|
|
counterparts test multiple implementation and specification mandated limits at
|
|
the same time. Due to the extreme geometry amplification in certain tests, the
|
|
OUT_OF_MEMORY error is treated as a valid result (in addition to the valid
|
|
render result).
|
|
|
|
render.scatter.* cases use geometry shader to scatter the output primitives all
|
|
over the viewport. In the geometry_scatter_instances case, each geometry shader
|
|
instance emits its primitives near to each other but far form the primitives
|
|
emitted by the other instances of the same geometry shader execution. In the
|
|
geometry_scatter_primitives, each geometry shader instance emits its primitives
|
|
far form each other. In geometry_scatter_layers case, each emitted primitive of
|
|
a geometry shader instance is assigned a different layer index. Cases render a
|
|
grid of green and yellow cells, and the result image is verified.
|
|
|
|
feedback.tessellation_output_*_geometry_output_* cases test that transform
|
|
feedback works with five stage shader programs with different tessellation and
|
|
geometry output primitive types. Tests verify the validity of feedback results
|
|
and the value GL_PRIMITIVES_GENERATED query and then compare the rendered image
|
|
against the feedback results.
|
|
|
|
feedback.record_variable_selection case tests that when using transform
|
|
feedback the recorded variable is selected from the geometry shader if the
|
|
geometry shader is active.
|
|
|
|
point_size.* cases test reading and writing to gl_PointSize varible in different
|
|
shader stages. In {vertex, control, evaluation, geometry}_set cases, a constant
|
|
is assigned to the gl_PointSize in the corresponding shader stage. In {vertex,
|
|
control, ...}_add cases, gl_PointSize is incremented by a constant. In {eval,
|
|
default}_default cases, the corresponding shader stage is active, but it does
|
|
not modify the point size or use the shader stage specific point size extension.
|
|
The shader program is used to render a single point, and the rendered point size
|
|
is then verified from the image.
|