-------------------------------------------------------------------------
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_EXT_shader_implicit_conversions

Tests:
 + dEQP-GLES31.functional.shaders.implicit_conversions.*

Includes:
 + All valid implicit conversion pairs
 + Promotion to vector types (for example int -> vec3)
 + Binary operations
   - Arithmetic
   - Comparison
 + Array subscription
 + Calling function with implicit conversion on parameter type
 + Negative tests for invalid assignments
 + Negative tests for implict array / struct conversions

Excludes:
 + Extensive function overloading tests with implicit conversions
 + Extensive negative tests for various other implicit conversions
   - Will be added in 2014.4 release

Description:

Valid cases compile and run a program that perform the implicit conversion
operation in either vertex and fragment shader. Results are checked against
reference values in the shader code and either black or white color is
selected based on that. The test verifies that all result pixels are white.

Negative cases attempt to compile a shader with the invalid operation and
checks that the compilation in fact fails.
