| ------------------------------------------------------------------------- |
| 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. |
| ------------------------------------------------------------------------- |
| GL_EXT_primitive_bounding_box extension tests |
| |
| Tests: |
| + dEQP-GLES31.functional.primitive_bounding_box.* |
| |
| Includes: |
| + State query tests |
| + Primitive render tests |
| - All basic primitives: triangles, (wide) lines, (wide) points |
| - Set bounding box with gl_BoundingBoxEXT and PrimitiveBoundingBoxEXT |
| - Rendering with and without tessellation and/or geometry stages |
| - Rendering with correct, too large, and too small bounding boxes |
| + Depth render tests |
| - Render pattern and hint the final depth range with bounding box |
| - Test with built-in depth and user defined (gl_FragDepth) depth |
| + Blit tests |
| - Blit should not be affected by the bounding box |
| + Clear tests |
| - Clears should not be affected by the bounding box |
| |
| Excludes: |
| + Special floating point values (NaN, Inf, etc.) |
| + Rendering with separate shader pipelines |
| + Rendering discardable geometry with fragment shaders that have |
| side-effects (memory writes) |
| + Rendering discardable geometry with active transform feedback |
| |
| Description: |
| |
| state_query.* cases test the global PRIMITIVE_BOUNDING_BOX_EXT state. |
| Tests set the state to certain values and then query the state using |
| different methods. |
| |
| triangles.*, (wide_)lines.*, (wide_)points.* cases set the primitive |
| bounding box and render a test pattern. Rendering results within the |
| bounding box are then verified. |
| |
| "global_state.*" cases set the bounding box of the whole test pattern |
| using the PRIMITIVE_BOUNDING_BOX_EXT state. "tessellation_set_per_draw.*" |
| cases set the bounding box of the whole test pattern using |
| gl_BoundingBoxEXT output variable. "tessellation_set_per_draw.*" cases |
| set the bounding box for each (tessellation input) primitive separately. |
| |
| "*_bbox_equal" cases set the bounding box to tightly cover the primitive |
| or the whole pattern. In "*_bbox_larger" cases, the bounding box is set |
| to be larger than the rendered pattern/primitive and in "*_bbox_smaller" |
| cases, the bounding box is set to cover only a subset of the pattern. |
| In these subset cases, only the area covered by the bounding box is |
| verified. |
| |
| triangles.* cases render a grid with yellow and green cells. Cells are |
| in random order. Result image verification is done by simply checking |
| that the viewport does not contain any background-colored pixels within |
| the pattern area. |
| |
| (wide_)points.* cases render a pattern of green and blue points. |
| Verification checks that no points within the bounding box area are |
| missing and have the correct size. Size test is intended to prevent |
| partially rendered points from passing the test. |
| |
| (wide_)lines.* cases render a pattern of green and blue lines. |
| Verification checks the number and the width of separate lines within |
| bounding box area. Number-of-lines check prevents accepting rendering |
| results with missing lines and the line width check prevents accepting |
| partially rendered lines. |
| |
| depth.* cases render multiple layers with varying depth values while |
| hint the resulting depth range with primitive bounding box. In |
| "builtin_depth.*" cases, depth is set by the rasterizer. In |
| "user_defined_depth.*" cases, depth is set in the fragment shader using |
| gl_FragDepth. Verification checks that only the topmost layer is visible. |
| |
| blit_fbo.* cases do framebuffer blits with different bounding box values. |
| Bounding box values should not affect blitting. |
| |
| clear.* cases do full and scissored framebuffer clears. Since clears are |
| not affected by the bounding box, verification is done by simply comparing |
| rendering result with bounding box set to cover full viewport and rendering |
| result with bounding box set to arbitrary values. In *_with_triangles cases, |
| some geometry is rendered between clears with properly set bounding box. |
| |
| call_order.* cases render a scene with different relative order of |
| glViewport and glPrimitiveBoundingBox. Tests verify that the bounding box |
| for a draw command is calculated from the current state when draw command |
| is issued (i.e. changing call order of state setting functions does not |
| change ther result). |