diff --git a/src/gallium/drivers/etnaviv/etnaviv_blt.c b/src/gallium/drivers/etnaviv/etnaviv_blt.c index b66ed0e107b..e09baa1c9cd 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_blt.c +++ b/src/gallium/drivers/etnaviv/etnaviv_blt.c @@ -236,7 +236,7 @@ etna_blit_clear_color_blt(struct pipe_context *pctx, unsigned idx, struct etna_resource *res = etna_resource(surf->base.texture); struct blt_clear_op clr = {}; clr.dest.addr.bo = res->bo; - clr.dest.addr.offset = surf->offset; + clr.dest.addr.offset = surf->level->offset + surf->base.first_layer * surf->level->layer_stride; clr.dest.addr.flags = ETNA_RELOC_WRITE; clr.dest.bpp = util_format_get_blocksize(surf->base.format); clr.dest.stride = surf->level->stride; @@ -331,7 +331,7 @@ etna_blit_clear_zs_blt(struct pipe_context *pctx, struct pipe_surface *dst, struct etna_resource *res = etna_resource(surf->base.texture); struct blt_clear_op clr = {}; clr.dest.addr.bo = res->bo; - clr.dest.addr.offset = surf->offset; + clr.dest.addr.offset = surf->level->offset + surf->base.first_layer * surf->level->layer_stride; clr.dest.addr.flags = ETNA_RELOC_WRITE; clr.dest.bpp = util_format_get_blocksize(surf->base.format); clr.dest.stride = surf->level->stride; diff --git a/src/gallium/drivers/etnaviv/etnaviv_rs.c b/src/gallium/drivers/etnaviv/etnaviv_rs.c index 0a0b82fc160..1b01533a531 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_rs.c +++ b/src/gallium/drivers/etnaviv/etnaviv_rs.c @@ -324,7 +324,7 @@ etna_rs_gen_clear_surface(struct etna_context *ctx, struct etna_surface *surf, .source_format = format, .dest_format = format, .dest = dst->bo, - .dest_offset = surf->offset, + .dest_offset = surf->level->offset + surf->base.first_layer * surf->level->layer_stride, .dest_stride = surf->level->stride, .dest_padded_height = surf->level->padded_height, .dest_tiling = tiled_clear ? dst->layout : ETNA_LAYOUT_LINEAR, diff --git a/src/gallium/drivers/etnaviv/etnaviv_surface.c b/src/gallium/drivers/etnaviv/etnaviv_surface.c index c14428360a3..6f0f3a52ba8 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_surface.c +++ b/src/gallium/drivers/etnaviv/etnaviv_surface.c @@ -98,9 +98,6 @@ etna_create_surface(struct pipe_context *pctx, struct pipe_resource *prsc, surf->base.last_layer = templat->last_layer; surf->level = lev; - /* XXX we don't really need a copy but it's convenient */ - surf->offset = lev->offset + layer * lev->layer_stride; - if (surf->level->ts_size) { assert(layer == 0); diff --git a/src/gallium/drivers/etnaviv/etnaviv_surface.h b/src/gallium/drivers/etnaviv/etnaviv_surface.h index 8bb66fa9e1c..72449dd9ef5 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_surface.h +++ b/src/gallium/drivers/etnaviv/etnaviv_surface.h @@ -39,7 +39,6 @@ struct etna_surface { struct compiled_rs_state ts_clear_command; /* Keep pointer to resource level, for fast clear */ struct etna_resource_level *level; - uint32_t offset; /* pre-calculated level + layer offset */ /* keep pointer to original resource (for when a render compatible resource is used) */ struct pipe_resource *prsc; };