Mesa (main): gallium: remove transfer_flush_region from u_resource_vtbl

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri May 21 18:27:24 UTC 2021


Module: Mesa
Branch: main
Commit: 89eaf5909259ba6b80bab6ce4ab3fe2ab51c5286
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=89eaf5909259ba6b80bab6ce4ab3fe2ab51c5286

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Wed May  5 12:55:29 2021 -0400

gallium: remove transfer_flush_region from u_resource_vtbl

It's only used by buffers and only zink uses it privately for textures too.
This is part of removing u_resource_vtbl.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10659>

---

 src/gallium/auxiliary/util/u_transfer.c          |  8 --------
 src/gallium/auxiliary/util/u_transfer.h          |  9 ---------
 src/gallium/drivers/i915/i915_resource.c         |  2 +-
 src/gallium/drivers/i915/i915_resource_buffer.c  |  1 -
 src/gallium/drivers/i915/i915_resource_texture.c |  1 -
 src/gallium/drivers/nouveau/nouveau_buffer.c     |  4 +---
 src/gallium/drivers/nouveau/nouveau_buffer.h     |  5 +++++
 src/gallium/drivers/nouveau/nv30/nv30_miptree.c  |  1 -
 src/gallium/drivers/nouveau/nv30/nv30_resource.c |  2 +-
 src/gallium/drivers/nouveau/nv50/nv50_miptree.c  |  1 -
 src/gallium/drivers/nouveau/nv50/nv50_resource.c |  2 +-
 src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c  |  1 -
 src/gallium/drivers/nouveau/nvc0/nvc0_resource.c |  2 +-
 src/gallium/drivers/r300/r300_screen_buffer.c    |  1 -
 src/gallium/drivers/r300/r300_texture.c          |  1 -
 src/gallium/drivers/r600/evergreen_compute.c     |  9 +--------
 src/gallium/drivers/r600/r600_buffer_common.c    | 11 +++++++----
 src/gallium/drivers/r600/r600_pipe_common.c      |  2 +-
 src/gallium/drivers/r600/r600_pipe_common.h      |  4 ++++
 src/gallium/drivers/r600/r600_texture.c          |  1 -
 src/gallium/drivers/radeonsi/si_buffer.c         |  3 +--
 src/gallium/drivers/radeonsi/si_texture.c        |  2 --
 src/gallium/drivers/svga/svga_resource.c         |  2 +-
 src/gallium/drivers/svga/svga_resource_buffer.c  |  3 +--
 src/gallium/drivers/svga/svga_resource_buffer.h  |  5 +++++
 src/gallium/drivers/svga/svga_resource_texture.c |  1 -
 src/gallium/drivers/virgl/virgl_buffer.c         |  7 +++----
 src/gallium/drivers/virgl/virgl_resource.c       |  2 +-
 src/gallium/drivers/virgl/virgl_resource.h       |  4 ++++
 src/gallium/drivers/virgl/virgl_texture.c        |  1 -
 30 files changed, 39 insertions(+), 59 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_transfer.c b/src/gallium/auxiliary/util/u_transfer.c
index 7e2ff89bed1..9d080e82638 100644
--- a/src/gallium/auxiliary/util/u_transfer.c
+++ b/src/gallium/auxiliary/util/u_transfer.c
@@ -117,14 +117,6 @@ void *u_transfer_map_vtbl(struct pipe_context *context,
                                  transfer);
 }
 
-void u_transfer_flush_region_vtbl( struct pipe_context *pipe,
-                                   struct pipe_transfer *transfer,
-                                   const struct pipe_box *box)
-{
-   struct u_resource *ur = u_resource(transfer->resource);
-   ur->vtbl->transfer_flush_region(pipe, transfer, box);
-}
-
 void u_transfer_unmap_vtbl( struct pipe_context *pipe,
                             struct pipe_transfer *transfer )
 {
diff --git a/src/gallium/auxiliary/util/u_transfer.h b/src/gallium/auxiliary/util/u_transfer.h
index 562a501aa3d..359c75b44f2 100644
--- a/src/gallium/auxiliary/util/u_transfer.h
+++ b/src/gallium/auxiliary/util/u_transfer.h
@@ -46,11 +46,6 @@ struct u_resource_vtbl {
                          const struct pipe_box *,
                          struct pipe_transfer **);
 
-
-   void (*transfer_flush_region)( struct pipe_context *,
-                                  struct pipe_transfer *transfer,
-                                  const struct pipe_box *);
-
    void (*transfer_unmap)( struct pipe_context *,
                            struct pipe_transfer *transfer );
 };
@@ -72,10 +67,6 @@ void *u_transfer_map_vtbl(struct pipe_context *context,
                           const struct pipe_box *box,
                           struct pipe_transfer **transfer);
 
-void u_transfer_flush_region_vtbl( struct pipe_context *pipe,
-                                   struct pipe_transfer *transfer,
-                                   const struct pipe_box *box);
-
 void u_transfer_unmap_vtbl( struct pipe_context *rm_ctx,
                             struct pipe_transfer *transfer );
 
diff --git a/src/gallium/drivers/i915/i915_resource.c b/src/gallium/drivers/i915/i915_resource.c
index fa856d02793..21746dcf9de 100644
--- a/src/gallium/drivers/i915/i915_resource.c
+++ b/src/gallium/drivers/i915/i915_resource.c
@@ -37,7 +37,7 @@ void
 i915_init_resource_functions(struct i915_context *i915 )
 {
    i915->base.transfer_map = u_transfer_map_vtbl;
-   i915->base.transfer_flush_region = u_transfer_flush_region_vtbl;
+   i915->base.transfer_flush_region = u_default_transfer_flush_region;
    i915->base.transfer_unmap = u_transfer_unmap_vtbl;
    i915->base.buffer_subdata = i915_buffer_subdata;
    i915->base.texture_subdata = u_default_texture_subdata;
diff --git a/src/gallium/drivers/i915/i915_resource_buffer.c b/src/gallium/drivers/i915/i915_resource_buffer.c
index 7cc9cab0a48..69d2f8c826a 100644
--- a/src/gallium/drivers/i915/i915_resource_buffer.c
+++ b/src/gallium/drivers/i915/i915_resource_buffer.c
@@ -99,7 +99,6 @@ struct u_resource_vtbl i915_buffer_vtbl =
 {
    i915_buffer_destroy,		     /* resource_destroy */
    i915_buffer_transfer_map,	     /* transfer_map */
-   u_default_transfer_flush_region,  /* transfer_flush_region */
    i915_buffer_transfer_unmap,	     /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/i915/i915_resource_texture.c b/src/gallium/drivers/i915/i915_resource_texture.c
index 492d36d951b..5bcd2cc1362 100644
--- a/src/gallium/drivers/i915/i915_resource_texture.c
+++ b/src/gallium/drivers/i915/i915_resource_texture.c
@@ -915,7 +915,6 @@ struct u_resource_vtbl i915_texture_vtbl =
 {
    i915_texture_destroy,	      /* resource_destroy */
    i915_texture_transfer_map,	      /* transfer_map */
-   u_default_transfer_flush_region,   /* transfer_flush_region */
    i915_texture_transfer_unmap,	      /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.c b/src/gallium/drivers/nouveau/nouveau_buffer.c
index f8246766430..92d37657393 100644
--- a/src/gallium/drivers/nouveau/nouveau_buffer.c
+++ b/src/gallium/drivers/nouveau/nouveau_buffer.c
@@ -506,7 +506,7 @@ nouveau_buffer_transfer_map(struct pipe_context *pipe,
 
 
 
-static void
+void
 nouveau_buffer_transfer_flush_region(struct pipe_context *pipe,
                                      struct pipe_transfer *transfer,
                                      const struct pipe_box *box)
@@ -632,7 +632,6 @@ const struct u_resource_vtbl nouveau_buffer_vtbl =
 {
    nouveau_buffer_destroy,               /* resource_destroy */
    nouveau_buffer_transfer_map,          /* transfer_map */
-   nouveau_buffer_transfer_flush_region, /* transfer_flush_region */
    nouveau_buffer_transfer_unmap,        /* transfer_unmap */
 };
 
@@ -671,7 +670,6 @@ const struct u_resource_vtbl nouveau_user_ptr_buffer_vtbl =
 {
    nouveau_user_ptr_destroy,        /* resource_destroy */
    nouveau_user_ptr_transfer_map,   /* transfer_map */
-   u_default_transfer_flush_region, /* transfer_flush_region */
    nouveau_user_ptr_transfer_unmap, /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/nouveau/nouveau_buffer.h b/src/gallium/drivers/nouveau/nouveau_buffer.h
index b43db81d298..4157c69da4f 100644
--- a/src/gallium/drivers/nouveau/nouveau_buffer.h
+++ b/src/gallium/drivers/nouveau/nouveau_buffer.h
@@ -71,6 +71,11 @@ void *
 nouveau_resource_map_offset(struct nouveau_context *, struct nv04_resource *,
                             uint32_t offset, uint32_t flags);
 
+void
+nouveau_buffer_transfer_flush_region(struct pipe_context *pipe,
+                                     struct pipe_transfer *transfer,
+                                     const struct pipe_box *box);
+
 static inline void
 nouveau_resource_unmap(struct nv04_resource *res)
 {
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
index d26b5973d60..ae93241b4ea 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_miptree.c
@@ -405,7 +405,6 @@ nv30_miptree_transfer_unmap(struct pipe_context *pipe,
 const struct u_resource_vtbl nv30_miptree_vtbl = {
    nv30_miptree_destroy,
    nv30_miptree_transfer_map,
-   u_default_transfer_flush_region,
    nv30_miptree_transfer_unmap,
 };
 
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_resource.c b/src/gallium/drivers/nouveau/nv30/nv30_resource.c
index a392e8586f6..ff185965655 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_resource.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_resource.c
@@ -84,7 +84,7 @@ void
 nv30_resource_init(struct pipe_context *pipe)
 {
    pipe->transfer_map = u_transfer_map_vtbl;
-   pipe->transfer_flush_region = u_transfer_flush_region_vtbl;
+   pipe->transfer_flush_region = nouveau_buffer_transfer_flush_region;
    pipe->transfer_unmap = u_transfer_unmap_vtbl;
    pipe->buffer_subdata = u_default_buffer_subdata;
    pipe->texture_subdata = u_default_texture_subdata;
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
index 73c10ed20b5..9155849f8b5 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_miptree.c
@@ -206,7 +206,6 @@ const struct u_resource_vtbl nv50_miptree_vtbl =
 {
    nv50_miptree_destroy,            /* resource_destroy */
    nv50_miptree_transfer_map,       /* transfer_map */
-   u_default_transfer_flush_region, /* transfer_flush_region */
    nv50_miptree_transfer_unmap,     /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_resource.c b/src/gallium/drivers/nouveau/nv50/nv50_resource.c
index 62f38e4a6d8..79d48aefedb 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_resource.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_resource.c
@@ -95,7 +95,7 @@ void
 nv50_init_resource_functions(struct pipe_context *pcontext)
 {
    pcontext->transfer_map = u_transfer_map_vtbl;
-   pcontext->transfer_flush_region = u_transfer_flush_region_vtbl;
+   pcontext->transfer_flush_region = nouveau_buffer_transfer_flush_region;
    pcontext->transfer_unmap = u_transfer_unmap_vtbl;
    pcontext->buffer_subdata = u_default_buffer_subdata;
    pcontext->texture_subdata = u_default_texture_subdata;
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c b/src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c
index 54efbd75df5..cf6290eeda0 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_miptree.c
@@ -440,7 +440,6 @@ const struct u_resource_vtbl nvc0_miptree_vtbl =
 {
    nv50_miptree_destroy,            /* resource_destroy */
    nvc0_miptree_transfer_map,       /* transfer_map */
-   u_default_transfer_flush_region, /* transfer_flush_region */
    nvc0_miptree_transfer_unmap,     /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c b/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c
index ab4aac8a9c7..27c7ee29162 100644
--- a/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c
+++ b/src/gallium/drivers/nouveau/nvc0/nvc0_resource.c
@@ -146,7 +146,7 @@ void
 nvc0_init_resource_functions(struct pipe_context *pcontext)
 {
    pcontext->transfer_map = u_transfer_map_vtbl;
-   pcontext->transfer_flush_region = u_transfer_flush_region_vtbl;
+   pcontext->transfer_flush_region = nouveau_buffer_transfer_flush_region;
    pcontext->transfer_unmap = u_transfer_unmap_vtbl;
    pcontext->buffer_subdata = u_default_buffer_subdata;
    pcontext->texture_subdata = u_default_texture_subdata;
diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c b/src/gallium/drivers/r300/r300_screen_buffer.c
index 93f8e53253a..079e55d3942 100644
--- a/src/gallium/drivers/r300/r300_screen_buffer.c
+++ b/src/gallium/drivers/r300/r300_screen_buffer.c
@@ -150,7 +150,6 @@ static const struct u_resource_vtbl r300_buffer_vtbl =
 {
    r300_buffer_destroy,                /* resource_destroy */
    r300_buffer_transfer_map,           /* transfer_map */
-   NULL,                               /* transfer_flush_region */
    r300_buffer_transfer_unmap,         /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index 8e7dccfc980..5d86be42762 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -1061,7 +1061,6 @@ static const struct u_resource_vtbl r300_texture_vtbl =
 {
     r300_texture_destroy,           /* resource_destroy */
     r300_texture_transfer_map,      /* transfer_map */
-    NULL,                           /* transfer_flush_region */
     r300_texture_transfer_unmap,    /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c
index d0d21dba310..104f0fe5477 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -1297,13 +1297,6 @@ static void r600_compute_global_transfer_unmap(struct pipe_context *ctx,
 	assert (!"This function should not be called");
 }
 
-static void r600_compute_global_transfer_flush_region(struct pipe_context *ctx,
-						      struct pipe_transfer *transfer,
-						      const struct pipe_box *box)
-{
-	assert(0 && "TODO");
-}
-
 static void r600_compute_global_buffer_destroy(struct pipe_screen *screen,
 					       struct pipe_resource *res)
 {
@@ -1326,7 +1319,6 @@ static const struct u_resource_vtbl r600_global_buffer_vtbl =
 {
 	r600_compute_global_buffer_destroy, /* resource_destroy */
 	r600_compute_global_transfer_map, /* transfer_map */
-	r600_compute_global_transfer_flush_region,/* transfer_flush_region */
 	r600_compute_global_transfer_unmap, /* transfer_unmap */
 };
 
@@ -1354,6 +1346,7 @@ struct pipe_resource *r600_compute_global_buffer_create(struct pipe_screen *scre
 	result->base.b.vtbl = &r600_global_buffer_vtbl;
 	result->base.b.b = *templ;
 	result->base.b.b.screen = screen;
+	result->base.compute_global_bo = true;
 	pipe_reference_init(&result->base.b.b.reference, 1);
 
 	size_in_dw = (templ->width0+3) / 4;
diff --git a/src/gallium/drivers/r600/r600_buffer_common.c b/src/gallium/drivers/r600/r600_buffer_common.c
index b082d28df24..70fa6cd2148 100644
--- a/src/gallium/drivers/r600/r600_buffer_common.c
+++ b/src/gallium/drivers/r600/r600_buffer_common.c
@@ -502,13 +502,16 @@ static void r600_buffer_do_flush_region(struct pipe_context *ctx,
 		       box->x + box->width);
 }
 
-static void r600_buffer_flush_region(struct pipe_context *ctx,
-				     struct pipe_transfer *transfer,
-				     const struct pipe_box *rel_box)
+void r600_buffer_flush_region(struct pipe_context *ctx,
+			      struct pipe_transfer *transfer,
+			      const struct pipe_box *rel_box)
 {
 	unsigned required_usage = PIPE_MAP_WRITE |
 				  PIPE_MAP_FLUSH_EXPLICIT;
 
+	if (r600_resource(transfer->resource)->compute_global_bo)
+		return;
+
 	if ((transfer->usage & required_usage) == required_usage) {
 		struct pipe_box box;
 
@@ -563,7 +566,6 @@ static const struct u_resource_vtbl r600_buffer_vtbl =
 {
 	r600_buffer_destroy,		/* resource_destroy */
 	r600_buffer_transfer_map,	/* transfer_map */
-	r600_buffer_flush_region,	/* transfer_flush_region */
 	r600_buffer_transfer_unmap,	/* transfer_unmap */
 };
 
@@ -586,6 +588,7 @@ r600_alloc_buffer_struct(struct pipe_screen *screen,
 	rbuffer->buf = NULL;
 	rbuffer->bind_history = 0;
 	rbuffer->immed_buffer = NULL;
+	rbuffer->compute_global_bo = false;
 	util_range_init(&rbuffer->valid_buffer_range);
 	return rbuffer;
 }
diff --git a/src/gallium/drivers/r600/r600_pipe_common.c b/src/gallium/drivers/r600/r600_pipe_common.c
index 68430748e13..ab232e29dd3 100644
--- a/src/gallium/drivers/r600/r600_pipe_common.c
+++ b/src/gallium/drivers/r600/r600_pipe_common.c
@@ -590,7 +590,7 @@ bool r600_common_context_init(struct r600_common_context *rctx,
 	rctx->b.invalidate_resource = r600_invalidate_resource;
 	rctx->b.resource_commit = r600_resource_commit;
 	rctx->b.transfer_map = u_transfer_map_vtbl;
-	rctx->b.transfer_flush_region = u_transfer_flush_region_vtbl;
+	rctx->b.transfer_flush_region = r600_buffer_flush_region;
 	rctx->b.transfer_unmap = u_transfer_unmap_vtbl;
 	rctx->b.texture_subdata = u_default_texture_subdata;
 	rctx->b.flush = r600_flush_from_st;
diff --git a/src/gallium/drivers/r600/r600_pipe_common.h b/src/gallium/drivers/r600/r600_pipe_common.h
index 91c92dad50e..f50beb4028f 100644
--- a/src/gallium/drivers/r600/r600_pipe_common.h
+++ b/src/gallium/drivers/r600/r600_pipe_common.h
@@ -167,6 +167,7 @@ struct r600_resource {
 	/* Whether this resource is referenced by bindless handles. */
 	bool				texture_handle_allocated;
 	bool				image_handle_allocated;
+	bool                            compute_global_bo;
 
 	/*
 	 * EG/Cayman only - for RAT operations hw need an immediate buffer
@@ -640,6 +641,9 @@ void r600_init_resource_fields(struct r600_common_screen *rscreen,
 			       uint64_t size, unsigned alignment);
 bool r600_alloc_resource(struct r600_common_screen *rscreen,
 			 struct r600_resource *res);
+void r600_buffer_flush_region(struct pipe_context *ctx,
+			      struct pipe_transfer *transfer,
+			      const struct pipe_box *rel_box);
 struct pipe_resource *r600_buffer_create(struct pipe_screen *screen,
 					 const struct pipe_resource *templ,
 					 unsigned alignment);
diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index 745e1c5a183..ffd6ecd0ad0 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -1523,7 +1523,6 @@ static const struct u_resource_vtbl r600_texture_vtbl =
 {
 	r600_texture_destroy,		/* resource_destroy */
 	r600_texture_transfer_map,	/* transfer_map */
-	u_default_transfer_flush_region, /* transfer_flush_region */
 	r600_texture_transfer_unmap,	/* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c
index b53aa3d1054..d64debe10b1 100644
--- a/src/gallium/drivers/radeonsi/si_buffer.c
+++ b/src/gallium/drivers/radeonsi/si_buffer.c
@@ -553,7 +553,6 @@ static void si_buffer_subdata(struct pipe_context *ctx, struct pipe_resource *bu
 static const struct u_resource_vtbl si_buffer_vtbl = {
    si_buffer_destroy,        /* resource_destroy */
    si_buffer_transfer_map,   /* transfer_map */
-   si_buffer_flush_region,   /* transfer_flush_region */
    si_buffer_transfer_unmap, /* transfer_unmap */
 };
 
@@ -730,7 +729,7 @@ void si_init_buffer_functions(struct si_context *sctx)
 {
    sctx->b.invalidate_resource = si_invalidate_resource;
    sctx->b.transfer_map = u_transfer_map_vtbl;
-   sctx->b.transfer_flush_region = u_transfer_flush_region_vtbl;
+   sctx->b.transfer_flush_region = si_buffer_flush_region;
    sctx->b.transfer_unmap = u_transfer_unmap_vtbl;
    sctx->b.texture_subdata = u_default_texture_subdata;
    sctx->b.buffer_subdata = si_buffer_subdata;
diff --git a/src/gallium/drivers/radeonsi/si_texture.c b/src/gallium/drivers/radeonsi/si_texture.c
index 16ee3c121a0..3a6b9caf64c 100644
--- a/src/gallium/drivers/radeonsi/si_texture.c
+++ b/src/gallium/drivers/radeonsi/si_texture.c
@@ -1476,7 +1476,6 @@ static void si_auxiliary_texture_destroy(struct pipe_screen *screen,
 static const struct u_resource_vtbl si_auxiliary_texture_vtbl = {
    si_auxiliary_texture_destroy,    /* resource_destroy */
    NULL,                        /* transfer_map */
-   NULL,                        /* transfer_flush_region */
    NULL,                        /* transfer_unmap */
 };
 
@@ -1963,7 +1962,6 @@ static void si_texture_transfer_unmap(struct pipe_context *ctx, struct pipe_tran
 static const struct u_resource_vtbl si_texture_vtbl = {
    si_texture_destroy,              /* resource_destroy */
    si_texture_transfer_map,         /* transfer_map */
-   u_default_transfer_flush_region, /* transfer_flush_region */
    si_texture_transfer_unmap,       /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/svga/svga_resource.c b/src/gallium/drivers/svga/svga_resource.c
index 942f2019c77..aeb9e05e20b 100644
--- a/src/gallium/drivers/svga/svga_resource.c
+++ b/src/gallium/drivers/svga/svga_resource.c
@@ -121,7 +121,7 @@ void
 svga_init_resource_functions(struct svga_context *svga)
 {
    svga->pipe.transfer_map = u_transfer_map_vtbl;
-   svga->pipe.transfer_flush_region = u_transfer_flush_region_vtbl;
+   svga->pipe.transfer_flush_region = svga_buffer_transfer_flush_region;
    svga->pipe.transfer_unmap = u_transfer_unmap_vtbl;
    svga->pipe.buffer_subdata = u_default_buffer_subdata;
    svga->pipe.texture_subdata = u_default_texture_subdata;
diff --git a/src/gallium/drivers/svga/svga_resource_buffer.c b/src/gallium/drivers/svga/svga_resource_buffer.c
index e04896eba20..d8fa7f72794 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer.c
+++ b/src/gallium/drivers/svga/svga_resource_buffer.c
@@ -305,7 +305,7 @@ done:
 }
 
 
-static void
+void
 svga_buffer_transfer_flush_region(struct pipe_context *pipe,
                                   struct pipe_transfer *transfer,
                                   const struct pipe_box *box)
@@ -426,7 +426,6 @@ struct u_resource_vtbl svga_buffer_vtbl =
 {
    svga_buffer_destroy,		     /* resource_destroy */
    svga_buffer_transfer_map,	     /* transfer_map */
-   svga_buffer_transfer_flush_region,  /* transfer_flush_region */
    svga_buffer_transfer_unmap,	     /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/svga/svga_resource_buffer.h b/src/gallium/drivers/svga/svga_resource_buffer.h
index 131b2ebf940..38d7da30097 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer.h
+++ b/src/gallium/drivers/svga/svga_resource_buffer.h
@@ -373,4 +373,9 @@ svga_winsys_buffer_create(struct svga_context *svga,
                           unsigned usage,
                           unsigned size);
 
+void
+svga_buffer_transfer_flush_region(struct pipe_context *pipe,
+                                  struct pipe_transfer *transfer,
+                                  const struct pipe_box *box);
+
 #endif /* SVGA_BUFFER_H */
diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c
index b1f4d4f4099..a0bb422ce08 100644
--- a/src/gallium/drivers/svga/svga_resource_texture.c
+++ b/src/gallium/drivers/svga/svga_resource_texture.c
@@ -879,7 +879,6 @@ struct u_resource_vtbl svga_texture_vtbl =
 {
    svga_texture_destroy,	      /* resource_destroy */
    svga_texture_transfer_map,	      /* transfer_map */
-   u_default_transfer_flush_region,   /* transfer_flush_region */
    svga_texture_transfer_unmap,	      /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/virgl/virgl_buffer.c b/src/gallium/drivers/virgl/virgl_buffer.c
index eefee7cc55a..4d7a0d5f6cb 100644
--- a/src/gallium/drivers/virgl/virgl_buffer.c
+++ b/src/gallium/drivers/virgl/virgl_buffer.c
@@ -58,9 +58,9 @@ static void virgl_buffer_transfer_unmap(struct pipe_context *ctx,
       virgl_resource_destroy_transfer(vctx, trans);
 }
 
-static void virgl_buffer_transfer_flush_region(struct pipe_context *ctx,
-                                               struct pipe_transfer *transfer,
-                                               const struct pipe_box *box)
+void virgl_buffer_transfer_flush_region(struct pipe_context *ctx,
+                                        struct pipe_transfer *transfer,
+                                        const struct pipe_box *box)
 {
    struct virgl_transfer *trans = virgl_transfer(transfer);
 
@@ -80,7 +80,6 @@ static const struct u_resource_vtbl virgl_buffer_vtbl =
 {
    virgl_resource_destroy,                   /* resource_destroy */
    virgl_resource_transfer_map,              /* transfer_map */
-   virgl_buffer_transfer_flush_region,       /* transfer_flush_region */
    virgl_buffer_transfer_unmap,              /* transfer_unmap */
 };
 
diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c
index 8bd66683f0e..abf1a89f979 100644
--- a/src/gallium/drivers/virgl/virgl_resource.c
+++ b/src/gallium/drivers/virgl/virgl_resource.c
@@ -673,7 +673,7 @@ static void virgl_buffer_subdata(struct pipe_context *pipe,
 void virgl_init_context_resource_functions(struct pipe_context *ctx)
 {
     ctx->transfer_map = u_transfer_map_vtbl;
-    ctx->transfer_flush_region = u_transfer_flush_region_vtbl;
+    ctx->transfer_flush_region = virgl_buffer_transfer_flush_region;
     ctx->transfer_unmap = u_transfer_unmap_vtbl;
     ctx->buffer_subdata = virgl_buffer_subdata;
     ctx->texture_subdata = u_default_texture_subdata;
diff --git a/src/gallium/drivers/virgl/virgl_resource.h b/src/gallium/drivers/virgl/virgl_resource.h
index 4f3f1d2e882..296724c1333 100644
--- a/src/gallium/drivers/virgl/virgl_resource.h
+++ b/src/gallium/drivers/virgl/virgl_resource.h
@@ -107,6 +107,10 @@ static inline struct virgl_transfer *virgl_transfer(struct pipe_transfer *trans)
    return (struct virgl_transfer *)trans;
 }
 
+void virgl_buffer_transfer_flush_region(struct pipe_context *ctx,
+                                        struct pipe_transfer *transfer,
+                                        const struct pipe_box *box);
+
 void virgl_buffer_init(struct virgl_resource *res);
 
 static inline unsigned pipe_to_virgl_bind(const struct virgl_screen *vs,
diff --git a/src/gallium/drivers/virgl/virgl_texture.c b/src/gallium/drivers/virgl/virgl_texture.c
index ceaa373f1b4..84f5d25dad5 100644
--- a/src/gallium/drivers/virgl/virgl_texture.c
+++ b/src/gallium/drivers/virgl/virgl_texture.c
@@ -306,7 +306,6 @@ static const struct u_resource_vtbl virgl_texture_vtbl =
 {
    virgl_resource_destroy,              /* resource_destroy */
    virgl_texture_transfer_map,          /* transfer_map */
-   NULL,                                /* transfer_flush_region */
    virgl_texture_transfer_unmap,        /* transfer_unmap */
 };
 



More information about the mesa-commit mailing list