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