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