OpenCL Queue Families extension 9/n

Disable capabilities for BCS

Signed-off-by: Maciej Dziuban <maciej.dziuban@intel.com>
Related-To: NEO-5120
This commit is contained in:
Maciej Dziuban
2020-12-16 16:04:38 +00:00
committed by Compute-Runtime-Automation
parent 510ba83e1e
commit 60cb486086
2 changed files with 19 additions and 6 deletions

View File

@@ -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_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_KERNEL_INTEL);
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL); // clEnqueueFillBuffer
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL); // clEnqueueCopyImage
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL); // clEnqueueFillImage
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL); // clEnqueueCopyBufferToImage
disabledProperties |= static_cast<cl_command_queue_capabilities_intel>(CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL); // clEnqueueCopyImageToBuffer
}
if (disabledProperties != 0) {

View File

@@ -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<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(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<MockClDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(defaultHwInfo.get()));
EXPECT_EQ(expectedBlitterCapabilities, device->getQueueFamilyCapabilities(NEO::EngineGroupType::Copy));
}