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 Indirect drawing tests 20 21Tests: 22 + dEQP-GLES31.functional.draw_indirect.* 23 24Includes: 25 + Draw all basic primitives 26 - Points, triangles, triangle strips, triangle fans, lines, line 27 strips, line loops 28 + DrawArraysIndirect firstVertex 29 + DrawElementsIndirect index array tests 30 + DrawElementsIndirect baseVertex 31 - Test positive and negative baseVertex values 32 + Instanced draw with a high instance count 33 + Negative tests 34 - Bad alignment 35 - Source data beyond the end of the buffer 36 - Use of client side attribute arrays 37 38Excludes: 39 40Description: 41 42Primitive drawing cases draw a group of primitives with random generated 43vertex attributes and compare the output to a reference image generated 44by a simple reference rasterizer. Each primitive is tested using a single 45(generated) attribute array, multiple attribute arrays, instanced 46attribute array (instance divisor > 0) and with a non-array current 47attribute. 48 49DrawArraysIndirect firstVertex cases draw random triangles using 50glDrawElementIndirect with firstVertex > 0 and compare results to a 51generated reference image. 52 53DrawElementsIndirect index array cases draw random triangles using 54glDrawElementIndirect with index types of unsigned byte, short and int 55with both firstIndex = 0 and firstIndex = 1 and compare results to 56generated reference images. 57 58DrawElementsIndirect baseVertex cases draw random triangles with index 59types of unsigned byte, short and int using both positive and negative 60baseVertex values and compare results to generated reference images. 61 62Instanced draw cases draw a grid by instancing a single tile. The result 63is verified by simply searching for background colored (black) pixels in 64the result image. Resulting image should not contain any background 65colored pixels. 66 67Negative cases test try to issue a bad indirect draw command expecting an 68INVALID_OPERATION. Bad commands tested are commands with bad alignment, 69commands only partially in the DRAW_INDIRECT_BUFFER buffer, and commands 70not even partially in the DRAW_INDIRECT_BUFFER buffer. 71