You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.7 KiB
65 lines
2.7 KiB
-------------------------------------------------------------------------
|
|
drawElements Quality Program Test Specification
|
|
-----------------------------------------------
|
|
|
|
Copyright 2014 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-------------------------------------------------------------------------
|
|
Shader Shared Variable Tests
|
|
|
|
Tests:
|
|
+ dEQP-GLES31.functional.compute.shared_var.*
|
|
|
|
Includes:
|
|
+ All basic types, all precisions
|
|
+ Single shared variable
|
|
+ Various work group sizes
|
|
- 2x1x3 in basic type cases
|
|
- 1x1x1, 64x1x1, 1x64x1, 1x1x64, 256x1x1, 1x256x1, 17x5x9 for selected types
|
|
+ All built-in atomic operation functions
|
|
+ int, uint types
|
|
+ all precisions
|
|
+ Multiple work groups for atomic function cases
|
|
|
|
Excludes:
|
|
+ Multiple shared variables
|
|
+ Complex types (arrays, structures)
|
|
+ Negative tests
|
|
|
|
Description:
|
|
|
|
Basic type test cases declare a single shared variable of the appropriate
|
|
type. In addition following input/output variables are used:
|
|
+ buffer block containing an array of booleans, one for each item in work group
|
|
+ u_val[], u_ref[] uniform arrays, filled with identical values
|
|
+ u_numIters iteration count uniform, initialized with work group size
|
|
|
|
The compute shader contains a loop that is limited by the u_numIters uniform.
|
|
In each iteration one of the work items writes a value from u_val to the
|
|
shared variable. A shared memory barrier is issued, and after that all work
|
|
items read and compare shared var value to u_ref. If comparison passed for all
|
|
iterations, true is set to appropriate element of the output array. Test case
|
|
then maps the output SSBO and checks that all elements are true, meaning that
|
|
all shader invocations passed the test.
|
|
|
|
|
|
Atomic operation test cases issue multiple work groups of size 3x2x1. In each
|
|
work group first invocation initializes shared variable to a certain value.
|
|
Barrier is issued and after that each invocation issues atomic operation with
|
|
per-invocation value. Resulting values are written out into SSBO. Finally, one
|
|
invocation per work group writes out the final shared variable value.
|
|
|
|
Resulting values from SSBO are read using buffer mapping and verified. The
|
|
input values and validation logic depends on the type of the atomic operation.
|