From 51bc2e607fad8c45c7a30a8ce09cc1268d7d455b Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Fri, 30 May 2025 16:46:59 +0200 Subject: [PATCH] vc4: Remove offset from vc4_surface Reviewed-by: Iago Toral Quiroga Part-of: --- src/gallium/drivers/vc4/vc4_job.c | 10 ++++------ src/gallium/drivers/vc4/vc4_resource.c | 2 -- src/gallium/drivers/vc4/vc4_resource.h | 9 ++++++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/vc4/vc4_job.c b/src/gallium/drivers/vc4/vc4_job.c index b484470b872..1521319d3fc 100644 --- a/src/gallium/drivers/vc4/vc4_job.c +++ b/src/gallium/drivers/vc4/vc4_job.c @@ -296,7 +296,7 @@ vc4_submit_setup_rcl_surface(struct vc4_job *job, struct vc4_resource *rsc = vc4_resource(psurf->texture); submit_surf->hindex = vc4_gem_hindex(job, rsc->bo); - submit_surf->offset = surf->offset; + submit_surf->offset = vc4_surface_get_offset(psurf); if (psurf->texture->nr_samples <= 1) { if (is_depth) { @@ -337,7 +337,7 @@ vc4_submit_setup_rcl_render_config_surface(struct vc4_job *job, struct vc4_resource *rsc = vc4_resource(psurf->texture); submit_surf->hindex = vc4_gem_hindex(job, rsc->bo); - submit_surf->offset = surf->offset; + submit_surf->offset = vc4_surface_get_offset(psurf); if (psurf->texture->nr_samples <= 1) { submit_surf->bits = @@ -357,14 +357,12 @@ vc4_submit_setup_rcl_msaa_surface(struct vc4_job *job, struct drm_vc4_submit_rcl_surface *submit_surf, struct pipe_surface *psurf) { - struct vc4_surface *surf = vc4_surface(psurf); - - if (!surf) + if (!psurf) return; struct vc4_resource *rsc = vc4_resource(psurf->texture); submit_surf->hindex = vc4_gem_hindex(job, rsc->bo); - submit_surf->offset = surf->offset; + submit_surf->offset = vc4_surface_get_offset(psurf); submit_surf->bits = 0; rsc->writes++; } diff --git a/src/gallium/drivers/vc4/vc4_resource.c b/src/gallium/drivers/vc4/vc4_resource.c index b15776abc93..d525cbaa960 100644 --- a/src/gallium/drivers/vc4/vc4_resource.c +++ b/src/gallium/drivers/vc4/vc4_resource.c @@ -781,8 +781,6 @@ vc4_create_surface(struct pipe_context *pctx, psurf->level = level; psurf->first_layer = surf_tmpl->first_layer; psurf->last_layer = surf_tmpl->last_layer; - surface->offset = (rsc->slices[level].offset + - psurf->first_layer * rsc->cube_map_stride); surface->tiling = rsc->slices[level].tiling; return &surface->base; diff --git a/src/gallium/drivers/vc4/vc4_resource.h b/src/gallium/drivers/vc4/vc4_resource.h index 8c0aadbccb7..5cd687881e5 100644 --- a/src/gallium/drivers/vc4/vc4_resource.h +++ b/src/gallium/drivers/vc4/vc4_resource.h @@ -44,7 +44,6 @@ struct vc4_resource_slice { struct vc4_surface { struct pipe_surface base; - uint32_t offset; uint8_t tiling; }; @@ -111,4 +110,12 @@ struct pipe_resource *vc4_get_shadow_index_buffer(struct pipe_context *pctx, uint32_t *shadow_offset); void vc4_dump_surface(struct pipe_surface *psurf); +static inline uint32_t vc4_surface_get_offset(struct pipe_surface *psurf) +{ + assert(psurf && psurf->texture); + struct vc4_resource *rsc = vc4_resource(psurf->texture); + return rsc->slices[psurf->level].offset + + psurf->first_layer * rsc->cube_map_stride; +} + #endif /* VC4_RESOURCE_H */