diff options
Diffstat (limited to 'src/gallium/drivers/v3d/v3dx_draw.c')
-rw-r--r-- | src/gallium/drivers/v3d/v3dx_draw.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c index 7f111bbe75f..7ec687031d6 100644 --- a/src/gallium/drivers/v3d/v3dx_draw.c +++ b/src/gallium/drivers/v3d/v3dx_draw.c @@ -148,6 +148,13 @@ v3d_predraw_check_stage_inputs(struct pipe_context *pctx, if (cb->buffer) v3d_flush_jobs_writing_resource(v3d, cb->buffer); } + + /* Flush writes to our image views */ + foreach_bit(i, v3d->shaderimg[s].enabled_mask) { + struct v3d_image_view *view = &v3d->shaderimg[s].si[i]; + + v3d_flush_jobs_writing_resource(v3d, view->base.resource); + } } static void @@ -487,6 +494,12 @@ v3d_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info) v3d->ssbo[s].sb[i].buffer); job->tmu_dirty_rcl = true; } + + foreach_bit(i, v3d->shaderimg[s].enabled_mask) { + v3d_job_add_write_resource(job, + v3d->shaderimg[s].si[i].base.resource); + job->tmu_dirty_rcl = true; + } } /* Get space to emit our draw call into the BCL, using a branch to |