Simplify RootDevice class

Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2021-04-22 14:28:27 +00:00
committed by Compute-Runtime-Automation
parent 3521d89106
commit 176270114b
8 changed files with 66 additions and 49 deletions

View File

@@ -57,7 +57,46 @@ Device::~Device() {
executionEnvironment->decRefInternal();
}
SubDevice *Device::createSubDevice(uint32_t subDeviceIndex) {
return Device::create<SubDevice>(executionEnvironment, subDeviceIndex, *getRootDevice());
}
bool Device::createSubDevices() {
if (!subDevicesAllowed()) {
return true;
}
auto deviceMask = executionEnvironment->rootDeviceEnvironments[getRootDeviceIndex()]->deviceAffinityMask;
uint32_t subDeviceCount = HwHelper::getSubDevicesCount(&getHardwareInfo());
deviceBitfield = maxNBitValue(subDeviceCount);
deviceBitfield &= deviceMask;
numSubDevices = static_cast<uint32_t>(deviceBitfield.count());
if (numSubDevices == 1) {
numSubDevices = 0;
}
UNRECOVERABLE_IF(!subdevices.empty());
if (numSubDevices) {
subdevices.resize(subDeviceCount, nullptr);
for (auto i = 0u; i < subDeviceCount; i++) {
if (!deviceBitfield.test(i)) {
continue;
}
auto subDevice = createSubDevice(i);
if (!subDevice) {
return false;
}
subdevices[i] = subDevice;
}
}
return true;
}
bool Device::createDeviceImpl() {
if (!createSubDevices()) {
return false;
}
auto &hwInfo = getHardwareInfo();
preemptionMode = PreemptionHelper::getDefaultPreemptionMode(hwInfo);
@@ -120,6 +159,8 @@ bool Device::createDeviceImpl() {
getRootDeviceEnvironment().tagsManager->initialize(*this);
}
createBindlessHeapsHelper();
return true;
}