diff --git a/rocclr/platform/commandqueue.cpp b/rocclr/platform/commandqueue.cpp index 4ab1a2de69..a1e96023df 100644 --- a/rocclr/platform/commandqueue.cpp +++ b/rocclr/platform/commandqueue.cpp @@ -140,9 +140,12 @@ void HostQueue::loop(device::VirtualDevice* virtualDevice) { for (const auto& it : events) { // Only wait if the command is enqueued into another queue. if (it->command().queue() != this) { - virtualDevice->flush(head, true); - tail = head = NULL; - dependencyFailed |= !it->awaitCompletion(); + // Runtime has to flush the current batch only if the dependent wait is blocking + if (it->command().status() != CL_COMPLETE) { + virtualDevice->flush(head, true); + tail = head = NULL; + dependencyFailed |= !it->awaitCompletion(); + } } }