unsigned level = trans->base.level;
- assert(!trans->base.box.z);
-
panfrost_texture_swizzle(
trans->base.box.x,
trans->base.box.y,
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
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);
}
}