• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    Shader Storage Buffer Object / Buffer Block Tests
20
21Tests:
22 + dEQP-GLES31.functional.ssbo.*
23
24Includes:
25 + SSBO access from compute shaders
26 + Basic SSBO usage
27   - Binding and unbinding uniform buffers
28   - Writing uniform buffer data with glBufferData()
29 + Binding SSBOs to buffer blocks
30   - glBindBufferRange()
31   - glBindBufferBase()
32   - glShaderStorageBlockBinding()
33 + Querying buffer block memory layout
34 + Layout sanity verification
35 + std140 and std430 layout verification
36 + Buffer blocks GLSL
37   - Basic scalar, vector and matrix types in buffer blocks
38   - Samplers in buffer blocks - as negative case!
39   - Structures and arrays in buffer blocks
40   - Buffer block instance names
41   - Buffer block arrays
42   - Unsized arrays as a last element of buffer block
43   - Layout qualifiers: shared, packed, std140, row_major, column_major
44   - Unused variables in buffer blocks
45 * Atomic operations
46
47Excludes:
48 + Access from other shader shader stages (currently compute only)
49 + Negative tests
50
51Description:
52
53SSBO layout and access tests generate compute shader code based on interface
54declaration. Shader is compiled and layout is queried. Validity checks are
55performed to the layout, and in case of std140 and std430 layouts the layout
56is compared against a full reference layout.
57
58Single compute shader invocation is issued. Shader reads and/or writes to
59SSBO. Reads are validated by comparing values to constant values declared in
60shader text. Writes are validated by reading back the SSBO and comparing
61against expected values.
62
63Atomic operation test cases use a single SSBO for both input data, output data
64and data operated with atomic memory functions. Multiple work groups of size
653x2x1 is issued and each invocation executes atomic operation with per-
66invocation data. Result values are then stored into SSBO. Results are
67validated by mapping buffer and doing comparison that varies per function. The
68input values are chosen so that comparison can detect obvious non-atomic
69behavior.
70