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    Integer operator tests
20
21Tests:
22 + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_int_*
23 + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_ivec_*
24 + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_uint_*
25 + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_uvec_*
26 + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_int_*
27 + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_ivec_*
28 + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_uint_*
29 + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_uvec_*
30
31Includes:
32 + Integer scalar and vector unary operators:
33   - plus
34   - minus
35   - bitwise not
36 + Integer scalar and vector binary operators:
37   - add
38   - sub
39   - mul
40   - div
41   - mod
42   - bitwise and
43   - bitwise or
44   - bitwise xor
45   - less
46   - less or equal
47   - greater
48   - greater or equal
49   - equal
50   - not equal
51 + Scalar-scalar, vector-vector and vector-scalar binary operators
52 + Lowp, mediump operands where behaviour is well-defined
53 + Highp operands
54
55Excludes:
56 + Integer type range and bitlayout verification
57   - Will be tested in later type range and storage tests
58
59Description:
60
61Integer test cases use shader rendering test framework. Depending on case type
62(vertex or fragment) a single quad or a tight grid of quads is rendered with
63the shader program that is being tested. Results are compared against a reference.
64Reference image is rendered using a C reference of the shader. A fuzzy comparison
65is used to allow small deviations due to fragment input interpolation.
66
67Integer operator test shaders use floating-point attributes or varyings converted
68to integers as operands. The value range is chosen based on precision. Results
69from the operation are casted back to floating-point values and scaled to range
700..1. The resulting scalar or vector value is then written out as vertex or
71fragment color.
72