-------------------------------------------------------------------------
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.
-------------------------------------------------------------------------
    Rasterization Tests

Tests:
 + dEQP-GLES2.functional.rasterization.*

Includes:
 + Primitive rasterization
   - Points
   - Lines
   - Triangles
 + Individual triangles, triangle strips and triangle fans
 + Varying interpolation in all primitives
 + Projected (w != 1) and non-projected (w == 1) coordinates
 + Fill rule verification
 + Culling
 + Multisample rasterization

Description:

This test set compares images rendered by a reference software
rasterizer to images rendered by the target. Rasterized points, lines
and triangles are compared to reference, and a deviation of 1 pixel in
position is allowed.

Fill rules are tested using additive blend so that pixels on shared
triangle edges are filled exactly once. Because exact fill rules are
not specified, reference rasterizer uses all valid combinations of
LEFT, RIGHT, TOP and BOTTOM.

Value interpolation is tested for lines and triangles with
vertex-specific colors, small deviation in interpolated color is allowed.

Multisample rasterization is tested with points, lines and triangles.
Because sampling pattern is unknown, deviation in produced colors is
allowed.
