Skip to content

Commit e790177

Browse files
Improve enqueue kernel error handling.
- Do not allow to enqueue parent kernel if there is no device queue. Change-Id: I0f06b8ed2387fc87abd652653f2c8bb8c4939a12 Signed-off-by: Michal Mrozek <michal.mrozek@intel.com>
1 parent 5ab6386 commit e790177

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

runtime/command_queue/enqueue_kernel.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueKernel(
4040
auto &kernel = *castToObject<Kernel>(clKernel);
4141
const auto &kernelInfo = kernel.getKernelInfo();
4242

43+
if (kernel.isParentKernel && !this->context->getDefaultDeviceQueue()) {
44+
return CL_INVALID_OPERATION;
45+
}
46+
4347
if (!kernel.isPatched()) {
4448
if (event) {
4549
*event = nullptr;

unit_tests/command_queue/enqueue_kernel_2_tests.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,3 +882,16 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueAuxKernelTests, givenParentKernelWhenAuxTrans
882882
EXPECT_EQ(1u, cmdQ.waitCalled);
883883
}
884884
}
885+
886+
HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueAuxKernelTests, givenParentKernelButNoDeviceQueueWhenEnqueueIsCalledItReturnsInvalidOperation) {
887+
if (pDevice->getSupportedClVersion() >= 20) {
888+
MyCmdQ<FamilyType> cmdQ(context, pDevice);
889+
size_t gws[3] = {1, 0, 0};
890+
891+
std::unique_ptr<MockParentKernel> parentKernel(MockParentKernel::create(*context, false, false, false, false, false));
892+
parentKernel->initialize();
893+
894+
auto status = cmdQ.enqueueKernel(parentKernel.get(), 1, nullptr, gws, nullptr, 0, nullptr, nullptr);
895+
EXPECT_EQ(CL_INVALID_OPERATION, status);
896+
}
897+
}

0 commit comments

Comments
 (0)