aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2017-10-22 17:38:37 +0200
committerNicolai Hähnle <[email protected]>2017-11-09 14:20:58 +0100
commit884a0b2a9e55d4c1ca39475b50d9af598d7d7280 (patch)
tree0b7661fdf0ad273417149f55092a1c66ac019a21 /src/gallium/state_trackers
parentb921da3b74d71598c47da2bc46e445e3813d7933 (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 <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/dri/dri_helpers.c11
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 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);