diff --git a/rocclr/platform/command.cpp b/rocclr/platform/command.cpp index 3b7d3ab2a3..b52e84aa21 100644 --- a/rocclr/platform/command.cpp +++ b/rocclr/platform/command.cpp @@ -258,9 +258,6 @@ void Command::enqueue() { ClPrint(LOG_DEBUG, LOG_CMD, "command is enqueued: %p", this); queue_->append(*this); - if (IS_HIP) { - queue_->setLastQueuedCommand(this); - } queue_->flush(); if ((queue_->device().settings().waitCommand_ && (type_ != 0)) || ((commandWaitBits_ & 0x2) != 0)) { diff --git a/rocclr/platform/commandqueue.cpp b/rocclr/platform/commandqueue.cpp index a1e96023df..7ca3ba7878 100644 --- a/rocclr/platform/commandqueue.cpp +++ b/rocclr/platform/commandqueue.cpp @@ -185,7 +185,17 @@ void HostQueue::append(Command& command) { } command.retain(); command.setStatus(CL_QUEUED); + ScopedLock l(lastCmdLock_); queue_.enqueue(&command); + if (!IS_HIP) { + return; + } + // Set last submitted command + if (lastEnqueueCommand_ != nullptr) { + lastEnqueueCommand_->release(); + } + lastEnqueueCommand_ = &command; + lastEnqueueCommand_->retain(); } bool HostQueue::isEmpty() { @@ -193,18 +203,6 @@ bool HostQueue::isEmpty() { return queue_.empty(); } -void HostQueue::setLastQueuedCommand(Command* lastCommand) { - // Set last submitted command - ScopedLock l(lastCmdLock_); - if (lastEnqueueCommand_ != nullptr) { - lastEnqueueCommand_->release(); - } - lastEnqueueCommand_ = lastCommand; - if (lastCommand != nullptr) { - lastEnqueueCommand_->retain(); - } -} - Command* HostQueue::getLastQueuedCommand(bool retain) { // Get last submitted command ScopedLock l(lastCmdLock_); diff --git a/rocclr/platform/commandqueue.hpp b/rocclr/platform/commandqueue.hpp index 7def25bb73..cd39a041c9 100644 --- a/rocclr/platform/commandqueue.hpp +++ b/rocclr/platform/commandqueue.hpp @@ -236,7 +236,7 @@ class HostQueue : public CommandQueue { Command* getLastQueuedCommand(bool retain); //! Set last enqueued command - void setLastQueuedCommand(Command* lastCommand); + void setLastQueuedCommand(Command* lastCommand) {} };