summaryrefslogtreecommitdiffstats
path: root/src/gallium/winsys/dri/nouveau/nouveau_winsys.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/winsys/dri/nouveau/nouveau_winsys.c')
-rw-r--r--src/gallium/winsys/dri/nouveau/nouveau_winsys.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gallium/winsys/dri/nouveau/nouveau_winsys.c b/src/gallium/winsys/dri/nouveau/nouveau_winsys.c
index bf1afce5d9d..60fdbb8dfdf 100644
--- a/src/gallium/winsys/dri/nouveau/nouveau_winsys.c
+++ b/src/gallium/winsys/dri/nouveau/nouveau_winsys.c
@@ -69,8 +69,18 @@ nouveau_pipe_push_reloc(struct nouveau_winsys *nvws, void *ptr,
}
static int
-nouveau_pipe_push_flush(struct nouveau_winsys *nvws, unsigned size)
+nouveau_pipe_push_flush(struct nouveau_winsys *nvws, unsigned size,
+ struct pipe_fence_handle **fence)
{
+ if (fence) {
+ struct nouveau_pushbuf *pb = nvws->channel->pushbuf;
+ struct nouveau_pushbuf_priv *nvpb = nouveau_pushbuf(pb);
+ struct nouveau_fence *ref = NULL;
+
+ nouveau_fence_ref(nvpb->fence, &ref);
+ *fence = (struct pipe_fence_handle *)ref;
+ }
+
return nouveau_pushbuf_flush(nvws->channel, size);
}