Disable OCL RelaxedOrdering if tag update is required

Related-To: NEO-7458

Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz
2023-03-15 12:57:15 +00:00
committed by Compute-Runtime-Automation
parent e62c5e25d5
commit 686790274d
3 changed files with 11 additions and 2 deletions

View File

@@ -1487,11 +1487,13 @@ bool CommandQueueHw<GfxFamily>::isBlitAuxTranslationRequired(const MultiDispatch
template <typename GfxFamily>
bool CommandQueueHw<GfxFamily>::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

View File

@@ -1236,6 +1236,7 @@ HWTEST_F(CommandQueueHwTest, givenRelaxedOrderingEnabledWhenCheckingIfAllowedByC
MockCommandQueueHw<FamilyType> mockCmdQueueHw{context, pClDevice, nullptr};
auto &ultCsr = mockCmdQueueHw.getUltCommandStreamReceiver();
ultCsr.heapStorageRequiresRecyclingTag = false;
auto directSubmission = new MockDirectSubmissionHw<FamilyType, RenderDispatcher<FamilyType>>(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));
}

View File

@@ -405,6 +405,8 @@ class CommandStreamReceiver {
return globalStatelessHeap.get();
}
bool isRecyclingTagForHeapStorageRequired() const { return heapStorageRequiresRecyclingTag; }
protected:
void cleanupResources();
void printDeviceIndex();