Mesa (master): gallium: add st_context_iface::flush_resource to call FLUSH_VERTICES

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Jan 17 20:05:30 UTC 2020


Module: Mesa
Branch: master
Commit: bec9c90b5ecf9cc2dc580f9ff297f94ba5aa3506
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bec9c90b5ecf9cc2dc580f9ff297f94ba5aa3506

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Dec 10 15:35:10 2019 -0500

gallium: add st_context_iface::flush_resource to call FLUSH_VERTICES

---

 src/gallium/include/state_tracker/st_api.h |  7 +++++++
 src/mesa/state_tracker/st_manager.c        | 14 ++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 0b953d6fb38..955d84b5b44 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -395,6 +395,13 @@ struct st_context_iface
                  void (*notify_before_flush_cb) (void*),
                  void* notify_before_flush_cb_args);
 
+   /**
+    * Flush all enqueued vertices (e.g. vbo module) and call
+    * pipe_context::flush_resource.
+    */
+   void (*flush_resource)(struct st_context_iface *stctxi,
+                          struct pipe_resource *resource);
+
    /**
     * Replace the texture image of a texture object at the specified level.
     *
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index c3688c4818e..a504ace5dff 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -688,6 +688,19 @@ st_context_flush(struct st_context_iface *stctxi, unsigned flags,
       st->gfx_shaders_may_be_dirty = true;
 }
 
+static void
+st_context_flush_resource(struct st_context_iface *stctxi,
+                          struct pipe_resource *resource)
+{
+   struct st_context *st = (struct st_context *) stctxi;
+   struct pipe_context *pipe = st->pipe;
+
+   FLUSH_VERTICES(st->ctx, 0);
+   FLUSH_CURRENT(st->ctx, 0);
+
+   pipe->flush_resource(pipe, resource);
+}
+
 static bool
 st_context_teximage(struct st_context_iface *stctxi,
                     enum st_texture_type tex_type,
@@ -982,6 +995,7 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
 
    st->iface.destroy = st_context_destroy;
    st->iface.flush = st_context_flush;
+   st->iface.flush_resource = st_context_flush_resource;
    st->iface.teximage = st_context_teximage;
    st->iface.copy = st_context_copy;
    st->iface.share = st_context_share;



More information about the mesa-commit mailing list