feature: add debug flag to ignore product specific ioctl helper creation

Related-To: NEO-13527
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-12-18 11:37:17 +00:00
committed by Compute-Runtime-Automation
parent ae9a4ba031
commit 593a6c54ea
4 changed files with 53 additions and 1 deletions

View File

@@ -2230,3 +2230,53 @@ TEST(DistanceInfoTest, givenDistanceInfosWhenAssignRegionsFromDistancesThenCorre
EXPECT_EQ(1024u, memoryInfo->getMemoryRegionSize(2));
EXPECT_ANY_THROW(memoryInfo->getMemoryRegionSize(4));
}
TEST(DrmTest, GivenProductSpecificIoctlHelperAvailableWhenSetupIoctlHelperThenCreateProductSpecificOne) {
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
drm.ioctlHelper.reset();
auto productFamily = defaultHwInfo->platform.eProductFamily;
VariableBackup<std::optional<std::function<std::unique_ptr<IoctlHelper>(Drm & drm)>>> createFuncBackup{&ioctlHelperFactory[productFamily]};
static uint32_t customFuncCalled = 0;
ioctlHelperFactory[productFamily] = [](Drm &drm) -> std::unique_ptr<IoctlHelper> {
EXPECT_EQ(0u, customFuncCalled);
customFuncCalled++;
return std::make_unique<MockIoctlHelper>(drm);
};
customFuncCalled = 0;
drm.setupIoctlHelper(productFamily);
EXPECT_EQ(1u, customFuncCalled);
}
TEST(DrmTest, GivenProductSpecificIoctlHelperAvailableAndDebugFlagToIgnoreIsSetWhenSetupIoctlHelperThenDontCreateProductSpecificOne) {
DebugManagerStateRestore restore;
debugManager.flags.IgnoreProductSpecificIoctlHelper.set(true);
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
drm.ioctlHelper.reset();
auto productFamily = defaultHwInfo->platform.eProductFamily;
VariableBackup<std::optional<std::function<std::unique_ptr<IoctlHelper>(Drm & drm)>>> createFuncBackup{&ioctlHelperFactory[productFamily]};
static uint32_t customFuncCalled = 0;
ioctlHelperFactory[productFamily] = [](Drm &drm) -> std::unique_ptr<IoctlHelper> {
EXPECT_EQ(0u, customFuncCalled);
customFuncCalled++;
return std::make_unique<MockIoctlHelper>(drm);
};
customFuncCalled = 0;
drm.setupIoctlHelper(productFamily);
EXPECT_EQ(0u, customFuncCalled);
}