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.
114 lines
5.5 KiB
114 lines
5.5 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 shader tests
|
|
|
|
Tests:
|
|
+ dEQP-GLES31.functional.geometry_shading.*
|
|
|
|
Includes:
|
|
+ Basic tests:
|
|
- gl_PointSize, gl_PrimitiveID, gl_PrimitiveIDIn built-ins
|
|
- Constant and varying emit counts
|
|
- All input primitive types
|
|
- All output privitive types (point, line_strip, triangle_strip)
|
|
- Different number of varyings
|
|
+ Non-sufficient vertex emit counts, superfluous EndPrimitives()
|
|
+ Layered rendering
|
|
+ Negative tests for input types
|
|
|
|
Excludes:
|
|
+ Geometry shader transform feedback
|
|
+ (Negative) tests for vertex-geo-frag shader varying linkage.
|
|
+ Primitive render order with geometry shader instancing
|
|
|
|
Description:
|
|
|
|
Geometry shader tests test geometry shader functionality by rendering
|
|
a scene using geometry shaders and comparing the resulting image to
|
|
the output of a reference renderer. Layered rendering render tests
|
|
draw scene to a texture which is then read back layer by layer. Contents
|
|
of each layer is then verified.
|
|
|
|
query.* test group contains various query tests. max_geometry_* cases
|
|
verify that the implementation limit queried via API is equal to the
|
|
corresponding GLSL constant. geometry_* and max_geometry_* cases test
|
|
geometry shader related limits and states. primitives_generated_* cases
|
|
verify GL_PRIMITIVES_GENERATED query result in various scenarios.
|
|
max_framebuffer_* and framebuffer_* test verify layered fbo limits, states
|
|
and incompleteness conditions.
|
|
|
|
basic.* tests test basic geometry shader usage: output_* cases emit
|
|
a constant number of vertices. output_vary_by_* cases emit a varying
|
|
number of vertices, depending on a shader varying, uniform or a texture
|
|
lookup. basic.point_size, basic.primitive_id_in[_restarted] and
|
|
basic.primitive_id cases test functionality of a corresponding built-in
|
|
variable. *_restarted variant verifies that primitive restart index has
|
|
no effect to the corresponding variable.
|
|
|
|
input.* tests verify geometry shader behavior with different input types
|
|
by drawing a separate triangle for each geometry shader input vertex.
|
|
input.triangle_strip_adjacency.* cases verify correct behavior of
|
|
TRIANGLE_ADJACENCY primitive with different vertex counts.
|
|
|
|
conversion.* tests verify functionality of geometry shaders with different
|
|
input and output primitive types.
|
|
|
|
emit.* tests test geometry shaders with different number of EmitVertex()
|
|
and EndPrimitive() calls, ranging from too few to superfluous. A geometry
|
|
shader invocation with name *_emit_N_end_M calls EmitVertex() N times and
|
|
EndPrimitive() M times.
|
|
|
|
varying.* tests verify the functionality of vertex shader -> geometry shader
|
|
varyigns and geometry shader -> fragment shader varyings.
|
|
|
|
layered.* tests geometry shader layered rendering targeting a cubemap, 3D,
|
|
2D array, and 2D multisample array texture. Tests render to the default layers,
|
|
only to one layer, each layer separately, or to each layer with different
|
|
contents and verify the contents of each layer. fragment_layer_* cases verify
|
|
the fragment shader built-in variable gl_Layer by outputting different color to
|
|
each layer. layer_provoking_vertex_* cases verify implementation dependent value
|
|
GL_LAYER_PROVOKING_VERTEX by rendering two triangles with one vertex having a
|
|
different gl_Layer value. The actual provoking vertex is then verified by
|
|
checking the layer contents.
|
|
|
|
instanced.* tests geometry shader instancing functionality.
|
|
geometry[_output_different]_N_invocations cases test basic geometry shader
|
|
instancing by rendering primitives in a circle formation. Each output primitive
|
|
on the circle is generated by a single geometry shader invocation and each
|
|
circle is generated by a single input primitive. invocation_per_layer and
|
|
multiple_layers_per_invocation cases test geometry shader instancing with
|
|
layered rendering. In invocation_per_layer cases, shader invocation writes only
|
|
to a single layer and in multiple_layers_per_invocation cases to two layers. In
|
|
invocation_output_vary_by_* cases, invocations emit a varying number of
|
|
vertices, depending on a shader varying, uniform or a texture lookup.
|
|
draw_N_instances_geometry_M_invocations cases test geometry instancing in with
|
|
instanced drawing. As in the geometry_N_invocations, a group of primitives is
|
|
drawn around each input primitive instance.
|
|
|
|
negative.* cases create a geometry shader accepting a certain input
|
|
primitive type and then try to use the shader when drawing with an incompatible
|
|
primitive type. GL_INVALID_OPERATION is expected.
|
|
|
|
vertex_transform_feedback.* cases test transform feedback relaxations introduced
|
|
in the extension. Tests include all new render primitive modes and
|
|
draw{arrays,elements}{e,indirect,instanced} draw functions.
|
|
capture_vertex_draw_elements_overflow_single_buffer case tests that a
|
|
buffer-overflowing primitive feedback result is not partially written to the
|
|
feedback buffer.
|