Mesa (master): panfrost: Initial implementation of panfrost_job_submit

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 18 16:53:24 UTC 2019


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

Author: Rohan Garg <rohan.garg at collabora.com>
Date:   Wed Jun  5 16:20:59 2019 +0200

panfrost: Initial implementation of panfrost_job_submit

Start fleshing out panfrost_job

v2: [Alyssa: Remove unused variable, warning introduced]

Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>

---

 src/gallium/drivers/panfrost/pan_context.c |  6 +-----
 src/gallium/drivers/panfrost/pan_job.c     | 20 ++++++++++++++++++++
 src/gallium/drivers/panfrost/pan_job.h     |  2 ++
 3 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index ed19fa17645..9b6ab41373d 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -1473,13 +1473,9 @@ panfrost_submit_frame(struct panfrost_context *ctx, bool flush_immediate,
         struct pipe_context *gallium = (struct pipe_context *) ctx;
         struct panfrost_screen *screen = pan_screen(gallium->screen);
 
-        /* Edge case if screen is cleared and nothing else */
-        bool has_draws = ctx->draw_count > 0;
-
 #ifndef DRY_RUN
         
-        bool is_scanout = panfrost_is_scanout(ctx);
-        screen->driver->submit_vs_fs_job(ctx, has_draws, is_scanout);
+        panfrost_job_submit(ctx, job);
 
         /* If visual, we can stall a frame */
 
diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
index 6e913ac3374..1e09760871c 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -141,6 +141,26 @@ panfrost_flush_jobs_writing_resource(struct panfrost_context *panfrost,
 }
 
 void
+panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_job *job)
+{
+        struct pipe_context *gallium = (struct pipe_context *) ctx;
+        struct panfrost_screen *screen = pan_screen(gallium->screen);
+        int ret;
+
+        bool has_draws = ctx->draw_count > 0;
+        bool is_scanout = panfrost_is_scanout(ctx);
+
+        if (!job)
+                return;
+
+        ret = screen->driver->submit_vs_fs_job(ctx, has_draws, is_scanout);
+
+        if (ret)
+                fprintf(stderr, "panfrost_job_submit failed: %d\n", ret);
+
+}
+
+void
 panfrost_flush_jobs_reading_resource(struct panfrost_context *panfrost,
                                 struct pipe_resource *prsc)
 {
diff --git a/src/gallium/drivers/panfrost/pan_job.h b/src/gallium/drivers/panfrost/pan_job.h
index 1b28084c599..afc9ac4e58f 100644
--- a/src/gallium/drivers/panfrost/pan_job.h
+++ b/src/gallium/drivers/panfrost/pan_job.h
@@ -88,4 +88,6 @@ void
 panfrost_flush_jobs_reading_resource(struct panfrost_context *panfrost,
                                 struct pipe_resource *prsc);
 
+void
+panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_job *job);
 #endif




More information about the mesa-commit mailing list