[Mesa-dev] [PATCH 3/8] gallium/u_threaded: properly initialize fence unflushed tokens
Nicolai Hähnle
nhaehnle at gmail.com
Mon Nov 13 14:03:31 UTC 2017
From: Nicolai Hähnle <nicolai.haehnle at amd.com>
This got lost in a rebase but never hurt anything because we happened
to always sync in fence_finish anyway...
---
src/gallium/auxiliary/util/u_threaded_context.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/gallium/auxiliary/util/u_threaded_context.c b/src/gallium/auxiliary/util/u_threaded_context.c
index b05cffd754d..ecd42724548 100644
--- a/src/gallium/auxiliary/util/u_threaded_context.c
+++ b/src/gallium/auxiliary/util/u_threaded_context.c
@@ -1915,33 +1915,32 @@ tc_flush(struct pipe_context *_pipe, struct pipe_fence_handle **fence,
* communication overhead if the driver thread is currently idle and the
* caller is going to wait for the fence immediately anyway.
*/
if (!(util_queue_fence_is_signalled(&last->fence) &&
(flags & PIPE_FLUSH_HINT_FINISH)))
async = true;
}
if (async && tc->create_fence) {
if (fence) {
- struct tc_unflushed_batch_token *token = NULL;
struct tc_batch *next = &tc->batch_slots[tc->next];
if (!next->token) {
next->token = malloc(sizeof(*next->token));
if (!next->token)
goto out_of_memory;
pipe_reference_init(&next->token->ref, 1);
next->token->tc = tc;
}
- screen->fence_reference(screen, fence, tc->create_fence(pipe, token));
+ screen->fence_reference(screen, fence, tc->create_fence(pipe, next->token));
if (!*fence)
goto out_of_memory;
}
struct tc_flush_payload *p =
tc_add_struct_typed_call(tc, TC_CALL_flush, tc_flush_payload);
p->tc = tc;
p->fence = fence ? *fence : NULL;
p->flags = flags | TC_FLUSH_ASYNC;
--
2.11.0
More information about the mesa-dev
mailing list