diff options
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/freedreno/freedreno_context.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/softpipe/sp_flush.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/tegra/tegra_context.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/v3d/v3d_context.c | 3 |
6 files changed, 19 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_context.c b/src/gallium/drivers/freedreno/freedreno_context.c index 6c01c15bb32..4e86d099974 100644 --- a/src/gallium/drivers/freedreno/freedreno_context.c +++ b/src/gallium/drivers/freedreno/freedreno_context.c @@ -99,6 +99,9 @@ fd_texture_barrier(struct pipe_context *pctx, unsigned flags) static void fd_memory_barrier(struct pipe_context *pctx, unsigned flags) { + if (!(flags & ~PIPE_BARRIER_UPDATE)) + return; + fd_context_flush(pctx, NULL, 0); /* TODO do we need to check for persistently mapped buffers and fd_bo_cpu_prep()?? */ } diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index f886a27170d..c7c606f131b 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -94,6 +94,10 @@ void r600_emit_alphatest_state(struct r600_context *rctx, struct r600_atom *atom static void r600_memory_barrier(struct pipe_context *ctx, unsigned flags) { struct r600_context *rctx = (struct r600_context *)ctx; + + if (!(flags & ~PIPE_BARRIER_UPDATE)) + return; + if (flags & PIPE_BARRIER_CONSTANT_BUFFER) rctx->b.flags |= R600_CONTEXT_INV_CONST_CACHE; diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 458b108a7e3..3c29b4c92ed 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -4710,6 +4710,9 @@ void si_memory_barrier(struct pipe_context *ctx, unsigned flags) { struct si_context *sctx = (struct si_context *)ctx; + if (!(flags & ~PIPE_BARRIER_UPDATE)) + return; + /* Subsequent commands must wait for all shader invocations to * complete. */ sctx->flags |= SI_CONTEXT_PS_PARTIAL_FLUSH | diff --git a/src/gallium/drivers/softpipe/sp_flush.c b/src/gallium/drivers/softpipe/sp_flush.c index 3bf8c499218..5eccbe34d46 100644 --- a/src/gallium/drivers/softpipe/sp_flush.c +++ b/src/gallium/drivers/softpipe/sp_flush.c @@ -192,5 +192,8 @@ void softpipe_texture_barrier(struct pipe_context *pipe, unsigned flags) void softpipe_memory_barrier(struct pipe_context *pipe, unsigned flags) { + if (!(flags & ~PIPE_BARRIER_UPDATE)) + return; + softpipe_texture_barrier(pipe, 0); } diff --git a/src/gallium/drivers/tegra/tegra_context.c b/src/gallium/drivers/tegra/tegra_context.c index bbc03628336..e9e51656921 100644 --- a/src/gallium/drivers/tegra/tegra_context.c +++ b/src/gallium/drivers/tegra/tegra_context.c @@ -974,6 +974,9 @@ tegra_memory_barrier(struct pipe_context *pcontext, unsigned int flags) { struct tegra_context *context = to_tegra_context(pcontext); + if (!(flags & ~PIPE_BARRIER_UPDATE)) + return; + context->gpu->memory_barrier(context->gpu, flags); } diff --git a/src/gallium/drivers/v3d/v3d_context.c b/src/gallium/drivers/v3d/v3d_context.c index d07ad403590..fcd2d5ec69b 100644 --- a/src/gallium/drivers/v3d/v3d_context.c +++ b/src/gallium/drivers/v3d/v3d_context.c @@ -71,6 +71,9 @@ v3d_memory_barrier(struct pipe_context *pctx, unsigned int flags) { struct v3d_context *v3d = v3d_context(pctx); + if (!(flags & ~PIPE_BARRIER_UPDATE)) + return; + /* We only need to flush jobs writing to SSBOs/images. */ perf_debug("Flushing all jobs for glMemoryBarrier(), could do better"); v3d_flush(pctx); |