Home | History | Annotate | Download | only in GLES31
      1 -------------------------------------------------------------------------
      2 drawElements Quality Program Test Specification
      3 -----------------------------------------------
      4 
      5 Copyright 2014 The Android Open Source Project
      6 
      7 Licensed under the Apache License, Version 2.0 (the "License");
      8 you may not use this file except in compliance with the License.
      9 You may obtain a copy of the License at
     10 
     11      http://www.apache.org/licenses/LICENSE-2.0
     12 
     13 Unless required by applicable law or agreed to in writing, software
     14 distributed under the License is distributed on an "AS IS" BASIS,
     15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16 See the License for the specific language governing permissions and
     17 limitations under the License.
     18 -------------------------------------------------------------------------
     19     Program interface query
     20 
     21 Tests:
     22  + dEQP-GLES31.functional.program_interface_query.*
     23 
     24 Includes:
     25  + Basic queries for every property of every program interface
     26  + Basic tests for resource list contents for every program interface
     27  + Attempts to query data to too small buffers
     28 
     29 Excludes:
     30  + Exact layout validation for data layout related queries (offset,
     31    stride)
     32  + Consistency validation for location queries (as in no two different
     33    variables with the same location)
     34 
     35 Description:
     36 
     37 buffer_limited_query.* cases test that queries function properly when
     38 given a return value buffer that is too short to contain all queried
     39 data. resource_name_query case tests GetProgramResourceName function
     40 with different character output buffer sizes and resource_query case
     41 tests GetProgramResourceiv with different property value output buffer
     42 sizes.
     43 
     44 Program interface query tests are structured as follows. Each program
     45 interface has its own test group at the
     46 functional.program_interface_query.* level. Each program interface test
     47 group contains a test group for each supported property, for example
     48 "uniform.location.*". Additionally, each program interface contains test
     49 group "resource_list" which contains tests for resource list generation.
     50 In addition, some program interfaces contain "random" test group which
     51 contains randomly (fixed seed) generated tests.
     52 
     53 Each program interface query test, a program corresponding to the case's
     54 full name is generated. For example,
     55 "uniform.name_length.default_block.var_struct" would mean a NAME_LENGTH
     56 query for a member variable of a uniform struct in the default block.
     57 Cases without explicit mention of the shader type in its full name
     58 generate compute shaders. The generated program is compiled and linked
     59 and then the specified property is queried and verified. For the
     60 randomly generated cases, all supported properties of the interface are
     61 queried and verified.
     62 
     63 uniform.* and buffer_variable.* cases test GL_UNIFORM and
     64 GL_BUFFER_VARIABLE program interfaces, respectively. Test groups
     65 array_size, array_stride, atomic_counter_buffer_index, block_index,
     66 location, matrix_row_major, matrix_stride, name_length, offset,
     67 referenced_by_shader, and type test properties ARRAY_SIZE, ARRAY_STRIDE,
     68 ATOMIC_COUNTER_BUFFER_INDEX, BLOCK_INDEX, LOCATION, IS_ROW_MAJOR,
     69 MATRIX_STRIDE, NAME_LENGTH, OFFSET, REFERENCED_BY_*_SHADER, and TYPE
     70 properties, respectively. Additionally, the buffer_variable.* test group
     71 contains tests for TOP_LEVEL_ARRAY_SIZE (top_level_array_size.*) and
     72 TOP_LEVEL_ARRAY_STRIDE (top_level_array_stride.*) properties.
     73 
     74 uniform_block.* and shader_storage_block.* cases test GL_UNIFORM_BLOCK
     75 and GL_SHADER_STORAGE_BLOCK program interfaces, respectively. Test
     76 groups active_variables, buffer_binding, buffer_data_size, name_length,
     77 and referenced_by test properties ACTIVE_VARIABLES, BUFFER_BINDING,
     78 BUFFER_DATA_SIZE, NAME_LENGTH, and REFERENCED_BY_*_SHADER properties,
     79 respectively.
     80 
     81 atomic_counter_buffer.* cases test GL_ATOMIC_COUNTER_BUFFER program
     82 interface. Test cases active_variables, buffer_binding,
     83 buffer_data_size, and referenced_by_* test ACTIVE_VARIABLES,
     84 BUFFER_BINDING, BUFFER_DATA_SIZE, and REFERENCED_BY_*_SHADER properties,
     85 respectively.
     86 
     87 program_input.* and program_output.* cases test PROGRAM_INPUT and
     88 PROGRAM_OUTPUT program interfaces, respectively. Test groups array_size,
     89 location, name_length, referenced_by, and type test ARRAY_SIZE,
     90 LOCATION, NAME_LENGTH, REFERENCED_BY_*_SHADER and TYPE properties,
     91 respectively. Each test group contains separate tests for different
     92 program configurations such as compute program, vertex-fragment program,
     93 or separable shader programs.
     94 
     95 transform_feedback_varying.* cases test TRANSFORM_FEEDBACK_VARYING
     96 program interface. Test groups array_size, name_length, and type test
     97 ARRAY_SIZE, NAME_LENGTH, and TYPE properties. Each test group contains
     98 separate tests for a complete vertex-fragment program and for separable
     99 program containing only a vertex shader. Test query properties of
    100 various types of user-defined output variables and a built-in output
    101 gl_Position.
    102