-------------------------------------------------------------------------
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.
-------------------------------------------------------------------------
    Texture format performance tests

Tests:
 + dEQP-GLES2.performance.texture.format.*

Includes:
 + Texture lookup performance with all uncompressed texture formats
 + 2D and cubemap textures
 + Texture lookup in vertex and fragment shaders
 + Nearest neighbor -filtering and clamp to edge -wrap mode

Excludes:
 + Performance of other filtering or wrap modes
   - Covered performance.texture.filtering and performance.texture.wrap

Description:

Test cases measure performance of 2D and cubemap texture lookups without
filtering (nearest neighbor mode). Shader body is populated with one or
more texture lookups, each targeting different texture unit. There are
test cases for the most relevant texture lookup counts.

Texture lookups use same coordinates and lookup results are multiplied
together to produce the final color for vertex or fragment. Additive
blending is used to force fragment shader execution for all fragments.

Texture size is the same as viewport size. Each texture unit uses a unique
texture object. Texture objects are however re-used across draw calls.
Textures are sampled in range (0, 0) -> (1, 1). Vertex-side tests use
2x2 pixel quads, e.g. each vertex gives a color for single pixel.
In this configuration viewportW*viewportH*numTextures unique texels are
sampled in each draw call.

Per-iteration draw call count is automatically chosen so that rendering runs
approximately 30fps. Result is MPix/s or MVert/s computed from number of draw
calls and actual frame time.

See performance.txt for more details on shader performance testing.
