Skip to content

Commit 60cb486

Browse files
OpenCL Queue Families extension 9/n
Disable capabilities for BCS Signed-off-by: Maciej Dziuban <[email protected]> Related-To: NEO-5120
1 parent 510ba83 commit 60cb486

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

opencl/source/cl_device/cl_device.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,11 @@ cl_command_queue_capabilities_intel ClDevice::getQueueFamilyCapabilities(EngineG
226226
cl_command_queue_capabilities_intel disabledProperties = 0u;
227227
if (hwHelper.isCopyOnlyEngineType(type)) {
228228
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_KERNEL_INTEL);
229+
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL); // clEnqueueFillBuffer
230+
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL); // clEnqueueCopyImage
231+
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL); // clEnqueueFillImage
232+
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL); // clEnqueueCopyBufferToImage
233+
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL); // clEnqueueCopyImageToBuffer
229234
}
230235

231236
if (disabledProperties != 0) {

opencl/test/unit_test/device/device_tests.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -486,13 +486,21 @@ TEST(DeviceGenEngineTest, whenGettingQueueFamilyCapabilitiesAllThenReturnCorrect
486486
EXPECT_EQ(expectedProperties, MockClDevice::getQueueFamilyCapabilitiesAll());
487487
}
488488

489-
TEST(DeviceGenEngineTest, givenCopyQueueWhenGettingQueueFamilyCapabilitiesThenDoNotReturnKernel) {
490-
const auto propertiesAll = MockClDevice::getQueueFamilyCapabilitiesAll();
491-
const auto propertiesWithoutKernel = setBits(propertiesAll, false, CL_QUEUE_CAPABILITY_KERNEL_INTEL);
492-
489+
TEST(DeviceGenEngineTest, givenComputeQueueWhenGettingQueueFamilyCapabilitiesThenDoNotReturnKernel) {
493490
auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(defaultHwInfo.get()));
494-
495491
EXPECT_EQ(CL_QUEUE_DEFAULT_CAPABILITIES_INTEL, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Compute));
496492
EXPECT_EQ(CL_QUEUE_DEFAULT_CAPABILITIES_INTEL, device->getQueueFamilyCapabilities(NEO::EngineGroupType::RenderCompute));
497-
EXPECT_EQ(propertiesWithoutKernel, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Copy));
493+
}
494+
495+
TEST(DeviceGenEngineTest, givenCopyQueueWhenGettingQueueFamilyCapabilitiesThenDoNotReturnKernel) {
496+
const cl_command_queue_capabilities_intel capabilitiesNotSupportedOnBlitter = CL_QUEUE_CAPABILITY_KERNEL_INTEL |
497+
CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL |
498+
CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL |
499+
CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL |
500+
CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL |
501+
CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL;
502+
const cl_command_queue_capabilities_intel expectedBlitterCapabilities = setBits(MockClDevice::getQueueFamilyCapabilitiesAll(), false, capabilitiesNotSupportedOnBlitter);
503+
504+
auto device = std::make_unique<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(defaultHwInfo.get()));
505+
EXPECT_EQ(expectedBlitterCapabilities, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Copy));
498506
}

0 commit comments

Comments
 (0)