Home | History | Annotate | Download | only in GLES31
      1 -------------------------------------------------------------------------
      2 drawElements Quality Program Test Specification
      3 -----------------------------------------------
      4 
      5 Copyright 2014 The Android Open Source Project
      6 
      7 Licensed under the Apache License, Version 2.0 (the "License");
      8 you may not use this file except in compliance with the License.
      9 You may obtain a copy of the License at
     10 
     11      http://www.apache.org/licenses/LICENSE-2.0
     12 
     13 Unless required by applicable law or agreed to in writing, software
     14 distributed under the License is distributed on an "AS IS" BASIS,
     15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 See the License for the specific language governing permissions and
     17 limitations under the License.
     18 -------------------------------------------------------------------------
     19     Shader Storage Buffer Object / Buffer Block Tests
     20 
     21 Tests:
     22  + dEQP-GLES31.functional.ssbo.*
     23 
     24 Includes:
     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 
     47 Excludes:
     48  + Access from other shader shader stages (currently compute only)
     49  + Negative tests
     50 
     51 Description:
     52 
     53 SSBO layout and access tests generate compute shader code based on interface
     54 declaration. Shader is compiled and layout is queried. Validity checks are
     55 performed to the layout, and in case of std140 and std430 layouts the layout
     56 is compared against a full reference layout.
     57 
     58 Single compute shader invocation is issued. Shader reads and/or writes to
     59 SSBO. Reads are validated by comparing values to constant values declared in
     60 shader text. Writes are validated by reading back the SSBO and comparing
     61 against expected values.
     62 
     63 Atomic operation test cases use a single SSBO for both input data, output data
     64 and data operated with atomic memory functions. Multiple work groups of size
     65 3x2x1 is issued and each invocation executes atomic operation with per-
     66 invocation data. Result values are then stored into SSBO. Results are
     67 validated by mapping buffer and doing comparison that varies per function. The
     68 input values are chosen so that comparison can detect obvious non-atomic
     69 behavior.
     70