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