summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorRohan Garg <[email protected]>2019-06-05 16:20:59 +0200
committerAlyssa Rosenzweig <[email protected]>2019-06-18 09:52:01 -0700
commit0f43a2ae8afe217efaff9c0436388323a5f0d7b7 (patch)
tree4867792dcfb5496503c3f784c9e460a1bb536072 /src/gallium
parent2daf3d8215bfdb9fd9e4a4c93bfeb1a542a6c821 (diff)
panfrost: Initial implementation of panfrost_job_submit
Start fleshing out panfrost_job v2: [Alyssa: Remove unused variable, warning introduced] Reviewed-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/panfrost/pan_context.c6
-rw-r--r--src/gallium/drivers/panfrost/pan_job.c20
-rw-r--r--src/gallium/drivers/panfrost/pan_job.h2
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