mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
test: stop abusing ctors in DrmMockCustom and derived types
Calling virtual functions from within constructors is incorrect, the virtualization mechanism does not work until a constructor completes. So, instead of performing many operations in constructors, make them small and use static `create()` methods to construct the object properly and only then perform additional setup. Mocks are a prominent example how such practice degrades the code. A function called from a constructor is basically unmockable. Despite being overriden by derived type (to alter the execution path as per needs of a given test-case) the parent versions are always called. This was making test development more and more painful as at some point there is no hack to compensate for the lack of standard mechanism. Related-To: NEO-9754 Signed-off-by: Maciej Bielski <maciej.bielski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
ae49a4f1fd
commit
005b273b1e
@@ -40,12 +40,22 @@ inline constexpr int testValueMapOff = 0x7788;
|
||||
inline constexpr int testValuePrime = 0x4321;
|
||||
inline constexpr uint32_t testValueGemCreate = 0x8273;
|
||||
|
||||
class DrmMockXeDebug : public DrmMockCustom {
|
||||
public:
|
||||
struct DrmMockXeDebug : public DrmMockCustom {
|
||||
using Drm::engineInfo;
|
||||
DrmMockXeDebug(RootDeviceEnvironment &rootDeviceEnvironment) : DrmMockCustom(rootDeviceEnvironment) {
|
||||
this->ioctlHelper = std::make_unique<IoctlHelperXe>(*this);
|
||||
auto xeQueryEngines = reinterpret_cast<drm_xe_query_engines *>(queryEngines);
|
||||
|
||||
static auto create(RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto drm = std::unique_ptr<DrmMockXeDebug>(new DrmMockXeDebug{rootDeviceEnvironment});
|
||||
|
||||
drm->reset();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<NEO::GfxCoreHelper>();
|
||||
drm->ioctlExpected.contextCreate = static_cast<int>(gfxCoreHelper.getGpgpuEngineInstances(rootDeviceEnvironment).size());
|
||||
drm->ioctlExpected.contextDestroy = drm->ioctlExpected.contextCreate.load();
|
||||
drm->ioctlHelper = std::make_unique<MockIoctlHelperXeDebug>(*drm);
|
||||
drm->isVmBindAvailable();
|
||||
drm->reset();
|
||||
|
||||
drm->ioctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
auto xeQueryEngines = reinterpret_cast<drm_xe_query_engines *>(drm->queryEngines);
|
||||
xeQueryEngines->num_engines = 11;
|
||||
xeQueryEngines->engines[0] = {{DRM_XE_ENGINE_CLASS_RENDER, 0, 0}, {}};
|
||||
xeQueryEngines->engines[1] = {{DRM_XE_ENGINE_CLASS_COPY, 1, 0}, {}};
|
||||
@@ -58,7 +68,9 @@ class DrmMockXeDebug : public DrmMockCustom {
|
||||
xeQueryEngines->engines[8] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 8, 1}, {}};
|
||||
xeQueryEngines->engines[9] = {{DRM_XE_ENGINE_CLASS_VIDEO_DECODE, 9, 1}, {}};
|
||||
xeQueryEngines->engines[10] = {{DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE, 10, 0}, {}};
|
||||
};
|
||||
|
||||
return drm;
|
||||
}
|
||||
|
||||
int getErrno() override {
|
||||
if (baseErrno) {
|
||||
@@ -195,4 +207,9 @@ class DrmMockXeDebug : public DrmMockCustom {
|
||||
// Debugger ioctls
|
||||
int debuggerOpenRetval = 10; // debugFd
|
||||
uint32_t debuggerOpenVersion = 0;
|
||||
|
||||
protected:
|
||||
// Don't call directly, use the create() function
|
||||
DrmMockXeDebug(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: DrmMockCustom(std::make_unique<HwDeviceIdDrm>(mockFd, mockPciPath), rootDeviceEnvironment) {}
|
||||
};
|
||||
|
||||
@@ -52,9 +52,9 @@ TestedDrmMemoryManager::TestedDrmMemoryManager(bool enableLocalMemory,
|
||||
|
||||
BufferObject *TestedDrmMemoryManager::findAndReferenceSharedBufferObject(int boHandle, uint32_t rootDeviceIndex) {
|
||||
if (failOnfindAndReferenceSharedBufferObject) {
|
||||
DrmMockCustom drmMock(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]);
|
||||
auto patIndex = drmMock.getPatIndex(nullptr, AllocationType::buffer, CacheRegion::defaultRegion, CachePolicy::writeBack, false, false);
|
||||
return new (std::nothrow) BufferObject(rootDeviceIndex, &drmMock, patIndex, boHandle, 4096u, 2u);
|
||||
auto drmMock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]);
|
||||
auto patIndex = drmMock->getPatIndex(nullptr, AllocationType::buffer, CacheRegion::defaultRegion, CachePolicy::writeBack, false, false);
|
||||
return new (std::nothrow) BufferObject(rootDeviceIndex, drmMock.release(), patIndex, boHandle, 4096u, 2u);
|
||||
}
|
||||
return MemoryManagerCreate<DrmMemoryManager>::findAndReferenceSharedBufferObject(boHandle, rootDeviceIndex);
|
||||
}
|
||||
|
||||
@@ -226,18 +226,28 @@ int DrmMockCustom::ioctl(DrmIoctl request, void *arg) {
|
||||
return ioctlRes.load();
|
||||
}
|
||||
|
||||
DrmMockCustom::DrmMockCustom(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: Drm(std::make_unique<HwDeviceIdDrm>(mockFd, mockPciPath), rootDeviceEnvironment) {
|
||||
reset();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<NEO::GfxCoreHelper>();
|
||||
ioctlExpected.contextCreate = static_cast<int>(gfxCoreHelper.getGpgpuEngineInstances(rootDeviceEnvironment).size());
|
||||
ioctlExpected.contextDestroy = ioctlExpected.contextCreate.load();
|
||||
setupIoctlHelper(rootDeviceEnvironment.getHardwareInfo()->platform.eProductFamily);
|
||||
createVirtualMemoryAddressSpace(NEO::GfxCoreHelper::getSubDevicesCount(rootDeviceEnvironment.getHardwareInfo()));
|
||||
isVmBindAvailable(); // NOLINT(clang-analyzer-optin.cplusplus.VirtualCall)
|
||||
reset();
|
||||
std::unique_ptr<DrmMockCustom> DrmMockCustom::create(RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
return DrmMockCustom::create(std::make_unique<HwDeviceIdDrm>(mockFd, mockPciPath), rootDeviceEnvironment);
|
||||
}
|
||||
|
||||
std::unique_ptr<DrmMockCustom> DrmMockCustom::create(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto drm{new DrmMockCustom{std::move(hwDeviceId), rootDeviceEnvironment}};
|
||||
|
||||
drm->reset();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<NEO::GfxCoreHelper>();
|
||||
drm->ioctlExpected.contextCreate = static_cast<int>(gfxCoreHelper.getGpgpuEngineInstances(rootDeviceEnvironment).size());
|
||||
drm->ioctlExpected.contextDestroy = drm->ioctlExpected.contextCreate.load();
|
||||
drm->setupIoctlHelper(rootDeviceEnvironment.getHardwareInfo()->platform.eProductFamily);
|
||||
drm->createVirtualMemoryAddressSpace(NEO::GfxCoreHelper::getSubDevicesCount(rootDeviceEnvironment.getHardwareInfo()));
|
||||
drm->isVmBindAvailable();
|
||||
drm->reset();
|
||||
|
||||
return std::unique_ptr<DrmMockCustom>{drm};
|
||||
}
|
||||
|
||||
DrmMockCustom::DrmMockCustom(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: Drm(std::move(hwDeviceId), rootDeviceEnvironment) {}
|
||||
|
||||
int DrmMockCustom::waitUserFence(uint32_t ctxId, uint64_t address, uint64_t value, ValueWidth dataWidth, int64_t timeout, uint16_t flags, bool userInterrupt, uint32_t externalInterruptId, NEO::GraphicsAllocation *allocForInterruptWait) {
|
||||
waitUserFenceCall.called++;
|
||||
waitUserFenceCall.ctxId = ctxId;
|
||||
|
||||
@@ -96,10 +96,12 @@ class DrmMockTime : public DrmMockSuccess {
|
||||
}
|
||||
};
|
||||
|
||||
class DrmMockCustom : public Drm {
|
||||
public:
|
||||
struct DrmMockCustom : public Drm {
|
||||
static constexpr NEO::DriverModelType driverModelType = NEO::DriverModelType::drm;
|
||||
|
||||
static std::unique_ptr<DrmMockCustom> create(RootDeviceEnvironment &rootDeviceEnvironment);
|
||||
static std::unique_ptr<DrmMockCustom> create(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironment &rootDeviceEnvironment);
|
||||
|
||||
using Drm::bindAvailable;
|
||||
using Drm::cacheInfo;
|
||||
using Drm::checkToDisableScratchPage;
|
||||
@@ -150,8 +152,6 @@ class DrmMockCustom : public Drm {
|
||||
uint32_t called = 0u;
|
||||
};
|
||||
|
||||
DrmMockCustom(RootDeviceEnvironment &rootDeviceEnvironment);
|
||||
|
||||
int waitUserFence(uint32_t ctxId, uint64_t address, uint64_t value, ValueWidth dataWidth, int64_t timeout, uint16_t flags, bool userInterrupt, uint32_t externalInterruptId, NEO::GraphicsAllocation *allocForInterruptWait) override;
|
||||
|
||||
bool getSetPairAvailable() override;
|
||||
@@ -280,4 +280,8 @@ class DrmMockCustom : public Drm {
|
||||
|
||||
bool returnIoctlExtraErrorValue = false;
|
||||
bool callBaseQueryGttSize = false;
|
||||
|
||||
protected:
|
||||
// Don't call directly, use the create() function
|
||||
DrmMockCustom(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironment &rootDeviceEnvironment);
|
||||
};
|
||||
|
||||
@@ -7,17 +7,29 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "shared/source/helpers/gfx_core_helper.h"
|
||||
#include "shared/test/common/os_interface/linux/device_command_stream_fixture.h"
|
||||
#include "shared/test/common/os_interface/linux/device_command_stream_fixture_context.h"
|
||||
|
||||
class DrmMockCustomPrelim : public DrmMockCustom {
|
||||
public:
|
||||
struct DrmMockCustomPrelim : public DrmMockCustom {
|
||||
using Drm::cacheInfo;
|
||||
using Drm::ioctlHelper;
|
||||
using Drm::memoryInfo;
|
||||
|
||||
DrmMockCustomPrelim(RootDeviceEnvironment &rootDeviceEnvironment) : DrmMockCustom(rootDeviceEnvironment) {
|
||||
this->ioctlHelper = std::make_unique<IoctlHelperPrelim20>(*this);
|
||||
static auto create(RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto drm = std::unique_ptr<DrmMockCustomPrelim>(new DrmMockCustomPrelim{rootDeviceEnvironment});
|
||||
drm->reset();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<NEO::GfxCoreHelper>();
|
||||
drm->ioctlExpected.contextCreate = static_cast<int>(gfxCoreHelper.getGpgpuEngineInstances(rootDeviceEnvironment).size());
|
||||
drm->ioctlExpected.contextDestroy = drm->ioctlExpected.contextCreate.load();
|
||||
|
||||
drm->ioctlHelper = std::make_unique<IoctlHelperPrelim20>(*drm);
|
||||
|
||||
drm->createVirtualMemoryAddressSpace(NEO::GfxCoreHelper::getSubDevicesCount(rootDeviceEnvironment.getHardwareInfo()));
|
||||
drm->isVmBindAvailable();
|
||||
drm->reset();
|
||||
|
||||
return drm;
|
||||
}
|
||||
|
||||
int ioctlExtra(DrmIoctl request, void *arg) override {
|
||||
@@ -33,4 +45,9 @@ class DrmMockCustomPrelim : public DrmMockCustom {
|
||||
}
|
||||
|
||||
DrmMockCustomPrelimContext context{};
|
||||
|
||||
protected:
|
||||
// Don't call directly, use the create() function
|
||||
DrmMockCustomPrelim(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: DrmMockCustom(std::make_unique<HwDeviceIdDrm>(mockFd, mockPciPath), rootDeviceEnvironment) {}
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023 Intel Corporation
|
||||
* Copyright (C) 2022-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -76,7 +76,7 @@ class DrmBufferObjectFixture {
|
||||
const uint32_t rootDeviceIndex = 0u;
|
||||
|
||||
void setUp() {
|
||||
this->mock = std::make_unique<DrmClass>(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
this->mock = DrmClass::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
ASSERT_NE(nullptr, this->mock);
|
||||
executionEnvironment.rootDeviceEnvironments[0]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock.get(), 0u, false);
|
||||
osContext.reset(new OsContextLinux(*this->mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor()));
|
||||
|
||||
@@ -126,7 +126,7 @@ class DrmCommandStreamEnhancedTemplate : public ::testing::Test {
|
||||
// make sure this is disabled, we don't want to test this now
|
||||
debugManager.flags.EnableForcePin.set(false);
|
||||
|
||||
mock = new DrmType(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]);
|
||||
mock = DrmType::create(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]).release();
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock, rootDeviceIndex, false);
|
||||
@@ -207,7 +207,7 @@ class DrmCommandStreamEnhancedWithFailingExecTemplate : public ::testing::Test {
|
||||
// make sure this is disabled, we don't want to test this now
|
||||
debugManager.flags.EnableForcePin.set(false);
|
||||
|
||||
mock = new T(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]);
|
||||
mock = T::create(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]).release();
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock, rootDeviceIndex, false);
|
||||
|
||||
@@ -35,7 +35,7 @@ void DrmMemoryManagerFixture::setUp() {
|
||||
MemoryManagementFixture::setUp();
|
||||
|
||||
executionEnvironment = MockDevice::prepareExecutionEnvironment(defaultHwInfo.get(), numRootDevices - 1);
|
||||
setUp(new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]), false);
|
||||
setUp(DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]).release(), false);
|
||||
} // NOLINT(clang-analyzer-cplusplus.NewDeleteLeaks)
|
||||
|
||||
void DrmMemoryManagerFixture::setUp(DrmMockCustom *mock, bool localMemoryEnabled) {
|
||||
@@ -51,7 +51,7 @@ void DrmMemoryManagerFixture::setUp(DrmMockCustom *mock, bool localMemoryEnabled
|
||||
auto rootDeviceEnvironment = executionEnvironment->rootDeviceEnvironments[i].get();
|
||||
rootDeviceEnvironment->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
rootDeviceEnvironment->osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment->osInterface->setDriverModel(std::unique_ptr<DriverModel>(new DrmMockCustom(*rootDeviceEnvironment)));
|
||||
rootDeviceEnvironment->osInterface->setDriverModel(DrmMockCustom::create(*rootDeviceEnvironment));
|
||||
rootDeviceEnvironment->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*rootDeviceEnvironment->osInterface->getDriverModel()->as<Drm>(), i, false);
|
||||
MockRootDeviceEnvironment::resetBuiltins(rootDeviceEnvironment, new MockBuiltins);
|
||||
rootDeviceEnvironment->initGmm();
|
||||
@@ -113,7 +113,7 @@ void DrmMemoryManagerWithLocalMemoryFixture::setUp() {
|
||||
|
||||
MemoryManagementFixture::setUp();
|
||||
executionEnvironment = MockDevice::prepareExecutionEnvironment(defaultHwInfo.get(), numRootDevices - 1);
|
||||
auto drmMock = new DrmMockCustom{*executionEnvironment->rootDeviceEnvironments[1]};
|
||||
auto drmMock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[1]).release();
|
||||
drmMock->memoryInfo.reset(new MockMemoryInfo{*drmMock});
|
||||
DrmMemoryManagerFixture::setUp(drmMock, true);
|
||||
drmMock->reset();
|
||||
@@ -138,7 +138,7 @@ void DrmMemoryManagerFixtureWithoutQuietIoctlExpectation::setUp(bool enableLocal
|
||||
for (auto &rootDeviceEnvironment : executionEnvironment->rootDeviceEnvironments) {
|
||||
rootDeviceEnvironment->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
rootDeviceEnvironment->osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment->osInterface->setDriverModel(std::unique_ptr<DriverModel>(new DrmMockCustom(*rootDeviceEnvironment)));
|
||||
rootDeviceEnvironment->osInterface->setDriverModel(DrmMockCustom::create(*rootDeviceEnvironment));
|
||||
rootDeviceEnvironment->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*rootDeviceEnvironment->osInterface->getDriverModel()->as<Drm>(), i, false);
|
||||
rootDeviceEnvironment->initGmm();
|
||||
i++;
|
||||
|
||||
@@ -102,7 +102,7 @@ class DrmMemoryManagerLocalMemoryWithCustomPrelimMockTest : public ::testing::Te
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
|
||||
mock = new DrmMockCustomPrelim(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
mock = DrmMockCustomPrelim::create(*executionEnvironment->rootDeviceEnvironments[0]).release();
|
||||
mock->memoryInfo.reset(new MockMemoryInfo{*mock});
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
@@ -127,7 +127,7 @@ class DrmMemoryManagerFixturePrelim : public DrmMemoryManagerFixture {
|
||||
|
||||
MemoryManagementFixture::setUp();
|
||||
executionEnvironment = MockDevice::prepareExecutionEnvironment(defaultHwInfo.get(), numRootDevices - 1);
|
||||
mock = new DrmMockCustomPrelim(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
mock = DrmMockCustomPrelim::create(*executionEnvironment->rootDeviceEnvironments[0]).release();
|
||||
mock->memoryInfo.reset(new MemoryInfo(regionInfo, *mock));
|
||||
|
||||
DrmMemoryManagerFixture::setUp(mock, true);
|
||||
|
||||
@@ -230,7 +230,7 @@ TEST_F(DrmBufferObjectTest, whenPrintExecutionBufferIsSetToTrueThenMessageFoundI
|
||||
TEST(DrmBufferObjectSimpleTest, givenInvalidBoWhenValidateHostptrIsCalledThenErrorIsReturned) {
|
||||
std::unique_ptr<uint32_t[]> buff(new uint32_t[256]);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> mock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto mock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
executionEnvironment.rootDeviceEnvironments[0]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock.get(), 0u, false);
|
||||
OsContextLinux osContext(*mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
ASSERT_NE(nullptr, mock.get());
|
||||
@@ -255,7 +255,7 @@ TEST(DrmBufferObjectSimpleTest, givenInvalidBoWhenValidateHostptrIsCalledThenErr
|
||||
TEST(DrmBufferObjectSimpleTest, givenInvalidBoWhenPinIsCalledThenErrorIsReturned) {
|
||||
std::unique_ptr<uint32_t[]> buff(new uint32_t[256]);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> mock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto mock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
executionEnvironment.rootDeviceEnvironments[0]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock.get(), 0u, false);
|
||||
OsContextLinux osContext(*mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
ASSERT_NE(nullptr, mock.get());
|
||||
@@ -279,7 +279,7 @@ TEST(DrmBufferObjectSimpleTest, givenInvalidBoWhenPinIsCalledThenErrorIsReturned
|
||||
|
||||
TEST(DrmBufferObjectSimpleTest, givenBufferObjectWhenConstructedWithASizeThenTheSizeIsInitialized) {
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> drmMock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto drmMock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
std::unique_ptr<BufferObject> bo(new BufferObject(0u, drmMock.get(), 3, 1, 0x1000, 1));
|
||||
|
||||
EXPECT_EQ(0x1000u, bo->peekSize());
|
||||
@@ -289,7 +289,7 @@ TEST(DrmBufferObjectSimpleTest, givenArrayOfBosWhenPinnedThenAllBosArePinned) {
|
||||
const auto rootDeviceIndex = 0u;
|
||||
std::unique_ptr<uint32_t[]> buff(new uint32_t[256]);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> mock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto mock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
ASSERT_NE(nullptr, mock.get());
|
||||
OsContextLinux osContext(*mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
|
||||
@@ -324,7 +324,7 @@ TEST(DrmBufferObjectSimpleTest, givenArrayOfBosWhenValidatedThenAllBosArePinned)
|
||||
const auto rootDeviceIndex = 0u;
|
||||
std::unique_ptr<uint32_t[]> buff(new uint32_t[256]);
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> mock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto mock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
ASSERT_NE(nullptr, mock.get());
|
||||
OsContextLinux osContext(*mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2023 Intel Corporation
|
||||
* Copyright (C) 2018-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -42,7 +42,7 @@ HWTEST_F(DrmCommandStreamMMTest, GivenForcePinThenMemoryManagerCreatesPinBb) {
|
||||
debugManager.flags.EnableForcePin.set(true);
|
||||
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
|
||||
executionEnvironment.rootDeviceEnvironments[0]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment.rootDeviceEnvironments[0]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
@@ -62,7 +62,7 @@ HWTEST_F(DrmCommandStreamMMTest, givenForcePinDisabledWhenMemoryManagerIsCreated
|
||||
debugManager.flags.EnableForcePin.set(false);
|
||||
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
executionEnvironment.rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
|
||||
executionEnvironment.rootDeviceEnvironments[0]->osInterface = std::make_unique<OSInterface>();
|
||||
@@ -85,7 +85,7 @@ HWTEST_F(DrmCommandStreamMMTest, givenExecutionEnvironmentWithMoreThanOneRootDev
|
||||
executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->initGmm();
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(drm));
|
||||
executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*drm, 0u, false);
|
||||
}
|
||||
|
||||
@@ -1001,7 +1001,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamTest, givenDrmCommandStreamReceiverWhenCreate
|
||||
executionEnvironment.rootDeviceEnvironments[1]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
executionEnvironment.rootDeviceEnvironments[1]->initGmm();
|
||||
executionEnvironment.rootDeviceEnvironments[1]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment.rootDeviceEnvironments[1]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0])));
|
||||
executionEnvironment.rootDeviceEnvironments[1]->osInterface->setDriverModel(DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto csr = std::make_unique<MockDrmCsr<FamilyType>>(executionEnvironment, 1, 1, GemCloseWorkerMode::gemCloseWorkerActive);
|
||||
auto pageTableManager = csr->createPageTableManager();
|
||||
EXPECT_EQ(csr->pageTableManager.get(), pageTableManager);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023 Intel Corporation
|
||||
* Copyright (C) 2022-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -40,7 +40,7 @@ struct DrmCommandStreamMultiTileMemExecFixture {
|
||||
executionEnvironment->incRefInternal();
|
||||
executionEnvironment->initGmm();
|
||||
|
||||
mock = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
mock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]).release();
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[0]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock, 0, false);
|
||||
|
||||
@@ -43,7 +43,7 @@ class DrmMemoryManagerFixtureImpl : public DrmMemoryManagerFixture {
|
||||
|
||||
MemoryManagementFixture::setUp();
|
||||
executionEnvironment = MockDevice::prepareExecutionEnvironment(defaultHwInfo.get(), numRootDevices - 1);
|
||||
mockExp = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
mockExp = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]).release();
|
||||
DrmMemoryManagerFixture::setUp(mockExp, true);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ class DrmMemoryManagerLocalMemoryWithCustomMockTest : public ::testing::Test {
|
||||
executionEnvironment = new ExecutionEnvironment;
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
mock = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
mock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]).release();
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
|
||||
|
||||
@@ -1308,9 +1308,8 @@ TEST(DrmMemoryManagerTest2, givenDrmMemoryManagerWhengetSystemSharedMemoryIsCall
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(4u);
|
||||
for (auto i = 0u; i < 4u; i++) {
|
||||
auto mock = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
executionEnvironment->rootDeviceEnvironments[i]->initGmm();
|
||||
}
|
||||
@@ -1345,9 +1344,8 @@ TEST(DrmMemoryManagerTest2, WhenGetMinimumSystemSharedMemoryThenCorrectValueIsRe
|
||||
executionEnvironment->prepareRootDeviceEnvironments(4u);
|
||||
for (auto i = 0u; i < 4u; i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
auto mock = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->initGmm();
|
||||
}
|
||||
|
||||
@@ -2465,8 +2463,8 @@ TEST_F(DrmMemoryManagerTest, givenDrmMemoryManagerWhenUnlockResourceIsCalledOnAl
|
||||
|
||||
DrmMemoryManagerToTestUnlockResource drmMemoryManager(*executionEnvironment, true, MemoryConstants::pageSize);
|
||||
|
||||
DrmMockCustom drmMock(*executionEnvironment->rootDeviceEnvironments[1]);
|
||||
auto bo = new BufferObject(rootDeviceIndex, &drmMock, 3, 1, 0, 1);
|
||||
auto drmMock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[1]);
|
||||
auto bo = new BufferObject(rootDeviceIndex, drmMock.get(), 3, 1, 0, 1);
|
||||
auto drmAllocation = new DrmAllocation(rootDeviceIndex, 1u /*num gmms*/, AllocationType::unknown, bo, nullptr, 0u, static_cast<osHandle>(0u), MemoryPool::localMemory);
|
||||
|
||||
drmMemoryManager.unlockResourceImpl(*drmAllocation);
|
||||
@@ -2489,8 +2487,8 @@ TEST_F(DrmMemoryManagerTest, givenDrmMemoryManagerWhenSetDomainCpuIsCalledButFai
|
||||
this->ioctlResExt = {mock->ioctlCnt.total, -1};
|
||||
mock->ioctlResExt = &ioctlResExt;
|
||||
|
||||
DrmMockCustom drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
BufferObject bo(0u, &drmMock, 3, 1, 0, 1);
|
||||
auto drmMock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
BufferObject bo(0u, drmMock.get(), 3, 1, 0, 1);
|
||||
DrmAllocation drmAllocation(rootDeviceIndex, 1u /*num gmms*/, AllocationType::unknown, &bo, nullptr, 0u, static_cast<osHandle>(0u), MemoryPool::memoryNull);
|
||||
EXPECT_NE(nullptr, drmAllocation.getBO());
|
||||
|
||||
@@ -2502,8 +2500,8 @@ TEST_F(DrmMemoryManagerTest, givenDrmMemoryManagerWhenSetDomainCpuIsCalledButFai
|
||||
TEST_F(DrmMemoryManagerTest, givenDrmMemoryManagerWhenSetDomainCpuIsCalledOnAllocationThenReturnSetWriteDomain) {
|
||||
mock->ioctlExpected.gemSetDomain = 1;
|
||||
|
||||
DrmMockCustom drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
BufferObject bo(rootDeviceIndex, &drmMock, 3, 1, 0, 1);
|
||||
auto drmMock = DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
BufferObject bo(rootDeviceIndex, drmMock.get(), 3, 1, 0, 1);
|
||||
DrmAllocation drmAllocation(rootDeviceIndex, 1u /*num gmms*/, AllocationType::unknown, &bo, nullptr, 0u, static_cast<osHandle>(0u), MemoryPool::memoryNull);
|
||||
EXPECT_NE(nullptr, drmAllocation.getBO());
|
||||
|
||||
@@ -3698,9 +3696,8 @@ TEST(DrmMemoryManagerWithExplicitExpectationsTest2, whenObtainFdFromHandleIsCall
|
||||
executionEnvironment->prepareRootDeviceEnvironments(4u);
|
||||
for (auto i = 0u; i < 4u; i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
auto mock = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->initGmm();
|
||||
}
|
||||
auto memoryManager = std::make_unique<TestedDrmMemoryManager>(false, false, false, *executionEnvironment);
|
||||
@@ -3722,9 +3719,8 @@ TEST(DrmMemoryManagerWithExplicitExpectationsTest2, whenFailingToObtainFdFromHan
|
||||
executionEnvironment->prepareRootDeviceEnvironments(4u);
|
||||
for (auto i = 0u; i < 4u; i++) {
|
||||
executionEnvironment->rootDeviceEnvironments[i]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
auto mock = new DrmMockCustom(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->osInterface->setDriverModel(DrmMockCustom::create(*executionEnvironment->rootDeviceEnvironments[0]));
|
||||
executionEnvironment->rootDeviceEnvironments[i]->initGmm();
|
||||
}
|
||||
auto memoryManager = std::make_unique<TestedDrmMemoryManager>(false, false, false, *executionEnvironment);
|
||||
|
||||
@@ -898,7 +898,7 @@ TEST_F(IoctlPrelimHelperTests, givenInvalidDrmWhenGettingGpuTimeThenFails) {
|
||||
|
||||
TEST_F(IoctlPrelimHelperTests, whenGettingTimeThenTimeIsCorrect) {
|
||||
MockExecutionEnvironment executionEnvironment{};
|
||||
auto drm = std::make_unique<DrmMockCustom>(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
ASSERT_NE(nullptr, drm);
|
||||
|
||||
MockIoctlHelperPrelim ioctlHelper{*drm};
|
||||
@@ -930,7 +930,7 @@ TEST_F(IoctlPrelimHelperTests, givenInitializeGetGpuTimeFunctionNotCalledWhenSet
|
||||
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0];
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
auto drm = std::make_unique<DrmMockCustom>(rootDeviceEnvironment);
|
||||
auto drm = DrmMockCustom::create(rootDeviceEnvironment);
|
||||
IoctlHelperPrelim20 ioctlHelper{*drm};
|
||||
|
||||
drm->ioctlRes = -1;
|
||||
|
||||
@@ -797,7 +797,7 @@ TEST(IoctlHelperTestsUpstream, givenInvalidDrmWhenGettingGpuTimeThenFails) {
|
||||
|
||||
TEST(IoctlHelperTestsUpstream, whenGettingTimeThenTimeIsCorrect) {
|
||||
MockExecutionEnvironment executionEnvironment{};
|
||||
auto drm = std::make_unique<DrmMockCustom>(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
ASSERT_NE(nullptr, drm);
|
||||
|
||||
MockIoctlHelperUpstream ioctlHelper{*drm};
|
||||
@@ -829,7 +829,7 @@ TEST(IoctlHelperTestsUpstream, givenInitializeGetGpuTimeFunctionNotCalledWhenSet
|
||||
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[0];
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
auto drm = std::make_unique<DrmMockCustom>(rootDeviceEnvironment);
|
||||
auto drm = DrmMockCustom::create(rootDeviceEnvironment);
|
||||
IoctlHelperUpstream ioctlHelper{*drm};
|
||||
|
||||
drm->ioctlRes = -1;
|
||||
|
||||
@@ -22,7 +22,7 @@ using namespace NEO;
|
||||
|
||||
TEST(OSContextLinux, givenReinitializeContextWhenContextIsInitThenContextIsStillIinitializedAfter) {
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> mock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto mock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
executionEnvironment.rootDeviceEnvironments[0]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock.get(), 0u, false);
|
||||
OsContextLinux osContext(*mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
EXPECT_NO_THROW(osContext.reInitializeContext());
|
||||
@@ -42,7 +42,7 @@ TEST(OSContextLinux, givenInitializeContextWhenContextCreateIoctlFailsThenContex
|
||||
|
||||
TEST(OSContextLinux, givenOsContextLinuxWhenQueryingForOfflineDumpContextIdThenCorrectValueIsReturned) {
|
||||
MockExecutionEnvironment executionEnvironment;
|
||||
std::unique_ptr<DrmMockCustom> mock(new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]));
|
||||
auto mock = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
executionEnvironment.rootDeviceEnvironments[0]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock.get(), 0u, false);
|
||||
MockOsContextLinux osContext(*mock, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
|
||||
|
||||
@@ -200,7 +200,7 @@ TEST_F(DrmTimeTest, GivenInvalidFuncTimeWhenGettingGpuCpuTimeCpuThenFails) {
|
||||
TEST_F(DrmTimeTest, givenGpuTimestampResolutionQueryWhenIoctlFailsThenDefaultResolutionIsReturned) {
|
||||
auto defaultResolution = defaultHwInfo->capabilityTable.defaultProfilingTimerResolution;
|
||||
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
osTime->updateDrm(drm);
|
||||
|
||||
drm->getParamRetValue = 0;
|
||||
@@ -213,7 +213,7 @@ TEST_F(DrmTimeTest, givenGpuTimestampResolutionQueryWhenIoctlFailsThenDefaultRes
|
||||
TEST_F(DrmTimeTest, givenGetDynamicDeviceTimerClockWhenIoctlFailsThenDefaultClockIsReturned) {
|
||||
auto defaultResolution = defaultHwInfo->capabilityTable.defaultProfilingTimerResolution;
|
||||
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
osTime->updateDrm(drm);
|
||||
|
||||
drm->getParamRetValue = 0;
|
||||
@@ -225,7 +225,7 @@ TEST_F(DrmTimeTest, givenGetDynamicDeviceTimerClockWhenIoctlFailsThenDefaultCloc
|
||||
}
|
||||
|
||||
TEST_F(DrmTimeTest, givenGetDynamicDeviceTimerClockWhenIoctlSucceedsThenNonDefaultClockIsReturned) {
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
osTime->updateDrm(drm);
|
||||
|
||||
uint64_t frequency = 1500;
|
||||
@@ -236,7 +236,7 @@ TEST_F(DrmTimeTest, givenGetDynamicDeviceTimerClockWhenIoctlSucceedsThenNonDefau
|
||||
}
|
||||
|
||||
TEST_F(DrmTimeTest, givenGpuTimestampResolutionQueryWhenIoctlSuccedsThenCorrectResolutionIsReturned) {
|
||||
auto drm = new DrmMockCustom(*executionEnvironment.rootDeviceEnvironments[0]);
|
||||
auto drm = DrmMockCustom::create(*executionEnvironment.rootDeviceEnvironments[0]).release();
|
||||
osTime->updateDrm(drm);
|
||||
|
||||
// 19200000 is frequency yelding 52.083ns resolution
|
||||
|
||||
@@ -32,14 +32,14 @@ TEST(IoctlHelperXeTest, whenCallingDebuggerOpenIoctlThenProperValueIsReturned) {
|
||||
int ret;
|
||||
DebugManagerStateRestore restorer;
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto mockXeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto mockXeIoctlHelper = drm->ioctlHelper.get();
|
||||
|
||||
drm.reset();
|
||||
drm->reset();
|
||||
drm_xe_eudebug_connect test = {};
|
||||
|
||||
ret = mockXeIoctlHelper->ioctl(DrmIoctl::debuggerOpen, &test);
|
||||
EXPECT_EQ(ret, drm.debuggerOpenRetval);
|
||||
EXPECT_EQ(ret, drm->debuggerOpenRetval);
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGetIoctForDebuggerThenCorrectValueReturned) {
|
||||
@@ -60,8 +60,8 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGetIoctForDebuggerThenCorre
|
||||
|
||||
TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingaddDebugMetadataThenDataIsAdded) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
uint64_t temp = 0;
|
||||
xeIoctlHelper->addDebugMetadata(DrmResourceClass::moduleHeapDebugArea, &temp, 8000u);
|
||||
ASSERT_EQ(1u, xeIoctlHelper->debugMetadata.size());
|
||||
@@ -76,8 +76,8 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingaddDebugMetadataThenDataIsA
|
||||
TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingVmCreateThenDebugMetadadaIsAttached) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
executionEnvironment->setDebuggingMode(DebuggingMode::offline);
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
uint64_t temp = 0;
|
||||
xeIoctlHelper->addDebugMetadata(DrmResourceClass::moduleHeapDebugArea, &temp, 8000u);
|
||||
xeIoctlHelper->addDebugMetadata(DrmResourceClass::contextSaveArea, &temp, 8000u);
|
||||
@@ -88,31 +88,31 @@ TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingVmCreateThenDebugMetadadaIs
|
||||
GemVmControl test = {};
|
||||
xeIoctlHelper->ioctl(DrmIoctl::gemVmCreate, &test);
|
||||
|
||||
ASSERT_EQ(4u, drm.vmCreateMetadata.size());
|
||||
ASSERT_EQ(drm.vmCreateMetadata[0].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_MODULE_AREA));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[0].offset, reinterpret_cast<unsigned long long>(&temp));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[0].len, 8000ul);
|
||||
ASSERT_EQ(4u, drm->vmCreateMetadata.size());
|
||||
ASSERT_EQ(drm->vmCreateMetadata[0].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_MODULE_AREA));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[0].offset, reinterpret_cast<unsigned long long>(&temp));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[0].len, 8000ul);
|
||||
|
||||
ASSERT_EQ(drm.vmCreateMetadata[1].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_SIP_AREA));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[1].offset, reinterpret_cast<unsigned long long>(&temp));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[1].len, 8000ul);
|
||||
ASSERT_EQ(drm->vmCreateMetadata[1].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_SIP_AREA));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[1].offset, reinterpret_cast<unsigned long long>(&temp));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[1].len, 8000ul);
|
||||
|
||||
ASSERT_EQ(drm.vmCreateMetadata[2].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_SBA_AREA));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[2].offset, reinterpret_cast<unsigned long long>(&temp));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[2].len, 8000ul);
|
||||
ASSERT_EQ(drm->vmCreateMetadata[2].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_SBA_AREA));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[2].offset, reinterpret_cast<unsigned long long>(&temp));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[2].len, 8000ul);
|
||||
|
||||
ASSERT_EQ(drm.vmCreateMetadata[3].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_COOKIE));
|
||||
ASSERT_EQ(drm.vmCreateMetadata[3].offset, 123ul);
|
||||
ASSERT_EQ(drm.vmCreateMetadata[3].len, 0ul);
|
||||
ASSERT_EQ(drm.vmCreateMetadata[3].base.next_extension, 0ul);
|
||||
ASSERT_EQ(drm->vmCreateMetadata[3].type, static_cast<unsigned long long>(DRM_XE_VM_DEBUG_METADATA_COOKIE));
|
||||
ASSERT_EQ(drm->vmCreateMetadata[3].offset, 123ul);
|
||||
ASSERT_EQ(drm->vmCreateMetadata[3].len, 0ul);
|
||||
ASSERT_EQ(drm->vmCreateMetadata[3].base.next_extension, 0ul);
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, givenFreeDebugMetadataWhenVmCreateHasMultipleExtTypesThenOnlyDebugMetadataIsDeleted) {
|
||||
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
executionEnvironment->setDebuggingMode(DebuggingMode::offline);
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
drm_xe_ext_vm_set_debug_metadata *node1 = new drm_xe_ext_vm_set_debug_metadata();
|
||||
drm_xe_ext_vm_set_debug_metadata *node2 = new drm_xe_ext_vm_set_debug_metadata();
|
||||
@@ -174,8 +174,8 @@ TEST(IoctlHelperXeTest, givenFreeDebugMetadataWhenVmCreateHasMultipleExtTypesThe
|
||||
TEST(IoctlHelperXeTest, givenIoctlHelperXeWhenCallingGetRunaloneExtPropertyThenCorrectValueReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
executionEnvironment->setDebuggingMode(DebuggingMode::offline);
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
EXPECT_EQ(xeIoctlHelper->getRunaloneExtProperty(), DRM_XE_EXEC_QUEUE_SET_PROPERTY_EUDEBUG);
|
||||
}
|
||||
|
||||
@@ -193,19 +193,18 @@ HWTEST_F(IoctlHelperXeTestFixture, GivenRunaloneModeRequiredReturnFalseWhenCreat
|
||||
auto raiiFactory = RAIIGfxCoreHelperFactory<MockGfxCoreHelperHw>(rootDeviceEnvironment);
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
drm.ioctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm.getIoctlHelper());
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
|
||||
ASSERT_NE(nullptr, engineInfo);
|
||||
drm.engineInfo = std::move(engineInfo);
|
||||
drm->engineInfo = std::move(engineInfo);
|
||||
|
||||
OsContextLinux osContext(drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_CCS, EngineUsage::regular}));
|
||||
OsContextLinux osContext(*drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_CCS, EngineUsage::regular}));
|
||||
uint16_t deviceIndex = 1;
|
||||
xeIoctlHelper->createDrmContext(drm, osContext, 0, deviceIndex, false);
|
||||
xeIoctlHelper->createDrmContext(*drm, osContext, 0, deviceIndex, false);
|
||||
|
||||
auto ext = drm.receivedContextCreateSetParam;
|
||||
auto ext = drm->receivedContextCreateSetParam;
|
||||
EXPECT_NE(ext.property, static_cast<uint32_t>(DRM_XE_EXEC_QUEUE_SET_PROPERTY_EUDEBUG));
|
||||
}
|
||||
|
||||
@@ -215,28 +214,27 @@ HWTEST_F(IoctlHelperXeTestFixture, givenDeviceIndexWhenCreatingContextThenSetCor
|
||||
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
drm.ioctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm.getIoctlHelper());
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
xeIoctlHelper->initialize();
|
||||
|
||||
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
|
||||
ASSERT_NE(nullptr, engineInfo);
|
||||
drm.engineInfo = std::move(engineInfo);
|
||||
drm->engineInfo = std::move(engineInfo);
|
||||
|
||||
auto engineDescriptor = EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_CCS, EngineUsage::regular});
|
||||
engineDescriptor.isEngineInstanced = true;
|
||||
OsContextLinux osContext(drm, 0, 0u, engineDescriptor);
|
||||
OsContextLinux osContext(*drm, 0, 0u, engineDescriptor);
|
||||
|
||||
uint16_t tileId = 1u;
|
||||
uint16_t expectedGtId = xeIoctlHelper->tileIdToGtId[tileId];
|
||||
|
||||
xeIoctlHelper->createDrmContext(drm, osContext, 0, tileId, false);
|
||||
xeIoctlHelper->createDrmContext(*drm, osContext, 0, tileId, false);
|
||||
|
||||
EXPECT_EQ(1u, drm.execQueueCreateParams.num_placements);
|
||||
ASSERT_EQ(1u, drm.execQueueEngineInstances.size());
|
||||
EXPECT_EQ(1u, drm->execQueueCreateParams.num_placements);
|
||||
ASSERT_EQ(1u, drm->execQueueEngineInstances.size());
|
||||
|
||||
EXPECT_EQ(expectedGtId, drm.execQueueEngineInstances[0].gt_id);
|
||||
EXPECT_EQ(expectedGtId, drm->execQueueEngineInstances[0].gt_id);
|
||||
}
|
||||
|
||||
HWTEST_F(IoctlHelperXeTestFixture, GivenRunaloneModeRequiredReturnTrueWhenCreateDrmContextThenRunAloneContextIsRequested) {
|
||||
@@ -252,18 +250,17 @@ HWTEST_F(IoctlHelperXeTestFixture, GivenRunaloneModeRequiredReturnTrueWhenCreate
|
||||
auto raiiFactory = RAIIGfxCoreHelperFactory<MockGfxCoreHelperHw>(rootDeviceEnvironment);
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
drm.ioctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm.getIoctlHelper());
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
|
||||
ASSERT_NE(nullptr, engineInfo);
|
||||
drm.engineInfo = std::move(engineInfo);
|
||||
drm->engineInfo = std::move(engineInfo);
|
||||
|
||||
OsContextLinux osContext(drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_CCS, EngineUsage::regular}));
|
||||
xeIoctlHelper->createDrmContext(drm, osContext, 0, 1, false);
|
||||
OsContextLinux osContext(*drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_CCS, EngineUsage::regular}));
|
||||
xeIoctlHelper->createDrmContext(*drm, osContext, 0, 1, false);
|
||||
|
||||
auto ext = drm.receivedContextCreateSetParam;
|
||||
auto ext = drm->receivedContextCreateSetParam;
|
||||
EXPECT_EQ(ext.base.name, static_cast<uint32_t>(DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY));
|
||||
EXPECT_EQ(ext.base.next_extension, 0ULL);
|
||||
EXPECT_EQ(ext.property, static_cast<uint32_t>(DRM_XE_EXEC_QUEUE_SET_PROPERTY_EUDEBUG));
|
||||
@@ -283,25 +280,24 @@ HWTEST_F(IoctlHelperXeTestFixture, GivenContextCreatedForCopyEngineWhenCreateDrm
|
||||
auto raiiFactory = RAIIGfxCoreHelperFactory<MockGfxCoreHelperHw>(rootDeviceEnvironment);
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
drm.ioctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm.getIoctlHelper());
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
|
||||
ASSERT_NE(nullptr, engineInfo);
|
||||
drm.engineInfo = std::move(engineInfo);
|
||||
drm->engineInfo = std::move(engineInfo);
|
||||
|
||||
OsContextLinux osContext(drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_BCS1, EngineUsage::regular}));
|
||||
xeIoctlHelper->createDrmContext(drm, osContext, 0, 0, false);
|
||||
OsContextLinux osContext(*drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::EngineType::ENGINE_BCS1, EngineUsage::regular}));
|
||||
xeIoctlHelper->createDrmContext(*drm, osContext, 0, 0, false);
|
||||
|
||||
auto ext = drm.receivedContextCreateSetParam;
|
||||
auto ext = drm->receivedContextCreateSetParam;
|
||||
EXPECT_NE(ext.property, static_cast<uint32_t>(DRM_XE_EXEC_QUEUE_SET_PROPERTY_EUDEBUG));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, GivenXeDriverThenDebugAttachReturnsTrue) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
EXPECT_TRUE(xeIoctlHelper->isDebugAttachAvailable());
|
||||
}
|
||||
|
||||
@@ -312,8 +308,8 @@ TEST(IoctlHelperXeTest, givenXeEnableEuDebugThenReturnCorrectValue) {
|
||||
VariableBackup<char *> mockFreadBufferBackup(&IoFunctions::mockFreadBuffer, buffer.get());
|
||||
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
buffer[0] = '1';
|
||||
int enableEuDebug = xeIoctlHelper->getEuDebugSysFsEnable();
|
||||
@@ -330,8 +326,8 @@ TEST(IoctlHelperXeTest, givenXeEnableEuDebugWithInvalidPathThenReturnCorrectValu
|
||||
VariableBackup<char *> mockFreadBufferBackup(&IoFunctions::mockFreadBuffer, buffer.get());
|
||||
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
buffer[0] = '1';
|
||||
VariableBackup<FILE *> mockFopenReturnBackup(&IoFunctions::mockFopenReturned, nullptr);
|
||||
@@ -342,65 +338,67 @@ TEST(IoctlHelperXeTest, givenXeEnableEuDebugWithInvalidPathThenReturnCorrectValu
|
||||
|
||||
TEST(IoctlHelperXeTest, givenXeRegisterResourceThenCorrectIoctlCalled) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
constexpr size_t bufferSize = 20;
|
||||
uint8_t buffer[bufferSize];
|
||||
|
||||
auto id = xeIoctlHelper->registerResource(DrmResourceClass::elf, buffer, bufferSize);
|
||||
EXPECT_EQ(drm.metadataID, id);
|
||||
EXPECT_EQ(drm.metadataAddr, buffer);
|
||||
EXPECT_EQ(drm.metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm.metadataType, static_cast<uint64_t>(DRM_XE_DEBUG_METADATA_ELF_BINARY));
|
||||
EXPECT_EQ(drm->metadataID, id);
|
||||
EXPECT_EQ(drm->metadataAddr, buffer);
|
||||
EXPECT_EQ(drm->metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm->metadataType, static_cast<uint64_t>(DRM_XE_DEBUG_METADATA_ELF_BINARY));
|
||||
|
||||
drm.metadataID = 0;
|
||||
drm.metadataAddr = nullptr;
|
||||
drm.metadataSize = 0;
|
||||
drm->metadataID = 0;
|
||||
drm->metadataAddr = nullptr;
|
||||
drm->metadataSize = 0;
|
||||
id = xeIoctlHelper->registerResource(DrmResourceClass::l0ZebinModule, buffer, bufferSize);
|
||||
EXPECT_EQ(drm.metadataID, id);
|
||||
EXPECT_EQ(drm.metadataAddr, buffer);
|
||||
EXPECT_EQ(drm.metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm.metadataType, static_cast<uint64_t>(DRM_XE_DEBUG_METADATA_PROGRAM_MODULE));
|
||||
EXPECT_EQ(drm->metadataID, id);
|
||||
EXPECT_EQ(drm->metadataAddr, buffer);
|
||||
EXPECT_EQ(drm->metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm->metadataType, static_cast<uint64_t>(DRM_XE_DEBUG_METADATA_PROGRAM_MODULE));
|
||||
|
||||
drm.metadataID = 0;
|
||||
drm.metadataAddr = nullptr;
|
||||
drm.metadataSize = 0;
|
||||
drm->metadataID = 0;
|
||||
drm->metadataAddr = nullptr;
|
||||
drm->metadataSize = 0;
|
||||
id = xeIoctlHelper->registerResource(DrmResourceClass::contextSaveArea, buffer, bufferSize);
|
||||
EXPECT_EQ(drm.metadataID, id);
|
||||
EXPECT_EQ(drm.metadataAddr, buffer);
|
||||
EXPECT_EQ(drm.metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm.metadataType, static_cast<uint64_t>(WORK_IN_PROGRESS_DRM_XE_DEBUG_METADATA_SIP_AREA));
|
||||
EXPECT_EQ(drm->metadataID, id);
|
||||
EXPECT_EQ(drm->metadataAddr, buffer);
|
||||
EXPECT_EQ(drm->metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm->metadataType, static_cast<uint64_t>(WORK_IN_PROGRESS_DRM_XE_DEBUG_METADATA_SIP_AREA));
|
||||
|
||||
drm.metadataID = 0;
|
||||
drm.metadataAddr = nullptr;
|
||||
drm.metadataSize = 0;
|
||||
drm->metadataID = 0;
|
||||
drm->metadataAddr = nullptr;
|
||||
drm->metadataSize = 0;
|
||||
id = xeIoctlHelper->registerResource(DrmResourceClass::sbaTrackingBuffer, buffer, bufferSize);
|
||||
EXPECT_EQ(drm.metadataID, id);
|
||||
EXPECT_EQ(drm.metadataAddr, buffer);
|
||||
EXPECT_EQ(drm.metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm.metadataType, static_cast<uint64_t>(WORK_IN_PROGRESS_DRM_XE_DEBUG_METADATA_SBA_AREA));
|
||||
EXPECT_EQ(drm->metadataID, id);
|
||||
EXPECT_EQ(drm->metadataAddr, buffer);
|
||||
EXPECT_EQ(drm->metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm->metadataType, static_cast<uint64_t>(WORK_IN_PROGRESS_DRM_XE_DEBUG_METADATA_SBA_AREA));
|
||||
|
||||
drm.metadataID = 0;
|
||||
drm.metadataAddr = nullptr;
|
||||
drm.metadataSize = 0;
|
||||
drm->metadataID = 0;
|
||||
drm->metadataAddr = nullptr;
|
||||
drm->metadataSize = 0;
|
||||
id = xeIoctlHelper->registerResource(DrmResourceClass::moduleHeapDebugArea, buffer, bufferSize);
|
||||
EXPECT_EQ(drm.metadataID, id);
|
||||
EXPECT_EQ(drm.metadataAddr, buffer);
|
||||
EXPECT_EQ(drm.metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm.metadataType, static_cast<uint64_t>(WORK_IN_PROGRESS_DRM_XE_DEBUG_METADATA_MODULE_AREA));
|
||||
EXPECT_EQ(drm->metadataID, id);
|
||||
EXPECT_EQ(drm->metadataAddr, buffer);
|
||||
EXPECT_EQ(drm->metadataSize, bufferSize);
|
||||
EXPECT_EQ(drm->metadataType, static_cast<uint64_t>(WORK_IN_PROGRESS_DRM_XE_DEBUG_METADATA_MODULE_AREA));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, givenXeunregisterResourceThenCorrectIoctlCalled) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
xeIoctlHelper->unregisterResource(0x1234);
|
||||
EXPECT_EQ(drm.metadataID, 0x1234u);
|
||||
EXPECT_EQ(drm->metadataID, 0x1234u);
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenGettingVmBindExtFromHandlesThenProperStructsAreReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto drm = DrmMockXeDebug::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = static_cast<MockIoctlHelperXeDebug *>(drm->ioctlHelper.get());
|
||||
|
||||
StackVec<uint32_t, 2> bindExtHandles;
|
||||
bindExtHandles.push_back(1u);
|
||||
bindExtHandles.push_back(2u);
|
||||
|
||||
@@ -15,8 +15,8 @@ using namespace NEO;
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingGetEuStallPropertiesThenFailueIsReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
std::array<uint64_t, 12u> properties = {};
|
||||
EXPECT_FALSE(xeIoctlHelper.get()->getEuStallProperties(properties, 0x101, 0x102, 0x103, 1, 20u));
|
||||
@@ -24,8 +24,8 @@ TEST(IoctlHelperXeTest, whenCallingGetEuStallPropertiesThenFailueIsReturned) {
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingPerfOpenEuStallStreamThenFailueIsReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
int32_t invalidFd = -1;
|
||||
std::array<uint64_t, 12u> properties = {};
|
||||
@@ -34,8 +34,8 @@ TEST(IoctlHelperXeTest, whenCallingPerfOpenEuStallStreamThenFailueIsReturned) {
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingPerfDisableEuStallStreamThenFailueIsReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
int32_t invalidFd = -1;
|
||||
EXPECT_FALSE(xeIoctlHelper.get()->perfDisableEuStallStream(&invalidFd));
|
||||
@@ -43,56 +43,56 @@ TEST(IoctlHelperXeTest, whenCallingPerfDisableEuStallStreamThenFailueIsReturned)
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingGetIoctlRequestValuePerfOpenThenZeroisReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
EXPECT_EQ(0u, xeIoctlHelper.get()->getIoctlRequestValuePerf(DrmIoctl::perfOpen));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingGetIoctlRequestValuePerfEnableThenZeroisReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
EXPECT_EQ(0u, xeIoctlHelper.get()->getIoctlRequestValuePerf(DrmIoctl::perfEnable));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingGetIoctlRequestValuePerfDisableThenZeroisReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
EXPECT_EQ(0u, xeIoctlHelper.get()->getIoctlRequestValuePerf(DrmIoctl::perfDisable));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingPerfOpenIoctlWithInvalidValuesThenZeroisReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
EXPECT_EQ(0, xeIoctlHelper.get()->perfOpenIoctl(DrmIoctl::perfOpen, nullptr));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingGetIoctlRequestValueWithInvalidValueThenErrorReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
EXPECT_EQ(0u, xeIoctlHelper.get()->getIoctlRequestValuePerf(DrmIoctl::version));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingPerfOpenIoctlThenProperValueIsReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
EXPECT_EQ(0, xeIoctlHelper.get()->ioctl(DrmIoctl::perfOpen, nullptr));
|
||||
}
|
||||
|
||||
TEST(IoctlHelperXeTest, whenCallingPerfDisableIoctlThenProperValueIsReturned) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(drm);
|
||||
auto drm = DrmMockXe::create(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||
auto xeIoctlHelper = std::make_unique<IoctlHelperXe>(*drm);
|
||||
EXPECT_NE(nullptr, xeIoctlHelper);
|
||||
int32_t invalidFd = -1;
|
||||
EXPECT_EQ(0, xeIoctlHelper.get()->ioctl(invalidFd, DrmIoctl::perfDisable, nullptr));
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -77,93 +77,13 @@ inline constexpr int testValueVmId = 0x5764;
|
||||
inline constexpr int testValueMapOff = 0x7788;
|
||||
inline constexpr int testValuePrime = 0x4321;
|
||||
inline constexpr uint32_t testValueGemCreate = 0x8273;
|
||||
class DrmMockXe : public DrmMockCustom {
|
||||
public:
|
||||
DrmMockXe(RootDeviceEnvironment &rootDeviceEnvironment) : DrmMockCustom(rootDeviceEnvironment) {
|
||||
struct DrmMockXe : public DrmMockCustom {
|
||||
|
||||
auto xeQueryConfig = reinterpret_cast<drm_xe_query_config *>(queryConfig);
|
||||
xeQueryConfig->num_params = 6;
|
||||
xeQueryConfig->info[DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID] = (revId << 16) | devId;
|
||||
xeQueryConfig->info[DRM_XE_QUERY_CONFIG_VA_BITS] = 48;
|
||||
xeQueryConfig->info[DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY] = mockMaxExecQueuePriority;
|
||||
static auto create(RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto drm = std::unique_ptr<DrmMockXe>(new DrmMockXe{rootDeviceEnvironment});
|
||||
drm->initInstance();
|
||||
|
||||
auto xeQueryEngines = reinterpret_cast<drm_xe_query_engines *>(queryEngines);
|
||||
xeQueryEngines->num_engines = 11;
|
||||
xeQueryEngines->engines[0] = {{DRM_XE_ENGINE_CLASS_RENDER, 0, 0}, {}};
|
||||
xeQueryEngines->engines[1] = {{DRM_XE_ENGINE_CLASS_COPY, 1, 0}, {}};
|
||||
xeQueryEngines->engines[2] = {{DRM_XE_ENGINE_CLASS_COPY, 2, 0}, {}};
|
||||
xeQueryEngines->engines[3] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 3, 0}, {}};
|
||||
xeQueryEngines->engines[4] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 4, 0}, {}};
|
||||
xeQueryEngines->engines[5] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 5, 1}, {}};
|
||||
xeQueryEngines->engines[6] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 6, 1}, {}};
|
||||
xeQueryEngines->engines[7] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 7, 1}, {}};
|
||||
xeQueryEngines->engines[8] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 8, 1}, {}};
|
||||
xeQueryEngines->engines[9] = {{DRM_XE_ENGINE_CLASS_VIDEO_DECODE, 9, 1}, {}};
|
||||
xeQueryEngines->engines[10] = {{DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE, 10, 0}, {}};
|
||||
|
||||
auto xeQueryMemUsage = reinterpret_cast<drm_xe_query_mem_regions *>(queryMemUsage);
|
||||
xeQueryMemUsage->num_mem_regions = 3;
|
||||
xeQueryMemUsage->mem_regions[0] = {
|
||||
DRM_XE_MEM_REGION_CLASS_VRAM, // class
|
||||
1, // instance
|
||||
MemoryConstants::pageSize, // min page size
|
||||
2 * MemoryConstants::gigaByte, // total size
|
||||
MemoryConstants::megaByte // used size
|
||||
};
|
||||
xeQueryMemUsage->mem_regions[1] = {
|
||||
DRM_XE_MEM_REGION_CLASS_SYSMEM, // class
|
||||
0, // instance
|
||||
MemoryConstants::pageSize, // min page size
|
||||
MemoryConstants::gigaByte, // total size
|
||||
MemoryConstants::kiloByte // used size
|
||||
};
|
||||
xeQueryMemUsage->mem_regions[2] = {
|
||||
DRM_XE_MEM_REGION_CLASS_VRAM, // class
|
||||
2, // instance
|
||||
MemoryConstants::pageSize, // min page size
|
||||
4 * MemoryConstants::gigaByte, // total size
|
||||
MemoryConstants::gigaByte // used size
|
||||
};
|
||||
|
||||
queryGtList.resize(49); // 1 qword for num gts and 12 qwords per gt
|
||||
auto xeQueryGtList = reinterpret_cast<drm_xe_query_gt_list *>(queryGtList.begin());
|
||||
xeQueryGtList->num_gt = 4;
|
||||
xeQueryGtList->gt_list[0] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MAIN, // type
|
||||
0, // tile_id
|
||||
0, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b100, // native mem regions
|
||||
0x011, // slow mem regions
|
||||
};
|
||||
xeQueryGtList->gt_list[1] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MEDIA, // type
|
||||
1, // tile_id
|
||||
1, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b001, // native mem regions
|
||||
0x110, // slow mem regions
|
||||
};
|
||||
xeQueryGtList->gt_list[2] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MAIN, // type
|
||||
1, // tile_id
|
||||
2, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b010, // native mem regions
|
||||
0x101, // slow mem regions
|
||||
};
|
||||
xeQueryGtList->gt_list[3] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MAIN, // type
|
||||
2, // tile_id
|
||||
3, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b100, // native mem regions
|
||||
0x011, // slow mem regions
|
||||
};
|
||||
return drm;
|
||||
}
|
||||
|
||||
void testMode(int f, int a = 0) {
|
||||
@@ -393,4 +313,106 @@ class DrmMockXe : public DrmMockCustom {
|
||||
uint16_t createParamsCpuCaching = 0u;
|
||||
uint32_t createParamsPlacement = 0u;
|
||||
bool ioctlCalled = false;
|
||||
|
||||
protected:
|
||||
// Don't call directly, use the create() function
|
||||
DrmMockXe(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: DrmMockCustom(std::make_unique<HwDeviceIdDrm>(mockFd, mockPciPath), rootDeviceEnvironment) {}
|
||||
|
||||
virtual void initInstance() {
|
||||
this->reset();
|
||||
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<NEO::GfxCoreHelper>();
|
||||
this->ioctlExpected.contextCreate = static_cast<int>(gfxCoreHelper.getGpgpuEngineInstances(rootDeviceEnvironment).size());
|
||||
this->ioctlExpected.contextDestroy = this->ioctlExpected.contextCreate.load();
|
||||
|
||||
this->ioctlHelper = std::make_unique<MockIoctlHelperXe>(*this);
|
||||
|
||||
this->createVirtualMemoryAddressSpace(NEO::GfxCoreHelper::getSubDevicesCount(rootDeviceEnvironment.getHardwareInfo()));
|
||||
this->isVmBindAvailable();
|
||||
|
||||
auto xeQueryConfig = reinterpret_cast<drm_xe_query_config *>(this->queryConfig);
|
||||
xeQueryConfig->num_params = 6;
|
||||
xeQueryConfig->info[DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID] = (this->revId << 16) | this->devId;
|
||||
xeQueryConfig->info[DRM_XE_QUERY_CONFIG_VA_BITS] = 48;
|
||||
xeQueryConfig->info[DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY] = mockMaxExecQueuePriority;
|
||||
|
||||
auto xeQueryEngines = reinterpret_cast<drm_xe_query_engines *>(this->queryEngines);
|
||||
xeQueryEngines->num_engines = 11;
|
||||
xeQueryEngines->engines[0] = {{DRM_XE_ENGINE_CLASS_RENDER, 0, 0}, {}};
|
||||
xeQueryEngines->engines[1] = {{DRM_XE_ENGINE_CLASS_COPY, 1, 0}, {}};
|
||||
xeQueryEngines->engines[2] = {{DRM_XE_ENGINE_CLASS_COPY, 2, 0}, {}};
|
||||
xeQueryEngines->engines[3] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 3, 0}, {}};
|
||||
xeQueryEngines->engines[4] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 4, 0}, {}};
|
||||
xeQueryEngines->engines[5] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 5, 1}, {}};
|
||||
xeQueryEngines->engines[6] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 6, 1}, {}};
|
||||
xeQueryEngines->engines[7] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 7, 1}, {}};
|
||||
xeQueryEngines->engines[8] = {{DRM_XE_ENGINE_CLASS_COMPUTE, 8, 1}, {}};
|
||||
xeQueryEngines->engines[9] = {{DRM_XE_ENGINE_CLASS_VIDEO_DECODE, 9, 1}, {}};
|
||||
xeQueryEngines->engines[10] = {{DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE, 10, 0}, {}};
|
||||
|
||||
auto xeQueryMemUsage = reinterpret_cast<drm_xe_query_mem_regions *>(this->queryMemUsage);
|
||||
xeQueryMemUsage->num_mem_regions = 3;
|
||||
xeQueryMemUsage->mem_regions[0] = {
|
||||
DRM_XE_MEM_REGION_CLASS_VRAM, // class
|
||||
1, // instance
|
||||
MemoryConstants::pageSize, // min page size
|
||||
2 * MemoryConstants::gigaByte, // total size
|
||||
MemoryConstants::megaByte // used size
|
||||
};
|
||||
xeQueryMemUsage->mem_regions[1] = {
|
||||
DRM_XE_MEM_REGION_CLASS_SYSMEM, // class
|
||||
0, // instance
|
||||
MemoryConstants::pageSize, // min page size
|
||||
MemoryConstants::gigaByte, // total size
|
||||
MemoryConstants::kiloByte // used size
|
||||
};
|
||||
xeQueryMemUsage->mem_regions[2] = {
|
||||
DRM_XE_MEM_REGION_CLASS_VRAM, // class
|
||||
2, // instance
|
||||
MemoryConstants::pageSize, // min page size
|
||||
4 * MemoryConstants::gigaByte, // total size
|
||||
MemoryConstants::gigaByte // used size
|
||||
};
|
||||
|
||||
this->queryGtList.resize(49); // 1 qword for num gts and 12 qwords per gt
|
||||
auto xeQueryGtList = reinterpret_cast<drm_xe_query_gt_list *>(this->queryGtList.begin());
|
||||
xeQueryGtList->num_gt = 4;
|
||||
xeQueryGtList->gt_list[0] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MAIN, // type
|
||||
0, // tile_id
|
||||
0, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b100, // native mem regions
|
||||
0x011, // slow mem regions
|
||||
};
|
||||
xeQueryGtList->gt_list[1] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MEDIA, // type
|
||||
1, // tile_id
|
||||
1, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b001, // native mem regions
|
||||
0x110, // slow mem regions
|
||||
};
|
||||
xeQueryGtList->gt_list[2] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MAIN, // type
|
||||
1, // tile_id
|
||||
2, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b010, // native mem regions
|
||||
0x101, // slow mem regions
|
||||
};
|
||||
xeQueryGtList->gt_list[3] = {
|
||||
DRM_XE_QUERY_GT_TYPE_MAIN, // type
|
||||
2, // tile_id
|
||||
3, // gt_id
|
||||
{0}, // padding
|
||||
mockTimestampFrequency, // reference_clock
|
||||
0b100, // native mem regions
|
||||
0x011, // slow mem regions
|
||||
};
|
||||
this->reset();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user