-------------------------------------------------------------------------
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.
-------------------------------------------------------------------------
    gl_FragDepth tests

Tests:
 + dEQP-GLES3.functional.shaders.fragdepth.*

Includes:
 + gl_FragDepth usage in following scenarios:
   - Unconditional write
   - Conditional write
   - Write in loop
   - Write in user-defined function
   - Discard before and after write
 + Depth comparison with gl_FragDepth write
 + gl_FragDepth use when rendering triangles

Excludes:
 + Depth value conversion accuracy tests
 + gl_FragDepth use when rendering points and lines

Description:

For comparison cases depth buffer is first initialized by rendering
two adjecent quads. Left one will fill depth buffer with constant value,
while right quad fills with value that is interpolated in range 0..1.
Color buffer is filled with blue color.
Single quad with a selected shader and depth comparison mode is rendered.
Where depth test passes, green value will be written to color buffer.

For depth write-only cases the selected shader is used to initialize
the depth buffer by rendering a simple quad. After that depth buffer
is visualized by rendering multiple viewport-sized quads with a different
colors and depth values in such manner that each depth range slice
will end up showing in color buffer with a distinct color.

In both test types rendered image is compared against a reference image
produced by a reference renderer.
