Do not override immediate dispatch while direct submission enabled

Related-To: NEO-5007

Change-Id: I32330a275f78e825c847b0e380ce426f0c7412f5
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
Lukasz Jobczyk
2020-09-02 13:17:16 +02:00
committed by sys_ocldev
parent dbb7f40def
commit 9158dec82d
2 changed files with 21 additions and 1 deletions

View File

@ -64,7 +64,10 @@ class CommandQueueHw : public CommandQueue {
}
if (getCmdQueueProperties<cl_queue_properties>(properties, CL_QUEUE_PROPERTIES) & static_cast<cl_queue_properties>(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE)) {
getGpgpuCommandStreamReceiver().overrideDispatchPolicy(DispatchMode::BatchedDispatch);
auto &csr = getGpgpuCommandStreamReceiver();
if (!csr.isDirectSubmissionEnabled()) {
csr.overrideDispatchPolicy(DispatchMode::BatchedDispatch);
}
if (DebugManager.flags.CsrDispatchMode.get() != 0) {
getGpgpuCommandStreamReceiver().overrideDispatchPolicy(static_cast<DispatchMode>(DebugManager.flags.CsrDispatchMode.get()));
}

View File

@ -83,6 +83,23 @@ HWTEST_F(clCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenComma
retVal = clReleaseCommandQueue(cmdq);
}
HWTEST_F(clCreateCommandQueueTest, GivenOoqParametersAndDirectSubmissionEnabledWhenQueueIsCreatedThenCommandStreamReceiverDoesNotSwitchToBatchingMode) {
DebugManagerStateRestore restorer;
DebugManager.flags.EnableDirectSubmission.set(1);
cl_int retVal = CL_SUCCESS;
cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE;
auto clDevice = castToObject<ClDevice>(testedClDevice);
auto mockDevice = reinterpret_cast<MockDevice *>(&clDevice->getDevice());
auto &csr = mockDevice->getUltCommandStreamReceiver<FamilyType>();
csr.directSubmissionAvailable = true;
EXPECT_EQ(DispatchMode::ImmediateDispatch, csr.dispatchMode);
auto cmdq = clCreateCommandQueue(pContext, testedClDevice, ooq, &retVal);
EXPECT_EQ(DispatchMode::ImmediateDispatch, csr.dispatchMode);
retVal = clReleaseCommandQueue(cmdq);
}
HWTEST_F(clCreateCommandQueueTest, GivenForcedDispatchModeAndOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverDoesntSwitchToBatchingMode) {
DebugManagerStateRestore restorer;
DebugManager.flags.CsrDispatchMode.set(static_cast<int32_t>(DispatchMode::ImmediateDispatch));