diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-10-22 17:38:37 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-11-06 11:12:48 +0100 |
commit | 4e16f6f3f6618f1322f02fa5a93942c3d4fd1e61 (patch) | |
tree | 10c2d755719ca890105895917ae962a97d5fe3ae | |
parent | 703b1530fe240194e4a6ae80c14791329f0b405e (diff) |
st/dri: use stapi flush instead of pipe flush when creating fences
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 <marek.olsak@amd.com>
-rw-r--r-- | src/gallium/state_trackers/dri/dri_helpers.c | 11 |
1 files 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 06309d8f0c..a9213eca19 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); |