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 / Image Storage synchronization tests
     20 
     21 Tests:
     22  + dEQP-GLES31.functional.synchronization.*
     23 
     24 Includes:
     25 
     26  + In-invocation synchronization
     27    - Test synchronization primitives within a single invocation.
     28 
     29  + Inter-invocation synchronization
     30    - Test synchronization between work group invocations.
     31 
     32  + Inter-call synchronization
     33    - Test synchronization between draw calls
     34 
     35 Excludes:
     36 
     37  - Inter-invocation synchronization without use of barrier()
     38  - Use vertex, fragment, or geometry shaders.
     39 
     40 Description:
     41 
     42 In-invocation synchronization tests read and write to a coherent image or
     43 buffer within a single invocation. Data accessed by a single invocation is not
     44 accessed by other invocations. Image accesses are synchronized using
     45 memoryBarrierImage(). SSBO accesses do not need to be explicitly synchronized
     46 as memory operations execute in order.
     47 
     48 Inter-invocation synchronization tests read and write to a coherent image or
     49 buffer within a single work group. Data accessed by a single invocation is also
     50 accessed by another invocation within the work group. Accesses are synchronized
     51 using a combination of groupMemoryBarrier() and barrier().
     52 
     53 inter_call.with_memory_barrier test cases read and write to an image or buffer.
     54 Data written in a single call is read in another call. glMemoryBarrier() is used
     55 for synchronization between the calls.
     56 
     57 inter_call.without_memory_barrier.* inter-call synchronization tests modify a image
     58 or buffer declared as volatile with atomic operations or using atomic counters.
     59 Multiple computes are dispatched without calling MemoryBarrier(). Result and
     60 intermediate results are checked to verify operation atomicy over multiple compute
     61 dispatches.
     62 
     63 inter_call.without_memory_barrier.ssbo_atomic_counter_mixed_* cases test relative
     64 atomicy of buffer atomic operations and atomic counter operations. Separate programs
     65 modify atomically either a buffer or an atomic counter backed by the same buffer.
     66 Multiple instances of programs are dispatched without calling MemoryBarrrier(). Buffer
     67 content and intermediate values are checked to verify atomicy between operations.
     68