etnaviv: fix YUV tiler blits
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

The YUV tiling blits are an internal copy into a shadow of the resource.
Thus they don't go through the external context blit hook anymore. Call
the YUV blit function from the two code paths that handle internal copies.

Fixes: d4780f03fc ("etnaviv: use direct BLT/RS blit hook for internal copies")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37605>
This commit is contained in:
Lucas Stach 2025-09-26 17:53:04 +02:00 committed by Marge Bot
parent 51b67a144d
commit dce859a183

View file

@ -134,10 +134,6 @@ etna_blit(struct pipe_context *pctx, const struct pipe_blit_info *blit_info)
if (ctx->blit(pctx, &info))
goto success;
if (etna_format_needs_yuv_tiler(blit_info->src.format) &&
etna_try_yuv_blit(pctx, blit_info))
goto success;
if (util_try_blit_via_copy_region(pctx, &info, false))
goto success;
@ -275,7 +271,10 @@ etna_copy_resource(struct pipe_context *pctx, struct pipe_resource *dst,
for (int z = 0; z < depth; z++) {
blit.src.box.z = blit.dst.box.z = z;
ctx->blit(pctx, &blit);
if (unlikely(etna_format_needs_yuv_tiler(blit.src.format)))
etna_try_yuv_blit(pctx, &blit);
else
ctx->blit(pctx, &blit);
}
if (src == dst)
@ -314,7 +313,10 @@ etna_copy_resource_box(struct pipe_context *pctx, struct pipe_resource *dst,
for (int z = 0; z < box->depth; z++) {
blit.src.box.z = blit.dst.box.z = box->z + z;
ctx->blit(pctx, &blit);
if (unlikely(etna_format_needs_yuv_tiler(blit.src.format)))
etna_try_yuv_blit(pctx, &blit);
else
ctx->blit(pctx, &blit);
}
if (src == dst)