xref: /aosp_15_r20/external/deqp/doc/testspecs/GLES3/functional.ubo.txt (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard WorkerdrawElements Quality Program Test Specification
3*35238bceSAndroid Build Coastguard Worker-----------------------------------------------
4*35238bceSAndroid Build Coastguard Worker
5*35238bceSAndroid Build Coastguard WorkerCopyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker
7*35238bceSAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Workeryou may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard WorkerYou may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker
11*35238bceSAndroid Build Coastguard Worker     http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker
13*35238bceSAndroid Build Coastguard WorkerUnless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Workerlimitations under the License.
18*35238bceSAndroid Build Coastguard Worker-------------------------------------------------------------------------
19*35238bceSAndroid Build Coastguard Worker    Uniform Buffer Object tests
20*35238bceSAndroid Build Coastguard Worker
21*35238bceSAndroid Build Coastguard WorkerTests:
22*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.ubo.*
23*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.linkage.uniform_block*
24*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.declarations.invalid_declarations.uniform_block*
25*35238bceSAndroid Build Coastguard Worker
26*35238bceSAndroid Build Coastguard WorkerIncludes:
27*35238bceSAndroid Build Coastguard Worker + Basic uniform buffer object usage
28*35238bceSAndroid Build Coastguard Worker   - Binding and unbinding uniform buffers
29*35238bceSAndroid Build Coastguard Worker   - Writing uniform buffer data with glBufferData()
30*35238bceSAndroid Build Coastguard Worker + Binding uniform buffers to uniform blocks
31*35238bceSAndroid Build Coastguard Worker   - glBindBufferRange()
32*35238bceSAndroid Build Coastguard Worker   - glBindBufferBase()
33*35238bceSAndroid Build Coastguard Worker   - glUniformBlockBinding()
34*35238bceSAndroid Build Coastguard Worker + Querying uniform block memory layout
35*35238bceSAndroid Build Coastguard Worker + std140 memory layout
36*35238bceSAndroid Build Coastguard Worker + Uniform blocks GLSL
37*35238bceSAndroid Build Coastguard Worker   - Basic scalar, vector and matrix types in uniform blocks
38*35238bceSAndroid Build Coastguard Worker   - Samplers in uniform blocks - as negative case!
39*35238bceSAndroid Build Coastguard Worker   - Structures and arrays in uniform blocks
40*35238bceSAndroid Build Coastguard Worker   - Uniform block instance names
41*35238bceSAndroid Build Coastguard Worker   - Uniform block arrays
42*35238bceSAndroid Build Coastguard Worker   - Layout qualifiers: shared, packed, std140, row_major, column_major
43*35238bceSAndroid Build Coastguard Worker   - Negative tests for syntax and semantic errors in declarations
44*35238bceSAndroid Build Coastguard Worker   - Negative tests for uniform block linking
45*35238bceSAndroid Build Coastguard Worker   - Unused uniforms in uniform blocks
46*35238bceSAndroid Build Coastguard Worker + Sharing uniform blocks between vertex and fragment shaders
47*35238bceSAndroid Build Coastguard Worker
48*35238bceSAndroid Build Coastguard WorkerExcludes:
49*35238bceSAndroid Build Coastguard Worker + Mapping uniform buffers
50*35238bceSAndroid Build Coastguard Worker   - Will be covered in buffer mapping tests
51*35238bceSAndroid Build Coastguard Worker + Negative tests for uniform buffer API
52*35238bceSAndroid Build Coastguard Worker   - Will be covered in negative API tests
53*35238bceSAndroid Build Coastguard Worker
54*35238bceSAndroid Build Coastguard WorkerDescription:
55*35238bceSAndroid Build Coastguard Worker
56*35238bceSAndroid Build Coastguard WorkerUniform block tests define a set of uniforms and uniform blocks. In addition two
57*35238bceSAndroid Build Coastguard Workersubsets are computed: uniforms accessed from vertex shader and uniforms accessed
58*35238bceSAndroid Build Coastguard Workerfrom fragment shader respectively. The uniform sets are either specified manually
59*35238bceSAndroid Build Coastguard Workeror choosen randomly. Values for each uniform are choosen.
60*35238bceSAndroid Build Coastguard Worker
61*35238bceSAndroid Build Coastguard WorkerShaders are generated based on uniform declarations and use set. Each uniform that
62*35238bceSAndroid Build Coastguard Workeris in "used set" is read and compared against expected value in the shader. Final
63*35238bceSAndroid Build Coastguard Workerresult is a boolean value: true if all uniforms contained expected values and false
64*35238bceSAndroid Build Coastguard Workerotherwise. Vertex shader result controls green channel: output is 1 if values were
65*35238bceSAndroid Build Coastguard Workercorrect and 0 otherwise. Fragment shader result controls blue channel in the same
66*35238bceSAndroid Build Coastguard Workermanner.
67*35238bceSAndroid Build Coastguard Worker
68*35238bceSAndroid Build Coastguard WorkerShaders are compiled and linked together. Uniform block layout is queried and
69*35238bceSAndroid Build Coastguard Workervalues are stored into one or more uniform buffers. If std140 memory layout is used,
70*35238bceSAndroid Build Coastguard Workera reference memory layout is used instead and queries are made to validate the
71*35238bceSAndroid Build Coastguard Workerlayout computed by implementation prior to issuing any draw calls.
72*35238bceSAndroid Build Coastguard Worker
73*35238bceSAndroid Build Coastguard WorkerA single quad consisting of two triangles is rendered and resulting framebuffer
74*35238bceSAndroid Build Coastguard Workerpixels are checked. If all pixels are white and uniform layout queries didn't
75*35238bceSAndroid Build Coastguard Workerreturn any unexpected values or errors, test case passes.
76*35238bceSAndroid Build Coastguard Worker
77*35238bceSAndroid Build Coastguard WorkerNegative tests for compiler and linker use a pair of hand-written shaders. Compile
78*35238bceSAndroid Build Coastguard Workeror link is verified to return failure.
79