68 lines
2.4 KiB
C++
68 lines
2.4 KiB
C++
/*
|
|
* Copyright (C) 2018-2020 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "shared/source/execution_environment/execution_environment.h"
|
|
#include "shared/source/helpers/hw_helper.h"
|
|
|
|
#include "opencl/test/unit_test/fixtures/mock_aub_center_fixture.h"
|
|
|
|
namespace NEO {
|
|
|
|
struct MockRootDeviceEnvironment : public RootDeviceEnvironment {
|
|
using RootDeviceEnvironment::RootDeviceEnvironment;
|
|
|
|
~MockRootDeviceEnvironment() override = default;
|
|
|
|
void initAubCenter(bool localMemoryEnabled, const std::string &aubFileName, CommandStreamReceiverType csrType) override {
|
|
if (!initAubCenterCalled) {
|
|
initAubCenterCalled = true;
|
|
localMemoryEnabledReceived = localMemoryEnabled;
|
|
aubFileNameReceived = aubFileName;
|
|
}
|
|
if (useMockAubCenter) {
|
|
MockAubCenterFixture::setMockAubCenter(*this);
|
|
}
|
|
RootDeviceEnvironment::initAubCenter(localMemoryEnabled, aubFileName, csrType);
|
|
}
|
|
bool initAubCenterCalled = false;
|
|
bool localMemoryEnabledReceived = false;
|
|
std::string aubFileNameReceived = "";
|
|
bool useMockAubCenter = true;
|
|
};
|
|
|
|
struct MockExecutionEnvironment : ExecutionEnvironment {
|
|
~MockExecutionEnvironment() override = default;
|
|
MockExecutionEnvironment() : MockExecutionEnvironment(defaultHwInfo.get()) {}
|
|
MockExecutionEnvironment(const HardwareInfo *hwInfo) : MockExecutionEnvironment(hwInfo, true, 1u) {
|
|
}
|
|
MockExecutionEnvironment(const HardwareInfo *hwInfo, bool useMockAubCenter, uint32_t numRootDevices) {
|
|
prepareRootDeviceEnvironments(numRootDevices);
|
|
for (auto rootDeviceIndex = 0u; rootDeviceIndex < numRootDevices; rootDeviceIndex++) {
|
|
auto rootDeviceEnvironment = new MockRootDeviceEnvironment(*this);
|
|
rootDeviceEnvironment->useMockAubCenter = useMockAubCenter;
|
|
rootDeviceEnvironments[rootDeviceIndex].reset(rootDeviceEnvironment);
|
|
|
|
if (hwInfo) {
|
|
rootDeviceEnvironments[rootDeviceIndex]->setHwInfo(hwInfo);
|
|
} else {
|
|
rootDeviceEnvironments[rootDeviceIndex]->setHwInfo(defaultHwInfo.get());
|
|
}
|
|
}
|
|
|
|
calculateMaxOsContextCount();
|
|
}
|
|
void initGmm() {
|
|
for (auto &rootDeviceEnvironment : rootDeviceEnvironments) {
|
|
rootDeviceEnvironment->initGmm();
|
|
}
|
|
}
|
|
};
|
|
|
|
} // namespace NEO
|