1------------------------------------------------------------------------- 2drawElements Quality Program Test Specification 3----------------------------------------------- 4 5Copyright 2014 The Android Open Source Project 6 7Licensed under the Apache License, Version 2.0 (the "License"); 8you may not use this file except in compliance with the License. 9You may obtain a copy of the License at 10 11 http://www.apache.org/licenses/LICENSE-2.0 12 13Unless required by applicable law or agreed to in writing, software 14distributed under the License is distributed on an "AS IS" BASIS, 15WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16See the License for the specific language governing permissions and 17limitations under the License. 18------------------------------------------------------------------------- 19 Program-specific Uniform Assignment Tests 20 21Tests: 22 + dEQP-GLES31.functional.program_uniform.* 23 24Includes: 25 + Assigning uniform values for a single program with glProgramUniform* 26 + Various uniform types 27 - Most basic types 28 - Structs and arrays, including nested 29 + Both by-pointer and by-value variants of functions tested 30 + Uniforms used in vertex shader, fragment shader, or both 31 + Verify by glGetUniform* or rendering 32 33Excludes: 34 + Assigning uniforms to multiple programs 35 + Sampler types other than 2d and cube 36 + Negative tests 37 38Description: 39 40The glProgramUniform* tests use the alternative uniform assignment API (in 41contrast to the glUniform* functions) for assigning uniform values to a 42different program than the currently active one. 43 44Various combinations of uniforms are tested: single basic-type uniforms, arrays, 45structs, and nested structures with arrays. Each active uniform is assigned 46a value using an appropriate glProgramUniform* function, either the pointer 47variant or the value variant (if possible; for instance, matrices can only be 48assigned using the pointer variant). Arrays with basic element type can have 49their first element identified using either just the array's name or that 50appended with "[0]"; both methods are tested. 51 52To verify that the correct uniform values were assigned, either the uniform 53values are queried with glGetUniform* or the shaders are rendered with; the 54shaders are constructed such that the result should be an all-green quad if 55the uniforms have correct values, and all-black otherwise. 56 57At the beginning of each test case, a dummy program is created and made active 58with glUseProgram; otherwise, the glProgramUniform* calls would behave just as 59the corresponding glUniform* calls. 60