| ------------------------------------------------------------------------- |
| 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. |
| ------------------------------------------------------------------------- |
| Opaque Type Indexing |
| |
| Tests: |
| + dEQP-GLES31.functional.shaders.opaque_type_indexing.* |
| |
| Includes: |
| + Indexing of sampler arrays |
| - all sampler types |
| - single sampler array |
| - 1x1 texture per unit, unique color per texture |
| + Indexing of Uniform Block instance arrays |
| - single uint var in each block |
| + Indexing of SSBO instance arrays |
| - single uint var in each block |
| - read only |
| + Indexing of atomic counter arrays |
| - single array |
| + Vertex, fragment and compute shaders |
| + Indexing with constant literals |
| + Indexing with uniform values (XXX_gpu_shader5) |
| + Indexing with dynamically uniform values (XXX_gpu_shader5) |
| |
| Excludes (will be added later): |
| + SSBO writes, atomic ops, unsized array length queries |
| + Different texture sizes and filtering modes |
| + Indexing inside complex control flow (loop iterator var) |
| + Indexing with non-trivial constant expressions |
| + Negative tests |
| |
| Description: |
| |
| Opaque type indexing tests generate a shader that does multiple reads from a |
| specific opaque type array. The indexing expression depends on the test case |
| type. Constant literal cases simply index with constant literal values, |
| uniform cases with values read directly from a list of uniforms, and |
| dynamically uniform cases using attribute/varying/SSBO variables depending on |
| the shader type. |
| |
| Results from the indexing operations are collected using transform feedback, |
| fragment shader outputs, or written into a SSBO depending on the shader type. |
| Results are validated against reference values. |