dEQP and GLCTS don't follow Program Interface Query specifications
The OpenGL ES 3.1 specification and the GL_ARB_program_interface_query specification say:
"The set of active resources for any interface is implementation-dependent because it depends on various analysis and optimizations performed by the compiler and linker."
Below is the list of dEQP and GLCTS tests that expect that certain uniform and UBO resources are active in certain shaders where they are not guaranteed to be active by the specification.
The background is that we have a new optimization pass called nir_opt_varyings
, which moves uniforms and UBOs between shaders, such as propagating uniforms from outputs to following shaders, and moving code using uniforms to preceding shaders when it's legal, causing these tests to report failure. RadeonSI will likely be the first driver that will enable the new pass and fail these tests.
dEQP-GLES31.functional.geometry_shading.query.referenced_by_geometry_shader
dEQP-GLES31.functional.tessellation.state_query.referenced_by_tess_control_shader
dEQP-GLES31.functional.tessellation.state_query.referenced_by_tess_evaluation_shader
dEQP-GLES31.functional.program_interface_query.uniform.random.40
dEQP-GLES31.functional.program_interface_query.uniform.random.42
dEQP-GLES31.functional.program_interface_query.uniform.random.47
dEQP-GLES31.functional.program_interface_query.uniform.random.49
dEQP-GLES31.functional.program_interface_query.uniform.random.58
dEQP-GLES31.functional.program_interface_query.uniform.random.59
dEQP-GLES31.functional.program_interface_query.uniform.random.65
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.block_array.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.block_array.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.block_array.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.default_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.uniform_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.uniform_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.uniform_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.unnamed_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.unnamed_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment.unnamed_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.block_array.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.block_array.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.block_array.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.default_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.uniform_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.uniform_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.uniform_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.unnamed_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.unnamed_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_geo_fragment_only_vertex.unnamed_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.block_array.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.block_array.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.block_array.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.default_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.default_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.default_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.uniform_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.uniform_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.uniform_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.unnamed_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.unnamed_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment.unnamed_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.block_array.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.block_array.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.block_array.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.default_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.default_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.default_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.uniform_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.uniform_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.uniform_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.unnamed_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.unnamed_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_fragment_only_vertex.unnamed_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.block_array.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.block_array.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.block_array.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.default_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.uniform_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.uniform_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.uniform_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.unnamed_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.unnamed_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment.unnamed_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.block_array.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.block_array.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.block_array.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.default_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.uniform_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.uniform_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.uniform_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.unnamed_block.float
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.unnamed_block.float_array
dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_tess_geo_fragment_only_vertex.unnamed_block.float_struct
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment.block_array
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment.named_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment.unnamed_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_vertex.block_array
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_vertex.named_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_geo_fragment_only_vertex.unnamed_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_fragment.block_array
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_fragment.named_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_fragment.unnamed_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_fragment_only_vertex.block_array
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_fragment_only_vertex.named_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_fragment_only_vertex.unnamed_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment.block_array
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment.named_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment.unnamed_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_vertex.block_array
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_vertex.named_block
dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.vertex_tess_geo_fragment_only_vertex.unnamed_block
GTF-GL46.gtf31.GL3Tests.uniform_buffer_object.uniform_buffer_object_accessing_info_for_block_with_an_instance_array
GTF-GL46.gtf31.GL3Tests.uniform_buffer_object.uniform_buffer_object_getactiveuniformblockiv