mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-09 22:43:00 +08:00
Ensure that ioctl helper is initialized only once
Related-To: NEO-6999 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
de75e51228
commit
ffe77d06e3
@@ -27,17 +27,13 @@ class DrmQueryMock : public DrmMock {
|
||||
context.hwInfo = rootDeviceEnvironment.getHardwareInfo();
|
||||
callBaseIsVmBindAvailable = true;
|
||||
|
||||
setupIoctlHelper(IGFX_UNKNOWN);
|
||||
this->ioctlHelper = std::make_unique<IoctlHelperPrelim20>();
|
||||
|
||||
EXPECT_TRUE(queryMemoryInfo());
|
||||
EXPECT_EQ(2u + virtualMemoryIds.size(), ioctlCallsCount);
|
||||
ioctlCallsCount = 0;
|
||||
}
|
||||
|
||||
void getPrelimVersion(std::string &prelimVersion) override {
|
||||
prelimVersion = "2.0";
|
||||
}
|
||||
|
||||
DrmMockPrelimContext context{
|
||||
nullptr,
|
||||
rootDeviceEnvironment,
|
||||
|
||||
@@ -17,11 +17,7 @@ class DrmMockCustomPrelim : public DrmMockCustom {
|
||||
using Drm::memoryInfo;
|
||||
|
||||
DrmMockCustomPrelim(RootDeviceEnvironment &rootDeviceEnvironment) : DrmMockCustom(rootDeviceEnvironment) {
|
||||
setupIoctlHelper(IGFX_UNKNOWN);
|
||||
}
|
||||
|
||||
void getPrelimVersion(std::string &prelimVersion) override {
|
||||
prelimVersion = "2.0";
|
||||
this->ioctlHelper = std::make_unique<IoctlHelperPrelim20>();
|
||||
}
|
||||
|
||||
int ioctlExtra(DrmIoctl request, void *arg) override {
|
||||
|
||||
@@ -20,6 +20,7 @@ class DrmTipMock : public DrmMock {
|
||||
DrmTipMock(RootDeviceEnvironment &rootDeviceEnvironment) : DrmTipMock(rootDeviceEnvironment, defaultHwInfo.get()) {}
|
||||
DrmTipMock(RootDeviceEnvironment &rootDeviceEnvironment, const HardwareInfo *inputHwInfo) : DrmMock(rootDeviceEnvironment) {
|
||||
rootDeviceEnvironment.setHwInfo(inputHwInfo);
|
||||
ioctlHelper.reset();
|
||||
setupIoctlHelper(inputHwInfo->platform.eProductFamily);
|
||||
}
|
||||
|
||||
|
||||
@@ -1148,7 +1148,7 @@ TEST(DrmTest, GivenBatchPendingGreaterThanZeroResetStatsWhenIsGpuHangIsCalledThe
|
||||
EXPECT_TRUE(isGpuHangDetected);
|
||||
}
|
||||
|
||||
TEST(DrmTest, givenSetupIoctlHelperThenIoctlHelperNotNull) {
|
||||
TEST(DrmTest, givenSetupIoctlHelperWhenCalledTwiceThenIoctlHelperIsSetOnlyOnce) {
|
||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
@@ -1159,6 +1159,9 @@ TEST(DrmTest, givenSetupIoctlHelperThenIoctlHelperNotNull) {
|
||||
drm.setupIoctlHelper(productFamily);
|
||||
|
||||
EXPECT_NE(nullptr, drm.ioctlHelper.get());
|
||||
auto ioctlHelper = drm.ioctlHelper.get();
|
||||
drm.setupIoctlHelper(productFamily);
|
||||
EXPECT_EQ(ioctlHelper, drm.ioctlHelper.get());
|
||||
}
|
||||
|
||||
TEST(DrmWrapperTest, WhenGettingDrmIoctlGetparamValueThenIoctlHelperIsNotNeeded) {
|
||||
|
||||
@@ -46,7 +46,7 @@ class IoctlHelperPrelimFixture : public ::testing::Test {
|
||||
executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
drm = std::make_unique<DrmPrelimMock>(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
drm->setupIoctlHelper(executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo()->platform.eProductFamily);
|
||||
drm->ioctlHelper = std::make_unique<IoctlHelperPrelim20>();
|
||||
}
|
||||
|
||||
std::unique_ptr<ExecutionEnvironment> executionEnvironment;
|
||||
|
||||
@@ -106,6 +106,11 @@ TEST_F(IoctlPrelimHelperTests, givenPrelimsWhenTranslateToMemoryRegionsThenRetur
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(IoctlPrelimHelperTests, whenCloneIsCalledThenValidPtrIsReturned) {
|
||||
std::unique_ptr<IoctlHelper> cloned(ioctlHelper.clone());
|
||||
EXPECT_NE(nullptr, cloned);
|
||||
}
|
||||
|
||||
TEST_F(IoctlPrelimHelperTests, givenEmptyRegionInstanceClassWhenCreatingVmControlRegionExtThenNullptrIsReturned) {
|
||||
std::optional<MemoryClassInstance> regionInstanceClass{};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user