summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_cb_flush.c3
-rw-r--r--src/mesa/state_tracker/st_manager.c3
-rw-r--r--src/mesa/state_tracker/st_vdpau.c3
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 d9ec0a846a7..c8452d0e6f7 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 d27727ae8fb..953f7156c90 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 19611e719a1..e0126cc03d8 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);
}