mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-14 13:20:28 +01:00
radeon_winsys.h: add a new function radeon_bo_reference that takes a winsys
This will allow removing the winsys pointer from buffers. Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9809>
This commit is contained in:
parent
522938f271
commit
aed8af5456
5 changed files with 18 additions and 12 deletions
|
|
@ -744,6 +744,12 @@ static inline bool radeon_uses_secure_bos(struct radeon_winsys* ws)
|
|||
return ws->uses_secure_bos;
|
||||
}
|
||||
|
||||
static inline void
|
||||
radeon_bo_reference(struct radeon_winsys *rws, struct pb_buffer **dst, struct pb_buffer *src)
|
||||
{
|
||||
pb_reference_with_winsys(rws, dst, src);
|
||||
}
|
||||
|
||||
enum radeon_heap
|
||||
{
|
||||
RADEON_HEAP_VRAM_NO_CPU_ACCESS,
|
||||
|
|
|
|||
|
|
@ -201,7 +201,7 @@ bool si_alloc_resource(struct si_screen *sscreen, struct si_resource *res)
|
|||
assert((last >> 32) == sscreen->info.address32_hi);
|
||||
}
|
||||
|
||||
pb_reference(&old_buf, NULL);
|
||||
radeon_bo_reference(sscreen->ws, &old_buf, NULL);
|
||||
|
||||
util_range_set_empty(&res->valid_buffer_range);
|
||||
res->TC_L2_dirty = false;
|
||||
|
|
@ -224,7 +224,7 @@ static void si_buffer_destroy(struct pipe_screen *screen, struct pipe_resource *
|
|||
|
||||
threaded_resource_deinit(buf);
|
||||
util_range_destroy(&buffer->valid_buffer_range);
|
||||
pb_reference(&buffer->buf, NULL);
|
||||
radeon_bo_reference(((struct si_screen*)screen)->ws, &buffer->buf, NULL);
|
||||
FREE(buffer);
|
||||
}
|
||||
|
||||
|
|
@ -271,7 +271,7 @@ void si_replace_buffer_storage(struct pipe_context *ctx, struct pipe_resource *d
|
|||
struct si_resource *sdst = si_resource(dst);
|
||||
struct si_resource *ssrc = si_resource(src);
|
||||
|
||||
pb_reference(&sdst->buf, ssrc->buf);
|
||||
radeon_bo_reference(sctx->screen->ws, &sdst->buf, ssrc->buf);
|
||||
sdst->gpu_address = ssrc->gpu_address;
|
||||
sdst->b.b.bind = ssrc->b.b.bind;
|
||||
sdst->b.max_forced_staging_uploads = ssrc->b.max_forced_staging_uploads;
|
||||
|
|
|
|||
|
|
@ -313,8 +313,8 @@ static void si_destroy_context(struct pipe_context *context)
|
|||
si_resource_reference(&sctx->barrier_buf, NULL);
|
||||
si_resource_reference(&sctx->last_ib_barrier_buf, NULL);
|
||||
si_resource_reference(&sctx->shadowed_regs, NULL);
|
||||
pb_reference(&sctx->gds, NULL);
|
||||
pb_reference(&sctx->gds_oa, NULL);
|
||||
radeon_bo_reference(sctx->screen->ws, &sctx->gds, NULL);
|
||||
radeon_bo_reference(sctx->screen->ws, &sctx->gds_oa, NULL);
|
||||
|
||||
si_destroy_compiler(&sctx->compiler);
|
||||
|
||||
|
|
|
|||
|
|
@ -606,7 +606,7 @@ si_destroy_thread_trace(struct si_context *sctx)
|
|||
{
|
||||
struct si_screen *sscreen = sctx->screen;
|
||||
struct pb_buffer *bo = sctx->thread_trace->bo;
|
||||
pb_reference(&bo, NULL);
|
||||
radeon_bo_reference(sctx->screen->ws, &bo, NULL);
|
||||
|
||||
if (sctx->thread_trace->trigger_file)
|
||||
free(sctx->thread_trace->trigger_file);
|
||||
|
|
|
|||
|
|
@ -432,7 +432,7 @@ static void si_reallocate_texture_inplace(struct si_context *sctx, struct si_tex
|
|||
|
||||
/* Replace the structure fields of tex. */
|
||||
tex->buffer.b.b.bind = templ.bind;
|
||||
pb_reference(&tex->buffer.buf, new_tex->buffer.buf);
|
||||
radeon_bo_reference(sctx->screen->ws, &tex->buffer.buf, new_tex->buffer.buf);
|
||||
tex->buffer.gpu_address = new_tex->buffer.gpu_address;
|
||||
tex->buffer.vram_usage_kb = new_tex->buffer.vram_usage_kb;
|
||||
tex->buffer.gart_usage_kb = new_tex->buffer.gart_usage_kb;
|
||||
|
|
@ -789,7 +789,7 @@ static void si_texture_destroy(struct pipe_screen *screen, struct pipe_resource
|
|||
if (tex->cmask_buffer != &tex->buffer) {
|
||||
si_resource_reference(&tex->cmask_buffer, NULL);
|
||||
}
|
||||
pb_reference(&resource->buf, NULL);
|
||||
radeon_bo_reference(((struct si_screen*)screen)->ws, &resource->buf, NULL);
|
||||
si_resource_reference(&tex->dcc_separate_buffer, NULL);
|
||||
si_resource_reference(&tex->last_dcc_separate_buffer, NULL);
|
||||
si_resource_reference(&tex->dcc_retile_buffer, NULL);
|
||||
|
|
@ -996,7 +996,7 @@ static struct si_texture *si_texture_create_object(struct pipe_screen *screen,
|
|||
resource->vram_usage_kb = plane0->buffer.vram_usage_kb;
|
||||
resource->gart_usage_kb = plane0->buffer.gart_usage_kb;
|
||||
|
||||
pb_reference(&resource->buf, plane0->buffer.buf);
|
||||
radeon_bo_reference(sscreen->ws, &resource->buf, plane0->buffer.buf);
|
||||
resource->gpu_address = plane0->buffer.gpu_address;
|
||||
} else if (!(surface->flags & RADEON_SURF_IMPORTED)) {
|
||||
/* Create the backing buffer. */
|
||||
|
|
@ -1508,7 +1508,7 @@ static void si_auxiliary_texture_destroy(struct pipe_screen *screen,
|
|||
{
|
||||
struct si_auxiliary_texture *tex = (struct si_auxiliary_texture *)ptex;
|
||||
|
||||
pb_reference(&tex->buffer, NULL);
|
||||
radeon_bo_reference(((struct si_screen*)screen)->ws, &tex->buffer, NULL);
|
||||
FREE(ptex);
|
||||
}
|
||||
|
||||
|
|
@ -2461,7 +2461,7 @@ static void si_memobj_destroy(struct pipe_screen *screen, struct pipe_memory_obj
|
|||
{
|
||||
struct si_memory_object *memobj = (struct si_memory_object *)_memobj;
|
||||
|
||||
pb_reference(&memobj->buf, NULL);
|
||||
radeon_bo_reference(((struct si_screen*)screen)->ws, &memobj->buf, NULL);
|
||||
free(memobj);
|
||||
}
|
||||
|
||||
|
|
@ -2491,7 +2491,7 @@ static struct pipe_resource *si_resource_from_memobj(struct pipe_screen *screen,
|
|||
* memobj->buf, so increment it here.
|
||||
*/
|
||||
struct pb_buffer *buf = NULL;
|
||||
pb_reference(&buf, memobj->buf);
|
||||
radeon_bo_reference(sscreen->ws, &buf, memobj->buf);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue