diff --git a/opencl/source/cl_device/cl_device.cpp b/opencl/source/cl_device/cl_device.cpp index 569934d197..ebb970de58 100644 --- a/opencl/source/cl_device/cl_device.cpp +++ b/opencl/source/cl_device/cl_device.cpp @@ -226,6 +226,11 @@ cl_command_queue_capabilities_intel ClDevice::getQueueFamilyCapabilities(EngineG cl_command_queue_capabilities_intel disabledProperties = 0u; if (hwHelper.isCopyOnlyEngineType(type)) { disabledProperties |= static_cast(CL_QUEUE_CAPABILITY_KERNEL_INTEL); + disabledProperties |= static_cast(CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL); // clEnqueueFillBuffer + disabledProperties |= static_cast(CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL); // clEnqueueCopyImage + disabledProperties |= static_cast(CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL); // clEnqueueFillImage + disabledProperties |= static_cast(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL); // clEnqueueCopyBufferToImage + disabledProperties |= static_cast(CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL); // clEnqueueCopyImageToBuffer } if (disabledProperties != 0) { diff --git a/opencl/test/unit_test/device/device_tests.cpp b/opencl/test/unit_test/device/device_tests.cpp index 87f2048fc9..f77614e937 100644 --- a/opencl/test/unit_test/device/device_tests.cpp +++ b/opencl/test/unit_test/device/device_tests.cpp @@ -486,13 +486,21 @@ TEST(DeviceGenEngineTest, whenGettingQueueFamilyCapabilitiesAllThenReturnCorrect EXPECT_EQ(expectedProperties, MockClDevice::getQueueFamilyCapabilitiesAll()); } -TEST(DeviceGenEngineTest, givenCopyQueueWhenGettingQueueFamilyCapabilitiesThenDoNotReturnKernel) { - const auto propertiesAll = MockClDevice::getQueueFamilyCapabilitiesAll(); - const auto propertiesWithoutKernel = setBits(propertiesAll, false, CL_QUEUE_CAPABILITY_KERNEL_INTEL); - +TEST(DeviceGenEngineTest, givenComputeQueueWhenGettingQueueFamilyCapabilitiesThenDoNotReturnKernel) { auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); - EXPECT_EQ(CL_QUEUE_DEFAULT_CAPABILITIES_INTEL, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Compute)); EXPECT_EQ(CL_QUEUE_DEFAULT_CAPABILITIES_INTEL, device->getQueueFamilyCapabilities(NEO::EngineGroupType::RenderCompute)); - EXPECT_EQ(propertiesWithoutKernel, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Copy)); +} + +TEST(DeviceGenEngineTest, givenCopyQueueWhenGettingQueueFamilyCapabilitiesThenDoNotReturnKernel) { + const cl_command_queue_capabilities_intel capabilitiesNotSupportedOnBlitter = CL_QUEUE_CAPABILITY_KERNEL_INTEL | + CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL | + CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL | + CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL | + CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL | + CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL; + const cl_command_queue_capabilities_intel expectedBlitterCapabilities = setBits(MockClDevice::getQueueFamilyCapabilitiesAll(), false, capabilitiesNotSupportedOnBlitter); + + auto device = std::make_unique(MockDevice::createWithNewExecutionEnvironment(defaultHwInfo.get())); + EXPECT_EQ(expectedBlitterCapabilities, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Copy)); }