r600: refactor step 10 - drop create_surface

This change removes create_surface, surface_destroy and
pipe_surface_reference which are no longer needed. Only
r600_create_surface_custom remains which returns now a
simple pipe_surface.

The arguments width0 and height0 of r600_create_surface_custom
are not used and are removed.

Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35967>
This commit is contained in:
Patrick Lerda
2025-07-04 15:28:46 +02:00
committed by Marge Bot
parent c47382240e
commit 490abd0a26
3 changed files with 14 additions and 49 deletions
+10 -13
View File
@@ -171,19 +171,18 @@ static void r600_blit_decompress_depth(struct pipe_context *ctx,
surf_tmpl.first_layer = layer;
surf_tmpl.last_layer = layer;
zsurf = ctx->create_surface(ctx, &texture->resource.b.b, &surf_tmpl);
zsurf = r600_create_surface_custom(ctx, &texture->resource.b.b, &surf_tmpl);
surf_tmpl.format = flushed_depth_texture->resource.b.b.format;
cbsurf = ctx->create_surface(ctx,
&flushed_depth_texture->resource.b.b, &surf_tmpl);
cbsurf = r600_create_surface_custom(ctx, &flushed_depth_texture->resource.b.b, &surf_tmpl);
r600_blitter_begin(ctx, R600_DECOMPRESS);
util_blitter_custom_depth_stencil(rctx->blitter, zsurf, cbsurf, 1 << sample,
rctx->custom_dsa_flush, depth);
r600_blitter_end(ctx);
pipe_surface_reference(&zsurf, NULL);
pipe_surface_reference(&cbsurf, NULL);
r600_destroy_surface_custom(zsurf);
r600_destroy_surface_custom(cbsurf);
}
}
@@ -238,14 +237,14 @@ static void r600_blit_decompress_depth_in_place(struct r600_context *rctx,
surf_tmpl.first_layer = layer;
surf_tmpl.last_layer = layer;
zsurf = rctx->b.b.create_surface(&rctx->b.b, &texture->resource.b.b, &surf_tmpl);
zsurf = r600_create_surface_custom(&rctx->b.b, &texture->resource.b.b, &surf_tmpl);
r600_blitter_begin(&rctx->b.b, R600_DECOMPRESS);
util_blitter_custom_depth_stencil(rctx->blitter, zsurf, NULL, ~0,
rctx->custom_dsa_flush, 1.0f);
r600_blitter_end(&rctx->b.b);
pipe_surface_reference(&zsurf, NULL);
r600_destroy_surface_custom(zsurf);
}
/* The texture will always be dirty if some layers or samples aren't flushed.
@@ -356,14 +355,14 @@ static void r600_blit_decompress_color(struct pipe_context *ctx,
surf_tmpl.level = level;
surf_tmpl.first_layer = layer;
surf_tmpl.last_layer = layer;
cbsurf = ctx->create_surface(ctx, &rtex->resource.b.b, &surf_tmpl);
cbsurf = r600_create_surface_custom(ctx, &rtex->resource.b.b, &surf_tmpl);
r600_blitter_begin(ctx, R600_DECOMPRESS);
util_blitter_custom_color(rctx->blitter, cbsurf,
rtex->fmask.size ? rctx->custom_blend_decompress : rctx->custom_blend_fastclear);
r600_blitter_end(ctx);
pipe_surface_reference(&cbsurf, NULL);
r600_destroy_surface_custom(cbsurf);
}
/* The texture will always be dirty if some layers aren't flushed.
@@ -988,9 +987,7 @@ void r600_resource_copy_region(struct pipe_context *ctx,
}
}
dst_view = r600_create_surface_custom(ctx, dst, &dst_templ,
/* we don't care about these two for r600g */
dst->width0, dst->height0);
dst_view = r600_create_surface_custom(ctx, dst, &dst_templ);
if (rctx->b.gfx_level >= EVERGREEN) {
src_view = evergreen_create_sampler_view_custom(ctx, src, &src_templ,
@@ -1012,7 +1009,7 @@ void r600_resource_copy_region(struct pipe_context *ctx,
false, false, 0, NULL);
r600_blitter_end(ctx);
pipe_surface_reference(&dst_view, NULL);
r600_destroy_surface_custom(dst_view);
pipe_sampler_view_reference(&src_view, NULL);
}
+2 -2
View File
@@ -825,8 +825,8 @@ struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
const struct pipe_resource *templ);
struct pipe_surface *r600_create_surface_custom(struct pipe_context *pipe,
struct pipe_resource *texture,
const struct pipe_surface *templ,
unsigned width0, unsigned height0);
const struct pipe_surface *templ);
void r600_destroy_surface_custom(struct pipe_surface *);
unsigned r600_translate_colorswap(enum pipe_format format, bool do_endian_swap);
void r600_texture_alloc_cmask_separate(struct r600_common_screen *rscreen,
struct r600_texture *rtex);
+2 -34
View File
@@ -1489,8 +1489,7 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
struct pipe_surface *r600_create_surface_custom(struct pipe_context *pipe,
struct pipe_resource *texture,
const struct pipe_surface *templ,
unsigned width0, unsigned height0)
const struct pipe_surface *templ)
{
struct pipe_surface *surface = CALLOC_STRUCT(pipe_surface);
@@ -1511,36 +1510,7 @@ struct pipe_surface *r600_create_surface_custom(struct pipe_context *pipe,
return surface;
}
static struct pipe_surface *r600_create_surface(struct pipe_context *pipe,
struct pipe_resource *tex,
const struct pipe_surface *templ)
{
unsigned width0 = tex->width0;
unsigned height0 = tex->height0;
if (tex->target != PIPE_BUFFER && templ->format != tex->format) {
const struct util_format_description *tex_desc
= util_format_description(tex->format);
const struct util_format_description *templ_desc
= util_format_description(templ->format);
assert(tex_desc->block.bits == templ_desc->block.bits);
/* Adjust size of surface if and only if the block width or
* height is changed. */
if (tex_desc->block.width != templ_desc->block.width ||
tex_desc->block.height != templ_desc->block.height) {
width0 = util_format_get_nblocksx(tex->format, width0);
height0 = util_format_get_nblocksy(tex->format, height0);
}
}
return r600_create_surface_custom(pipe, tex, templ,
width0, height0);
}
static void r600_surface_destroy(struct pipe_context *pipe,
struct pipe_surface *surface)
void r600_destroy_surface_custom(struct pipe_surface *surface)
{
pipe_resource_reference(&surface->texture, NULL);
FREE(surface);
@@ -1727,7 +1697,5 @@ void r600_init_screen_texture_functions(struct r600_common_screen *rscreen)
void r600_init_context_texture_functions(struct r600_common_context *rctx)
{
rctx->b.create_surface = r600_create_surface;
rctx->b.surface_destroy = r600_surface_destroy;
rctx->b.clear_texture = u_default_clear_texture;
}