mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-20 17:30:24 +01:00
trace/rbug: Use condvar on system that has it for blocking
This commit is contained in:
parent
d4c578ae41
commit
61ffba44fd
3 changed files with 14 additions and 0 deletions
|
|
@ -127,9 +127,13 @@ trace_context_draw_block(struct trace_context *tr_ctx, int flag)
|
|||
/* wait for rbug to clear the blocked flag */
|
||||
while (tr_ctx->draw_blocked & flag) {
|
||||
tr_ctx->draw_blocked |= flag;
|
||||
#ifdef PIPE_THREAD_HAVE_CONDVAR
|
||||
pipe_condvar_wait(tr_ctx->draw_cond, tr_ctx->draw_mutex);
|
||||
#else
|
||||
pipe_mutex_unlock(tr_ctx->draw_mutex);
|
||||
/* TODO sleep or use conditional */
|
||||
pipe_mutex_lock(tr_ctx->draw_mutex);
|
||||
#endif
|
||||
}
|
||||
|
||||
pipe_mutex_unlock(tr_ctx->draw_mutex);
|
||||
|
|
@ -1191,6 +1195,7 @@ trace_context_create(struct pipe_screen *_screen,
|
|||
rbug_blocker_flags,
|
||||
0);
|
||||
pipe_mutex_init(tr_ctx->draw_mutex);
|
||||
pipe_condvar_init(tr_ctx->draw_cond);
|
||||
pipe_mutex_init(tr_ctx->list_mutex);
|
||||
make_empty_list(&tr_ctx->shaders);
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ struct trace_context
|
|||
struct trace_texture *zsbuf;
|
||||
} curr;
|
||||
|
||||
pipe_condvar draw_cond;
|
||||
pipe_mutex draw_mutex;
|
||||
int draw_blocker;
|
||||
int draw_blocked;
|
||||
|
|
|
|||
|
|
@ -371,6 +371,10 @@ trace_rbug_context_draw_step(struct trace_rbug *tr_rbug, struct rbug_header *hea
|
|||
tr_ctx->draw_blocked &= ~step->step;
|
||||
pipe_mutex_unlock(tr_ctx->draw_mutex);
|
||||
|
||||
#ifdef PIPE_THREAD_HAVE_CONDVAR
|
||||
pipe_condvar_broadcast(tr_ctx->draw_cond);
|
||||
#endif
|
||||
|
||||
pipe_mutex_unlock(tr_scr->list_mutex);
|
||||
|
||||
return 0;
|
||||
|
|
@ -397,6 +401,10 @@ trace_rbug_context_draw_unblock(struct trace_rbug *tr_rbug, struct rbug_header *
|
|||
tr_ctx->draw_blocker &= ~unblock->unblock;
|
||||
pipe_mutex_unlock(tr_ctx->draw_mutex);
|
||||
|
||||
#ifdef PIPE_THREAD_HAVE_CONDVAR
|
||||
pipe_condvar_broadcast(tr_ctx->draw_cond);
|
||||
#endif
|
||||
|
||||
pipe_mutex_unlock(tr_scr->list_mutex);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue