--- /dev/null
+dEQP-GLES3.functional.fbo.blit.conversion.rgba4_to_rgb565
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_y
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_x
+dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_x
+dEQP-GLES3.functional.polygon_offset.fixed16_result_depth_clamp
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.clamp.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.max.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.min.highp_vertex.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_fragment.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_fragment.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_fragment.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_fragment.vec4
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_vertex.scalar
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_vertex.vec2
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_vertex.vec3
+dEQP-GLES3.functional.shaders.builtin_functions.precision.smoothstep.mediump_vertex.vec4
+dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.fastest.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa2.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdx.nicest.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.fastest.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa2.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.dfdy.nicest.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fastest.fbo_msaa4.vec4_mediump
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.float_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa2.vec4_mediump
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.fbo_msaa4.vec4_mediump
+dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.float_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec2_highp
+dEQP-GLES3.functional.shaders.derivate.fwidth.nicest.fbo_msaa4.vec4_mediump
+dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh.highp_vec3_vertex
+dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh.highp_vec4_vertex
+dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh.mediump_vec3_vertex
+dEQP-GLES3.functional.shaders.operator.angle_and_trigonometry.atanh.mediump_vec4_vertex
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.isampler2darray_fragment
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.isampler2darray_vertex
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.isampler2d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.isampler2d_vertex
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.isampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.isampler3d_vertex
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.usampler2darray_fragment
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.usampler2darray_vertex
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.usampler2d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.usampler2d_vertex
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.usampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.texturelod.usampler3d_vertex
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler2d_vec3_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler2d_vec3_vertex
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler2d_vec4_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler2d_vec4_vertex
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler3d_vertex
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler2d_vec3_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler2d_vec3_vertex
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler2d_vec4_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler2d_vec4_vertex
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler3d_fragment
+dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler3d_vertex
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x10
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x10_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x5
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x6
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x6_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x8
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.10x8_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.12x10
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.12x10_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.12x12
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.12x12_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.4x4
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.4x4_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.5x4
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.5x4_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.5x5
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.5x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.6x5
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.6x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.6x6
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.6x6_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.8x5
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.8x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.8x6
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.8x6_srgb
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.8x8
+dEQP-GLES3.functional.texture.compressed.astc.color_endpoint_modes.8x8_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.10x10
+dEQP-GLES3.functional.texture.compressed.astc.random.10x10_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.10x5
+dEQP-GLES3.functional.texture.compressed.astc.random.10x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.10x6
+dEQP-GLES3.functional.texture.compressed.astc.random.10x6_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.10x8
+dEQP-GLES3.functional.texture.compressed.astc.random.10x8_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.12x10
+dEQP-GLES3.functional.texture.compressed.astc.random.12x10_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.12x12
+dEQP-GLES3.functional.texture.compressed.astc.random.12x12_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.4x4
+dEQP-GLES3.functional.texture.compressed.astc.random.4x4_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.5x4
+dEQP-GLES3.functional.texture.compressed.astc.random.5x4_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.5x5
+dEQP-GLES3.functional.texture.compressed.astc.random.5x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.6x5
+dEQP-GLES3.functional.texture.compressed.astc.random.6x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.6x6
+dEQP-GLES3.functional.texture.compressed.astc.random.6x6_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.8x5
+dEQP-GLES3.functional.texture.compressed.astc.random.8x5_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.8x6
+dEQP-GLES3.functional.texture.compressed.astc.random.8x6_srgb
+dEQP-GLES3.functional.texture.compressed.astc.random.8x8
+dEQP-GLES3.functional.texture.compressed.astc.random.8x8_srgb
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_mipmap_nearest_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d_array.combinations.nearest_mipmap_nearest_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d_array.sizes.63x63x63_linear_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.2d_array.sizes.63x63x63_linear_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.2d_array.sizes.63x63x63_nearest_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.2d_array.sizes.63x63x63_nearest_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_mipmap_nearest_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.2d.combinations.nearest_mipmap_nearest_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.2d.sizes.127x99_linear_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.2d.sizes.127x99_linear_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.2d.sizes.127x99_nearest_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.2d.sizes.127x99_nearest_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.2d.sizes.31x55_linear_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.2d.sizes.31x55_linear_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.2d.sizes.31x55_nearest_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.2d.sizes.31x55_nearest_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_linear_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_linear_nearest_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_linear_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_mipmap_nearest_nearest_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_linear_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_linear_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_linear_nearest_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_linear_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_clamp_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_mirror_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.3d.combinations.nearest_mipmap_nearest_nearest_repeat_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_linear_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.3d.sizes.63x63x63_nearest_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_mipmap_nearest_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_linear_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_linear_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_clamp_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_clamp_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_clamp_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_mirror_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_mirror_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_mirror_repeat
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_repeat_clamp
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_repeat_mirror
+dEQP-GLES3.functional.texture.filtering.cube.combinations.nearest_mipmap_nearest_nearest_repeat_repeat
+dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_linear_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_linear_mipmap_nearest
+dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_nearest_mipmap_linear
+dEQP-GLES3.functional.texture.filtering.cube.sizes.63x63_nearest_mipmap_nearest
+dEQP-GLES3.functional.texture.mipmap.3d.base_level.linear_linear
+dEQP-GLES3.functional.texture.mipmap.3d.base_level.linear_nearest
+dEQP-GLES3.functional.texture.mipmap.3d.base_level.nearest_linear
+dEQP-GLES3.functional.texture.mipmap.3d.base_level.nearest_nearest
+dEQP-GLES3.functional.texture.mipmap.cube.bias.linear_linear
+dEQP-GLES3.functional.texture.mipmap.cube.bias.linear_nearest
+dEQP-GLES3.functional.texture.mipmap.cube.max_level.linear_nearest
+dEQP-GLES3.functional.texture.mipmap.cube.max_lod.linear_linear
+dEQP-GLES3.functional.texture.mipmap.cube.max_lod.linear_nearest
+dEQP-GLES3.functional.texture.mipmap.cube.max_lod.nearest_linear
+dEQP-GLES3.functional.texture.mipmap.cube.max_lod.nearest_nearest
+dEQP-GLES3.functional.texture.mipmap.cube.projected.linear_linear
+dEQP-GLES3.functional.texture.mipmap.cube.projected.nearest_nearest
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.r11f_g11f_b10f_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.r16i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.r8ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg16f_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg16i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg32f_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg32i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg32ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg8_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg8_snorm_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rg8ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb16f_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb16i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb16ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb32f_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb32i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb32ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb5_a1_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb8_snorm_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgb9_e5_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba16f_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba16ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba32i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba32ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba8_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba8i_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba8_snorm_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.rgba8ui_3d
+dEQP-GLES3.functional.texture.specification.basic_teximage3d.srgb8_3d
+dEQP-GLES3.functional.texture.specification.texstorage2d.format.rg8ui_2d
+dEQP-GLES3.functional.texture.specification.texstorage2d.format.rgb8_snorm_2d
+dEQP-GLES3.functional.texture.specification.texstorage2d.format.rgb9_e5_2d
+dEQP-GLES3.functional.texture.specification.texstorage2d.format.rgba16i_2d
+dEQP-GLES3.functional.texture.specification.texstorage2d.format.rgba32ui_2d
+dEQP-GLES3.functional.texture.specification.texstorage2d.format.srgb8_2d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth24_stencil8_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component16_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component24_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.depth_component32f_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.r16ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.r32f_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.r8_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.r8ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg16f_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg16i_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg16ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg32f_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg32ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg8_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg8i_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rg8ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb10_a2ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb16f_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb16ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb32f_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb32f_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb32i_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb32ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb565_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb5_a1_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb8_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb8i_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb8_snorm_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb8_snorm_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb8ui_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgb9_e5_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba16f_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba32f_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba32i_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba32ui_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba8_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba8i_3d
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.rgba8_snorm_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.srgb8_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.format.srgb8_alpha8_2d_array
+dEQP-GLES3.functional.texture.specification.texstorage3d.size.2d_array_57x63x5_6_levels
+dEQP-GLES3.functional.texture.specification.texstorage3d.size.3d_57x63x11_6_levels
+dEQP-GLES3.functional.texture.units.all_units.mixed.1
+dEQP-GLES3.functional.texture.units.all_units.mixed.2
+dEQP-GLES3.functional.texture.units.all_units.mixed.3
+dEQP-GLES3.functional.texture.units.all_units.mixed.4
+dEQP-GLES3.functional.texture.units.all_units.mixed.5
+dEQP-GLES3.functional.texture.units.all_units.mixed.6
+dEQP-GLES3.functional.texture.units.all_units.mixed.7
+dEQP-GLES3.functional.texture.units.all_units.mixed.9
+dEQP-GLES3.functional.texture.units.all_units.only_2d.2
+dEQP-GLES3.functional.texture.units.all_units.only_2d.3
+dEQP-GLES3.functional.texture.units.all_units.only_2d.4
+dEQP-GLES3.functional.texture.units.all_units.only_2d.5
+dEQP-GLES3.functional.texture.units.all_units.only_2d.6
+dEQP-GLES3.functional.texture.units.all_units.only_2d.7
+dEQP-GLES3.functional.texture.units.all_units.only_2d.8
+dEQP-GLES3.functional.texture.units.all_units.only_2d.9
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.2
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.3
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.4
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.5
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.6
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.7
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.8
+dEQP-GLES3.functional.texture.units.all_units.only_2d_array.9
+dEQP-GLES3.functional.texture.units.all_units.only_3d.2
+dEQP-GLES3.functional.texture.units.all_units.only_3d.3
+dEQP-GLES3.functional.texture.units.all_units.only_3d.4
+dEQP-GLES3.functional.texture.units.all_units.only_3d.5
+dEQP-GLES3.functional.texture.units.all_units.only_3d.6
+dEQP-GLES3.functional.texture.units.all_units.only_3d.7
+dEQP-GLES3.functional.texture.units.all_units.only_3d.8
+dEQP-GLES3.functional.texture.units.all_units.only_3d.9
+dEQP-GLES3.functional.texture.units.all_units.only_cube.1
+dEQP-GLES3.functional.texture.units.all_units.only_cube.2
+dEQP-GLES3.functional.texture.units.all_units.only_cube.3
+dEQP-GLES3.functional.texture.units.all_units.only_cube.4
+dEQP-GLES3.functional.texture.units.all_units.only_cube.5
+dEQP-GLES3.functional.texture.units.all_units.only_cube.6
+dEQP-GLES3.functional.texture.units.all_units.only_cube.7
+dEQP-GLES3.functional.texture.units.all_units.only_cube.8
+dEQP-GLES3.functional.texture.units.all_units.only_cube.9
+dEQP-GLES3.functional.texture.vertex.2d_array.filtering.linear_nearest_clamp
+dEQP-GLES3.functional.texture.vertex.2d_array.filtering.linear_nearest_mirror
+dEQP-GLES3.functional.texture.vertex.2d_array.filtering.linear_nearest_repeat
+dEQP-GLES3.functional.texture.vertex.2d_array.filtering.nearest_linear_clamp
+dEQP-GLES3.functional.texture.vertex.2d_array.filtering.nearest_linear_mirror
+dEQP-GLES3.functional.texture.vertex.2d_array.filtering.nearest_linear_repeat
+dEQP-GLES3.functional.texture.vertex.2d.filtering.linear_nearest_clamp
+dEQP-GLES3.functional.texture.vertex.2d.filtering.linear_nearest_mirror
+dEQP-GLES3.functional.texture.vertex.2d.filtering.linear_nearest_repeat
+dEQP-GLES3.functional.texture.vertex.2d.filtering.nearest_linear_clamp
+dEQP-GLES3.functional.texture.vertex.2d.filtering.nearest_linear_mirror
+dEQP-GLES3.functional.texture.vertex.2d.filtering.nearest_linear_repeat
+dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_clamp
+dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_mirror
+dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_repeat
+dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_clamp
+dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_mirror
+dEQP-GLES3.functional.texture.vertex.3d.filtering.nearest_linear_repeat
+dEQP-GLES3.functional.texture.vertex.cube.filtering.linear_nearest_clamp
+dEQP-GLES3.functional.texture.vertex.cube.filtering.linear_nearest_mirror
+dEQP-GLES3.functional.texture.vertex.cube.filtering.linear_nearest_repeat
+dEQP-GLES3.functional.texture.vertex.cube.filtering.nearest_linear_clamp
+dEQP-GLES3.functional.texture.vertex.cube.filtering.nearest_linear_mirror
+dEQP-GLES3.functional.texture.vertex.cube.filtering.nearest_linear_repeat
--- /dev/null
+# -*- coding: utf-8 -*-\r
+\r
+#-------------------------------------------------------------------------\r
+# drawElements Quality Program utilities\r
+# --------------------------------------\r
+#\r
+# Copyright 2015 The Android Open Source Project\r
+#\r
+# Licensed under the Apache License, Version 2.0 (the "License");\r
+# you may not use this file except in compliance with the License.\r
+# You may obtain a copy of the License at\r
+#\r
+# http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+# Unless required by applicable law or agreed to in writing, software\r
+# distributed under the License is distributed on an "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+# See the License for the specific language governing permissions and\r
+# limitations under the License.\r
+#\r
+#-------------------------------------------------------------------------\r
+\r
+from build.common import *\r
+from build.config import ANY_GENERATOR\r
+from build.build import build\r
+from build_caselists import Module, getBuildConfig, genCaseList, getCaseListPath, DEFAULT_BUILD_DIR, DEFAULT_TARGET\r
+from fnmatch import fnmatch\r
+from copy import copy\r
+\r
+import xml.etree.cElementTree as ElementTree\r
+import xml.dom.minidom as minidom\r
+\r
+CTS_DATA_DIR = os.path.join(DEQP_DIR, "android", "cts")\r
+\r
+class Configuration:\r
+ def __init__ (self, name, glconfig, rotation, surfacetype, filters):\r
+ self.name = name\r
+ self.glconfig = glconfig\r
+ self.rotation = rotation\r
+ self.surfacetype = surfacetype\r
+ self.filters = filters\r
+\r
+class Package:\r
+ def __init__ (self, module, configurations):\r
+ self.module = module\r
+ self.configurations = configurations\r
+\r
+class Mustpass:\r
+ def __init__ (self, version, packages):\r
+ self.version = version\r
+ self.packages = packages\r
+\r
+class Filter:\r
+ TYPE_INCLUDE = 0\r
+ TYPE_EXCLUDE = 1\r
+\r
+ def __init__ (self, type, filename):\r
+ self.type = type\r
+ self.filename = filename\r
+\r
+class TestRoot:\r
+ def __init__ (self):\r
+ self.children = []\r
+\r
+class TestGroup:\r
+ def __init__ (self, name):\r
+ self.name = name\r
+ self.children = []\r
+\r
+class TestCase:\r
+ def __init__ (self, name):\r
+ self.name = name\r
+ self.configurations = []\r
+\r
+class GLESVersion:\r
+ def __init__(self, major, minor):\r
+ self.major = major\r
+ self.minor = minor\r
+\r
+ def encode (self):\r
+ return (self.major << 16) | (self.minor)\r
+\r
+def getModuleGLESVersion (module):\r
+ versions = {\r
+ 'dEQP-GLES2': GLESVersion(2,0),\r
+ 'dEQP-GLES3': GLESVersion(3,0),\r
+ 'dEQP-GLES31': GLESVersion(3,1)\r
+ }\r
+ return versions[module.name]\r
+\r
+def getSrcDir (mustpass):\r
+ return os.path.join(CTS_DATA_DIR, mustpass.version, "src")\r
+\r
+def getTmpDir (mustpass):\r
+ return os.path.join(CTS_DATA_DIR, mustpass.version, "tmp")\r
+\r
+def getModuleShorthand (module):\r
+ assert module.name[:5] == "dEQP-"\r
+ return module.name[5:].lower()\r
+\r
+def getCaseListFileName (package, configuration):\r
+ return "%s-%s.txt" % (getModuleShorthand(package.module), configuration.name)\r
+\r
+def getDstCaseListPath (mustpass, package, configuration):\r
+ return os.path.join(CTS_DATA_DIR, mustpass.version, getCaseListFileName(package, configuration))\r
+\r
+def getCTSPackageName (package):\r
+ return "com.drawelements.deqp." + getModuleShorthand(package.module)\r
+\r
+def getCommandLine (config):\r
+ return "--deqp-gl-config-name=%s --deqp-screen-rotation=%s --deqp-surface-type=%s" % (config.glconfig, config.rotation, config.surfacetype)\r
+\r
+def readCaseList (filename):\r
+ cases = []\r
+ with open(filename, 'rb') as f:\r
+ for line in f:\r
+ if line[:6] == "TEST: ":\r
+ cases.append(line[6:].strip())\r
+ return cases\r
+\r
+def getCaseList (mustpass, module):\r
+ generator = ANY_GENERATOR\r
+ buildCfg = getBuildConfig(DEFAULT_BUILD_DIR, DEFAULT_TARGET, "Debug")\r
+\r
+ build(buildCfg, generator, [module.binName])\r
+ genCaseList(buildCfg, generator, module, "txt")\r
+\r
+ return readCaseList(getCaseListPath(buildCfg, module, "txt"))\r
+\r
+def readPatternList (filename):\r
+ ptrns = []\r
+ with open(filename, 'rb') as f:\r
+ for line in f:\r
+ line = line.strip()\r
+ if len(line) > 0 and line[0] != '#':\r
+ ptrns.append(line)\r
+ return ptrns\r
+\r
+def applyPatterns (caseList, patterns, op):\r
+ matched = set()\r
+ errors = []\r
+ curList = copy(caseList)\r
+ trivialPtrns = [p for p in patterns if p.find('*') < 0]\r
+ regularPtrns = [p for p in patterns if p.find('*') >= 0]\r
+\r
+ # Apply trivial (just case paths)\r
+ allCasesSet = set(caseList)\r
+ for path in trivialPtrns:\r
+ if path in allCasesSet:\r
+ if path in matched:\r
+ errors.append((path, "Same case specified more than once"))\r
+ matched.add(path)\r
+ else:\r
+ errors.append((path, "Test case not found"))\r
+\r
+ curList = [c for c in curList if c not in matched]\r
+\r
+ for pattern in regularPtrns:\r
+ matchedThisPtrn = set()\r
+\r
+ for case in curList:\r
+ if fnmatch(case, pattern):\r
+ matchedThisPtrn.add(case)\r
+\r
+ if len(matchedThisPtrn) == 0:\r
+ errors.append((pattern, "Pattern didn't match any cases"))\r
+\r
+ matched = matched | matchedThisPtrn\r
+ curList = [c for c in curList if c not in matched]\r
+\r
+ for pattern, reason in errors:\r
+ print "ERROR: %s: %s" % (reason, pattern)\r
+\r
+ if len(errors) > 0:\r
+ die("Found %s invalid patterns" % len(errors))\r
+\r
+ return [c for c in caseList if op(c in matched)]\r
+\r
+def applyInclude (caseList, patterns):\r
+ return applyPatterns(caseList, patterns, lambda b: b)\r
+\r
+def applyExclude (caseList, patterns):\r
+ return applyPatterns(caseList, patterns, lambda b: not b)\r
+\r
+def readPatternLists (mustpass):\r
+ lists = {}\r
+ for package in mustpass.packages:\r
+ for cfg in package.configurations:\r
+ for filter in cfg.filters:\r
+ if not filter.filename in lists:\r
+ lists[filter.filename] = readPatternList(os.path.join(getSrcDir(mustpass), filter.filename))\r
+ return lists\r
+\r
+def applyFilters (caseList, patternLists, filters):\r
+ res = copy(caseList)\r
+ for filter in filters:\r
+ ptrnList = patternLists[filter.filename]\r
+ if filter.type == Filter.TYPE_INCLUDE:\r
+ res = applyInclude(res, ptrnList)\r
+ else:\r
+ assert filter.type == Filter.TYPE_EXCLUDE\r
+ res = applyExclude(res, ptrnList)\r
+ return res\r
+\r
+def appendToHierarchy (root, casePath):\r
+ def findChild (node, name):\r
+ for child in node.children:\r
+ if child.name == name:\r
+ return child\r
+ return None\r
+\r
+ curNode = root\r
+ components = casePath.split('.')\r
+\r
+ for component in components[:-1]:\r
+ nextNode = findChild(curNode, component)\r
+ if not nextNode:\r
+ nextNode = TestGroup(component)\r
+ curNode.children.append(nextNode)\r
+ curNode = nextNode\r
+\r
+ if not findChild(curNode, components[-1]):\r
+ curNode.children.append(TestCase(components[-1]))\r
+\r
+def buildTestHierachy (caseList):\r
+ root = TestRoot()\r
+ for case in caseList:\r
+ appendToHierarchy(root, case)\r
+ return root\r
+\r
+def buildTestCaseMap (root):\r
+ caseMap = {}\r
+\r
+ def recursiveBuild (curNode, prefix):\r
+ curPath = prefix + curNode.name\r
+ if isinstance(curNode, TestCase):\r
+ caseMap[curPath] = curNode\r
+ else:\r
+ for child in curNode.children:\r
+ recursiveBuild(child, curPath + '.')\r
+\r
+ for child in root.children:\r
+ recursiveBuild(child, '')\r
+\r
+ return caseMap\r
+\r
+def include (filename):\r
+ return Filter(Filter.TYPE_INCLUDE, filename)\r
+\r
+def exclude (filename):\r
+ return Filter(Filter.TYPE_EXCLUDE, filename)\r
+\r
+def prettifyXML (doc):\r
+ uglyString = ElementTree.tostring(doc, 'utf-8')\r
+ reparsed = minidom.parseString(uglyString)\r
+ return reparsed.toprettyxml(indent='\t', encoding='utf-8')\r
+\r
+def genCTSPackageXML (package, root):\r
+ def isLeafGroup (testGroup):\r
+ numGroups = 0\r
+ numTests = 0\r
+\r
+ for child in testGroup.children:\r
+ if isinstance(child, TestCase):\r
+ numTests += 1\r
+ else:\r
+ numGroups += 1\r
+\r
+ assert numGroups + numTests > 0\r
+\r
+ if numGroups > 0 and numTests > 0:\r
+ die("Mixed groups and cases in %s" % testGroup.name)\r
+\r
+ return numGroups == 0\r
+\r
+ def makeConfiguration (parentElem, configuration):\r
+ return ElementTree.SubElement(parentElem, "TestInstance", glconfig=configuration.glconfig, rotation=configuration.rotation, surfacetype=configuration.surfacetype)\r
+\r
+ def makeTestCase (parentElem, testCase):\r
+ caseElem = ElementTree.SubElement(parentElem, "Test", name=testCase.name)\r
+ for config in testCase.configurations:\r
+ makeConfiguration(caseElem, config)\r
+ return caseElem\r
+\r
+ def makeTestGroup (parentElem, testGroup):\r
+ groupElem = ElementTree.SubElement(parentElem, "TestCase" if isLeafGroup(testGroup) else "TestSuite", name=testGroup.name)\r
+ for child in testGroup.children:\r
+ if isinstance(child, TestCase):\r
+ makeTestCase(groupElem, child)\r
+ else:\r
+ makeTestGroup(groupElem, child)\r
+ return groupElem\r
+\r
+ pkgElem = ElementTree.Element("TestPackage",\r
+ name = package.module.name,\r
+ appPackageName = getCTSPackageName(package),\r
+ testType = "deqpTest")\r
+\r
+ pkgElem.set("xmlns:deqp", "http://drawelements.com/deqp")\r
+ pkgElem.set("deqp:glesVersion", str(getModuleGLESVersion(package.module).encode()))\r
+\r
+ for child in root.children:\r
+ makeTestGroup(pkgElem, child)\r
+\r
+ return pkgElem\r
+\r
+def genSpecXML (mustpass):\r
+ mustpassElem = ElementTree.Element("Mustpass", version = mustpass.version)\r
+\r
+ for package in mustpass.packages:\r
+ packageElem = ElementTree.SubElement(mustpassElem, "TestPackage", name = package.module.name)\r
+\r
+ for config in package.configurations:\r
+ configElem = ElementTree.SubElement(packageElem, "Configuration",\r
+ name = config.name,\r
+ caseListFile = getCaseListFileName(package, config),\r
+ commandLine = getCommandLine(config))\r
+\r
+ return mustpassElem\r
+\r
+def genMustpass (mustpass, moduleCaseLists):\r
+ print "Generating mustpass '%s'" % mustpass.version\r
+\r
+ patternLists = readPatternLists(mustpass)\r
+\r
+ for package in mustpass.packages:\r
+ allCasesInPkg = moduleCaseLists[package.module]\r
+ matchingByConfig = {}\r
+ allMatchingSet = set()\r
+\r
+ for config in package.configurations:\r
+ filtered = applyFilters(allCasesInPkg, patternLists, config.filters)\r
+ dstFile = getDstCaseListPath(mustpass, package, config)\r
+\r
+ print " Writing deqp caselist: " + dstFile\r
+ writeFile(dstFile, "\n".join(filtered) + "\n")\r
+\r
+ matchingByConfig[config] = filtered\r
+ allMatchingSet = allMatchingSet | set(filtered)\r
+\r
+ allMatchingCases = [c for c in allCasesInPkg if c in allMatchingSet] # To preserve ordering\r
+ root = buildTestHierachy(allMatchingCases)\r
+ testCaseMap = buildTestCaseMap(root)\r
+\r
+ for config in package.configurations:\r
+ for case in matchingByConfig[config]:\r
+ testCaseMap[case].configurations.append(config)\r
+\r
+ packageXml = genCTSPackageXML(package, root)\r
+ xmlFilename = os.path.join(CTS_DATA_DIR, mustpass.version, getCTSPackageName(package) + ".xml")\r
+\r
+ print " Writing CTS caselist: " + xmlFilename\r
+ writeFile(xmlFilename, prettifyXML(packageXml))\r
+\r
+ specXML = genSpecXML(mustpass)\r
+ specFilename = os.path.join(CTS_DATA_DIR, mustpass.version, "mustpass.xml")\r
+\r
+ print " Writing spec: " + specFilename\r
+ writeFile(specFilename, prettifyXML(specXML))\r
+\r
+ print "Done!"\r
+\r
+def genMustpassLists (mustpassLists):\r
+ moduleCaseLists = {}\r
+\r
+ # Getting case lists involves invoking build, so we want to cache the results\r
+ for mustpass in mustpassLists:\r
+ for package in mustpass.packages:\r
+ if not package.module in moduleCaseLists:\r
+ moduleCaseLists[package.module] = getCaseList(mustpass, package.module)\r
+\r
+ for mustpass in mustpassLists:\r
+ genMustpass(mustpass, moduleCaseLists)\r
+\r
+GLES3_MODULE = Module(name = "dEQP-GLES3", dirName = "gles3", binName = "deqp-gles3")\r
+GLES31_MODULE = Module(name = "dEQP-GLES31", dirName = "gles31", binName = "deqp-gles31")\r
+\r
+LMP_GLES3_PKG = Package(module = GLES3_MODULE, configurations = [\r
+ Configuration(name = "master",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "unspecified",\r
+ surfacetype = "window",\r
+ filters = [include("es30-lmp.txt")]),\r
+ ])\r
+LMP_GLES31_PKG = Package(module = GLES31_MODULE, configurations = [\r
+ Configuration(name = "master",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "unspecified",\r
+ surfacetype = "window",\r
+ filters = [include("es31-lmp.txt")]),\r
+ ])\r
+\r
+LMP_MR1_GLES3_PKG = Package(module = GLES3_MODULE, configurations = [\r
+ Configuration(name = "master",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "unspecified",\r
+ surfacetype = "window",\r
+ filters = [include("es30-lmp-mr1.txt")]),\r
+ ])\r
+LMP_MR1_GLES31_PKG = Package(module = GLES31_MODULE, configurations = [\r
+ Configuration(name = "master",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "unspecified",\r
+ surfacetype = "window",\r
+ filters = [include("es31-lmp-mr1.txt")]),\r
+ ])\r
+\r
+MNC_GLES3_COMMON_FILTERS = [exclude("gles3-hw-issues.txt"), exclude("gles3-test-issues.txt")]\r
+MNC_GLES3_PKG = Package(module = GLES3_MODULE, configurations = [\r
+ Configuration(name = "master",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "unspecified",\r
+ surfacetype = "window",\r
+ filters = MNC_GLES3_COMMON_FILTERS),\r
+ Configuration(name = "rotate-0",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "0",\r
+ surfacetype = "window",\r
+ filters = MNC_GLES3_COMMON_FILTERS + [include("gles3-rotation.txt")]),\r
+ ])\r
+\r
+MNC_GLES31_COMMON_FILTERS = [exclude("gles31-hw-issues.txt"), exclude("gles31-test-issues.txt")]\r
+MNC_GLES31_PKG = Package(module = GLES31_MODULE, configurations = [\r
+ Configuration(name = "master",\r
+ glconfig = "rgba8888d24s8ms0",\r
+ rotation = "unspecified",\r
+ surfacetype = "window",\r
+ filters = MNC_GLES31_COMMON_FILTERS),\r
+ ])\r
+\r
+MUSTPASS_LISTS = [\r
+ Mustpass(version = "lmp", packages = [LMP_GLES3_PKG, LMP_GLES31_PKG]),\r
+ Mustpass(version = "lmp-mr1", packages = [LMP_MR1_GLES3_PKG, LMP_MR1_GLES31_PKG]),\r
+ Mustpass(version = "mnc", packages = [MNC_GLES3_PKG, MNC_GLES31_PKG])\r
+ ]\r
+\r
+if __name__ == "__main__":\r
+ genMustpassLists(MUSTPASS_LISTS)\r