You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.1 KiB
73 lines
3.1 KiB
-------------------------------------------------------------------------
|
|
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.
|
|
-------------------------------------------------------------------------
|
|
Explicit uniform location tests
|
|
|
|
Tests:
|
|
+ dEQP-GLES31.functional.uniform_location.*
|
|
|
|
Includes:
|
|
+ Location for all primitive types
|
|
+ Location for (nested) structs and their members
|
|
+ Location for (nested) arrays and all their elements
|
|
+ Minimum and maximum location
|
|
- With all primitive types
|
|
+ Linkage with locations defined in the vertex shader, fragment shader, both or neither
|
|
- Primitive types only
|
|
+ Negative tests
|
|
- Duplicate location with various linkage and usage
|
|
- Overlapping structs and arrays with various linkage and usage
|
|
|
|
Excludes:
|
|
+ Samplers with dimensionality other than two or less than four color channels
|
|
+ Deeply nested structs/arrays
|
|
|
|
Description:
|
|
|
|
All cases create a shader with suitable uniforms, some of which have layout
|
|
qualifiers with a location specified. Locations of all uniforms in the shader
|
|
are verified to match the given ones with glGetUniformLocation. Generated
|
|
textures with a flat randomized color are bound to samplers. Other uniforms
|
|
are assigned similarly randomized values.
|
|
The shader contains hardcoded comparisons to these randomized values for each
|
|
uniform that is being checked. It outputs white if all of the assigned uniform
|
|
values match the hardcoded values. A quad is rendered and the output of the
|
|
shader is verified to be fully white.
|
|
|
|
All cases excluding negative and min/max use randomized locations between the
|
|
spec defined minimum and maximum values [0, 1024) for all uniforms.
|
|
|
|
Basic primitive type, array, nested array and min/max cases test with all basic
|
|
types. Tests are done in both vertex and fragment shaders but with trivial
|
|
linkage.
|
|
|
|
Min/max cases assign a single primitive either the largest valid location as
|
|
reported by the implementation or the smallest valid location (0) but are
|
|
otherwise identical to the basic primitive type cases.
|
|
|
|
Struct, nested struct and linkage cases are randomized.
|
|
These cases do not necessarily use every declared uniform.
|
|
These cases have declarations, locations specifiers and verification
|
|
randomly split between the vertex and fragment shaders on a per-uniform basis.
|
|
This includes leaving some locations unassigned.
|
|
All primitive types used in these tests are randomized.
|
|
Struct cases have a fixed number of members with a fixed nesting structure.
|
|
|
|
Negative cases are not generated and share no logic with the other cases,
|
|
instead expecting compile or link failures.
|