From 686790274d925f2e2fe758baba9be0784900e79a Mon Sep 17 00:00:00 2001 From: "Dunajski, Bartosz" Date: Wed, 15 Mar 2023 12:57:15 +0000 Subject: [PATCH] Disable OCL RelaxedOrdering if tag update is required Related-To: NEO-7458 Signed-off-by: Dunajski, Bartosz --- opencl/source/command_queue/enqueue_common.h | 6 ++++-- .../unit_test/command_queue/command_queue_hw_1_tests.cpp | 5 +++++ shared/source/command_stream/command_stream_receiver.h | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/opencl/source/command_queue/enqueue_common.h b/opencl/source/command_queue/enqueue_common.h index 68a2fe0ea4..2f94c433da 100644 --- a/opencl/source/command_queue/enqueue_common.h +++ b/opencl/source/command_queue/enqueue_common.h @@ -1487,11 +1487,13 @@ bool CommandQueueHw::isBlitAuxTranslationRequired(const MultiDispatch template bool CommandQueueHw::relaxedOrderingForGpgpuAllowed(uint32_t numWaitEvents) const { - if (DebugManager.flags.DirectSubmissionRelaxedOrdering.get() != 1) { + auto &gpgpuCsr = getGpgpuCommandStreamReceiver(); + + if ((DebugManager.flags.DirectSubmissionRelaxedOrdering.get() != 1) || gpgpuCsr.isRecyclingTagForHeapStorageRequired()) { return false; } - return RelaxedOrderingHelper::isRelaxedOrderingDispatchAllowed(getGpgpuCommandStreamReceiver(), numWaitEvents); + return RelaxedOrderingHelper::isRelaxedOrderingDispatchAllowed(gpgpuCsr, numWaitEvents); } } // namespace NEO diff --git a/opencl/test/unit_test/command_queue/command_queue_hw_1_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_hw_1_tests.cpp index 5a051c766b..9904d223b5 100644 --- a/opencl/test/unit_test/command_queue/command_queue_hw_1_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_hw_1_tests.cpp @@ -1236,6 +1236,7 @@ HWTEST_F(CommandQueueHwTest, givenRelaxedOrderingEnabledWhenCheckingIfAllowedByC MockCommandQueueHw mockCmdQueueHw{context, pClDevice, nullptr}; auto &ultCsr = mockCmdQueueHw.getUltCommandStreamReceiver(); + ultCsr.heapStorageRequiresRecyclingTag = false; auto directSubmission = new MockDirectSubmissionHw>(ultCsr); directSubmission->relaxedOrderingEnabled = true; @@ -1256,4 +1257,8 @@ HWTEST_F(CommandQueueHwTest, givenRelaxedOrderingEnabledWhenCheckingIfAllowedByC EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(0)); EXPECT_TRUE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(1)); + + ultCsr.heapStorageRequiresRecyclingTag = true; + EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(0)); + EXPECT_FALSE(mockCmdQueueHw.relaxedOrderingForGpgpuAllowed(1)); } diff --git a/shared/source/command_stream/command_stream_receiver.h b/shared/source/command_stream/command_stream_receiver.h index f6b9550f48..dd033890ed 100644 --- a/shared/source/command_stream/command_stream_receiver.h +++ b/shared/source/command_stream/command_stream_receiver.h @@ -405,6 +405,8 @@ class CommandStreamReceiver { return globalStatelessHeap.get(); } + bool isRecyclingTagForHeapStorageRequired() const { return heapStorageRequiresRecyclingTag; } + protected: void cleanupResources(); void printDeviceIndex();