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

Copyright 2015 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.
-------------------------------------------------------------------------
    EXT_texture_border_clamp tests

Tests:
 + dEQP-GLES31.texture.border_clamp.*
 + dEQP-GLES31.functional.state_query.texture.*.texture_border_color_*

Includes:
 + State query tests
 + Rendering tests with all GLES31 texture formats.
 + Tests with power-of-two and non-power-of-two texture sizes.
 + Nearest and linear samping. Sampling with texture gather.
 + Rendering tests with border value exceeding the representable range of
   the texture format.
 + Sampling depth textures with mode set to COMPARE_REF_TO_TEXTURE.

Excludes:
 + Sampling with mipmaps
 + Sampling with texture 2d arrays or cubemaps
 + Texture swizzle cases
 + Exhaustive testing of all s/t/r wrapping mode combinations

Description:

Texture border clamp cases test functionality added in
EXT_texture_border_clamp extension. Tests set up a texture with a certain
format, set border color to certain value, set one or more wrapping modes to
CLAMP_TO_BORDER, and then proceed to render the texture to screen. The
rendering result is then verified. Test cases also generate a reference image
which may be useful when evaluating results.

In formats.* subgroup, all GLES31 texture formats are tested. Each format is
tested with power-of-two and non-power-of-two texture sizes using NEAREST and
LINEAR filtering, and texture-gather fetching.

In range_clamp.* subgroup, border color components are set to values that are
not in the representable range of the internal format. The effective value is
expected to be clamped to the valid range.

In sampler.* subgroup, texture border color and wrapping mode are set using
a sampler state.

In per_axis_wrap_mode.*, texture wrap mode is not same in all S, T, and R
directions. Wrapping is tested for 2D and 3D textures with multiple formats
and with different sampling modes.

In depth_compare_mode.*, depth texture border values are tested with compare
mode set to COMPARE_REF_TO_TEXTURE.

In unused_channels.*, border color has non-zero values in components that are
not representable in the target formats. These components are expected to have
no effect.
