panfrost: Respect mip level when wallpapering
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 24 Jun 2019 20:53:44 +0000 (13:53 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 25 Jun 2019 20:39:17 +0000 (13:39 -0700)
Fixes DATA_INVALID_FAULT raised when wallpapering while rendering to a
mipmap.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_blit.c

index c98e08e8a0b0502dd17895ee221c6dcf3476fd4e..e6ef70ea7b8f7d24d5945de0e543401698877eae 100644 (file)
@@ -109,10 +109,16 @@ panfrost_blit_wallpaper(struct panfrost_context *ctx)
 
         panfrost_blitter_save(ctx, ctx->blitter_wallpaper);
 
+        struct pipe_surface *surf = ctx->pipe_framebuffer.cbufs[0];
+        unsigned level = surf->u.tex.level;
+        unsigned layer = surf->u.tex.first_layer;
+        assert(surf->u.tex.last_layer == layer);
+
        binfo.src.resource = binfo.dst.resource = ctx->pipe_framebuffer.cbufs[0]->texture;
-       binfo.src.level = binfo.dst.level = 0;
+       binfo.src.level = binfo.dst.level = level;
        binfo.src.box.x = binfo.dst.box.x = 0;
        binfo.src.box.y = binfo.dst.box.y = 0;
+       binfo.src.box.z = binfo.dst.box.z = layer;
        binfo.src.box.width = binfo.dst.box.width = ctx->pipe_framebuffer.width;
        binfo.src.box.height = binfo.dst.box.height = ctx->pipe_framebuffer.height;
        binfo.src.box.depth = binfo.dst.box.depth = 1;