mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 15:30:14 +01:00
radeonsi: remove r600_pipe_common::invalidate_buffer
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
898500c440
commit
9d7f809c03
3 changed files with 11 additions and 25 deletions
|
|
@ -254,6 +254,12 @@ static void r600_buffer_destroy(struct pipe_screen *screen,
|
||||||
FREE(rbuffer);
|
FREE(rbuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reallocate the buffer a update all resource bindings where the buffer is
|
||||||
|
* bound.
|
||||||
|
*
|
||||||
|
* This is used to avoid CPU-GPU synchronizations, because it makes the buffer
|
||||||
|
* idle by discarding its contents.
|
||||||
|
*/
|
||||||
static bool
|
static bool
|
||||||
r600_invalidate_buffer(struct r600_common_context *rctx,
|
r600_invalidate_buffer(struct r600_common_context *rctx,
|
||||||
struct r600_resource *rbuffer)
|
struct r600_resource *rbuffer)
|
||||||
|
|
@ -275,7 +281,11 @@ r600_invalidate_buffer(struct r600_common_context *rctx,
|
||||||
/* Check if mapping this buffer would cause waiting for the GPU. */
|
/* Check if mapping this buffer would cause waiting for the GPU. */
|
||||||
if (si_rings_is_buffer_referenced(rctx, rbuffer->buf, RADEON_USAGE_READWRITE) ||
|
if (si_rings_is_buffer_referenced(rctx, rbuffer->buf, RADEON_USAGE_READWRITE) ||
|
||||||
!rctx->ws->buffer_wait(rbuffer->buf, 0, RADEON_USAGE_READWRITE)) {
|
!rctx->ws->buffer_wait(rbuffer->buf, 0, RADEON_USAGE_READWRITE)) {
|
||||||
rctx->invalidate_buffer(&rctx->b, &rbuffer->b.b);
|
uint64_t old_va = rbuffer->gpu_address;
|
||||||
|
|
||||||
|
/* Reallocate the buffer in the same pipe_resource. */
|
||||||
|
si_alloc_resource(rctx->screen, rbuffer);
|
||||||
|
si_rebind_buffer(&rctx->b, &rbuffer->b.b, old_va);
|
||||||
} else {
|
} else {
|
||||||
util_range_set_empty(&rbuffer->valid_buffer_range);
|
util_range_set_empty(&rbuffer->valid_buffer_range);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -495,10 +495,6 @@ struct r600_common_context {
|
||||||
|
|
||||||
void (*decompress_dcc)(struct pipe_context *ctx,
|
void (*decompress_dcc)(struct pipe_context *ctx,
|
||||||
struct r600_texture *rtex);
|
struct r600_texture *rtex);
|
||||||
|
|
||||||
/* Reallocate the buffer and update all resource bindings where
|
|
||||||
* the buffer is bound, including all resource descriptors. */
|
|
||||||
void (*invalidate_buffer)(struct pipe_context *ctx, struct pipe_resource *buf);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* r600_buffer_common.c */
|
/* r600_buffer_common.c */
|
||||||
|
|
|
||||||
|
|
@ -1811,25 +1811,6 @@ void si_rebind_buffer(struct pipe_context *ctx, struct pipe_resource *buf,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reallocate a buffer a update all resource bindings where the buffer is
|
|
||||||
* bound.
|
|
||||||
*
|
|
||||||
* This is used to avoid CPU-GPU synchronizations, because it makes the buffer
|
|
||||||
* idle by discarding its contents. Apps usually tell us when to do this using
|
|
||||||
* map_buffer flags, for example.
|
|
||||||
*/
|
|
||||||
static void si_invalidate_buffer(struct pipe_context *ctx, struct pipe_resource *buf)
|
|
||||||
{
|
|
||||||
struct si_context *sctx = (struct si_context*)ctx;
|
|
||||||
struct r600_resource *rbuffer = r600_resource(buf);
|
|
||||||
uint64_t old_va = rbuffer->gpu_address;
|
|
||||||
|
|
||||||
/* Reallocate the buffer in the same pipe_resource. */
|
|
||||||
si_alloc_resource(sctx->screen, rbuffer);
|
|
||||||
|
|
||||||
si_rebind_buffer(ctx, buf, old_va);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void si_upload_bindless_descriptor(struct si_context *sctx,
|
static void si_upload_bindless_descriptor(struct si_context *sctx,
|
||||||
unsigned desc_slot,
|
unsigned desc_slot,
|
||||||
unsigned num_dwords)
|
unsigned num_dwords)
|
||||||
|
|
@ -2786,7 +2767,6 @@ void si_init_all_descriptors(struct si_context *sctx)
|
||||||
sctx->b.b.create_image_handle = si_create_image_handle;
|
sctx->b.b.create_image_handle = si_create_image_handle;
|
||||||
sctx->b.b.delete_image_handle = si_delete_image_handle;
|
sctx->b.b.delete_image_handle = si_delete_image_handle;
|
||||||
sctx->b.b.make_image_handle_resident = si_make_image_handle_resident;
|
sctx->b.b.make_image_handle_resident = si_make_image_handle_resident;
|
||||||
sctx->b.invalidate_buffer = si_invalidate_buffer;
|
|
||||||
|
|
||||||
/* Shader user data. */
|
/* Shader user data. */
|
||||||
si_init_atom(sctx, &sctx->shader_pointers.atom, &sctx->atoms.s.shader_pointers,
|
si_init_atom(sctx, &sctx->shader_pointers.atom, &sctx->atoms.s.shader_pointers,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue