diff --git a/opencl/test/unit_test/device/sub_device_tests.cpp b/opencl/test/unit_test/device/sub_device_tests.cpp index 2877f69af8..2303c428ce 100644 --- a/opencl/test/unit_test/device/sub_device_tests.cpp +++ b/opencl/test/unit_test/device/sub_device_tests.cpp @@ -332,6 +332,7 @@ struct EngineInstancedDeviceTests : public ::testing::Test { isEngineInstanced &= (engineType == subDevice->engineInstancedType); isEngineInstanced &= (subDeviceIndex == subDevice->getSubDeviceIndex()); isEngineInstanced &= (deviceBitfield == subDevice->getDeviceBitfield()); + isEngineInstanced &= (subDevice->getEngines().size() == 1); return isEngineInstanced; } @@ -366,49 +367,21 @@ struct EngineInstancedDeviceTests : public ::testing::Test { template bool hasEngineInstancedEngines(MockDeviceT *device, aub_stream::EngineType engineType) { - bool regularCcsFound = false; - bool internalCcsFound = false; - bool lowPriorityCcsFound = false; - bool cooperativeCcsFound = false; + if (device->getEngines().size() != 1) { + return false; + } OsContext *defaultOsContext = device->getDefaultEngine().osContext; EXPECT_EQ(engineType, defaultOsContext->getEngineType()); EXPECT_EQ(EngineUsage::Regular, defaultOsContext->getEngineUsage()); EXPECT_TRUE(defaultOsContext->isDefaultContext()); - for (auto &engine : device->engines) { - if ((engine.getEngineType() != engineType) && !EngineHelpers::isBcs(engine.getEngineType())) { - return false; - } + auto &engine = device->getEngines()[0]; - EXPECT_EQ(EngineHelpers::isCcs(engine.getEngineType()), engine.osContext->isEngineInstanced()); + EXPECT_EQ(engine.getEngineType(), engineType); + EXPECT_TRUE(engine.osContext->isRegular()); - auto osContext = engine.osContext; - - if (engine.getEngineType() == engineType) { - if (osContext->isRegular()) { - EXPECT_FALSE(regularCcsFound); - regularCcsFound = true; - } else if (osContext->isLowPriority()) { - EXPECT_FALSE(lowPriorityCcsFound); - lowPriorityCcsFound = true; - } else if (osContext->isInternalEngine()) { - EXPECT_FALSE(internalCcsFound); - internalCcsFound = true; - } else if (osContext->getEngineUsage() == EngineUsage::Cooperative) { - EXPECT_FALSE(cooperativeCcsFound); - cooperativeCcsFound = true; - } else { - EXPECT_TRUE(false); - } - } else if (!EngineHelpers::isBcs(engine.getEngineType())) { - EXPECT_TRUE(false); - } - } - - auto &hwInfo = device->getHardwareInfo(); - return (regularCcsFound && internalCcsFound && lowPriorityCcsFound) && - (!HwHelper::get(hwInfo.platform.eRenderCoreFamily).isCooperativeEngineSupported(hwInfo) || cooperativeCcsFound); + return true; } DebugManagerStateRestore restorer; diff --git a/shared/source/device/device.cpp b/shared/source/device/device.cpp index bf7893b7af..bb0e81808e 100644 --- a/shared/source/device/device.cpp +++ b/shared/source/device/device.cpp @@ -261,34 +261,14 @@ bool Device::createDeviceImpl() { return true; } -void Device::translateToEngineInstanced(EngineInstancesContainer &engineInstancesContainer) { - EngineInstancesContainer newEngines; - - for (auto &engine : engineInstancesContainer) { - if (EngineHelpers::isBcs(engine.first) || (engine.first == this->engineInstancedType) || - (engine.second != EngineUsage::Regular && engine.second != EngineUsage::Cooperative)) { - newEngines.push_back(engine); - } else { - continue; - } - - // Override non-Regular (internal, low priority, ..) to engineInstancedType - if (newEngines.rbegin()->second != EngineUsage::Regular && !EngineHelpers::isBcs(newEngines.rbegin()->first)) { - newEngines.rbegin()->first = this->engineInstancedType; - } +bool Device::createEngines() { + if (engineInstanced) { + return createEngine(0, {engineInstancedType, EngineUsage::Regular}); } - std::swap(newEngines, engineInstancesContainer); -} - -bool Device::createEngines() { auto &hwInfo = getHardwareInfo(); auto gpgpuEngines = HwHelper::get(hwInfo.platform.eRenderCoreFamily).getGpgpuEngineInstances(hwInfo); - if (engineInstanced) { - translateToEngineInstanced(gpgpuEngines); - } - uint32_t deviceCsrIndex = 0; for (auto &engine : gpgpuEngines) { if (!createEngine(deviceCsrIndex++, engine)) { diff --git a/shared/source/device/device.h b/shared/source/device/device.h index f08947edb0..7b4b8bb806 100644 --- a/shared/source/device/device.h +++ b/shared/source/device/device.h @@ -157,7 +157,6 @@ class Device : public ReferenceTrackedObject { virtual bool genericSubDevicesAllowed(); bool engineInstancedSubDevicesAllowed(); void setAsEngineInstanced(); - void translateToEngineInstanced(EngineInstancesContainer &engineInstancesContainer); DeviceInfo deviceInfo = {};