| ------------------------------------------------------------------------- |
| 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. |
| ------------------------------------------------------------------------- |
| Program-specific Uniform Assignment Tests |
| |
| Tests: |
| + dEQP-GLES31.functional.program_uniform.* |
| |
| Includes: |
| + Assigning uniform values for a single program with glProgramUniform* |
| + Various uniform types |
| - Most basic types |
| - Structs and arrays, including nested |
| + Both by-pointer and by-value variants of functions tested |
| + Uniforms used in vertex shader, fragment shader, or both |
| + Verify by glGetUniform* or rendering |
| |
| Excludes: |
| + Assigning uniforms to multiple programs |
| + Sampler types other than 2d and cube |
| + Negative tests |
| |
| Description: |
| |
| The glProgramUniform* tests use the alternative uniform assignment API (in |
| contrast to the glUniform* functions) for assigning uniform values to a |
| different program than the currently active one. |
| |
| Various combinations of uniforms are tested: single basic-type uniforms, arrays, |
| structs, and nested structures with arrays. Each active uniform is assigned |
| a value using an appropriate glProgramUniform* function, either the pointer |
| variant or the value variant (if possible; for instance, matrices can only be |
| assigned using the pointer variant). Arrays with basic element type can have |
| their first element identified using either just the array's name or that |
| appended with "[0]"; both methods are tested. |
| |
| To verify that the correct uniform values were assigned, either the uniform |
| values are queried with glGetUniform* or the shaders are rendered with; the |
| shaders are constructed such that the result should be an all-green quad if |
| the uniforms have correct values, and all-black otherwise. |
| |
| At the beginning of each test case, a dummy program is created and made active |
| with glUseProgram; otherwise, the glProgramUniform* calls would behave just as |
| the corresponding glUniform* calls. |