1*35238bceSAndroid Build Coastguard Worker------------------------------------------------------------------------- 2*35238bceSAndroid Build Coastguard WorkerdrawElements Quality Program Test Specification 3*35238bceSAndroid Build Coastguard Worker----------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker 5*35238bceSAndroid Build Coastguard WorkerCopyright 2014 The Android Open Source Project 6*35238bceSAndroid Build Coastguard Worker 7*35238bceSAndroid Build Coastguard WorkerLicensed under the Apache License, Version 2.0 (the "License"); 8*35238bceSAndroid Build Coastguard Workeryou may not use this file except in compliance with the License. 9*35238bceSAndroid Build Coastguard WorkerYou may obtain a copy of the License at 10*35238bceSAndroid Build Coastguard Worker 11*35238bceSAndroid Build Coastguard Worker http://www.apache.org/licenses/LICENSE-2.0 12*35238bceSAndroid Build Coastguard Worker 13*35238bceSAndroid Build Coastguard WorkerUnless required by applicable law or agreed to in writing, software 14*35238bceSAndroid Build Coastguard Workerdistributed under the License is distributed on an "AS IS" BASIS, 15*35238bceSAndroid Build Coastguard WorkerWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16*35238bceSAndroid Build Coastguard WorkerSee the License for the specific language governing permissions and 17*35238bceSAndroid Build Coastguard Workerlimitations under the License. 18*35238bceSAndroid Build Coastguard Worker------------------------------------------------------------------------- 19*35238bceSAndroid Build Coastguard Worker Integer operator tests 20*35238bceSAndroid Build Coastguard Worker 21*35238bceSAndroid Build Coastguard WorkerTests: 22*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_int_* 23*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_ivec_* 24*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_uint_* 25*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.unary_operator.*.*_uvec_* 26*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_int_* 27*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_ivec_* 28*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_uint_* 29*35238bceSAndroid Build Coastguard Worker + dEQP-GLES3.functional.shaders.operator.binary_operator.*.*_uvec_* 30*35238bceSAndroid Build Coastguard Worker 31*35238bceSAndroid Build Coastguard WorkerIncludes: 32*35238bceSAndroid Build Coastguard Worker + Integer scalar and vector unary operators: 33*35238bceSAndroid Build Coastguard Worker - plus 34*35238bceSAndroid Build Coastguard Worker - minus 35*35238bceSAndroid Build Coastguard Worker - bitwise not 36*35238bceSAndroid Build Coastguard Worker + Integer scalar and vector binary operators: 37*35238bceSAndroid Build Coastguard Worker - add 38*35238bceSAndroid Build Coastguard Worker - sub 39*35238bceSAndroid Build Coastguard Worker - mul 40*35238bceSAndroid Build Coastguard Worker - div 41*35238bceSAndroid Build Coastguard Worker - mod 42*35238bceSAndroid Build Coastguard Worker - bitwise and 43*35238bceSAndroid Build Coastguard Worker - bitwise or 44*35238bceSAndroid Build Coastguard Worker - bitwise xor 45*35238bceSAndroid Build Coastguard Worker - less 46*35238bceSAndroid Build Coastguard Worker - less or equal 47*35238bceSAndroid Build Coastguard Worker - greater 48*35238bceSAndroid Build Coastguard Worker - greater or equal 49*35238bceSAndroid Build Coastguard Worker - equal 50*35238bceSAndroid Build Coastguard Worker - not equal 51*35238bceSAndroid Build Coastguard Worker + Scalar-scalar, vector-vector and vector-scalar binary operators 52*35238bceSAndroid Build Coastguard Worker + Lowp, mediump operands where behaviour is well-defined 53*35238bceSAndroid Build Coastguard Worker + Highp operands 54*35238bceSAndroid Build Coastguard Worker 55*35238bceSAndroid Build Coastguard WorkerExcludes: 56*35238bceSAndroid Build Coastguard Worker + Integer type range and bitlayout verification 57*35238bceSAndroid Build Coastguard Worker - Will be tested in later type range and storage tests 58*35238bceSAndroid Build Coastguard Worker 59*35238bceSAndroid Build Coastguard WorkerDescription: 60*35238bceSAndroid Build Coastguard Worker 61*35238bceSAndroid Build Coastguard WorkerInteger test cases use shader rendering test framework. Depending on case type 62*35238bceSAndroid Build Coastguard Worker(vertex or fragment) a single quad or a tight grid of quads is rendered with 63*35238bceSAndroid Build Coastguard Workerthe shader program that is being tested. Results are compared against a reference. 64*35238bceSAndroid Build Coastguard WorkerReference image is rendered using a C reference of the shader. A fuzzy comparison 65*35238bceSAndroid Build Coastguard Workeris used to allow small deviations due to fragment input interpolation. 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard WorkerInteger operator test shaders use floating-point attributes or varyings converted 68*35238bceSAndroid Build Coastguard Workerto integers as operands. The value range is chosen based on precision. Results 69*35238bceSAndroid Build Coastguard Workerfrom the operation are casted back to floating-point values and scaled to range 70*35238bceSAndroid Build Coastguard Worker0..1. The resulting scalar or vector value is then written out as vertex or 71*35238bceSAndroid Build Coastguard Workerfragment color. 72