dEQP-VK.glsl.operator.common_functions.max.mediump_uvec4_uint_fragment
dEQP-VK.glsl.operator.common_functions.max.highp_uvec4_uint_vertex
dEQP-VK.glsl.operator.common_functions.max.highp_uvec4_uint_fragment
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.builtin_var.simple.pointcoord_uniform_frag
dEQP-VK.glsl.builtin_var.simple.pointcoord_uniform_vert
dEQP-VK.glsl.builtin.function.common.isnan.double_compute
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.depth32f.no_corners.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.depth32f.no_corners.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.depth32f.no_corners.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
GitRepo(
"https://github.com/KhronosGroup/SPIRV-Tools.git",
None,
- "d2b486219495594f2e5d0e8d457fc234a3460b3b",
+ "4386ef4234e28f933412774b0ba718ae0e211333",
"spirv-tools"),
GitRepo(
"https://github.com/KhronosGroup/glslang.git",
using namespace vk;
-namespace
-{
-
-static const deUint32 MAX_RENDER_WIDTH = 128;
-static const deUint32 MAX_RENDER_HEIGHT = 128;
-static const tcu::Vec4 DEFAULT_CLEAR_COLOR = tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f);
-
-static VkImageViewType textureTypeToImageViewType (TextureBinding::Type type)
+VkImageViewType textureTypeToImageViewType (TextureBinding::Type type)
{
switch (type)
{
}
}
-static VkImageType viewTypeToImageType (VkImageViewType type)
+VkImageType viewTypeToImageType (VkImageViewType type)
{
switch (type)
{
}
}
+vk::VkImageUsageFlags textureUsageFlags (void)
+{
+ return (VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
+}
+
+vk::VkImageCreateFlags textureCreateFlags (vk::VkImageViewType viewType, ShaderRenderCaseInstance::ImageBackingMode backingMode)
+{
+ const bool isCube = (viewType == VK_IMAGE_VIEW_TYPE_CUBE || viewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY);
+ VkImageCreateFlags imageCreateFlags = (isCube ? static_cast<VkImageCreateFlags>(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT) : 0u);
+
+ if (backingMode == ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE)
+ imageCreateFlags |= (VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT);
+
+ return imageCreateFlags;
+}
+
+namespace
+{
+
+static const deUint32 MAX_RENDER_WIDTH = 128;
+static const deUint32 MAX_RENDER_HEIGHT = 128;
+static const tcu::Vec4 DEFAULT_CLEAR_COLOR = tcu::Vec4(0.125f, 0.25f, 0.5f, 1.0f);
+
/*! Gets the next multiple of a given divisor */
static deUint32 getNextMultiple (deUint32 divisor, deUint32 value)
{
const VkImageType imageType = viewTypeToImageType(imageViewType);
const VkSharingMode sharingMode = (queueFamilyIndex != sparseFamilyIndex) ? VK_SHARING_MODE_CONCURRENT : VK_SHARING_MODE_EXCLUSIVE;
const VkFormat format = mapTextureFormat(texFormat);
- const bool isCube = imageViewType == VK_IMAGE_VIEW_TYPE_CUBE || imageViewType == VK_IMAGE_VIEW_TYPE_CUBE_ARRAY;
+ const VkImageUsageFlags imageUsageFlags = textureUsageFlags();
+ const VkImageCreateFlags imageCreateFlags = textureCreateFlags(imageViewType, m_imageBackingMode);
const deUint32 queueIndexCount = (queueFamilyIndex != sparseFamilyIndex) ? 2 : 1;
const deUint32 queueIndices[] =
sparseFamilyIndex
};
- VkImageCreateFlags imageCreateFlags = isCube ? (VkImageCreateFlags)VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT : (VkImageCreateFlags)0;
- VkImageUsageFlags imageUsageFlags = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
Move<VkImage> vkTexture;
de::MovePtr<Allocation> allocation;
- if (m_imageBackingMode == IMAGE_BACKING_MODE_SPARSE)
- {
- imageCreateFlags |= VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT;
- }
-
// Create image
const VkImageCreateInfo imageParams =
{
}
// Create sampler
- const VkSamplerCreateInfo samplerParams = mapSampler(refSampler, texFormat);
+ const auto& minMaxLod = textureParams.minMaxLod;
+ const VkSamplerCreateInfo samplerParams = (minMaxLod
+ ? mapSampler(refSampler, texFormat, minMaxLod.get().minLod, minMaxLod.get().maxLod)
+ : mapSampler(refSampler, texFormat));
Move<VkSampler> sampler = createSampler(vk, vkDevice, &samplerParams);
const deUint32 baseMipLevel = textureParams.baseMipLevel;
const vk::VkComponentMapping components = textureParams.componentMapping;
#include "tcuTexture.hpp"
#include "tcuSurface.hpp"
+#include "tcuMaybe.hpp"
#include "deMemory.h"
#include "deSharedPtr.hpp"
INIT_LAST
};
+ struct MinMaxLod
+ {
+ float minLod;
+ float maxLod;
+
+ MinMaxLod (float min, float max) : minLod(min), maxLod(max) {}
+ };
+
struct Parameters
{
deUint32 baseMipLevel;
vk::VkComponentMapping componentMapping;
vk::VkSampleCountFlagBits samples;
Init initialization;
+ tcu::Maybe<MinMaxLod> minMaxLod;
- Parameters (deUint32 baseMipLevel_ = 0,
- vk::VkComponentMapping componentMapping_ = vk::makeComponentMappingRGBA(),
- vk::VkSampleCountFlagBits samples_ = vk::VK_SAMPLE_COUNT_1_BIT,
- Init initialization_ = INIT_UPLOAD_DATA)
+ Parameters (deUint32 baseMipLevel_ = 0,
+ vk::VkComponentMapping componentMapping_ = vk::makeComponentMappingRGBA(),
+ vk::VkSampleCountFlagBits samples_ = vk::VK_SAMPLE_COUNT_1_BIT,
+ Init initialization_ = INIT_UPLOAD_DATA,
+ const tcu::Maybe<MinMaxLod>& minMaxLod_ = tcu::nothing<MinMaxLod>())
: baseMipLevel (baseMipLevel_)
, componentMapping (componentMapping_)
, samples (samples_)
, initialization (initialization_)
+ , minMaxLod (minMaxLod_)
{
}
};
addUniform(bindingLocation, descriptorType, sizeof(T), &data);
}
+vk::VkImageViewType textureTypeToImageViewType (TextureBinding::Type type);
+vk::VkImageType viewTypeToImageType (vk::VkImageViewType type);
+vk::VkImageUsageFlags textureUsageFlags (void);
+vk::VkImageCreateFlags textureCreateFlags (vk::VkImageViewType viewType, ShaderRenderCaseInstance::ImageBackingMode backingMode);
+
} // sr
} // vkt
#include "deStringUtil.hpp"
#include "deRandom.hpp"
+#include <algorithm>
+#include <iterator>
+
using tcu::ConstPixelBufferAccess;
using tcu::PixelBufferAccess;
using tcu::TestLog;
}
}
-vector<GatherArgs> generateBasic2DCaseIterations (GatherType gatherType, const tcu::TextureFormat& textureFormat, const IVec2& offsetRange)
+enum class LevelMode
+{
+ NORMAL = 0,
+ AMD_BIAS,
+ AMD_LOD,
+};
+
+vector<GatherArgs> generateBasic2DCaseIterations (GatherType gatherType, LevelMode levelMode, const tcu::TextureFormat& textureFormat, const IVec2& offsetRange)
{
const int numComponentCases = isDepthFormat(textureFormat) ? 1 : 4+1; // \note For non-depth textures, test explicit components 0 to 3 and implicit component 0.
+ const bool skipImplicitCase = (levelMode == LevelMode::AMD_BIAS);
vector<GatherArgs> result;
- for (int componentCaseNdx = 0; componentCaseNdx < numComponentCases; componentCaseNdx++)
+ for (int componentCaseNdx = (skipImplicitCase ? 1 : 0); componentCaseNdx < numComponentCases; componentCaseNdx++)
{
const int componentNdx = componentCaseNdx - 1;
MaybeTextureSwizzle textureSwizzle;
tcu::Sampler::FilterMode minFilter;
tcu::Sampler::FilterMode magFilter;
+ LevelMode levelMode;
int baseLevel;
deUint32 flags;
TextureType textureType;
const MaybeTextureSwizzle& textureSwizzle_,
const tcu::Sampler::FilterMode minFilter_,
const tcu::Sampler::FilterMode magFilter_,
+ const LevelMode levelMode_,
const int baseLevel_,
const deUint32 flags_,
const ImageBackingMode sparseCase_)
, textureSwizzle (textureSwizzle_)
, minFilter (minFilter_)
, magFilter (magFilter_)
+ , levelMode (levelMode_)
, baseLevel (baseLevel_)
, flags (flags_)
, textureType (textureType_)
, textureSwizzle (MaybeTextureSwizzle::createNoneTextureSwizzle())
, minFilter (tcu::Sampler::FILTERMODE_LAST)
, magFilter (tcu::Sampler::FILTERMODE_LAST)
+ , levelMode (LevelMode::NORMAL)
, baseLevel (0)
, flags (0)
, textureType (TEXTURETYPE_LAST)
TCU_THROW(NotSupportedError, "Extended set of image gather instructions are not supported");
}
+ // Check general extension support.
+ if (m_baseParams.levelMode != LevelMode::NORMAL)
+ {
+ m_context.requireDeviceFunctionality("VK_AMD_texture_gather_bias_lod");
+ }
+
// Log and check implementation offset limits, if appropriate.
if (m_baseParams.offsetSize == OFFSETSIZE_IMPLEMENTATION_MAXIMUM)
{
}
// Initialize texture.
-
textureBinding = createTexture();
+ // Check image format support.
+ // This should happen earlier but it's easier to retrieve texture parameters once created and this is not expected to fail.
+ if (m_baseParams.levelMode != LevelMode::NORMAL)
+ {
+ const auto format = vk::mapTextureFormat(m_baseParams.textureFormat);
+ const auto bindingType = textureBinding->getType();
+ const auto imageViewType = textureTypeToImageViewType(bindingType);
+ const auto imageType = viewTypeToImageType(imageViewType);
+ const vk::VkImageUsageFlags usageFlags = textureUsageFlags();
+ const vk::VkImageCreateFlags imageCreateFlags = textureCreateFlags(imageViewType, m_baseParams.sparseCase);
+
+ const vk::VkPhysicalDeviceImageFormatInfo2 formatInfo =
+ {
+ vk::VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, // VkStructureType sType;
+ nullptr, // const void* pNext;
+ format, // VkFormat format;
+ imageType, // VkImageType type;
+ vk::VK_IMAGE_TILING_OPTIMAL, // VkImageTiling tiling;
+ usageFlags, // VkImageUsageFlags usage;
+ imageCreateFlags, // VkImageCreateFlags flags;
+ };
+
+ vk::VkTextureLODGatherFormatPropertiesAMD lodGatherProperties =
+ {
+ vk::VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, // VkStructureType sType;
+ nullptr, // void* pNext;
+ VK_FALSE, // VkBool32 supportsTextureGatherLODBiasAMD;
+ };
+
+ vk::VkImageFormatProperties2 properties2;
+ deMemset(&properties2, 0, sizeof(properties2));
+ properties2.sType = vk::VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2;
+ properties2.pNext = &lodGatherProperties;
+
+ VK_CHECK(m_context.getInstanceInterface().getPhysicalDeviceImageFormatProperties2(m_context.getPhysicalDevice(), &formatInfo, &properties2));
+
+ if (!lodGatherProperties.supportsTextureGatherLODBiasAMD)
+ TCU_THROW(NotSupportedError, "Format does not support texture gather LOD/Bias operations");
+ }
+
if (m_baseParams.textureSwizzle.isSome())
{
const tcu::Vector<TextureSwizzleComponent, 4>& swizzle = m_baseParams.textureSwizzle.getSwizzle();
textureParams.componentMapping = components;
}
- if (m_baseParams.baseLevel != 0)
+ // Set base mip level and mode.
+ if (m_baseParams.levelMode == LevelMode::NORMAL)
+ {
textureParams.baseMipLevel = m_baseParams.baseLevel;
+ }
+ else
+ {
+ const auto textureType = textureBinding->getType();
+ int levels = 0;
+
+ switch (textureType)
+ {
+ case TextureBinding::TYPE_1D: levels = textureBinding->get1D().getNumLevels(); break;
+ case TextureBinding::TYPE_2D: levels = textureBinding->get2D().getNumLevels(); break;
+ case TextureBinding::TYPE_3D: levels = textureBinding->get3D().getNumLevels(); break;
+ case TextureBinding::TYPE_CUBE_MAP: levels = textureBinding->getCube().getNumLevels(); break;
+ case TextureBinding::TYPE_1D_ARRAY: levels = textureBinding->get1DArray().getNumLevels(); break;
+ case TextureBinding::TYPE_2D_ARRAY: levels = textureBinding->get2DArray().getNumLevels(); break;
+ case TextureBinding::TYPE_CUBE_ARRAY: levels = textureBinding->getCubeArray().getNumLevels(); break;
+ default:
+ DE_ASSERT(false); break;
+ }
+
+ DE_ASSERT(levels > 0);
+ textureParams.minMaxLod = tcu::just(TextureBinding::MinMaxLod(0.0f, static_cast<float>(levels - 1)));
+ }
textureBinding->setParameters(textureParams);
m_textures.push_back(textureBinding);
- log << TestLog::Message << "Texture base level is " << m_baseParams.baseLevel << TestLog::EndMessage
+ log << TestLog::Message << "Texture base level is " << textureParams.baseMipLevel << TestLog::EndMessage
<< TestLog::Message << "s and t wrap modes are "
<< vk::mapWrapMode(m_baseParams.wrapS) << " and "
<< vk::mapWrapMode(m_baseParams.wrapT) << ", respectively" << TestLog::EndMessage
bool useNormalizedCoordInput,
bool usePixCoord,
OffsetSize offsetSize,
- const ImageBackingMode sparseCase)
+ const ImageBackingMode sparseCase,
+ LevelMode levelMode)
{
DE_ASSERT(glu::isDataTypeSampler(samplerType));
DE_ASSERT(de::inRange(numTexCoordComponents, 2, 3));
std::ostringstream frag;
const string outType = glu::getDataTypeName(getSamplerGatherResultType(samplerType));
+ frag << "#version 450\n";
+
if (sparseCase == ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE)
- frag << "#version 450\n"
- << "#extension GL_ARB_sparse_texture2 : require\n";
- else
- frag << "#version 310 es\n";
+ frag << "#extension GL_ARB_sparse_texture2 : require\n";
+
+ if (levelMode != LevelMode::NORMAL)
+ frag << "#extension GL_AMD_texture_gather_bias_lod : require\n";
if (requireGpuShader5)
frag << "#extension GL_EXT_gpu_shader5 : require\n";
string genGatherFuncCall (GatherType gatherType,
const tcu::TextureFormat& textureFormat,
const GatherArgs& gatherArgs,
+ LevelMode levelMode,
+ deUint32 baseLevel,
const string& refZExpr,
const IVec2& offsetRange,
int indentationDepth,
const ImageBackingMode sparseCase)
{
string result;
+ string levelStr;
+
+ if (levelMode != LevelMode::NORMAL)
+ {
+ levelStr = de::toString(baseLevel) + ".0";
+ }
if (sparseCase == ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE)
{
- switch (gatherType)
+ if (levelMode == LevelMode::NORMAL || levelMode == LevelMode::AMD_BIAS)
{
- case GATHERTYPE_BASIC:
- result += "sparseTextureGatherARB";
- break;
- case GATHERTYPE_OFFSET: // \note Fallthrough.
- case GATHERTYPE_OFFSET_DYNAMIC:
- result += "sparseTextureGatherOffsetARB";
- break;
- case GATHERTYPE_OFFSETS:
- result += "sparseTextureGatherOffsetsARB";
- break;
- default:
- DE_ASSERT(false);
+ switch (gatherType)
+ {
+ case GATHERTYPE_BASIC:
+ result += "sparseTextureGatherARB";
+ break;
+ case GATHERTYPE_OFFSET: // \note Fallthrough.
+ case GATHERTYPE_OFFSET_DYNAMIC:
+ result += "sparseTextureGatherOffsetARB";
+ break;
+ case GATHERTYPE_OFFSETS:
+ result += "sparseTextureGatherOffsetsARB";
+ break;
+ default:
+ DE_ASSERT(false);
+ }
+ }
+ else // LevelMode::AMD_LOD
+ {
+ switch (gatherType)
+ {
+ case GATHERTYPE_BASIC:
+ result += "sparseTextureGatherLodAMD";
+ break;
+ case GATHERTYPE_OFFSET: // \note Fallthrough.
+ case GATHERTYPE_OFFSET_DYNAMIC:
+ result += "sparseTextureGatherLodOffsetAMD";
+ break;
+ case GATHERTYPE_OFFSETS:
+ result += "sparseTextureGatherLodOffsetsAMD";
+ break;
+ default:
+ DE_ASSERT(false);
+ }
}
}
else
{
- switch (gatherType)
+ if (levelMode == LevelMode::NORMAL || levelMode == LevelMode::AMD_BIAS)
{
- case GATHERTYPE_BASIC:
- result += "textureGather";
- break;
- case GATHERTYPE_OFFSET: // \note Fallthrough.
- case GATHERTYPE_OFFSET_DYNAMIC:
- result += "textureGatherOffset";
- break;
- case GATHERTYPE_OFFSETS:
- result += "textureGatherOffsets";
- break;
- default:
- DE_ASSERT(false);
+ switch (gatherType)
+ {
+ case GATHERTYPE_BASIC:
+ result += "textureGather";
+ break;
+ case GATHERTYPE_OFFSET: // \note Fallthrough.
+ case GATHERTYPE_OFFSET_DYNAMIC:
+ result += "textureGatherOffset";
+ break;
+ case GATHERTYPE_OFFSETS:
+ result += "textureGatherOffsets";
+ break;
+ default:
+ DE_ASSERT(false);
+ }
+ }
+ else // LevelMode::AMD_LOD
+ {
+ switch (gatherType)
+ {
+ case GATHERTYPE_BASIC:
+ result += "textureGatherLodAMD";
+ break;
+ case GATHERTYPE_OFFSET: // \note Fallthrough.
+ case GATHERTYPE_OFFSET_DYNAMIC:
+ result += "textureGatherLodOffsetAMD";
+ break;
+ case GATHERTYPE_OFFSETS:
+ result += "textureGatherLodOffsetsAMD";
+ break;
+ default:
+ DE_ASSERT(false);
+ }
}
}
result += ", " + refZExpr;
}
+ if (levelMode == LevelMode::AMD_LOD)
+ {
+ result += ", " + levelStr;
+ }
+
if (gatherType == GATHERTYPE_OFFSET ||
gatherType == GATHERTYPE_OFFSET_DYNAMIC ||
gatherType == GATHERTYPE_OFFSETS)
result += ", " + de::toString(gatherArgs.componentNdx);
}
+ if (levelMode == LevelMode::AMD_BIAS)
+ {
+ result += ", " + levelStr;
+ }
+
result += ")";
return result;
const int numDims = getNumTextureSamplingDimensions(baseParams.textureType);
glu::VertexSource vert = genVertexShaderSource(requireGpuShader5(baseParams.gatherType, baseParams.offsetSize), numDims, isDynamicOffset || isShadow);
+ // Check sampler type is valid.
+ if (baseParams.levelMode != LevelMode::NORMAL)
+ {
+ std::vector<glu::DataType> validSamplerTypes =
+ {
+ glu::TYPE_SAMPLER_2D,
+ glu::TYPE_SAMPLER_2D_ARRAY,
+ glu::TYPE_INT_SAMPLER_2D,
+ glu::TYPE_INT_SAMPLER_2D_ARRAY,
+ glu::TYPE_UINT_SAMPLER_2D,
+ glu::TYPE_UINT_SAMPLER_2D_ARRAY,
+ };
+
+ if (baseParams.gatherType == GATHERTYPE_BASIC)
+ {
+ static const std::vector<glu::DataType> kAdditionalTypes =
+ {
+ glu::TYPE_SAMPLER_CUBE,
+ glu::TYPE_SAMPLER_CUBE_ARRAY,
+ glu::TYPE_INT_SAMPLER_CUBE,
+ glu::TYPE_INT_SAMPLER_CUBE_ARRAY,
+ glu::TYPE_UINT_SAMPLER_CUBE,
+ glu::TYPE_UINT_SAMPLER_CUBE_ARRAY,
+ };
+
+ std::copy(begin(kAdditionalTypes), end(kAdditionalTypes), std::back_inserter(validSamplerTypes));
+ }
+
+ const auto itr = std::find(begin(validSamplerTypes), end(validSamplerTypes), samplerType);
+ DE_ASSERT(itr != end(validSamplerTypes));
+ DE_UNREF(itr); // For release builds.
+ }
+
programCollection.glslSources.add("vert") << vert;
for (int iterNdx = 0; iterNdx < numIterations; iterNdx++)
{
const GatherArgs& gatherArgs = iterations[iterNdx];
- const string funcCall = genGatherFuncCall(baseParams.gatherType, baseParams.textureFormat, gatherArgs, refZExpr, offsetRange, 1, baseParams.offsetSize, baseParams.sparseCase);
- glu::FragmentSource frag = genFragmentShaderSource(requireGpuShader5(baseParams.gatherType, baseParams.offsetSize), numDims, samplerType, funcCall, useNormalizedCoord, usePixCoord, baseParams.offsetSize, baseParams.sparseCase);
+ const string funcCall = genGatherFuncCall(baseParams.gatherType, baseParams.textureFormat, gatherArgs, baseParams.levelMode, baseParams.baseLevel, refZExpr, offsetRange, 1, baseParams.offsetSize, baseParams.sparseCase);
+ glu::FragmentSource frag = genFragmentShaderSource(requireGpuShader5(baseParams.gatherType, baseParams.offsetSize), numDims, samplerType, funcCall, useNormalizedCoord, usePixCoord, baseParams.offsetSize, baseParams.sparseCase, baseParams.levelMode);
programCollection.glslSources.add("frag_" + de::toString(iterNdx)) << frag;
}
vector<float> TextureGather2DInstance::computeQuadTexCoord (int /* iterationNdx */) const
{
- vector<float> res;
- TextureTestUtil::computeQuadTexCoord2D(res, Vec2(-0.3f, -0.4f), Vec2(1.5f, 1.6f));
+ const bool biasMode = (m_baseParams.levelMode == LevelMode::AMD_BIAS);
+ const auto bottomLeft = (biasMode ? Vec2(0.0f, 0.0f) : Vec2(-0.3f, -0.4f));
+ const auto topRight = (biasMode ? Vec2(1.0f, 1.0f) : Vec2(1.5f, 1.6f));
+ vector<float> res;
+ TextureTestUtil::computeQuadTexCoord2D(res, bottomLeft, topRight);
return res;
}
0.0f /* LOD threshold */, true /* normalized coords */, m_baseParams.shadowCompareMode);
{
- const int levelBegin = m_baseParams.baseLevel;
+ const int levelBegin = ((m_baseParams.levelMode == LevelMode::NORMAL) ? m_baseParams.baseLevel : 0);
const int levelEnd = texture->getNumLevels();
DE_ASSERT(m_baseParams.baseLevel < texture->getNumLevels());
const MaybeTextureSwizzle& textureSwizzle,
const tcu::Sampler::FilterMode minFilter,
const tcu::Sampler::FilterMode magFilter,
+ const LevelMode levelMode,
const int baseLevel,
const deUint32 flags,
const IVec2& textureSize,
const MaybeTextureSwizzle& textureSwizzle,
const tcu::Sampler::FilterMode minFilter,
const tcu::Sampler::FilterMode magFilter,
+ const LevelMode levelMode,
const int baseLevel,
const deUint32 flags,
const IVec2& textureSize,
const ImageBackingMode sparseCase)
: TestCase (testCtx, name, description)
- , m_baseParams (TEXTURETYPE_2D, gatherType, offsetSize, textureFormat, shadowCompareMode, wrapS, wrapT, textureSwizzle, minFilter, magFilter, baseLevel, flags, sparseCase)
+ , m_baseParams (TEXTURETYPE_2D, gatherType, offsetSize, textureFormat, shadowCompareMode, wrapS, wrapT, textureSwizzle, minFilter, magFilter, levelMode, baseLevel, flags, sparseCase)
, m_textureSize (textureSize)
{
}
void TextureGather2DCase::initPrograms (vk::SourceCollections& dst) const
{
const vector<GatherArgs> iterations = generateBasic2DCaseIterations(m_baseParams.gatherType,
+ m_baseParams.levelMode,
m_baseParams.textureFormat,
m_baseParams.offsetSize != OFFSETSIZE_IMPLEMENTATION_MAXIMUM ? getOffsetRange(m_baseParams.offsetSize) : IVec2(0));
TestInstance* TextureGather2DCase::createInstance (Context& context) const
{
const vector<GatherArgs> iterations = generateBasic2DCaseIterations(m_baseParams.gatherType,
+ m_baseParams.levelMode,
m_baseParams.textureFormat,
getOffsetRange(m_baseParams.offsetSize, context.getDeviceProperties().limits));
};
vector<Gather2DArrayArgs> generate2DArrayCaseIterations (GatherType gatherType,
+ LevelMode levelMode,
const tcu::TextureFormat& textureFormat,
const IVec2& offsetRange,
const IVec3& textureSize)
{
- const vector<GatherArgs> basicIterations = generateBasic2DCaseIterations(gatherType, textureFormat, offsetRange);
+ const vector<GatherArgs> basicIterations = generateBasic2DCaseIterations(gatherType, levelMode, textureFormat, offsetRange);
vector<Gather2DArrayArgs> iterations;
// \note Out-of-bounds layer indices are tested too.
vector<float> TextureGather2DArrayInstance::computeQuadTexCoord (int iterationNdx) const
{
+ const bool biasMode = (m_baseParams.levelMode == LevelMode::AMD_BIAS);
+ const auto bottomLeft = (biasMode ? Vec2(0.0f, 0.0f) : Vec2(-0.3f, -0.4f));
+ const auto topRight = (biasMode ? Vec2(1.0f, 1.0f) : Vec2(1.5f, 1.6f));
vector<float> res;
- TextureTestUtil::computeQuadTexCoord2DArray(res, m_iterations[iterationNdx].layerNdx, Vec2(-0.3f, -0.4f), Vec2(1.5f, 1.6f));
+ TextureTestUtil::computeQuadTexCoord2DArray(res, m_iterations[iterationNdx].layerNdx, bottomLeft, topRight);
return res;
}
0.0f /* LOD threshold */, true /* normalized coords */, m_baseParams.shadowCompareMode);
{
- const int levelBegin = m_baseParams.baseLevel;
+ const int levelBegin = ((m_baseParams.levelMode == LevelMode::NORMAL) ? m_baseParams.baseLevel : 0);
const int levelEnd = texture->getNumLevels();
DE_ASSERT(m_baseParams.baseLevel < texture->getNumLevels());
const MaybeTextureSwizzle& textureSwizzle,
const tcu::Sampler::FilterMode minFilter,
const tcu::Sampler::FilterMode magFilter,
+ const LevelMode levelMode,
const int baseLevel,
const deUint32 flags,
const IVec3& textureSize,
const MaybeTextureSwizzle& textureSwizzle,
const tcu::Sampler::FilterMode minFilter,
const tcu::Sampler::FilterMode magFilter,
+ const LevelMode levelMode,
const int baseLevel,
const deUint32 flags,
const IVec3& textureSize,
const ImageBackingMode sparseCase)
: TestCase (testCtx, name, description)
- , m_baseParams (TEXTURETYPE_2D_ARRAY, gatherType, offsetSize, textureFormat, shadowCompareMode, wrapS, wrapT, textureSwizzle, minFilter, magFilter, baseLevel, flags, sparseCase)
+ , m_baseParams (TEXTURETYPE_2D_ARRAY, gatherType, offsetSize, textureFormat, shadowCompareMode, wrapS, wrapT, textureSwizzle, minFilter, magFilter, levelMode, baseLevel, flags, sparseCase)
, m_textureSize (textureSize)
{
}
void TextureGather2DArrayCase::initPrograms (vk::SourceCollections& dst) const
{
const vector<Gather2DArrayArgs> iterations = generate2DArrayCaseIterations(m_baseParams.gatherType,
+ m_baseParams.levelMode,
m_baseParams.textureFormat,
m_baseParams.offsetSize != OFFSETSIZE_IMPLEMENTATION_MAXIMUM ? getOffsetRange(m_baseParams.offsetSize) : IVec2(0),
m_textureSize);
TestInstance* TextureGather2DArrayCase::createInstance (Context& context) const
{
const vector<Gather2DArrayArgs> iterations = generate2DArrayCaseIterations(m_baseParams.gatherType,
+ m_baseParams.levelMode,
m_baseParams.textureFormat,
getOffsetRange(m_baseParams.offsetSize, context.getDeviceProperties().limits),
m_textureSize);
operator GatherArgs() const { return gatherArgs; }
};
-vector<GatherCubeArgs> generateCubeCaseIterations (GatherType gatherType, const tcu::TextureFormat& textureFormat, const IVec2& offsetRange)
+vector<GatherCubeArgs> generateCubeCaseIterations (GatherType gatherType, LevelMode levelMode, const tcu::TextureFormat& textureFormat, const IVec2& offsetRange)
{
- const vector<GatherArgs> basicIterations = generateBasic2DCaseIterations(gatherType, textureFormat, offsetRange);
+ const vector<GatherArgs> basicIterations = generateBasic2DCaseIterations(gatherType, levelMode, textureFormat, offsetRange);
vector<GatherCubeArgs> iterations;
for (int cubeFaceI = 0; cubeFaceI < tcu::CUBEFACE_LAST; cubeFaceI++)
vector<float> TextureGatherCubeInstance::computeQuadTexCoord (int iterationNdx) const
{
- const bool corners = (m_baseParams.flags & GATHERCASE_DONT_SAMPLE_CUBE_CORNERS) == 0;
- const Vec2 minC = corners ? Vec2(-1.2f) : Vec2(-0.6f, -1.2f);
- const Vec2 maxC = corners ? Vec2( 1.2f) : Vec2( 0.6f, 1.2f);
+ const bool biasMode = (m_baseParams.levelMode == LevelMode::AMD_BIAS);
+ const bool corners = (m_baseParams.flags & GATHERCASE_DONT_SAMPLE_CUBE_CORNERS) == 0;
+ const Vec2 minC = (biasMode ? Vec2(-1.0f) : (corners ? Vec2(-1.2f) : Vec2(-0.6f, -1.2f)));
+ const Vec2 maxC = (biasMode ? Vec2( 1.0f) : (corners ? Vec2( 1.2f) : Vec2( 0.6f, 1.2f)));
vector<float> res;
TextureTestUtil::computeQuadTexCoordCube(res, m_iterations[iterationNdx].face, minC, maxC);
return res;
0 /* cmp channel */, tcu::Vec4(0.0f) /* border color */, true /* seamless cube map */);
{
- const int levelBegin = m_baseParams.baseLevel;
+ const int levelBegin = ((m_baseParams.levelMode == LevelMode::NORMAL) ? m_baseParams.baseLevel : 0);
const int levelEnd = texture->getNumLevels();
DE_ASSERT(m_baseParams.baseLevel < texture->getNumLevels());
const MaybeTextureSwizzle& textureSwizzle,
const tcu::Sampler::FilterMode minFilter,
const tcu::Sampler::FilterMode magFilter,
+ const LevelMode levelMode,
const int baseLevel,
const deUint32 flags,
const int textureSize,
const MaybeTextureSwizzle& textureSwizzle,
const tcu::Sampler::FilterMode minFilter,
const tcu::Sampler::FilterMode magFilter,
+ const LevelMode levelMode,
const int baseLevel,
const deUint32 flags,
const int textureSize,
const ImageBackingMode sparseCase)
: TestCase (testCtx, name, description)
- , m_baseParams (TEXTURETYPE_CUBE, GATHERTYPE_BASIC, OFFSETSIZE_NONE, textureFormat, shadowCompareMode, wrapS, wrapT, textureSwizzle, minFilter, magFilter, baseLevel, flags, sparseCase)
+ , m_baseParams (TEXTURETYPE_CUBE, GATHERTYPE_BASIC, OFFSETSIZE_NONE, textureFormat, shadowCompareMode, wrapS, wrapT, textureSwizzle, minFilter, magFilter, levelMode, baseLevel, flags, sparseCase)
, m_textureSize (textureSize)
{
}
void TextureGatherCubeCase::initPrograms (vk::SourceCollections& dst) const
{
const vector<GatherCubeArgs> iterations = generateCubeCaseIterations(m_baseParams.gatherType,
+ m_baseParams.levelMode,
m_baseParams.textureFormat,
m_baseParams.offsetSize != OFFSETSIZE_IMPLEMENTATION_MAXIMUM ? getOffsetRange(m_baseParams.offsetSize) : IVec2(0));
TestInstance* TextureGatherCubeCase::createInstance (Context& context) const
{
const vector<GatherCubeArgs> iterations = generateCubeCaseIterations(m_baseParams.gatherType,
+ m_baseParams.levelMode,
m_baseParams.textureFormat,
getOffsetRange(m_baseParams.offsetSize, context.getDeviceProperties().limits));
const MaybeTextureSwizzle& texSwizzle,
tcu::Sampler::FilterMode minFilter,
tcu::Sampler::FilterMode magFilter,
+ LevelMode levelMode,
int baseLevel,
const IVec3& textureSize,
deUint32 flags = 0,
{
case TEXTURETYPE_2D:
return new TextureGather2DCase(testCtx, name, description, gatherType, offsetSize, textureFormat, shadowCompareMode,
- wrapS, wrapT, texSwizzle, minFilter, magFilter, baseLevel, flags, textureSize.swizzle(0, 1), sparseCase);
+ wrapS, wrapT, texSwizzle, minFilter, magFilter, levelMode, baseLevel, flags, textureSize.swizzle(0, 1), sparseCase);
case TEXTURETYPE_2D_ARRAY:
return new TextureGather2DArrayCase(testCtx, name, description, gatherType, offsetSize, textureFormat, shadowCompareMode,
- wrapS, wrapT, texSwizzle, minFilter, magFilter, baseLevel, flags, textureSize, sparseCase);
+ wrapS, wrapT, texSwizzle, minFilter, magFilter, levelMode, baseLevel, flags, textureSize, sparseCase);
case TEXTURETYPE_CUBE:
DE_ASSERT(gatherType == GATHERTYPE_BASIC);
DE_ASSERT(offsetSize == OFFSETSIZE_NONE);
return new TextureGatherCubeCase(testCtx, name, description, textureFormat, shadowCompareMode,
- wrapS, wrapT, texSwizzle, minFilter, magFilter, baseLevel, flags, textureSize.x(), sparseCase);
+ wrapS, wrapT, texSwizzle, minFilter, magFilter, levelMode, baseLevel, flags, textureSize.x(), sparseCase);
default:
DE_ASSERT(false);
const string caseName = string() + wrapModes[wrapSNdx].name + "_" + wrapModes[wrapTNdx].name;
compareModeGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, caseName.c_str(), "", gatherType, offsetSize, format, compareMode, wrapS, wrapT,
- MaybeTextureSwizzle::createNoneTextureSwizzle(), tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, 0, textureSize,
+ MaybeTextureSwizzle::createNoneTextureSwizzle(), tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, LevelMode::NORMAL, 0, textureSize,
noCorners ? GATHERCASE_DONT_SAMPLE_CUBE_CORNERS : 0));
compareModeGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, "sparse_" + caseName, "", gatherType, offsetSize, format, compareMode, wrapS, wrapT,
- MaybeTextureSwizzle::createNoneTextureSwizzle(), tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, 0, textureSize,
+ MaybeTextureSwizzle::createNoneTextureSwizzle(), tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, LevelMode::NORMAL, 0, textureSize,
noCorners ? GATHERCASE_DONT_SAMPLE_CUBE_CORNERS : 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
}
}
swizzleGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, caseName.c_str(), "", gatherType, offsetSize, format,
tcu::Sampler::COMPAREMODE_NONE, tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL,
- swizzle, tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, 0, IVec3(64, 64, 3)));
+ swizzle, tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, LevelMode::NORMAL, 0, IVec3(64, 64, 3)));
swizzleGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, "sparse_" + caseName, "", gatherType, offsetSize, format,
tcu::Sampler::COMPAREMODE_NONE, tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL,
- swizzle, tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, 0, IVec3(64, 64, 3), 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
+ swizzle, tcu::Sampler::NEAREST, tcu::Sampler::NEAREST, LevelMode::NORMAL, 0, IVec3(64, 64, 3), 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
}
}
filterModeGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, caseName.c_str(), "", gatherType, offsetSize, format, compareMode,
tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL, MaybeTextureSwizzle::createNoneTextureSwizzle(),
- minFilter, magFilter, 0, IVec3(64, 64, 3)));
+ minFilter, magFilter, LevelMode::NORMAL, 0, IVec3(64, 64, 3)));
filterModeGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, "sparse_" + caseName, "", gatherType, offsetSize, format, compareMode,
tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL, MaybeTextureSwizzle::createNoneTextureSwizzle(),
- minFilter, magFilter, 0, IVec3(64, 64, 3), 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
+ minFilter, magFilter, LevelMode::NORMAL, 0, IVec3(64, 64, 3), 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
}
}
for (int baseLevel = 1; baseLevel <= 2; baseLevel++)
{
- const string caseName = "level_" + de::toString(baseLevel);
- const tcu::Sampler::CompareMode compareMode = isDepthFormat(format) ? tcu::Sampler::COMPAREMODE_LESS : tcu::Sampler::COMPAREMODE_NONE;
- baseLevelGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, caseName.c_str(), "", gatherType, offsetSize, format,
- compareMode, tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL,
- MaybeTextureSwizzle::createNoneTextureSwizzle(), tcu::Sampler::NEAREST, tcu::Sampler::NEAREST,
- baseLevel, IVec3(64, 64, 3)));
- baseLevelGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, "sparse_" + caseName, "", gatherType, offsetSize, format,
- compareMode, tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL,
- MaybeTextureSwizzle::createNoneTextureSwizzle(), tcu::Sampler::NEAREST, tcu::Sampler::NEAREST,
- baseLevel, IVec3(64, 64, 3), 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
+ static const struct
+ {
+ const std::string suffix;
+ LevelMode levelMode;
+ } levelModes[] =
+ {
+ { "", LevelMode::NORMAL },
+ { "_amd_bias", LevelMode::AMD_BIAS },
+ { "_amd_lod", LevelMode::AMD_LOD },
+ };
+
+ for (int modeIdx = 0; modeIdx < DE_LENGTH_OF_ARRAY(levelModes); ++modeIdx)
+ {
+ const auto& mode = levelModes[modeIdx].levelMode;
+
+ // Not supported for these sampler types.
+ if (isDepthFormat(format) && mode != LevelMode::NORMAL)
+ continue;
+
+ const string caseName = "level_" + de::toString(baseLevel) + levelModes[modeIdx].suffix;
+ const tcu::Sampler::CompareMode compareMode = isDepthFormat(format) ? tcu::Sampler::COMPAREMODE_LESS : tcu::Sampler::COMPAREMODE_NONE;
+ // The minFilter mode may need to be NEAREST_MIPMAP_NEAREST so the sampler creating code will not limit maxLod.
+ const auto minFilter = ((mode == LevelMode::NORMAL) ? tcu::Sampler::NEAREST : tcu::Sampler::NEAREST_MIPMAP_NEAREST);
+ baseLevelGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, caseName.c_str(), "", gatherType, offsetSize, format,
+ compareMode, tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL,
+ MaybeTextureSwizzle::createNoneTextureSwizzle(), minFilter, tcu::Sampler::NEAREST,
+ mode, baseLevel, IVec3(64, 64, 3)));
+ baseLevelGroup->addChild(makeTextureGatherCase(textureType, m_testCtx, "sparse_" + caseName, "", gatherType, offsetSize, format,
+ compareMode, tcu::Sampler::REPEAT_GL, tcu::Sampler::REPEAT_GL,
+ MaybeTextureSwizzle::createNoneTextureSwizzle(), minFilter, tcu::Sampler::NEAREST,
+ mode, baseLevel, IVec3(64, 64, 3), 0, ShaderRenderCaseInstance::IMAGE_BACKING_MODE_SPARSE));
+ }
}
}
}
"VK_AMD_shader_explicit_vertex_parameter",
"VK_AMD_shader_image_load_store_lod",
"VK_AMD_shader_trinary_minmax",
+ "VK_AMD_texture_gather_bias_lod",
};
for (size_t extNdx = 0; extNdx < extensions.size(); extNdx++)
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.basic.cube.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.basic.cube.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.basic.cube.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offset_dynamic.implementation_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d.depth32f.size_pot.compare_less.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.filter_mode.sparse_min_linear_mipmap_linear_mag_linear
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8ui.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.size_pot.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.size_pot.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.size_pot.repeat_mirrored_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.filter_mode.sparse_min_nearest_mipmap_nearest_mag_nearest
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_1_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_1_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_bias
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.level_2_amd_lod
+dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.rgba8i.base_level.sparse_level_2_amd_lod
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less.clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less.sparse_clamp_to_edge_repeat
dEQP-VK.glsl.texture_gather.offsets.min_required_offset.2d_array.depth32f.size_pot.compare_less.repeat_mirrored_repeat