SWDEV-272496 - Add marker if notification was the last command.

If MT is enabled, then a new callback can be received before the previous
command is processed, causing a conflict of 2 callbacks.

Change-Id: I5ff8f231208e8d62824d590d3c8e791e8e36affb
이 커밋은 다음에 포함됨:
German Andryeyev
2021-02-22 23:22:44 -05:00
부모 ce4ba590fe
커밋 56154e33dc
+5 -1
파일 보기
@@ -368,7 +368,11 @@ hipError_t hipStreamAddCallback(hipStream_t stream, hipStreamCallback_t callback
}
amd::HostQueue* hostQueue = hip::getQueue(stream);
amd::Command* command = hostQueue->getLastQueuedCommand(true);
if (command == nullptr) {
if (command == nullptr ||
// Add a marker if the last command is a notification,
// since with multithreading AddCallback may occur before the previous
// command can be processed
(command->type() == 0)) {
amd::Command::EventWaitList eventWaitList;
command = new amd::Marker(*hostQueue, kMarkerDisableFlush, eventWaitList);
command->enqueue();