mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-10 12:53:42 +08:00
Check workDim when enqueueing kernel
Return CL_INVALID_WORK_DIMENSION when workDim is more than maxWorkItemDimensions. Related-To: NEO-6159 Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
5774f68d8b
commit
6c40c712d8
@ -31,6 +31,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueKernel(
|
||||
const cl_event *eventWaitList,
|
||||
cl_event *event) {
|
||||
|
||||
if (workDim > device->getDeviceInfo().maxWorkItemDimensions) {
|
||||
return CL_INVALID_WORK_DIMENSION;
|
||||
}
|
||||
|
||||
size_t region[3] = {1, 1, 1};
|
||||
size_t globalWorkOffset[3] = {0, 0, 0};
|
||||
size_t workGroupSize[3] = {1, 1, 1};
|
||||
|
@ -1427,6 +1427,19 @@ TEST_F(EnqueueKernelTest, givenEnqueueCommandThatLocalWorkgroupSizeContainsZeroW
|
||||
EXPECT_EQ(CL_INVALID_WORK_GROUP_SIZE, status);
|
||||
}
|
||||
|
||||
TEST_F(EnqueueKernelTest, givenEnqueueCommandWithWorkDimLargerThanAllowedWhenEnqueueNDRangeKernelIsCalledThenClInvalidWorkDimensionIsReturned) {
|
||||
size_t globalWorkSize[3] = {1, 1, 1};
|
||||
size_t localWorkSize[3] = {1, 1, 1};
|
||||
MockKernelWithInternals mockKernel(*pClDevice);
|
||||
auto testedWorkDim = pClDevice->deviceInfo.maxWorkItemDimensions;
|
||||
auto status = clEnqueueNDRangeKernel(pCmdQ, mockKernel.mockMultiDeviceKernel, testedWorkDim, nullptr, globalWorkSize, localWorkSize, 0, nullptr, nullptr);
|
||||
ASSERT_EQ(CL_SUCCESS, status);
|
||||
|
||||
testedWorkDim += 1;
|
||||
status = clEnqueueNDRangeKernel(pCmdQ, mockKernel.mockMultiDeviceKernel, testedWorkDim, nullptr, globalWorkSize, localWorkSize, 0, nullptr, nullptr);
|
||||
EXPECT_EQ(CL_INVALID_WORK_DIMENSION, status);
|
||||
}
|
||||
|
||||
HWTEST_F(EnqueueKernelTest, givenVMEKernelWhenEnqueueKernelThenDispatchFlagsHaveMediaSamplerRequired) {
|
||||
auto mockCsr = new MockCsrHw2<FamilyType>(*pDevice->executionEnvironment, pDevice->getRootDeviceIndex(), pDevice->getDeviceBitfield());
|
||||
mockCsr->overrideDispatchPolicy(DispatchMode::BatchedDispatch);
|
||||
|
Reference in New Issue
Block a user