mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Capability to exclude Engine on SubDevice
Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
047a93fde6
commit
8b89fb8541
@ -12,6 +12,8 @@
|
||||
#include "opencl/test/unit_test/fixtures/cl_device_fixture.h"
|
||||
#include "opencl/test/unit_test/fixtures/device_info_fixture.h"
|
||||
#include "opencl/test/unit_test/helpers/raii_hw_helper.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_command_queue.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_context.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_os_context.h"
|
||||
#include "opencl/test/unit_test/mocks/ult_cl_device_factory.h"
|
||||
#include "test.h"
|
||||
@ -707,9 +709,20 @@ class MockHwHelper : public HwHelperHw<GfxFamily> {
|
||||
}
|
||||
}
|
||||
|
||||
bool isSubDeviceEngineSupported(const HardwareInfo &hwInfo, const DeviceBitfield &deviceBitfield, aub_stream::EngineType engineType) const override {
|
||||
if ((deviceBitfield.to_ulong() == disableEngineSupportOnSubDevice) && (disabledSubDeviceEngineType == engineType)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static auto overrideHwHelper() {
|
||||
return RAIIHwHelperFactory<MockHwHelper<GfxFamily, ccsCount, bcsCount>>{::defaultHwInfo->platform.eRenderCoreFamily};
|
||||
}
|
||||
|
||||
uint64_t disableEngineSupportOnSubDevice = -1; // disabled by default
|
||||
aub_stream::EngineType disabledSubDeviceEngineType = aub_stream::EngineType::ENGINE_BCS;
|
||||
};
|
||||
|
||||
using GetDeviceInfoQueueFamilyTest = ::testing::Test;
|
||||
@ -756,6 +769,59 @@ HWTEST_F(GetDeviceInfoQueueFamilyTest, givenSubDeviceWhenInitializingCapsThenRet
|
||||
EXPECT_EQ(clDevice.getDeviceInfo().queueOnHostProperties, families[1].properties);
|
||||
}
|
||||
|
||||
HWTEST_F(GetDeviceInfoQueueFamilyTest, givenSubDeviceWithoutSupportedEngineWhenInitializingCapsThenReturnCorrectFamilies) {
|
||||
constexpr int bcsCount = 1;
|
||||
|
||||
using MockHwHelperT = MockHwHelper<FamilyType, 3, bcsCount>;
|
||||
|
||||
auto raiiHwHelper = MockHwHelperT::overrideHwHelper();
|
||||
MockHwHelperT &mockHwHelper = static_cast<MockHwHelperT &>(raiiHwHelper.mockHwHelper);
|
||||
|
||||
mockHwHelper.disableEngineSupportOnSubDevice = 0b10; // subdevice 1
|
||||
mockHwHelper.disabledSubDeviceEngineType = aub_stream::EngineType::ENGINE_BCS;
|
||||
|
||||
UltClDeviceFactory deviceFactory{1, 2};
|
||||
ClDevice &clDevice0 = *deviceFactory.subDevices[0];
|
||||
ClDevice &clDevice1 = *deviceFactory.subDevices[1];
|
||||
size_t paramRetSize{};
|
||||
cl_int retVal{};
|
||||
|
||||
// subdevice 0
|
||||
{
|
||||
cl_queue_family_properties_intel families[static_cast<int>(EngineGroupType::MaxEngineGroups)];
|
||||
retVal = clDevice0.getDeviceInfo(CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL, sizeof(families), families, ¶mRetSize);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ(2u, paramRetSize / sizeof(cl_queue_family_properties_intel));
|
||||
|
||||
EXPECT_EQ(CL_QUEUE_DEFAULT_CAPABILITIES_INTEL, families[0].capabilities);
|
||||
EXPECT_EQ(3u, families[0].count);
|
||||
EXPECT_EQ(clDevice0.getDeviceInfo().queueOnHostProperties, families[0].properties);
|
||||
|
||||
EXPECT_EQ(clDevice0.getQueueFamilyCapabilities(EngineGroupType::Copy), families[1].capabilities);
|
||||
EXPECT_EQ(1u, families[1].count);
|
||||
EXPECT_EQ(clDevice0.getDeviceInfo().queueOnHostProperties, families[1].properties);
|
||||
}
|
||||
|
||||
// subdevice 1
|
||||
{
|
||||
cl_queue_family_properties_intel families[static_cast<int>(EngineGroupType::MaxEngineGroups)];
|
||||
retVal = clDevice1.getDeviceInfo(CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL, sizeof(families), families, ¶mRetSize);
|
||||
EXPECT_EQ(CL_SUCCESS, retVal);
|
||||
EXPECT_EQ(1u, paramRetSize / sizeof(cl_queue_family_properties_intel));
|
||||
|
||||
EXPECT_EQ(CL_QUEUE_DEFAULT_CAPABILITIES_INTEL, families[0].capabilities);
|
||||
EXPECT_EQ(3u, families[0].count);
|
||||
EXPECT_EQ(clDevice1.getDeviceInfo().queueOnHostProperties, families[0].properties);
|
||||
|
||||
clDevice1.getExecutionEnvironment()->rootDeviceEnvironments[0]->getMutableHardwareInfo()->capabilityTable.blitterOperationsSupported = true;
|
||||
|
||||
MockContext context(&clDevice1);
|
||||
MockCommandQueue cmdQ(&context, &clDevice1, nullptr);
|
||||
|
||||
EXPECT_EQ(nullptr, cmdQ.getBcsCommandStreamReceiver());
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(GetDeviceInfoQueueFamilyTest, givenDeviceRootDeviceWhenInitializingCapsThenReturnDefaultFamily) {
|
||||
UltClDeviceFactory deviceFactory{1, 2};
|
||||
ClDevice &clDevice = *deviceFactory.rootDevices[0];
|
||||
|
Reference in New Issue
Block a user