Mesa (main): freedreno: Fallback to sw for copy_image with compressed

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 15 19:26:49 UTC 2021


Module: Mesa
Branch: main
Commit: fd23a54c71c9bbf79fe478881a66aa02b7034823
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd23a54c71c9bbf79fe478881a66aa02b7034823

Author: Rob Clark <robdclark at chromium.org>
Date:   Tue Jun 15 07:24:54 2021 -0700

freedreno: Fallback to sw for copy_image with compressed

Signed-off-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11371>

---

 src/gallium/drivers/freedreno/freedreno_blitter.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/gallium/drivers/freedreno/freedreno_blitter.c b/src/gallium/drivers/freedreno/freedreno_blitter.c
index bc237914ab4..f9271e7fa45 100644
--- a/src/gallium/drivers/freedreno/freedreno_blitter.c
+++ b/src/gallium/drivers/freedreno/freedreno_blitter.c
@@ -341,6 +341,17 @@ fd_resource_copy_region(struct pipe_context *pctx, struct pipe_resource *dst,
 {
    struct fd_context *ctx = fd_context(pctx);
 
+   /* The blitter path handles compressed formats only if src and dst format
+    * match, in other cases just fall back to sw:
+    */
+   if ((src->format != dst->format) &&
+       (util_format_is_compressed(src->format) ||
+        util_format_is_compressed(dst->format))) {
+      perf_debug_ctx(ctx, "copy_region falls back to sw for {%"PRSC_FMT"} to {%"PRSC_FMT"}",
+                     PRSC_ARGS(src), PRSC_ARGS(dst));
+      goto fallback;
+   }
+
    if (ctx->blit) {
       struct pipe_blit_info info;
 
@@ -374,6 +385,7 @@ fd_resource_copy_region(struct pipe_context *pctx, struct pipe_resource *dst,
       return;
 
    /* else fallback to pure sw: */
+fallback:
    util_resource_copy_region(pctx, dst, dst_level, dstx, dsty, dstz, src,
                              src_level, src_box);
 }



More information about the mesa-commit mailing list