summaryrefslogtreecommitdiff
path: root/src/gallium/frontends/vallium/val_execute.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/frontends/vallium/val_execute.c')
-rw-r--r--src/gallium/frontends/vallium/val_execute.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gallium/frontends/vallium/val_execute.c b/src/gallium/frontends/vallium/val_execute.c
index dd4cc3acfc9..50fb28b2d99 100644
--- a/src/gallium/frontends/vallium/val_execute.c
+++ b/src/gallium/frontends/vallium/val_execute.c
@@ -2509,7 +2509,7 @@ VkResult val_execute_cmds(struct val_device *device,
struct val_cmd_buffer *cmd_buffer)
{
struct rendering_state state;
-
+ struct pipe_fence_handle *handle = NULL;
memset(&state, 0, sizeof(state));
state.pctx = queue->ctx;
state.blend_dirty = true;
@@ -2518,7 +2518,12 @@ VkResult val_execute_cmds(struct val_device *device,
/* create a gallium context */
val_execute_cmd_buffer(cmd_buffer, &state);
- state.pctx->flush(state.pctx, fence ? &fence->handle : NULL, 0);
+ state.pctx->flush(state.pctx, fence ? &handle : NULL, 0);
+ if (fence) {
+ mtx_lock(&device->fence_lock);
+ fence->handle = handle;
+ mtx_unlock(&device->fence_lock);
+ }
state.start_vb = -1;
state.num_vb = 0;
state.pctx->set_vertex_buffers(state.pctx, 0, PIPE_MAX_ATTRIBS, NULL);