[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