From: Alyssa Rosenzweig Date: Thu, 28 Mar 2019 23:47:10 +0000 (+0000) Subject: panfrost: Extend tiling for cubemaps X-Git-Tag: upstream/19.3.0~7673 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=01fce794dcda449928e880c2f43312c1a348cea6;p=platform%2Fupstream%2Fmesa.git panfrost: Extend tiling for cubemaps transfer_unmap now tiles for any tiled resource, not just TEXTURE_2D, which should more than just cubemaps! Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index e217b35..3d93fd0 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -433,8 +433,6 @@ panfrost_tile_texture(struct panfrost_screen *screen, struct panfrost_resource * unsigned level = trans->base.level; - assert(!trans->base.box.z); - panfrost_texture_swizzle( trans->base.box.x, trans->base.box.y, @@ -443,7 +441,10 @@ panfrost_tile_texture(struct panfrost_screen *screen, struct panfrost_resource * util_format_get_blocksize(rsrc->base.format), bo->slices[level].stride, trans->map, - bo->cpu + bo->slices[level].offset); + bo->cpu + + bo->slices[level].offset + + bo->cubemap_stride * trans->base.box.z + ); } static void @@ -454,17 +455,16 @@ panfrost_unmap_bo(struct panfrost_context *ctx, struct panfrost_bo *bo = (struct panfrost_bo *)pan_resource(transfer->resource)->bo; if (transfer->usage & PIPE_TRANSFER_WRITE) { - if (transfer->resource->target == PIPE_TEXTURE_2D) { - struct panfrost_resource *prsrc = (struct panfrost_resource *) transfer->resource; - - /* Gallium thinks writeback happens here; instead, this is our cue to tile */ - if (bo->layout == PAN_AFBC) { - DBG("Warning: writes to afbc surface can't possibly work out well for you...\n"); - } else if (bo->layout == PAN_TILED) { - struct pipe_context *gallium = (struct pipe_context *) ctx; - struct panfrost_screen *screen = pan_screen(gallium->screen); - panfrost_tile_texture(screen, prsrc, trans); - } + struct panfrost_resource *prsrc = (struct panfrost_resource *) transfer->resource; + + /* Gallium thinks writeback happens here; instead, this is our cue to tile */ + if (bo->layout == PAN_AFBC) { + DBG("Warning: writes to afbc surface can't possibly work out well for you...\n"); + } else if (bo->layout == PAN_TILED) { + struct pipe_context *gallium = (struct pipe_context *) ctx; + struct panfrost_screen *screen = pan_screen(gallium->screen); + assert(transfer->box.depth == 1); + panfrost_tile_texture(screen, prsrc, trans); } }