-------------------------------------------------------------------------
drawElements Quality Program Test Specification
-----------------------------------------------

Copyright 2014 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-------------------------------------------------------------------------
    Indirect drawing tests

Tests:
 + dEQP-GLES31.functional.draw_indirect.*

Includes:
 + Draw all basic primitives
   - Points, triangles, triangle strips, triangle fans, lines, line
     strips, line loops
 + DrawArraysIndirect firstVertex
 + DrawElementsIndirect index array tests
 + DrawElementsIndirect baseVertex
   - Test positive and negative baseVertex values
 + Instanced draw with a high instance count
 + Negative tests
    - Bad alignment
	- Source data beyond the end of the buffer
	- Use of client side attribute arrays

Excludes:

Description:

Primitive drawing cases draw a group of primitives with random generated
vertex attributes and compare the output to a reference image generated
by a simple reference rasterizer. Each primitive is tested using a single
(generated) attribute array, multiple attribute arrays, instanced
attribute array (instance divisor > 0) and with a non-array current
attribute.

DrawArraysIndirect firstVertex cases draw random triangles using
glDrawElementIndirect with firstVertex > 0 and compare results to a
generated reference image.

DrawElementsIndirect index array cases draw random triangles using
glDrawElementIndirect with index types of unsigned byte, short and int
with both firstIndex = 0 and firstIndex = 1 and compare results to
generated reference images.

DrawElementsIndirect baseVertex cases draw random triangles with index
types of unsigned byte, short and int using both positive and negative
baseVertex values and compare results to generated reference images.

Instanced draw cases draw a grid by instancing a single tile. The result
is verified by simply searching for background colored (black) pixels in
the result image. Resulting image should not contain any background
colored pixels.

Negative cases test try to issue a bad indirect draw command expecting an
INVALID_OPERATION. Bad commands tested are commands with bad alignment,
commands only partially in the DRAW_INDIRECT_BUFFER buffer, and commands
not even partially in the DRAW_INDIRECT_BUFFER buffer.