From e986f2b7aff6c51e420fbb06553a748f15f55a01 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 8 Nov 2019 13:21:18 -0800 Subject: [PATCH] mesa/st: Use direct util_format_pack/unpack instead of u_tile. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We're doing a row at a time, and don't need u_tile's clipping. Reviewed-by: Marek Olšák Part-of: --- src/mesa/state_tracker/st_cb_texture.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index ff0f1a2efa6..3eb4ef62df3 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -2345,20 +2345,19 @@ fallback_copy_texsubimage(struct gl_context *ctx, data = malloc(width * sizeof(uint)); if (data) { + unsigned dst_stride = (stImage->pt->target == PIPE_TEXTURE_1D_ARRAY ? + transfer->layer_stride : transfer->stride); /* To avoid a large temp memory allocation, do copy row by row */ for (row = 0; row < height; row++, srcY += yStep) { - pipe_get_tile_z(src_trans, map, 0, srcY, width, 1, data); + util_format_unpack_z_32unorm(strb->texture->format, + data, (uint8_t *)map + src_trans->stride * srcY, + width); if (scaleOrBias) { _mesa_scale_and_bias_depth_uint(ctx, width, data); } - if (stImage->pt->target == PIPE_TEXTURE_1D_ARRAY) { - pipe_put_tile_z(transfer, texDest + row*transfer->layer_stride, - 0, 0, width, 1, data); - } - else { - pipe_put_tile_z(transfer, texDest, 0, row, width, 1, data); - } + util_format_pack_z_32unorm(stImage->pt->format, + texDest + row * dst_stride, data, width); } } else { -- 2.30.2