From d793b54c4e921a8560a6aac6b9949f2784a5dc73 Mon Sep 17 00:00:00 2001 From: Charmaine Lee Date: Sat, 18 Feb 2017 01:19:23 -0800 Subject: [PATCH] st: add ST_FLUSH_WAIT to st_context_flush() When st_context_flush() is called with ST_FLUSH_WAIT, the function will return after the fence is completed. Reviewed-by: Brian Paul --- src/gallium/include/state_tracker/st_api.h | 1 + src/mesa/state_tracker/st_manager.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h index daa1f23812e..a9997744cde 100644 --- a/src/gallium/include/state_tracker/st_api.h +++ b/src/gallium/include/state_tracker/st_api.h @@ -160,6 +160,7 @@ enum st_context_resource_type { */ #define ST_FLUSH_FRONT (1 << 0) #define ST_FLUSH_END_OF_FRAME (1 << 1) +#define ST_FLUSH_WAIT (1 << 2) /** * Value to st_manager->get_param function. diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index c3d8286b5a7..e663b017174 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -504,6 +504,13 @@ st_context_flush(struct st_context_iface *stctxi, unsigned flags, } st_flush(st, fence, pipe_flags); + + if ((flags & ST_FLUSH_WAIT) && fence) { + st->pipe->screen->fence_finish(st->pipe->screen, NULL, *fence, + PIPE_TIMEOUT_INFINITE); + st->pipe->screen->fence_reference(st->pipe->screen, fence, NULL); + } + if (flags & ST_FLUSH_FRONT) st_manager_flush_frontbuffer(st); } -- 2.30.2