diff options
author | Rohan Garg <[email protected]> | 2019-06-05 16:20:59 +0200 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-06-18 09:52:01 -0700 |
commit | 0f43a2ae8afe217efaff9c0436388323a5f0d7b7 (patch) | |
tree | 4867792dcfb5496503c3f784c9e460a1bb536072 /src/gallium | |
parent | 2daf3d8215bfdb9fd9e4a4c93bfeb1a542a6c821 (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.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/panfrost/pan_job.c | 20 | ||||
-rw-r--r-- | 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 |