Refactor Device::getEngine to get Engine by its type
Change-Id: I640b32c0d226686e6648d39dd62404f5d507c98f Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
parent
6f84496e78
commit
a8db48dbca
|
@ -36,7 +36,7 @@ class CommandQueueHw : public CommandQueue {
|
|||
|
||||
if (clPriority & static_cast<cl_queue_priority_khr>(CL_QUEUE_PRIORITY_LOW_KHR)) {
|
||||
priority = QueuePriority::LOW;
|
||||
this->engine = &device->getEngine(EngineInstanceConstants::lowPriorityGpgpuEngineIndex);
|
||||
this->engine = &device->getEngine(EngineType::ENGINE_RCS, true);
|
||||
} else if (clPriority & static_cast<cl_queue_priority_khr>(CL_QUEUE_PRIORITY_MED_KHR)) {
|
||||
priority = QueuePriority::MEDIUM;
|
||||
} else if (clPriority & static_cast<cl_queue_priority_khr>(CL_QUEUE_PRIORITY_HIGH_KHR)) {
|
||||
|
|
|
@ -277,4 +277,14 @@ void Device::initMaxPowerSavingMode() {
|
|||
engine.commandStreamReceiver->peekKmdNotifyHelper()->initMaxPowerSavingMode();
|
||||
}
|
||||
}
|
||||
|
||||
EngineControl &Device::getEngine(EngineType engineType, bool lowPriority) {
|
||||
for (auto &engine : engines) {
|
||||
if (engine.osContext->getEngineType() == engineType &&
|
||||
engine.osContext->isLowPriority() == lowPriority) {
|
||||
return engine;
|
||||
}
|
||||
}
|
||||
UNRECOVERABLE_IF(true);
|
||||
}
|
||||
} // namespace OCLRT
|
||||
|
|
|
@ -72,7 +72,7 @@ class Device : public BaseObject<_cl_device_id> {
|
|||
deviceInfo.force32BitAddressess = value;
|
||||
}
|
||||
|
||||
EngineControl &getEngine(uint32_t engineId);
|
||||
EngineControl &getEngine(EngineType engineType, bool lowPriority);
|
||||
EngineControl &getDefaultEngine();
|
||||
|
||||
const char *getProductAbbrev() const;
|
||||
|
@ -173,12 +173,8 @@ inline void Device::getCap(const void *&src,
|
|||
retSize = size = DeviceInfoTable::Map<Param>::size;
|
||||
}
|
||||
|
||||
inline EngineControl &Device::getEngine(uint32_t engineId) {
|
||||
return engines[engineId];
|
||||
}
|
||||
|
||||
inline EngineControl &Device::getDefaultEngine() {
|
||||
return getEngine(defaultEngineIndex);
|
||||
return engines[defaultEngineIndex];
|
||||
}
|
||||
|
||||
inline MemoryManager *Device::getMemoryManager() const {
|
||||
|
|
|
@ -47,14 +47,26 @@ TEST_F(DeviceTest, getSupportedClVersion) {
|
|||
EXPECT_EQ(version, version2);
|
||||
}
|
||||
|
||||
TEST_F(DeviceTest, getTagAddress) {
|
||||
for (uint32_t i = 0; i < static_cast<uint32_t>(HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances().size()); i++) {
|
||||
auto tagAddress = pDevice->getEngine(i).commandStreamReceiver->getTagAddress();
|
||||
TEST_F(DeviceTest, givenDeviceWhenEngineIsCreatedThenSetInitialValueForTag) {
|
||||
for (auto &engine : pDevice->engines) {
|
||||
auto tagAddress = engine.commandStreamReceiver->getTagAddress();
|
||||
ASSERT_NE(nullptr, const_cast<uint32_t *>(tagAddress));
|
||||
EXPECT_EQ(initialHardwareTag, *tagAddress);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DeviceTest, givenDeviceWhenAskedForSpecificEngineThenRetrunIt) {
|
||||
auto &engines = HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances();
|
||||
for (uint32_t i = 0; i < engines.size(); i++) {
|
||||
bool lowPriority = (EngineInstanceConstants::lowPriorityGpgpuEngineIndex == i);
|
||||
auto &deviceEngine = pDevice->getEngine(engines[i], lowPriority);
|
||||
EXPECT_EQ(deviceEngine.osContext->getEngineType(), engines[i]);
|
||||
EXPECT_EQ(deviceEngine.osContext->isLowPriority(), lowPriority);
|
||||
}
|
||||
|
||||
EXPECT_THROW(pDevice->getEngine(EngineType::ENGINE_VCS, false), std::exception);
|
||||
}
|
||||
|
||||
TEST_F(DeviceTest, WhenGetOSTimeThenNotNull) {
|
||||
auto pDevice = std::unique_ptr<Device>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(nullptr));
|
||||
|
||||
|
@ -159,22 +171,22 @@ TEST(DeviceCreation, givenMultiDeviceWhenTheyAreCreatedThenEachOsContextHasUniqu
|
|||
const size_t numDevices = 2;
|
||||
const auto &numGpgpuEngines = static_cast<uint32_t>(HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances().size());
|
||||
|
||||
auto device1 = std::unique_ptr<Device>(Device::create<MockDevice>(nullptr, executionEnvironment, 0u));
|
||||
auto device2 = std::unique_ptr<Device>(Device::create<MockDevice>(nullptr, executionEnvironment, 1u));
|
||||
auto device1 = std::unique_ptr<MockDevice>(Device::create<MockDevice>(nullptr, executionEnvironment, 0u));
|
||||
auto device2 = std::unique_ptr<MockDevice>(Device::create<MockDevice>(nullptr, executionEnvironment, 1u));
|
||||
|
||||
auto ®isteredEngines = executionEnvironment->memoryManager->getRegisteredEngines();
|
||||
EXPECT_EQ(numGpgpuEngines * numDevices, registeredEngines.size());
|
||||
|
||||
for (uint32_t i = 0; i < numGpgpuEngines; i++) {
|
||||
EXPECT_EQ(i, device1->getEngine(i).osContext->getContextId());
|
||||
EXPECT_EQ(1u, device1->getEngine(i).osContext->getDeviceBitfield().to_ulong());
|
||||
EXPECT_EQ(i + numGpgpuEngines, device2->getEngine(i).osContext->getContextId());
|
||||
EXPECT_EQ(2u, device2->getEngine(i).osContext->getDeviceBitfield().to_ulong());
|
||||
EXPECT_EQ(i, device1->engines[i].osContext->getContextId());
|
||||
EXPECT_EQ(1u, device1->engines[i].osContext->getDeviceBitfield().to_ulong());
|
||||
EXPECT_EQ(i + numGpgpuEngines, device2->engines[i].osContext->getContextId());
|
||||
EXPECT_EQ(2u, device2->engines[i].osContext->getDeviceBitfield().to_ulong());
|
||||
|
||||
EXPECT_EQ(registeredEngines[i].commandStreamReceiver,
|
||||
device1->getEngine(i).commandStreamReceiver);
|
||||
device1->engines[i].commandStreamReceiver);
|
||||
EXPECT_EQ(registeredEngines[i + numGpgpuEngines].commandStreamReceiver,
|
||||
device2->getEngine(i).commandStreamReceiver);
|
||||
device2->engines[i].commandStreamReceiver);
|
||||
}
|
||||
EXPECT_EQ(numGpgpuEngines * numDevices, executionEnvironment->memoryManager->getRegisteredEnginesCount());
|
||||
}
|
||||
|
@ -202,8 +214,8 @@ TEST(DeviceCreation, givenMultiDeviceWhenTheyAreCreatedThenEachDeviceHasSeperate
|
|||
for (uint32_t i = 0; i < static_cast<uint32_t>(numGpgpuEngines); i++) {
|
||||
EXPECT_NE(nullptr, executionEnvironment->commandStreamReceivers[0][i]);
|
||||
EXPECT_NE(nullptr, executionEnvironment->commandStreamReceivers[1][i]);
|
||||
EXPECT_EQ(executionEnvironment->commandStreamReceivers[0][i].get(), device1->getEngine(i).commandStreamReceiver);
|
||||
EXPECT_EQ(executionEnvironment->commandStreamReceivers[1][i].get(), device2->getEngine(i).commandStreamReceiver);
|
||||
EXPECT_EQ(executionEnvironment->commandStreamReceivers[0][i].get(), device1->engines[i].commandStreamReceiver);
|
||||
EXPECT_EQ(executionEnvironment->commandStreamReceivers[1][i].get(), device2->engines[i].commandStreamReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1472,8 +1472,8 @@ using GraphicsAllocationTests = ::testing::Test;
|
|||
|
||||
HWTEST_F(GraphicsAllocationTests, givenAllocationUsedOnlyByNonDefaultCsrWhenCheckingUsageBeforeDestroyThenStoreItAsTemporaryAllocation) {
|
||||
auto device = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
|
||||
auto nonDefaultOsContext = device->getEngine(EngineInstanceConstants::lowPriorityGpgpuEngineIndex).osContext;
|
||||
auto nonDefaultCsr = reinterpret_cast<UltCommandStreamReceiver<FamilyType> *>(device->getEngine(EngineInstanceConstants::lowPriorityGpgpuEngineIndex).commandStreamReceiver);
|
||||
auto nonDefaultOsContext = device->engines[EngineInstanceConstants::lowPriorityGpgpuEngineIndex].osContext;
|
||||
auto nonDefaultCsr = reinterpret_cast<UltCommandStreamReceiver<FamilyType> *>(device->engines[EngineInstanceConstants::lowPriorityGpgpuEngineIndex].commandStreamReceiver);
|
||||
|
||||
auto memoryManager = device->getExecutionEnvironment()->memoryManager.get();
|
||||
auto graphicsAllocation = memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
|
||||
|
@ -1519,8 +1519,8 @@ HWTEST_F(GraphicsAllocationTests, givenAllocationUsedByManyOsContextsWhenCheckin
|
|||
memoryManager->multiContextResourceDestructor.reset(multiContextDestructor);
|
||||
|
||||
auto device = std::unique_ptr<MockDevice>(MockDevice::create<MockDevice>(platformDevices[0], executionEnvironment, 0u));
|
||||
auto nonDefaultOsContext = device->getEngine(EngineInstanceConstants::lowPriorityGpgpuEngineIndex).osContext;
|
||||
auto nonDefaultCsr = reinterpret_cast<UltCommandStreamReceiver<FamilyType> *>(device->getEngine(EngineInstanceConstants::lowPriorityGpgpuEngineIndex).commandStreamReceiver);
|
||||
auto nonDefaultOsContext = device->engines[EngineInstanceConstants::lowPriorityGpgpuEngineIndex].osContext;
|
||||
auto nonDefaultCsr = reinterpret_cast<UltCommandStreamReceiver<FamilyType> *>(device->engines[EngineInstanceConstants::lowPriorityGpgpuEngineIndex].commandStreamReceiver);
|
||||
auto defaultCsr = reinterpret_cast<UltCommandStreamReceiver<FamilyType> *>(device->getDefaultEngine().commandStreamReceiver);
|
||||
auto defaultOsContext = device->getDefaultEngine().osContext;
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ extern CommandStreamReceiver *createCommandStream(ExecutionEnvironment &executio
|
|||
|
||||
class MockDevice : public Device {
|
||||
public:
|
||||
using Device::engines;
|
||||
using Device::executionEnvironment;
|
||||
using Device::initializeCaps;
|
||||
|
||||
|
|
Loading…
Reference in New Issue