diff --git a/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt b/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt index 81a6149ff97..c13e4ef2a34 100644 --- a/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt +++ b/src/gallium/drivers/panfrost/ci/deqp-panfrost-g52-fails.txt @@ -41,34 +41,6 @@ dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.8,F dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.9,Fail dEQP-GLES31.functional.draw_indirect.draw_elements_indirect.line_strip.instanced_attributes,Fail dEQP-GLES31.functional.draw_indirect.random.31,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32f,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32i,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_r32ui,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8i,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.2d_array.format_reinterpret.rgba8_rgba8ui,Fail -dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8,Fail -dEQP-GLES31.functional.image_load_store.2d_array.load_store.rgba8_single_layer,Fail -dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8,Fail -dEQP-GLES31.functional.image_load_store.2d_array.store.rgba8_single_layer,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32f,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_r32ui,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8i,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.2d.format_reinterpret.rgba8_rgba8ui,Fail -dEQP-GLES31.functional.image_load_store.2d.load_store.rgba8,Fail -dEQP-GLES31.functional.image_load_store.2d.store.rgba8,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32f,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32i,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_r32ui,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8i,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8_snorm,Fail -dEQP-GLES31.functional.image_load_store.3d.format_reinterpret.rgba8_rgba8ui,Fail -dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8,Fail -dEQP-GLES31.functional.image_load_store.3d.load_store.rgba8_single_layer,Fail -dEQP-GLES31.functional.image_load_store.3d.store.rgba8,Fail -dEQP-GLES31.functional.image_load_store.3d.store.rgba8_single_layer,Fail dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_array,Fail dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_max_array,Fail dEQP-GLES31.functional.layout_binding.image.image2d.vertex_binding_max,Fail diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 143eccbd507..4dd219fe991 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -1007,8 +1007,7 @@ pan_resource_modifier_convert(struct panfrost_context *ctx, panfrost_resource_create_with_modifier( ctx->base.screen, &rsrc->base, modifier); struct panfrost_resource *tmp_rsrc = pan_resource(tmp_prsrc); - - struct pipe_blit_info blit = {0}; + enum pipe_format blit_fmt = pan_blit_format(tmp_rsrc->base.format); unsigned depth = rsrc->base.target == PIPE_TEXTURE_3D ? rsrc->base.depth0 : rsrc->base.array_size; @@ -1016,22 +1015,22 @@ pan_resource_modifier_convert(struct panfrost_context *ctx, struct pipe_box box = { 0, 0, 0, rsrc->base.width0, rsrc->base.height0, depth }; + struct pipe_blit_info blit = { + .dst.resource = &tmp_rsrc->base, + .dst.format = blit_fmt, + .dst.box = box, + .src.resource = &rsrc->base, + .src.format = pan_blit_format(rsrc->base.format), + .src.box = box, + .mask = util_format_get_mask(blit_fmt), + .filter = PIPE_TEX_FILTER_NEAREST + }; + for (int i = 0; i <= rsrc->base.last_level; i++) { - if (!rsrc->state.slices[i].data_valid) - continue; - - blit.dst.resource = &tmp_rsrc->base; - blit.dst.format = pan_blit_format(tmp_rsrc->base.format); - blit.dst.level = i; - blit.dst.box = box; - blit.src.resource = &rsrc->base; - blit.src.format = pan_blit_format(rsrc->base.format); - blit.src.level = i; - blit.src.box = box; - blit.mask = util_format_get_mask(blit.dst.format); - blit.filter = PIPE_TEX_FILTER_NEAREST; - - panfrost_blit(&ctx->base, &blit); + if (rsrc->state.slices[i].data_valid) { + blit.dst.level = blit.src.level = i; + panfrost_blit(&ctx->base, &blit); + } } panfrost_bo_unreference(rsrc->image.data.bo);