CommandQueueMT: Fix flush re-entrancy
This commit is contained in:
parent
e5b4ef8e95
commit
114b14b0fa
1 changed files with 6 additions and 7 deletions
|
@ -364,6 +364,12 @@ class CommandQueueMT {
|
|||
void _flush() {
|
||||
lock();
|
||||
|
||||
if (unlikely(flush_read_ptr)) {
|
||||
// Re-entrant call.
|
||||
unlock();
|
||||
return;
|
||||
}
|
||||
|
||||
WorkerThreadPool::thread_enter_command_queue_mt_flush(this);
|
||||
while (flush_read_ptr < command_mem.size()) {
|
||||
uint64_t size = *(uint64_t *)&command_mem[flush_read_ptr];
|
||||
|
@ -376,13 +382,6 @@ class CommandQueueMT {
|
|||
sync_sem->sem.post(); // Release in case it needs sync/ret.
|
||||
}
|
||||
|
||||
if (unlikely(flush_read_ptr == 0)) {
|
||||
// A reentrant call flushed.
|
||||
DEV_ASSERT(command_mem.is_empty());
|
||||
unlock();
|
||||
return;
|
||||
}
|
||||
|
||||
flush_read_ptr += size;
|
||||
}
|
||||
WorkerThreadPool::thread_exit_command_queue_mt_flush();
|
||||
|
|
Loading…
Reference in a new issue