From 884a0b2a9e55d4c1ca39475b50d9af598d7d7280 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolai=20H=C3=A4hnle?= Date: Sun, 22 Oct 2017 17:38:37 +0200 Subject: [PATCH] st/dri: use stapi flush instead of pipe flush when creating fences MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit There may be pending operations (e.g. vertices) that need to be flushed by the state tracker. Found by inspection. Reviewed-by: Marek Olšák --- src/gallium/state_trackers/dri/dri_helpers.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gallium/state_trackers/dri/dri_helpers.c b/src/gallium/state_trackers/dri/dri_helpers.c index 06309d8f0ce..a9213eca19a 100644 --- a/src/gallium/state_trackers/dri/dri_helpers.c +++ b/src/gallium/state_trackers/dri/dri_helpers.c @@ -90,13 +90,13 @@ static unsigned dri2_fence_get_caps(__DRIscreen *_screen) static void * dri2_create_fence(__DRIcontext *_ctx) { - struct pipe_context *ctx = dri_context(_ctx)->st->pipe; + struct st_context_iface *stapi = dri_context(_ctx)->st; struct dri2_fence *fence = CALLOC_STRUCT(dri2_fence); if (!fence) return NULL; - ctx->flush(ctx, &fence->pipe_fence, 0); + stapi->flush(stapi, 0, &fence->pipe_fence); if (!fence->pipe_fence) { FREE(fence); @@ -110,13 +110,14 @@ dri2_create_fence(__DRIcontext *_ctx) static void * dri2_create_fence_fd(__DRIcontext *_ctx, int fd) { - struct pipe_context *ctx = dri_context(_ctx)->st->pipe; + struct st_context_iface *stapi = dri_context(_ctx)->st; + struct pipe_context *ctx = stapi->pipe; struct dri2_fence *fence = CALLOC_STRUCT(dri2_fence); if (fd == -1) { /* exporting driver created fence, flush: */ - ctx->flush(ctx, &fence->pipe_fence, - PIPE_FLUSH_DEFERRED | PIPE_FLUSH_FENCE_FD); + stapi->flush(stapi, PIPE_FLUSH_DEFERRED | PIPE_FLUSH_FENCE_FD, + &fence->pipe_fence); } else { /* importing a foreign fence fd: */ ctx->create_fence_fd(ctx, &fence->pipe_fence, fd); -- 2.30.2