-------------------------------------------------------------------------
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.
-------------------------------------------------------------------------
    GL3 conditional render stress tests

Tests:
 + dEQP-GL3.stress.conditional_render.*

Includes:
 + Multiple concurrent queries/renders
 + Query and conditional geometry significantly apart
   - For tiled renderers

Excludes:

Description:

Conditional rendering stress tests use a large number of conditional rendering
calls under various conditions.

Call count and distant query tests prepare all vertex arrays before rendering.
All tests are based on using occlusion queries with known results and rendering
the same scene with geometry culled either by conditional rendering or the
test logic. The results are compared to verify correctness.

Rendering is ordered so that all occlusion queries are started before any
conditional rendering is done.

Call count test use many occlusion queries and simple occluder geometry. Every
second occlusion query is set to fail. Failing occlusion query geometry is
limited within a small region of the screen. Passing query geometry is evenly
spread around the screen. Conditionally rendered geometry is evenly spread.

Distant query tests have maximal screen distance between the query geometry
and the rendering the query controls. The setup is equivalent to the call
count cases with the exception of the distribution of the primitives rendered.
Occlusion query geometry is roughly on the opposing edge of the screen as the
geometry it controls. All edges have occluders.
