From a9391a1a01dea4867d3c950687bc63dedbe853c8 Mon Sep 17 00:00:00 2001 From: Arno Messiaen Date: Tue, 17 Sep 2019 23:40:03 +0200 Subject: [PATCH] lima: add cubemap support Signed-off-by: Arno Messiaen Reviewed-by: Vasily Khoruzhick Reviewed-by: Erico Nunes --- .gitlab-ci/deqp-lima-fails.txt | 244 ----------------------- src/gallium/drivers/lima/ir/pp/codegen.c | 27 ++- src/gallium/drivers/lima/ir/pp/nir.c | 1 + src/gallium/drivers/lima/lima_draw.c | 2 +- src/gallium/drivers/lima/lima_screen.c | 1 + src/gallium/drivers/lima/lima_texture.c | 13 +- src/gallium/drivers/lima/lima_texture.h | 9 +- 7 files changed, 45 insertions(+), 252 deletions(-) diff --git a/.gitlab-ci/deqp-lima-fails.txt b/.gitlab-ci/deqp-lima-fails.txt index f66150359ca..3ff5aad49df 100644 --- a/.gitlab-ci/deqp-lima-fails.txt +++ b/.gitlab-ci/deqp-lima-fails.txt @@ -573,54 +573,6 @@ dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_s dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_short2_vec2 Fail dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_byte2_vec2 Fail dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types.3_unsigned_short2_vec2_unsigned_short2_vec2_unsigned_short2_vec2 Fail -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_width_height_max_cube_neg_z BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_tex2d BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_x BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_y BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_pos_z BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_x BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_y BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_invalid_border_cube_neg_z BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copyteximage2d_incomplete_framebuffer BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_invalid_target BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_tex2d BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_level_cube BadTerminate -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_level_max_tex2d BadTerminate -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_level_max_cube_pos BadTerminate -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_offset BadTerminate -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_offset_allowed BadTerminate -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_neg_wdt_hgt BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.copytexsubimage2d_incomplete_framebuffer BadTerminate -dEQP-GLES2.functional.negative_api.texture.deletetextures_invalid_number BadTerminate -dEQP-GLES2.functional.negative_api.texture.deletetextures_invalid_number_bind BadTerminate -dEQP-GLES2.functional.negative_api.texture.generatemipmap_invalid_target BadTerminate -dEQP-GLES2.functional.negative_api.texture.generatemipmap_npot_wdt_hgt BadTerminate -dEQP-GLES2.functional.negative_api.texture.generatemipmap_zero_level_array_compressed BadTerminate -dEQP-GLES2.functional.negative_api.texture.generatemipmap_incomplete_cube BadTerminate -dEQP-GLES2.functional.negative_api.texture.gentextures_invalid_size BadTerminate -dEQP-GLES2.functional.negative_api.texture.pixelstorei_invalid_pname BadTerminate -dEQP-GLES2.functional.negative_api.texture.pixelstorei_invalid_param BadTerminate -dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_target BadTerminate -dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_format BadTerminate -dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_type BadTerminate -dEQP-GLES2.functional.negative_api.texture.teximage2d_inequal_width_height_cube BadTerminate -dEQP-GLES2.functional.negative_api.texture.teximage2d_neg_level_tex2d BadTerminate -dEQP-GLES2.functional.negative_api.texture.teximage2d_width_height_max_cube_neg_y BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.teximage2d_width_height_max_cube_neg_z BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.teximage2d_invalid_border BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.teximage2d_format_mismatch BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.teximage2d_type_format_mismatch BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_target BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_format BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_invalid_type BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_level_tex2d BadTerminatePass -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_level_cube BadTerminate -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_level_max_tex2d BadTerminate -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_level_max_cube BadTerminate -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_offset BadTerminate -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_offset_allowed BadTerminate -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_neg_wdt_hgt BadTerminate -dEQP-GLES2.functional.negative_api.texture.texsubimage2d_type_format_mismatch BadTerminate dEQP-GLES2.functional.rasterization.primitives.triangles Fail dEQP-GLES2.functional.rasterization.primitives.triangle_strip Fail dEQP-GLES2.functional.rasterization.primitives.triangle_fan Fail @@ -666,198 +618,6 @@ dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop Fail dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide Fail dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide Fail dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide Fail -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec2_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec3_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.sampler2D_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic.samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.initial.render.basic_array.float_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bool_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bool_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec2_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec3_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.sampler2D_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic.samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.int_ivec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.int_ivec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.bool_bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.basic_struct.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.float_vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.mat4_mat2_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.int_ivec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.bool_bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.struct_in_array.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.float_vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.mat4_mat2_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.int_ivec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.bool_bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.array_in_struct.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.float_vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.mat4_mat2_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.int_ivec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.bool_bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.nested_structs_arrays.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic.both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_basic_array.both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_pointer.render.multiple_nested_structs_arrays.both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.float_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.get_uniform.basic.float_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec3_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.sampler2D_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic.samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.float_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_array.vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.float_vec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.float_vec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.int_ivec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.bool_bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.basic_struct.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.float_vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.int_ivec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_vertex BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_fragment BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.bool_bvec4_both BadTerminatePass -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.float_vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.int_ivec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.bool_bvec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.array_in_struct.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.float_vec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.int_ivec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.bool_bvec4_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_vertex BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_fragment BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.nested_structs_arrays.sampler2D_samplerCube_both BadTerminate -dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.multiple_basic_array.vertex BadTerminate -dEQP-GLES2.functional.uniform_api.random.40 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.41 BadTerminate -dEQP-GLES2.functional.uniform_api.random.42 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.43 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.44 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.45 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.46 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.47 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.48 BadTerminate -dEQP-GLES2.functional.uniform_api.random.49 BadTerminate -dEQP-GLES2.functional.uniform_api.random.50 BadTerminate -dEQP-GLES2.functional.uniform_api.random.51 BadTerminate -dEQP-GLES2.functional.uniform_api.random.52 BadTerminate -dEQP-GLES2.functional.uniform_api.random.53 BadTerminate -dEQP-GLES2.functional.uniform_api.random.54 BadTerminate -dEQP-GLES2.functional.uniform_api.random.55 BadTerminate -dEQP-GLES2.functional.uniform_api.random.88 BadTerminate -dEQP-GLES2.functional.uniform_api.random.89 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.90 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.91 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.92 BadTerminatePass -dEQP-GLES2.functional.uniform_api.random.93 BadTerminate -dEQP-GLES2.functional.uniform_api.random.94 BadTerminate -dEQP-GLES2.functional.uniform_api.random.95 BadTerminate -dEQP-GLES2.functional.uniform_api.random.96 BadTerminate -dEQP-GLES2.functional.uniform_api.random.97 BadTerminate -dEQP-GLES2.functional.uniform_api.random.98 BadTerminate -dEQP-GLES2.functional.uniform_api.random.99 BadTerminate -dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_1 BadTerminate -dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_2 BadTerminate -dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_4 BadTerminate -dEQP-GLES2.functional.read_pixels.rgba_ubyte_align_8 BadTerminate dEQP-GLES2.functional.depth_range.write.reverse Fail dEQP-GLES2.functional.depth_range.write.half_to_zero Fail dEQP-GLES2.functional.depth_range.write.one_to_half Fail @@ -878,10 +638,6 @@ dEQP-GLES2.functional.dither.disabled.unicolored_quad_red Fail dEQP-GLES2.functional.dither.disabled.unicolored_quad_green Fail dEQP-GLES2.functional.dither.disabled.unicolored_quad_blue Fail dEQP-GLES2.functional.dither.disabled.unicolored_quad_alpha Fail -dEQP-GLES2.functional.state_query.fbo.framebuffer_attachment_texture_cube_map_face BadTerminate -dEQP-GLES2.functional.state_query.rbo.renderbuffer_size BadTerminate -dEQP-GLES2.functional.state_query.rbo.renderbuffer_internal_format BadTerminate -dEQP-GLES2.functional.state_query.rbo.renderbuffer_component_size_color BadTerminate dEQP-GLES2.functional.draw.draw_arrays.first.first_0 Fail dEQP-GLES2.functional.draw.draw_arrays.first.first_1 Fail dEQP-GLES2.functional.draw.draw_arrays.first.first_17 Fail diff --git a/src/gallium/drivers/lima/ir/pp/codegen.c b/src/gallium/drivers/lima/ir/pp/codegen.c index b2947f300f2..14c2617e3e8 100644 --- a/src/gallium/drivers/lima/ir/pp/codegen.c +++ b/src/gallium/drivers/lima/ir/pp/codegen.c @@ -90,6 +90,10 @@ static void ppir_codegen_encode_varying(ppir_node *node, void *code) f->imm.source_type = 3; f->imm.perspective = 1; break; + case ppir_op_load_coords: + /* num_components == 3 implies cubemap as we don't support 3D textures */ + f->imm.source_type = num_components == 3 ? 2 : 0; + break; default: break; } @@ -99,7 +103,13 @@ static void ppir_codegen_encode_varying(ppir_node *node, void *code) f->reg.mask = dest->write_mask << (index & 0x3); if (load->num_src) { - f->reg.source_type = 1; + /* num_components == 3 implies cubemap as we don't support 3D textures */ + if (num_components == 3) { + f->reg.source_type = 2; + f->reg.perspective = 1; + } else { + f->reg.source_type = 1; + } ppir_src *src = &load->src; index = ppir_target_get_src_reg_index(src); f->reg.source = index >> 2; @@ -117,7 +127,20 @@ static void ppir_codegen_encode_texld(ppir_node *node, void *code) f->index = ldtex->sampler; f->lod_bias_en = 0; - f->type = ppir_codegen_sampler_type_2d; + + switch (ldtex->sampler_dim) { + case GLSL_SAMPLER_DIM_2D: + case GLSL_SAMPLER_DIM_RECT: + case GLSL_SAMPLER_DIM_EXTERNAL: + f->type = ppir_codegen_sampler_type_2d; + break; + case GLSL_SAMPLER_DIM_CUBE: + f->type = ppir_codegen_sampler_type_cube; + break; + default: + break; + } + f->offset_en = 0; f->unknown_2 = 0x39001; } diff --git a/src/gallium/drivers/lima/ir/pp/nir.c b/src/gallium/drivers/lima/ir/pp/nir.c index 6baf4ec93bf..62e0808c1c7 100644 --- a/src/gallium/drivers/lima/ir/pp/nir.c +++ b/src/gallium/drivers/lima/ir/pp/nir.c @@ -461,6 +461,7 @@ static ppir_node *ppir_emit_tex(ppir_block *block, nir_instr *ni) switch (instr->sampler_dim) { case GLSL_SAMPLER_DIM_2D: + case GLSL_SAMPLER_DIM_CUBE: case GLSL_SAMPLER_DIM_RECT: case GLSL_SAMPLER_DIM_EXTERNAL: break; diff --git a/src/gallium/drivers/lima/lima_draw.c b/src/gallium/drivers/lima/lima_draw.c index 7706ee112aa..9753343409e 100644 --- a/src/gallium/drivers/lima/lima_draw.c +++ b/src/gallium/drivers/lima/lima_draw.c @@ -290,7 +290,7 @@ lima_pack_reload_plbu_cmd(struct lima_context *ctx) memset(td, 0, lima_min_tex_desc_size); lima_texture_desc_set_res(ctx, td, fb->base.cbufs[0]->texture, 0, 0); td->unnorm_coords = 1; - td->texture_2d = 1; + td->texture_type = LIMA_TEXTURE_TYPE_2D; td->min_img_filter_nearest = 1; td->mag_img_filter_nearest = 1; td->wrap_s_clamp_to_edge = 1; diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index cd9122672b6..30b199e777f 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -273,6 +273,7 @@ lima_screen_is_format_supported(struct pipe_screen *pscreen, case PIPE_TEXTURE_1D: case PIPE_TEXTURE_2D: case PIPE_TEXTURE_RECT: + case PIPE_TEXTURE_CUBE: break; default: return false; diff --git a/src/gallium/drivers/lima/lima_texture.c b/src/gallium/drivers/lima/lima_texture.c index b25d84ec20f..39433c05801 100644 --- a/src/gallium/drivers/lima/lima_texture.c +++ b/src/gallium/drivers/lima/lima_texture.c @@ -124,8 +124,17 @@ lima_update_tex_desc(struct lima_context *ctx, struct lima_sampler_state *sample memset(desc, 0, desc_size); - /* 2D texture */ - desc->texture_2d = 1; + switch (texture->base.target) { + case PIPE_TEXTURE_2D: + case PIPE_TEXTURE_RECT: + desc->texture_type = LIMA_TEXTURE_TYPE_2D; + break; + case PIPE_TEXTURE_CUBE: + desc->texture_type = LIMA_TEXTURE_TYPE_CUBE; + break; + default: + break; + } if (!sampler->base.normalized_coords) desc->unnorm_coords = 1; diff --git a/src/gallium/drivers/lima/lima_texture.h b/src/gallium/drivers/lima/lima_texture.h index e9b896763ea..7f4b9ee5330 100644 --- a/src/gallium/drivers/lima/lima_texture.h +++ b/src/gallium/drivers/lima/lima_texture.h @@ -27,6 +27,9 @@ #define lima_min_tex_desc_size 64 +#define LIMA_TEXTURE_TYPE_2D 2 +#define LIMA_TEXTURE_TYPE_CUBE 5 + typedef struct __attribute__((__packed__)) { /* Word 0 */ uint32_t format : 6; @@ -39,9 +42,9 @@ typedef struct __attribute__((__packed__)) { /* Word 1-3 */ uint32_t unknown_1_1: 7; uint32_t unnorm_coords: 1; - uint32_t unknown_1_2: 2; - uint32_t texture_2d: 1; - uint32_t unknown_1_3: 13; + uint32_t unknown_1_2: 1; + uint32_t texture_type: 3; + uint32_t unknown_1_3: 12; uint32_t miplevels: 4; uint32_t min_mipfilter_1: 9; /* 0x0 for linear, 0x1ff for nearest */ uint32_t unknown_2_1: 3; -- 2.30.2