radeonsi: remove r600_pipe_common::invalidate_buffer
authorMarek Olšák <marek.olsak@amd.com>
Sun, 1 Apr 2018 18:06:06 +0000 (14:06 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 5 Apr 2018 19:34:58 +0000 (15:34 -0400)
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
src/gallium/drivers/radeon/r600_buffer_common.c
src/gallium/drivers/radeon/r600_pipe_common.h
src/gallium/drivers/radeonsi/si_descriptors.c

index d215c9dfe80d1b3efab91c32c192e68124ee7065..bc7e14beca4afc804e7dd0782d9a27746307b861 100644 (file)
@@ -254,6 +254,12 @@ static void r600_buffer_destroy(struct pipe_screen *screen,
        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
 r600_invalidate_buffer(struct r600_common_context *rctx,
                       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. */
        if (si_rings_is_buffer_referenced(rctx, rbuffer->buf, 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 {
                util_range_set_empty(&rbuffer->valid_buffer_range);
        }
index 9dbe18d08555b5316e2666680672af506a1cef40..288562bfdf38636a23358d4c7f3ef761516162c5 100644 (file)
@@ -495,10 +495,6 @@ struct r600_common_context {
 
        void (*decompress_dcc)(struct pipe_context *ctx,
                               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 */
index c198d5f816d67f1c292aeb69aad50b11e99d4a91..2468c9df394f6a4b0eb6f270a01d42f30574b371 100644 (file)
@@ -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,
                                          unsigned desc_slot,
                                          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.delete_image_handle = si_delete_image_handle;
        sctx->b.b.make_image_handle_resident = si_make_image_handle_resident;
-       sctx->b.invalidate_buffer = si_invalidate_buffer;
 
        /* Shader user data. */
        si_init_atom(sctx, &sctx->shader_pointers.atom, &sctx->atoms.s.shader_pointers,