diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-10-22 17:39:02 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-11-06 11:12:48 +0100 |
commit | 6369557a7b5c4fafa878fcabd1233fb57e365a83 (patch) | |
tree | cd5b284ecf8ca30e6c78d3c9e6d9fe089f5e07f2 | |
parent | 4e16f6f3f6618f1322f02fa5a93942c3d4fd1e61 (diff) |
st/mesa: remove redundant flushes from st_flush
st_flush should flush state tracker-internal state and the pipe, but
not mesa/main state. Of the four callers:
- glFlush/glFinish already call FLUSH_{VERTICES,STATE}.
- st_vdpau doesn't need to call them.
- st_manager will now call them explicitly.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
-rw-r--r-- | src/mesa/state_tracker/st_cb_flush.c | 3 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_manager.c | 3 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_vdpau.c | 3 |
3 files changed, 6 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c index d9ec0a846a..c8452d0e6f 100644 --- a/src/mesa/state_tracker/st_cb_flush.c +++ b/src/mesa/state_tracker/st_cb_flush.c @@ -50,9 +50,6 @@ void st_flush(struct st_context *st, struct pipe_fence_handle **fence, unsigned flags) { - FLUSH_VERTICES(st->ctx, 0); - FLUSH_CURRENT(st->ctx, 0); - st_flush_bitmap_cache(st); st->pipe->flush(st->pipe, fence, flags); diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index ff02e7af32..aa4e616572 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -45,6 +45,7 @@ #include "st_debug.h" #include "st_extensions.h" #include "st_format.h" +#include "st_cb_bitmap.h" #include "st_cb_fbo.h" #include "st_cb_flush.h" #include "st_manager.h" @@ -635,6 +636,8 @@ st_context_flush(struct st_context_iface *stctxi, unsigned flags, pipe_flags |= PIPE_FLUSH_END_OF_FRAME; } + FLUSH_VERTICES(st->ctx, 0); + FLUSH_CURRENT(st->ctx, 0); st_flush(st, fence, pipe_flags); if ((flags & ST_FLUSH_WAIT) && fence && *fence) { diff --git a/src/mesa/state_tracker/st_vdpau.c b/src/mesa/state_tracker/st_vdpau.c index 19611e719a..e0126cc03d 100644 --- a/src/mesa/state_tracker/st_vdpau.c +++ b/src/mesa/state_tracker/st_vdpau.c @@ -262,6 +262,9 @@ st_vdpau_unmap_surface(struct gl_context *ctx, GLenum target, GLenum access, _mesa_dirty_texobj(ctx, texObj); + /* NV_vdpau_interop does not specify an explicit synchronization mechanism + * between the GL and VDPAU contexts. Provide automatic synchronization here. + */ st_flush(st, NULL, 0); } |