Reverse logic of creating Memory Manager - part 6

-Remove a redundant condition from the MemoryManager constructor

Change-Id: I4b6c56f30a19e77a7a20f68c6d85516aaa52d102
Signed-off-by: Jobczyk, Lukasz <lukasz.jobczyk@intel.com>
This commit is contained in:
Jobczyk, Lukasz
2019-03-28 15:42:23 +01:00
committed by sys_ocldev
parent e772321e82
commit a025dc6985
30 changed files with 152 additions and 120 deletions

View File

@@ -35,14 +35,9 @@ namespace NEO {
MemoryManager::MemoryManager(ExecutionEnvironment &executionEnvironment) : allocator32Bit(nullptr), MemoryManager::MemoryManager(ExecutionEnvironment &executionEnvironment) : allocator32Bit(nullptr),
executionEnvironment(executionEnvironment), hostPtrManager(std::make_unique<HostPtrManager>()), executionEnvironment(executionEnvironment), hostPtrManager(std::make_unique<HostPtrManager>()),
multiContextResourceDestructor(std::make_unique<DeferredDeleter>()) { multiContextResourceDestructor(std::make_unique<DeferredDeleter>()) {
this->localMemorySupported = false;
this->enable64kbpages = false;
auto hwInfo = executionEnvironment.getHardwareInfo(); auto hwInfo = executionEnvironment.getHardwareInfo();
if (hwInfo != nullptr) { this->localMemorySupported = HwHelper::get(hwInfo->pPlatform->eRenderCoreFamily).getEnableLocalMemory(*hwInfo);
this->localMemorySupported = HwHelper::get(hwInfo->pPlatform->eRenderCoreFamily).getEnableLocalMemory(*hwInfo); this->enable64kbpages = OSInterface::osEnabled64kbPages && hwInfo->capabilityTable.ftr64KBpages;
this->enable64kbpages = OSInterface::osEnabled64kbPages && hwInfo->capabilityTable.ftr64KBpages;
}
if (DebugManager.flags.Enable64kbpages.get() > -1) { if (DebugManager.flags.Enable64kbpages.get() > -1) {
this->enable64kbpages = DebugManager.flags.Enable64kbpages.get() != 0; this->enable64kbpages = DebugManager.flags.Enable64kbpages.get() != 0;
} }

View File

@@ -17,6 +17,7 @@
#include "unit_tests/helpers/debug_manager_state_restore.h" #include "unit_tests/helpers/debug_manager_state_restore.h"
#include "unit_tests/helpers/unit_test_helper.h" #include "unit_tests/helpers/unit_test_helper.h"
#include "unit_tests/mocks/mock_command_queue.h" #include "unit_tests/mocks/mock_command_queue.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "reg_configs_common.h" #include "reg_configs_common.h"
@@ -458,7 +459,7 @@ HWTEST_F(EnqueueReadBufferTypeTest, givenEnqueueReadBufferCalledWhenLockedPtrInT
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.DoCpuCopyOnReadBuffer.set(true); DebugManager.flags.DoCpuCopyOnReadBuffer.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment); MockMemoryManager memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;
cl_int retVal; cl_int retVal;
@@ -485,7 +486,7 @@ HWTEST_F(EnqueueReadBufferTypeTest, gicenEnqueueReadBufferCalledWhenLockedPtrInT
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.DoCpuCopyOnReadBuffer.set(true); DebugManager.flags.DoCpuCopyOnReadBuffer.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment); MockMemoryManager memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;
cl_int retVal; cl_int retVal;

View File

@@ -16,6 +16,7 @@
#include "unit_tests/helpers/debug_manager_state_restore.h" #include "unit_tests/helpers/debug_manager_state_restore.h"
#include "unit_tests/helpers/unit_test_helper.h" #include "unit_tests/helpers/unit_test_helper.h"
#include "unit_tests/mocks/mock_command_queue.h" #include "unit_tests/mocks/mock_command_queue.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "reg_configs_common.h" #include "reg_configs_common.h"
@@ -367,7 +368,7 @@ HWTEST_F(EnqueueWriteBufferTypeTest, givenEnqueueWriteBufferCalledWhenLockedPtrI
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.DoCpuCopyOnWriteBuffer.set(true); DebugManager.flags.DoCpuCopyOnWriteBuffer.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment); MockMemoryManager memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;
cl_int retVal; cl_int retVal;
@@ -394,7 +395,7 @@ HWTEST_F(EnqueueWriteBufferTypeTest, givenEnqueueWriteBufferCalledWhenLockedPtrI
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.DoCpuCopyOnWriteBuffer.set(true); DebugManager.flags.DoCpuCopyOnWriteBuffer.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment); MockMemoryManager memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;
cl_int retVal; cl_int retVal;

View File

@@ -27,6 +27,7 @@
#include "unit_tests/mocks/mock_builtins.h" #include "unit_tests/mocks/mock_builtins.h"
#include "unit_tests/mocks/mock_context.h" #include "unit_tests/mocks/mock_context.h"
#include "unit_tests/mocks/mock_csr.h" #include "unit_tests/mocks/mock_csr.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_graphics_allocation.h" #include "unit_tests/mocks/mock_graphics_allocation.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
#include "unit_tests/mocks/mock_program.h" #include "unit_tests/mocks/mock_program.h"
@@ -343,7 +344,7 @@ TEST(CommandStreamReceiverSimpleTest, givenCommandStreamReceiverWhenItIsDestroye
auto mockGraphicsAllocation = new MockGraphicsAllocationWithDestructorTracing(GraphicsAllocation::AllocationType::UNKNOWN, nullptr, 0llu, 0llu, 1u, MemoryPool::MemoryNull, false); auto mockGraphicsAllocation = new MockGraphicsAllocationWithDestructorTracing(GraphicsAllocation::AllocationType::UNKNOWN, nullptr, 0llu, 0llu, 1u, MemoryPool::MemoryNull, false);
mockGraphicsAllocation->destructorCalled = &destructorCalled; mockGraphicsAllocation->destructorCalled = &destructorCalled;
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.commandStreamReceivers.resize(1); executionEnvironment.commandStreamReceivers.resize(1);
executionEnvironment.commandStreamReceivers[0].push_back(std::make_unique<MockCommandStreamReceiver>(executionEnvironment)); executionEnvironment.commandStreamReceivers[0].push_back(std::make_unique<MockCommandStreamReceiver>(executionEnvironment));
auto csr = executionEnvironment.commandStreamReceivers[0][0].get(); auto csr = executionEnvironment.commandStreamReceivers[0][0].get();
@@ -355,7 +356,7 @@ TEST(CommandStreamReceiverSimpleTest, givenCommandStreamReceiverWhenItIsDestroye
} }
TEST(CommandStreamReceiverSimpleTest, givenCommandStreamReceiverWhenInitializeTagAllocationIsCalledThenTagAllocationIsBeingAllocated) { TEST(CommandStreamReceiverSimpleTest, givenCommandStreamReceiverWhenInitializeTagAllocationIsCalledThenTagAllocationIsBeingAllocated) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
auto csr = new MockCommandStreamReceiver(executionEnvironment); auto csr = new MockCommandStreamReceiver(executionEnvironment);
executionEnvironment.commandStreamReceivers.resize(1); executionEnvironment.commandStreamReceivers.resize(1);
executionEnvironment.commandStreamReceivers[0].push_back(std::unique_ptr<CommandStreamReceiver>(csr)); executionEnvironment.commandStreamReceivers[0].push_back(std::unique_ptr<CommandStreamReceiver>(csr));
@@ -371,7 +372,7 @@ TEST(CommandStreamReceiverSimpleTest, givenCommandStreamReceiverWhenInitializeTa
TEST(CommandStreamReceiverSimpleTest, givenNullHardwareDebugModeWhenInitializeTagAllocationIsCalledThenTagAllocationIsBeingAllocatedAndinitialValueIsMinusOne) { TEST(CommandStreamReceiverSimpleTest, givenNullHardwareDebugModeWhenInitializeTagAllocationIsCalledThenTagAllocationIsBeingAllocatedAndinitialValueIsMinusOne) {
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.EnableNullHardware.set(true); DebugManager.flags.EnableNullHardware.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.commandStreamReceivers.resize(1); executionEnvironment.commandStreamReceivers.resize(1);
auto csr = new MockCommandStreamReceiver(executionEnvironment); auto csr = new MockCommandStreamReceiver(executionEnvironment);
executionEnvironment.commandStreamReceivers[0].push_back(std::unique_ptr<CommandStreamReceiver>(csr)); executionEnvironment.commandStreamReceivers[0].push_back(std::unique_ptr<CommandStreamReceiver>(csr));

View File

@@ -285,7 +285,7 @@ HWTEST_F(TbxCommandStreamTests, givenTbxCommandStreamReceiverWhenFlushIsCalledTh
} }
TEST(TbxMemoryManagerTest, givenTbxMemoryManagerWhenItIsQueriedForSystemSharedMemoryThen1GBIsReturned) { TEST(TbxMemoryManagerTest, givenTbxMemoryManagerWhenItIsQueriedForSystemSharedMemoryThen1GBIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
TbxMemoryManager memoryManager(executionEnvironment); TbxMemoryManager memoryManager(executionEnvironment);
EXPECT_EQ(1 * GB, memoryManager.getSystemSharedMemory()); EXPECT_EQ(1 * GB, memoryManager.getSystemSharedMemory());
} }

View File

@@ -209,7 +209,7 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDe
OsInterfaceMock(uint32_t &destructorId) : DestructorCounted(destructorId) {} OsInterfaceMock(uint32_t &destructorId) : DestructorCounted(destructorId) {}
}; };
struct MemoryMangerMock : public DestructorCounted<MockMemoryManager, 6> { struct MemoryMangerMock : public DestructorCounted<MockMemoryManager, 6> {
MemoryMangerMock(uint32_t &destructorId) : DestructorCounted(destructorId) {} MemoryMangerMock(uint32_t &destructorId, ExecutionEnvironment &executionEnvironment) : DestructorCounted(destructorId, executionEnvironment) {}
}; };
struct AubCenterMock : public DestructorCounted<AubCenter, 5> { struct AubCenterMock : public DestructorCounted<AubCenter, 5> {
AubCenterMock(uint32_t &destructorId) : DestructorCounted(destructorId, platformDevices[0], false, "", CommandStreamReceiverType::CSR_AUB) {} AubCenterMock(uint32_t &destructorId) : DestructorCounted(destructorId, platformDevices[0], false, "", CommandStreamReceiverType::CSR_AUB) {}
@@ -231,10 +231,11 @@ TEST(ExecutionEnvironment, givenExecutionEnvironmentWithVariousMembersWhenItIsDe
}; };
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>(); auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
executionEnvironment->setHwInfo(*platformDevices);
executionEnvironment->commandStreamReceivers.resize(1); executionEnvironment->commandStreamReceivers.resize(1);
executionEnvironment->gmmHelper = std::make_unique<GmmHelperMock>(destructorId, platformDevices[0]); executionEnvironment->gmmHelper = std::make_unique<GmmHelperMock>(destructorId, platformDevices[0]);
executionEnvironment->osInterface = std::make_unique<OsInterfaceMock>(destructorId); executionEnvironment->osInterface = std::make_unique<OsInterfaceMock>(destructorId);
executionEnvironment->memoryManager = std::make_unique<MemoryMangerMock>(destructorId); executionEnvironment->memoryManager = std::make_unique<MemoryMangerMock>(destructorId, *executionEnvironment);
executionEnvironment->aubCenter = std::make_unique<AubCenterMock>(destructorId); executionEnvironment->aubCenter = std::make_unique<AubCenterMock>(destructorId);
executionEnvironment->commandStreamReceivers[0].push_back(std::make_unique<CommandStreamReceiverMock>(destructorId, *executionEnvironment)); executionEnvironment->commandStreamReceivers[0].push_back(std::make_unique<CommandStreamReceiverMock>(destructorId, *executionEnvironment));
executionEnvironment->specialCommandStreamReceiver = std::make_unique<SpecialCommandStreamReceiverMock>(destructorId, *executionEnvironment); executionEnvironment->specialCommandStreamReceiver = std::make_unique<SpecialCommandStreamReceiverMock>(destructorId, *executionEnvironment);
@@ -314,7 +315,7 @@ TEST(ExecutionEnvironment, givenUnproperSetCsrFlagValueWhenInitializingMemoryMan
DebugManagerStateRestore restorer; DebugManagerStateRestore restorer;
DebugManager.flags.SetCommandStreamReceiver.set(10); DebugManager.flags.SetCommandStreamReceiver.set(10);
auto executionEnvironment = std::make_unique<ExecutionEnvironment>(); auto executionEnvironment = std::make_unique<MockExecutionEnvironment>(*platformDevices);
executionEnvironment->initializeMemoryManager(); executionEnvironment->initializeMemoryManager();
EXPECT_NE(nullptr, executionEnvironment->memoryManager); EXPECT_NE(nullptr, executionEnvironment->memoryManager);
} }

View File

@@ -16,6 +16,7 @@
using namespace NEO; using namespace NEO;
void MemoryManagerWithCsrFixture::SetUp() { void MemoryManagerWithCsrFixture::SetUp() {
executionEnvironment.setHwInfo(*platformDevices);
csr = new MockCommandStreamReceiver(this->executionEnvironment); csr = new MockCommandStreamReceiver(this->executionEnvironment);
memoryManager = new MockMemoryManager(executionEnvironment); memoryManager = new MockMemoryManager(executionEnvironment);
executionEnvironment.memoryManager.reset(memoryManager); executionEnvironment.memoryManager.reset(memoryManager);

View File

@@ -143,6 +143,7 @@ class GTPinFixture : public ContextFixture, public MemoryManagementFixture {
constructPlatform(); constructPlatform();
pPlatform = platform(); pPlatform = platform();
auto executionEnvironment = pPlatform->peekExecutionEnvironment(); auto executionEnvironment = pPlatform->peekExecutionEnvironment();
executionEnvironment->setHwInfo(*platformDevices);
memoryManager = new MockMemoryManagerWithFailures(*executionEnvironment); memoryManager = new MockMemoryManagerWithFailures(*executionEnvironment);
executionEnvironment->memoryManager.reset(memoryManager); executionEnvironment->memoryManager.reset(memoryManager);
pPlatform->initialize(); pPlatform->initialize();

View File

@@ -18,6 +18,7 @@
#include "unit_tests/mocks/mock_command_queue.h" #include "unit_tests/mocks/mock_command_queue.h"
#include "unit_tests/mocks/mock_context.h" #include "unit_tests/mocks/mock_context.h"
#include "unit_tests/mocks/mock_device.h" #include "unit_tests/mocks/mock_device.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_kernel.h" #include "unit_tests/mocks/mock_kernel.h"
#include "unit_tests/mocks/mock_mdi.h" #include "unit_tests/mocks/mock_mdi.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
@@ -197,7 +198,8 @@ TEST_F(TimestampPacketSimpleTests, givenImplicitDependencyWhenEndTagIsWrittenThe
} }
TEST_F(TimestampPacketSimpleTests, whenNewTagIsTakenThenReinitialize) { TEST_F(TimestampPacketSimpleTests, whenNewTagIsTakenThenReinitialize) {
MockMemoryManager memoryManager; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(executionEnvironment);
MockTagAllocator<TimestampPacket> allocator(&memoryManager, 1); MockTagAllocator<TimestampPacket> allocator(&memoryManager, 1);
auto firstNode = allocator.getTag(); auto firstNode = allocator.getTag();
@@ -238,7 +240,8 @@ TEST_F(TimestampPacketSimpleTests, whenObjectIsCreatedThenInitializeAllStamps) {
} }
TEST_F(TimestampPacketSimpleTests, whenAskedForStampAddressThenReturnWithValidOffset) { TEST_F(TimestampPacketSimpleTests, whenAskedForStampAddressThenReturnWithValidOffset) {
MockMemoryManager memoryManager; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(executionEnvironment);
MockTagAllocator<TimestampPacket> allocator(&memoryManager, 1); MockTagAllocator<TimestampPacket> allocator(&memoryManager, 1);
auto node = allocator.getTag(); auto node = allocator.getTag();

View File

@@ -8,6 +8,7 @@
#include "runtime/helpers/properties_helper.h" #include "runtime/helpers/properties_helper.h"
#include "unit_tests/helpers/debug_manager_state_restore.h" #include "unit_tests/helpers/debug_manager_state_restore.h"
#include "unit_tests/mocks/mock_buffer.h" #include "unit_tests/mocks/mock_buffer.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -24,7 +25,7 @@ TEST(TransferPropertiesTest, givenTransferPropertiesCreatedWhenDefaultDebugSetti
} }
TEST(TransferPropertiesTest, givenAllocationInNonSystemPoolWhenTransferPropertiesAreCreatedForMapBufferThenLockPtrIsSet) { TEST(TransferPropertiesTest, givenAllocationInNonSystemPoolWhenTransferPropertiesAreCreatedForMapBufferThenLockPtrIsSet) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, true, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;
@@ -41,7 +42,7 @@ TEST(TransferPropertiesTest, givenAllocationInNonSystemPoolWhenTransferPropertie
} }
TEST(TransferPropertiesTest, givenAllocationInSystemPoolWhenTransferPropertiesAreCreatedForMapBufferThenLockPtrIsNotSet) { TEST(TransferPropertiesTest, givenAllocationInSystemPoolWhenTransferPropertiesAreCreatedForMapBufferThenLockPtrIsNotSet) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, true, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;
@@ -67,7 +68,7 @@ TEST(TransferPropertiesTest, givenTransferPropertiesCreatedWhenMemoryManagerInMe
} }
TEST(TransferPropertiesTest, givenTransferPropertiesWhenLockedPtrIsSetThenItIsReturnedForReadWrite) { TEST(TransferPropertiesTest, givenTransferPropertiesWhenLockedPtrIsSetThenItIsReturnedForReadWrite) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, true, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, true, executionEnvironment);
MockContext ctx; MockContext ctx;

View File

@@ -17,6 +17,7 @@
#include "unit_tests/helpers/variable_backup.h" #include "unit_tests/helpers/variable_backup.h"
#include "unit_tests/linux/drm_wrap.h" #include "unit_tests/linux/drm_wrap.h"
#include "unit_tests/linux/mock_os_layer.h" #include "unit_tests/linux/mock_os_layer.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/os_interface/linux/device_command_stream_fixture.h" #include "unit_tests/os_interface/linux/device_command_stream_fixture.h"
#include "gmock/gmock.h" #include "gmock/gmock.h"
@@ -362,7 +363,7 @@ TEST(AllocatorHelper, givenExpectedSizeToMapWhenGetSizetoMapCalledThenExpectedVa
TEST(DrmMemoryManagerCreate, whenCallCreateMemoryManagerThenDrmMemoryManagerIsCreated) { TEST(DrmMemoryManagerCreate, whenCallCreateMemoryManagerThenDrmMemoryManagerIsCreated) {
DrmMockSuccess mock; DrmMockSuccess mock;
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.osInterface = std::make_unique<OSInterface>(); executionEnvironment.osInterface = std::make_unique<OSInterface>();
executionEnvironment.osInterface->get()->setDrm(&mock); executionEnvironment.osInterface->get()->setDrm(&mock);

View File

@@ -14,6 +14,8 @@
#include "unit_tests/fixtures/platform_fixture.h" #include "unit_tests/fixtures/platform_fixture.h"
#include "unit_tests/helpers/memory_management.h" #include "unit_tests/helpers/memory_management.h"
#include "unit_tests/mocks/mock_context.h" #include "unit_tests/mocks/mock_context.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_memory_manager.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -49,8 +51,8 @@ class TestedMemoryManager : public OsAgnosticMemoryManager {
}; };
TEST(BufferTests, doPinIsSet) { TEST(BufferTests, doPinIsSet) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
std::unique_ptr<TestedMemoryManager> mm(new TestedMemoryManager(executionEnvironment)); std::unique_ptr<TestedMemoryManager> mm(new MemoryManagerCreate<TestedMemoryManager>(false, false, executionEnvironment));
{ {
MockContext context; MockContext context;
auto size = MemoryConstants::pageSize * 32; auto size = MemoryConstants::pageSize * 32;
@@ -72,7 +74,7 @@ TEST(BufferTests, doPinIsSet) {
} }
} }
TEST(BufferTests, doPinIsSetForHostPtr) { TEST(BufferTests, doPinIsSetForHostPtr) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
std::unique_ptr<TestedMemoryManager> mm(new TestedMemoryManager(executionEnvironment)); std::unique_ptr<TestedMemoryManager> mm(new TestedMemoryManager(executionEnvironment));
{ {
MockContext context; MockContext context;

View File

@@ -25,6 +25,7 @@
#include "unit_tests/mocks/mock_buffer.h" #include "unit_tests/mocks/mock_buffer.h"
#include "unit_tests/mocks/mock_command_queue.h" #include "unit_tests/mocks/mock_command_queue.h"
#include "unit_tests/mocks/mock_context.h" #include "unit_tests/mocks/mock_context.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_gmm_resource_info.h" #include "unit_tests/mocks/mock_gmm_resource_info.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
@@ -572,7 +573,8 @@ TEST_F(RenderCompressedBuffersTests, givenSvmAllocationWhenCreatingBufferThenFor
struct RenderCompressedBuffersCopyHostMemoryTests : public RenderCompressedBuffersTests { struct RenderCompressedBuffersCopyHostMemoryTests : public RenderCompressedBuffersTests {
void SetUp() override { void SetUp() override {
RenderCompressedBuffersTests::SetUp(); RenderCompressedBuffersTests::SetUp();
device->injectMemoryManager(new MockMemoryManager(true, false)); MockExecutionEnvironment executionEnvironment(*platformDevices);
device->injectMemoryManager(new MockMemoryManager(true, false, executionEnvironment));
context->setMemoryManager(device->getMemoryManager()); context->setMemoryManager(device->getMemoryManager());
mockCmdQ = new MockCommandQueue(); mockCmdQ = new MockCommandQueue();
context->setSpecialQueue(mockCmdQ); context->setSpecialQueue(mockCmdQ);

View File

@@ -216,8 +216,8 @@ TEST(MemObj, givenMemoryManagerWithoutDeviceWhenMemObjDestroysAllocationAsyncThe
} }
TEST(MemObj, givenMemObjAndPointerToObjStorageWithProperCommandWhenCheckIfMemTransferRequiredThenReturnFalse) { TEST(MemObj, givenMemObjAndPointerToObjStorageWithProperCommandWhenCheckIfMemTransferRequiredThenReturnFalse) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
@@ -243,8 +243,8 @@ TEST(MemObj, givenMemObjAndPointerToObjStorageWithProperCommandWhenCheckIfMemTra
EXPECT_FALSE(isMemTransferNeeded); EXPECT_FALSE(isMemTransferNeeded);
} }
TEST(MemObj, givenMemObjAndPointerToObjStorageBadCommandWhenCheckIfMemTransferRequiredThenReturnTrue) { TEST(MemObj, givenMemObjAndPointerToObjStorageBadCommandWhenCheckIfMemTransferRequiredThenReturnTrue) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
@@ -255,8 +255,8 @@ TEST(MemObj, givenMemObjAndPointerToObjStorageBadCommandWhenCheckIfMemTransferRe
EXPECT_TRUE(isMemTransferNeeded); EXPECT_TRUE(isMemTransferNeeded);
} }
TEST(MemObj, givenMemObjAndPointerToDiffrentStorageAndProperCommandWhenCheckIfMemTransferRequiredThenReturnTrue) { TEST(MemObj, givenMemObjAndPointerToDiffrentStorageAndProperCommandWhenCheckIfMemTransferRequiredThenReturnTrue) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
@@ -286,8 +286,8 @@ TEST(MemObj, givenTiledObjectWhenAskedForCpuMappingThenReturnFalse) {
} }
TEST(MemObj, givenRenderCompressedGmmWhenAskingForMappingOnCpuThenDisallow) { TEST(MemObj, givenRenderCompressedGmmWhenAskingForMappingOnCpuThenDisallow) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
@@ -304,8 +304,8 @@ TEST(MemObj, givenRenderCompressedGmmWhenAskingForMappingOnCpuThenDisallow) {
} }
TEST(MemObj, givenDefaultWhenAskedForCpuMappingThenReturnTrue) { TEST(MemObj, givenDefaultWhenAskedForCpuMappingThenReturnTrue) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
@@ -320,8 +320,8 @@ TEST(MemObj, givenDefaultWhenAskedForCpuMappingThenReturnTrue) {
} }
TEST(MemObj, givenNonCpuAccessibleMemoryWhenAskingForMappingOnCpuThenDisallow) { TEST(MemObj, givenNonCpuAccessibleMemoryWhenAskingForMappingOnCpuThenDisallow) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
@@ -337,9 +337,8 @@ TEST(MemObj, givenNonCpuAccessibleMemoryWhenAskingForMappingOnCpuThenDisallow) {
} }
TEST(MemObj, givenMultipleMemObjectsWithReusedGraphicsAllocationWhenDestroyedThenFreeAllocationOnce) { TEST(MemObj, givenMultipleMemObjectsWithReusedGraphicsAllocationWhenDestroyedThenFreeAllocationOnce) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
@@ -374,8 +373,8 @@ TEST(MemObj, givenMemObjectWhenContextIsNotNullThenContextOutlivesMemobjects) {
} }
TEST(MemObj, givenSharedMemObjectWithNullGfxAllocationWhenSettingGfxAllocationThenSucceed) { TEST(MemObj, givenSharedMemObjectWithNullGfxAllocationWhenSettingGfxAllocationThenSucceed) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
MockGraphicsAllocation *gfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *gfxAllocation = new MockGraphicsAllocation(nullptr, 0);
@@ -391,8 +390,8 @@ TEST(MemObj, givenSharedMemObjectWithNullGfxAllocationWhenSettingGfxAllocationTh
} }
TEST(MemObj, givenSharedMemObjectAndNullGfxAllocationProvidedWhenSettingGfxAllocationThenSucceed) { TEST(MemObj, givenSharedMemObjectAndNullGfxAllocationProvidedWhenSettingGfxAllocationThenSucceed) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
MockGraphicsAllocation *graphicsAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *graphicsAllocation = new MockGraphicsAllocation(nullptr, 0);
@@ -407,8 +406,8 @@ TEST(MemObj, givenSharedMemObjectAndNullGfxAllocationProvidedWhenSettingGfxAlloc
} }
TEST(MemObj, givenSharedMemObjectAndZeroReuseCountWhenChangingGfxAllocationThenOldAllocationIsDestroyed) { TEST(MemObj, givenSharedMemObjectAndZeroReuseCountWhenChangingGfxAllocationThenOldAllocationIsDestroyed) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
MockGraphicsAllocation *oldGfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *oldGfxAllocation = new MockGraphicsAllocation(nullptr, 0);
MockGraphicsAllocation *newGfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *newGfxAllocation = new MockGraphicsAllocation(nullptr, 0);
@@ -426,8 +425,8 @@ TEST(MemObj, givenSharedMemObjectAndZeroReuseCountWhenChangingGfxAllocationThenO
} }
TEST(MemObj, givenSharedMemObjectAndNonZeroReuseCountWhenChangingGfxAllocationThenOldAllocationIsNotDestroyed) { TEST(MemObj, givenSharedMemObjectAndNonZeroReuseCountWhenChangingGfxAllocationThenOldAllocationIsNotDestroyed) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
MockGraphicsAllocation *oldGfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *oldGfxAllocation = new MockGraphicsAllocation(nullptr, 0);
MockGraphicsAllocation *newGfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *newGfxAllocation = new MockGraphicsAllocation(nullptr, 0);
@@ -445,8 +444,8 @@ TEST(MemObj, givenSharedMemObjectAndNonZeroReuseCountWhenChangingGfxAllocationTh
} }
TEST(MemObj, givenNotSharedMemObjectWhenChangingGfxAllocationThenOldAllocationIsDestroyed) { TEST(MemObj, givenNotSharedMemObjectWhenChangingGfxAllocationThenOldAllocationIsDestroyed) {
MockMemoryManager memoryManager;
MockContext context; MockContext context;
MockMemoryManager memoryManager(*context.getDevice(0)->getExecutionEnvironment());
context.setMemoryManager(&memoryManager); context.setMemoryManager(&memoryManager);
MockGraphicsAllocation *oldGfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *oldGfxAllocation = new MockGraphicsAllocation(nullptr, 0);
MockGraphicsAllocation *newGfxAllocation = new MockGraphicsAllocation(nullptr, 0); MockGraphicsAllocation *newGfxAllocation = new MockGraphicsAllocation(nullptr, 0);

View File

@@ -10,7 +10,7 @@
#include "runtime/helpers/array_count.h" #include "runtime/helpers/array_count.h"
TEST(MemoryManagerTest, givenNotSetUseSystemMemoryWhenGraphicsAllocationInDevicePoolIsAllocatedThenAllocationIsReturned) { TEST(MemoryManagerTest, givenNotSetUseSystemMemoryWhenGraphicsAllocationInDevicePoolIsAllocatedThenAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
MemoryManager::AllocationStatus status = MemoryManager::AllocationStatus::Error; MemoryManager::AllocationStatus status = MemoryManager::AllocationStatus::Error;
@@ -26,7 +26,7 @@ TEST(MemoryManagerTest, givenNotSetUseSystemMemoryWhenGraphicsAllocationInDevice
} }
TEST(MemoryManagerTest, givenImageOrSharedResourceCopyWhenGraphicsAllocationInDevicePoolIsAllocatedThenNullptrIsReturned) { TEST(MemoryManagerTest, givenImageOrSharedResourceCopyWhenGraphicsAllocationInDevicePoolIsAllocatedThenNullptrIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
MemoryManager::AllocationStatus status = MemoryManager::AllocationStatus::Error; MemoryManager::AllocationStatus status = MemoryManager::AllocationStatus::Error;

View File

@@ -9,6 +9,7 @@
#include "runtime/mem_obj/mem_obj_helper.h" #include "runtime/mem_obj/mem_obj_helper.h"
#include "runtime/memory_manager/os_agnostic_memory_manager.h" #include "runtime/memory_manager/os_agnostic_memory_manager.h"
#include "test.h" #include "test.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -16,7 +17,7 @@
using namespace NEO; using namespace NEO;
TEST(MemoryManagerTest, givenSetUseSytemMemoryWhenGraphicsAllocationInDevicePoolIsAllocatedThenNullptrIsReturned) { TEST(MemoryManagerTest, givenSetUseSytemMemoryWhenGraphicsAllocationInDevicePoolIsAllocatedThenNullptrIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
MemoryManager::AllocationStatus status = MemoryManager::AllocationStatus::Success; MemoryManager::AllocationStatus status = MemoryManager::AllocationStatus::Success;
AllocationData allocData; AllocationData allocData;
@@ -30,7 +31,7 @@ TEST(MemoryManagerTest, givenSetUseSytemMemoryWhenGraphicsAllocationInDevicePool
} }
TEST(MemoryManagerTest, givenAllowed32BitAndFroce32BitWhenGraphicsAllocationInDevicePoolIsAllocatedThenNullptrIsReturned) { TEST(MemoryManagerTest, givenAllowed32BitAndFroce32BitWhenGraphicsAllocationInDevicePoolIsAllocatedThenNullptrIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
memoryManager.setForce32BitAllocations(true); memoryManager.setForce32BitAllocations(true);

View File

@@ -9,6 +9,7 @@
#include "runtime/memory_manager/os_agnostic_memory_manager.h" #include "runtime/memory_manager/os_agnostic_memory_manager.h"
#include "test.h" #include "test.h"
#include "unit_tests/mocks/mock_allocation_properties.h" #include "unit_tests/mocks/mock_allocation_properties.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -161,7 +162,7 @@ INSTANTIATE_TEST_CASE_P(Disallow32BitAnd64kbPagesTypes,
::testing::ValuesIn(allocationTypesWith32BitAnd64KbPagesNotAllowed)); ::testing::ValuesIn(allocationTypesWith32BitAnd64KbPagesNotAllowed));
TEST(MemoryManagerTest, givenForced32BitSetWhenGraphicsMemoryFor32BitAllowedTypeIsAllocatedThen32BitAllocationIsReturned) { TEST(MemoryManagerTest, givenForced32BitSetWhenGraphicsMemoryFor32BitAllowedTypeIsAllocatedThen32BitAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
memoryManager.setForce32BitAllocations(true); memoryManager.setForce32BitAllocations(true);
@@ -184,7 +185,7 @@ TEST(MemoryManagerTest, givenForced32BitSetWhenGraphicsMemoryFor32BitAllowedType
} }
TEST(MemoryManagerTest, givenForced32BitEnabledWhenGraphicsMemoryWihtoutAllow32BitFlagIsAllocatedThenNon32BitAllocationIsReturned) { TEST(MemoryManagerTest, givenForced32BitEnabledWhenGraphicsMemoryWihtoutAllow32BitFlagIsAllocatedThenNon32BitAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(executionEnvironment);
memoryManager.setForce32BitAllocations(true); memoryManager.setForce32BitAllocations(true);
@@ -202,7 +203,7 @@ TEST(MemoryManagerTest, givenForced32BitEnabledWhenGraphicsMemoryWihtoutAllow32B
} }
TEST(MemoryManagerTest, givenForced32BitDisabledWhenGraphicsMemoryWith32BitFlagFor32BitAllowedTypeIsAllocatedThenNon32BitAllocationIsReturned) { TEST(MemoryManagerTest, givenForced32BitDisabledWhenGraphicsMemoryWith32BitFlagFor32BitAllowedTypeIsAllocatedThenNon32BitAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(executionEnvironment);
memoryManager.setForce32BitAllocations(false); memoryManager.setForce32BitAllocations(false);
@@ -219,7 +220,7 @@ TEST(MemoryManagerTest, givenForced32BitDisabledWhenGraphicsMemoryWith32BitFlagF
} }
TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryAndIsAllocatedWithNullptrForBufferThen64kbAllocationIsReturned) { TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryAndIsAllocatedWithNullptrForBufferThen64kbAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment);
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
@@ -237,7 +238,8 @@ TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryA
} }
TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryWithoutAllow64kbPagesFlagsIsAllocatedThenNon64kbAllocationIsReturned) { TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryWithoutAllow64kbPagesFlagsIsAllocatedThenNon64kbAllocationIsReturned) {
MockMemoryManager memoryManager(true, false); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(true, false, executionEnvironment);
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
@@ -253,7 +255,8 @@ TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryWithoutAllow64kbP
} }
TEST(MemoryManagerTest, givenDisabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryAndIsAllocatedWithNullptrForBufferThenNon64kbAllocationIsReturned) { TEST(MemoryManagerTest, givenDisabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryAndIsAllocatedWithNullptrForBufferThenNon64kbAllocationIsReturned) {
MockMemoryManager memoryManager(false, false); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment);
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
@@ -269,7 +272,7 @@ TEST(MemoryManagerTest, givenDisabled64kbPagesWhenGraphicsMemoryMustBeHostMemory
} }
TEST(MemoryManagerTest, givenForced32BitAndEnabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryAndIsAllocatedWithNullptrForBufferThen32BitAllocationOver64kbIsChosen) { TEST(MemoryManagerTest, givenForced32BitAndEnabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryAndIsAllocatedWithNullptrForBufferThen32BitAllocationOver64kbIsChosen) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
memoryManager.setForce32BitAllocations(true); memoryManager.setForce32BitAllocations(true);
@@ -290,7 +293,7 @@ TEST(MemoryManagerTest, givenForced32BitAndEnabled64kbPagesWhenGraphicsMemoryMus
} }
TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryIsAllocatedWithHostPtrForBufferThenExistingMemoryIsUsedForAllocation) { TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryIsAllocatedWithHostPtrForBufferThenExistingMemoryIsUsedForAllocation) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment);
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(false, 1, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(false, 1, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
@@ -307,7 +310,8 @@ TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryIsAllocatedWithHo
} }
TEST(MemoryManagerTest, givenMemoryManagerWhenGraphicsMemoryAllocationInDevicePoolFailsThenFallbackAllocationIsReturned) { TEST(MemoryManagerTest, givenMemoryManagerWhenGraphicsMemoryAllocationInDevicePoolFailsThenFallbackAllocationIsReturned) {
MockMemoryManager memoryManager(false, true); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment);
memoryManager.failInDevicePool = true; memoryManager.failInDevicePool = true;
@@ -320,7 +324,8 @@ TEST(MemoryManagerTest, givenMemoryManagerWhenGraphicsMemoryAllocationInDevicePo
} }
TEST(MemoryManagerTest, givenMemoryManagerWhenBufferTypeIsPassedThenAllocateGraphicsMemoryInPreferredPoolCanAllocateInDevicePool) { TEST(MemoryManagerTest, givenMemoryManagerWhenBufferTypeIsPassedThenAllocateGraphicsMemoryInPreferredPoolCanAllocateInDevicePool) {
MockMemoryManager memoryManager(false, true); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER}); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER});
EXPECT_NE(nullptr, allocation); EXPECT_NE(nullptr, allocation);
@@ -328,7 +333,8 @@ TEST(MemoryManagerTest, givenMemoryManagerWhenBufferTypeIsPassedThenAllocateGrap
} }
TEST(MemoryManagerTest, givenMemoryManagerWhenBufferTypeIsPassedAndAllocateInDevicePoolFailsWithErrorThenAllocateGraphicsMemoryInPreferredPoolReturnsNullptr) { TEST(MemoryManagerTest, givenMemoryManagerWhenBufferTypeIsPassedAndAllocateInDevicePoolFailsWithErrorThenAllocateGraphicsMemoryInPreferredPoolReturnsNullptr) {
MockMemoryManager memoryManager(false, true); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, executionEnvironment);
memoryManager.failInDevicePoolWithError = true; memoryManager.failInDevicePoolWithError = true;
@@ -387,7 +393,8 @@ TEST(MemoryManagerTest, givenProfilingTagBufferTypeWhenGetAllocationDataIsCalled
} }
TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagEnabledWhenAllocateMemoryThenAllocationIsMultiOsContextCapable) { TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagEnabledWhenAllocateMemoryThenAllocationIsMultiOsContextCapable) {
MockMemoryManager memoryManager(false, false); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment);
AllocationProperties properties{MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER}; AllocationProperties properties{MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER};
properties.flags.multiOsContextCapable = true; properties.flags.multiOsContextCapable = true;
@@ -401,7 +408,8 @@ TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagEn
} }
TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagDisabledWhenAllocateMemoryThenAllocationIsNotMultiOsContextCapable) { TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagDisabledWhenAllocateMemoryThenAllocationIsNotMultiOsContextCapable) {
MockMemoryManager memoryManager(false, false); MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment);
AllocationProperties properties{MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER}; AllocationProperties properties{MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER};
properties.flags.multiOsContextCapable = false; properties.flags.multiOsContextCapable = false;

View File

@@ -32,6 +32,7 @@
#include "unit_tests/mocks/mock_deferrable_deletion.h" #include "unit_tests/mocks/mock_deferrable_deletion.h"
#include "unit_tests/mocks/mock_deferred_deleter.h" #include "unit_tests/mocks/mock_deferred_deleter.h"
#include "unit_tests/mocks/mock_device.h" #include "unit_tests/mocks/mock_device.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_gmm.h" #include "unit_tests/mocks/mock_gmm.h"
#include "unit_tests/mocks/mock_graphics_allocation.h" #include "unit_tests/mocks/mock_graphics_allocation.h"
#include "unit_tests/mocks/mock_kernel.h" #include "unit_tests/mocks/mock_kernel.h"
@@ -539,13 +540,13 @@ TEST_F(MemoryAllocatorTest, given32BitDeviceWhenPrintfSurfaceIsCreatedThen32BitA
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenItIsCreatedThenForce32BitAllocationsIsFalse) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenItIsCreatedThenForce32BitAllocationsIsFalse) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
EXPECT_FALSE(memoryManager.peekForce32BitAllocations()); EXPECT_FALSE(memoryManager.peekForce32BitAllocations());
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenForce32bitallocationIsCalledWithTrueThenMemoryManagerForces32BitAlloactions) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenForce32bitallocationIsCalledWithTrueThenMemoryManagerForces32BitAlloactions) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
memoryManager.setForce32BitAllocations(true); memoryManager.setForce32BitAllocations(true);
EXPECT_TRUE(memoryManager.peekForce32BitAllocations()); EXPECT_TRUE(memoryManager.peekForce32BitAllocations());
@@ -664,7 +665,7 @@ TEST(OsAgnosticMemoryManager, givenHostPointerRequiringCopyWhenAllocateGraphicsM
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerAndUnifiedAuxCapableAllocationWhenMappingThenReturnFalse) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerAndUnifiedAuxCapableAllocationWhenMappingThenReturnFalse) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
auto gmm = new Gmm(nullptr, 123, false); auto gmm = new Gmm(nullptr, 123, false);
@@ -680,7 +681,7 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerAndUnifiedAuxCapableAlloc
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateGraphicsMemoryIsCalledThenMemoryPoolIsSystem4KBPages) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateGraphicsMemoryIsCalledThenMemoryPoolIsSystem4KBPages) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
auto size = 4096u; auto size = 4096u;
@@ -691,7 +692,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateGraphicsMemoryIsCall
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocateGraphicsMemory64kbIsCalledThenMemoryPoolIsSystem64KBPages) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocateGraphicsMemory64kbIsCalledThenMemoryPoolIsSystem64KBPages) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(true, false, executionEnvironment); MockMemoryManager memoryManager(true, false, executionEnvironment);
AllocationData allocationData; AllocationData allocationData;
allocationData.size = 4096u; allocationData.size = 4096u;
@@ -711,7 +712,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocate
return nullptr; return nullptr;
} }
}; };
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockOsAgnosticManagerWithFailingAllocate memoryManager(true, executionEnvironment); MockOsAgnosticManagerWithFailingAllocate memoryManager(true, executionEnvironment);
AllocationData allocationData; AllocationData allocationData;
allocationData.size = 4096u; allocationData.size = 4096u;
@@ -721,7 +722,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocate
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateGraphicsMemoryWithPtrIsCalledThenMemoryPoolIsSystem4KBPages) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateGraphicsMemoryWithPtrIsCalledThenMemoryPoolIsSystem4KBPages) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
void *ptr = reinterpret_cast<void *>(0x1001); void *ptr = reinterpret_cast<void *>(0x1001);
auto size = MemoryConstants::pageSize; auto size = MemoryConstants::pageSize;
@@ -735,7 +736,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateGraphicsMemoryWithPt
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocate32BitGraphicsMemoryWithPtrIsCalledThenMemoryPoolIsSystem4KBPagesWith32BitGpuAddressing) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocate32BitGraphicsMemoryWithPtrIsCalledThenMemoryPoolIsSystem4KBPagesWith32BitGpuAddressing) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
void *ptr = reinterpret_cast<void *>(0x1001); void *ptr = reinterpret_cast<void *>(0x1001);
auto size = MemoryConstants::pageSize; auto size = MemoryConstants::pageSize;
@@ -749,7 +750,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocate32BitGraphicsMemoryW
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocate32BitGraphicsMemoryWithoutPtrIsCalledThenMemoryPoolIsSystem4KBPagesWith32BitGpuAddressing) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocate32BitGraphicsMemoryWithoutPtrIsCalledThenMemoryPoolIsSystem4KBPagesWith32BitGpuAddressing) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
void *ptr = nullptr; void *ptr = nullptr;
auto size = MemoryConstants::pageSize; auto size = MemoryConstants::pageSize;
@@ -762,7 +763,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocate32BitGraphicsMemoryW
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocateGraphicsMemoryThenMemoryPoolIsSystem64KBPages) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocateGraphicsMemoryThenMemoryPoolIsSystem64KBPages) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment);
auto svmAllocation = memoryManager.allocateGraphicsMemoryWithProperties({MemoryConstants::pageSize, GraphicsAllocation::AllocationType::SVM}); auto svmAllocation = memoryManager.allocateGraphicsMemoryWithProperties({MemoryConstants::pageSize, GraphicsAllocation::AllocationType::SVM});
EXPECT_NE(nullptr, svmAllocation); EXPECT_NE(nullptr, svmAllocation);
@@ -771,7 +772,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesEnabledWhenAllocate
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesDisabledWhenAllocateGraphicsMemoryThen4KBGraphicsAllocationIsReturned) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesDisabledWhenAllocateGraphicsMemoryThen4KBGraphicsAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
auto svmAllocation = memoryManager.allocateGraphicsMemoryWithProperties({MemoryConstants::pageSize, GraphicsAllocation::AllocationType::SVM}); auto svmAllocation = memoryManager.allocateGraphicsMemoryWithProperties({MemoryConstants::pageSize, GraphicsAllocation::AllocationType::SVM});
EXPECT_EQ(MemoryPool::System4KBPages, svmAllocation->getMemoryPool()); EXPECT_EQ(MemoryPool::System4KBPages, svmAllocation->getMemoryPool());
@@ -779,7 +780,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWith64KBPagesDisabledWhenAllocat
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenCreateGraphicsAllocationFromSharedObjectIsCalledThenGraphicsAllocationIsReturned) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenCreateGraphicsAllocationFromSharedObjectIsCalledThenGraphicsAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
osHandle handle = 1; osHandle handle = 1;
auto size = 4096u; auto size = 4096u;
@@ -794,14 +795,14 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenCreateGraphicsAllocat
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenCreateAllocationFromNtHandleIsCalledThenReturnNullptr) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenCreateAllocationFromNtHandleIsCalledThenReturnNullptr) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
auto graphicsAllocation = memoryManager.createGraphicsAllocationFromNTHandle((void *)1); auto graphicsAllocation = memoryManager.createGraphicsAllocationFromNTHandle((void *)1);
EXPECT_EQ(nullptr, graphicsAllocation); EXPECT_EQ(nullptr, graphicsAllocation);
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenLockUnlockCalledThenReturnCpuPtr) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenLockUnlockCalledThenReturnCpuPtr) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@@ -817,7 +818,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenLockUnlockCalledThenReturnCp
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenGraphicsAllocationContainsOffsetWhenAddressIsObtainedThenOffsetIsAdded) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenGraphicsAllocationContainsOffsetWhenAddressIsObtainedThenOffsetIsAdded) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
auto graphicsAllocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto graphicsAllocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
@@ -837,7 +838,7 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenGraphicsAllocationCon
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenGraphicsAllocationIsPaddedThenNewGraphicsAllocationIsCreated) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenGraphicsAllocationIsPaddedThenNewGraphicsAllocationIsCreated) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
auto graphicsAllocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto graphicsAllocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
@@ -856,7 +857,7 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenGraphicsAllocationIsP
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenTwoGraphicsAllocationArePaddedThenOnlyOnePaddingBufferIsUsed) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenTwoGraphicsAllocationArePaddedThenOnlyOnePaddingBufferIsUsed) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
auto graphicsAllocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto graphicsAllocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
@@ -880,7 +881,7 @@ TEST(OsAgnosticMemoryManager, pleaseDetectLeak) {
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateMemoryWithNoAlignmentProvidedThenAllocationIsAlignedToPageSize) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateMemoryWithNoAlignmentProvidedThenAllocationIsAlignedToPageSize) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
MockAllocationProperties properties(MemoryConstants::pageSize >> 1); MockAllocationProperties properties(MemoryConstants::pageSize >> 1);
properties.alignment = 0; properties.alignment = 0;
@@ -893,7 +894,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateMemoryWithNoAlignmen
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateMemoryWithAlignmentNotAlignedToPageSizeThenAlignmentIsAlignedUp) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateMemoryWithAlignmentNotAlignedToPageSizeThenAlignmentIsAlignedUp) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(false, false, executionEnvironment);
MockAllocationProperties properties(MemoryConstants::pageSize >> 1); MockAllocationProperties properties(MemoryConstants::pageSize >> 1);
properties.alignment = MemoryConstants::pageSize - 1; properties.alignment = MemoryConstants::pageSize - 1;
@@ -906,13 +907,14 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenAllocateMemoryWithAlignmentN
} }
TEST(OsAgnosticMemoryManager, givenCommonMemoryManagerWhenIsAskedIfApplicationMemoryBudgetIsExhaustedThenFalseIsReturned) { TEST(OsAgnosticMemoryManager, givenCommonMemoryManagerWhenIsAskedIfApplicationMemoryBudgetIsExhaustedThenFalseIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
EXPECT_FALSE(memoryManager.isMemoryBudgetExhausted()); EXPECT_FALSE(memoryManager.isMemoryBudgetExhausted());
} }
class MemoryManagerWithAsyncDeleterTest : public ::testing::Test { class MemoryManagerWithAsyncDeleterTest : public ::testing::Test {
public: public:
MemoryManagerWithAsyncDeleterTest() : memoryManager(false, false){};
void SetUp() override { void SetUp() override {
memoryManager.overrideAsyncDeleterFlag(true); memoryManager.overrideAsyncDeleterFlag(true);
} }
@@ -962,7 +964,8 @@ TEST_F(MemoryManagerWithAsyncDeleterTest, givenMemoryManagerWhenAllocateGraphics
} }
TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenIsAsyncDeleterEnabledCalledThenReturnsValueOfFlag) { TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenIsAsyncDeleterEnabledCalledThenReturnsValueOfFlag) {
MockMemoryManager memoryManager; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(executionEnvironment);
memoryManager.overrideAsyncDeleterFlag(false); memoryManager.overrideAsyncDeleterFlag(false);
EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled()); EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled());
memoryManager.overrideAsyncDeleterFlag(true); memoryManager.overrideAsyncDeleterFlag(true);
@@ -970,7 +973,7 @@ TEST(OsAgnosticMemoryManager, givenMemoryManagerWhenIsAsyncDeleterEnabledCalledT
} }
TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenItIsCreatedThenAsyncDeleterEnabledIsFalse) { TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenItIsCreatedThenAsyncDeleterEnabledIsFalse) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled()); EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled());
EXPECT_EQ(nullptr, memoryManager.getDeferredDeleter()); EXPECT_EQ(nullptr, memoryManager.getDeferredDeleter());
@@ -979,7 +982,7 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenItIsCreatedThenAsyncD
TEST(OsAgnosticMemoryManager, givenEnabledAsyncDeleterFlagWhenMemoryManagerIsCreatedThenAsyncDeleterEnabledIsFalseAndDeleterIsNullptr) { TEST(OsAgnosticMemoryManager, givenEnabledAsyncDeleterFlagWhenMemoryManagerIsCreatedThenAsyncDeleterEnabledIsFalseAndDeleterIsNullptr) {
bool defaultEnableDeferredDeleterFlag = DebugManager.flags.EnableDeferredDeleter.get(); bool defaultEnableDeferredDeleterFlag = DebugManager.flags.EnableDeferredDeleter.get();
DebugManager.flags.EnableDeferredDeleter.set(true); DebugManager.flags.EnableDeferredDeleter.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled()); EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled());
EXPECT_EQ(nullptr, memoryManager.getDeferredDeleter()); EXPECT_EQ(nullptr, memoryManager.getDeferredDeleter());
@@ -989,7 +992,7 @@ TEST(OsAgnosticMemoryManager, givenEnabledAsyncDeleterFlagWhenMemoryManagerIsCre
TEST(OsAgnosticMemoryManager, givenDisabledAsyncDeleterFlagWhenMemoryManagerIsCreatedThenAsyncDeleterEnabledIsFalseAndDeleterIsNullptr) { TEST(OsAgnosticMemoryManager, givenDisabledAsyncDeleterFlagWhenMemoryManagerIsCreatedThenAsyncDeleterEnabledIsFalseAndDeleterIsNullptr) {
bool defaultEnableDeferredDeleterFlag = DebugManager.flags.EnableDeferredDeleter.get(); bool defaultEnableDeferredDeleterFlag = DebugManager.flags.EnableDeferredDeleter.get();
DebugManager.flags.EnableDeferredDeleter.set(false); DebugManager.flags.EnableDeferredDeleter.set(false);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled()); EXPECT_FALSE(memoryManager.isAsyncDeleterEnabled());
EXPECT_EQ(nullptr, memoryManager.getDeferredDeleter()); EXPECT_EQ(nullptr, memoryManager.getDeferredDeleter());
@@ -999,7 +1002,7 @@ TEST(OsAgnosticMemoryManager, givenDisabledAsyncDeleterFlagWhenMemoryManagerIsCr
TEST(OsAgnosticMemoryManager, GivenEnabled64kbPagesWhenHostMemoryAllocationIsCreatedThenAlignedto64KbAllocationIsReturned) { TEST(OsAgnosticMemoryManager, GivenEnabled64kbPagesWhenHostMemoryAllocationIsCreatedThenAlignedto64KbAllocationIsReturned) {
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.Enable64kbpages.set(true); DebugManager.flags.Enable64kbpages.set(true);
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment); MemoryManagerCreate<OsAgnosticMemoryManager> memoryManager(true, false, executionEnvironment);
GraphicsAllocation *galloc = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize64k, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY}); GraphicsAllocation *galloc = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize64k, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY});
@@ -1017,7 +1020,7 @@ TEST(OsAgnosticMemoryManager, GivenEnabled64kbPagesWhenHostMemoryAllocationIsCre
} }
TEST(OsAgnosticMemoryManager, givenPointerAndSizeWhenCreateInternalAllocationIsCalledThenGraphicsAllocationIsReturned) { TEST(OsAgnosticMemoryManager, givenPointerAndSizeWhenCreateInternalAllocationIsCalledThenGraphicsAllocationIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
auto ptr = (void *)0x100000; auto ptr = (void *)0x100000;
size_t allocationSize = 4096; size_t allocationSize = 4096;
@@ -1027,13 +1030,13 @@ TEST(OsAgnosticMemoryManager, givenPointerAndSizeWhenCreateInternalAllocationIsC
memoryManager.freeGraphicsMemory(graphicsAllocation); memoryManager.freeGraphicsMemory(graphicsAllocation);
} }
TEST(OsAgnosticMemoryManager, givenDefaultOsAgnosticMemoryManagerWhenItIsQueriedForInternalHeapBaseThen32BitAllocatorBaseIsReturned) { TEST(OsAgnosticMemoryManager, givenDefaultOsAgnosticMemoryManagerWhenItIsQueriedForInternalHeapBaseThen32BitAllocatorBaseIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
auto heapBase = memoryManager.allocator32Bit->getBase(); auto heapBase = memoryManager.allocator32Bit->getBase();
EXPECT_EQ(heapBase, memoryManager.getInternalHeapBaseAddress()); EXPECT_EQ(heapBase, memoryManager.getInternalHeapBaseAddress());
} }
TEST(OsAgnosticMemoryManager, givenOsAgnosticMemoryManagerWhenAllocateGraphicsMemoryForNonSvmHostPtrIsCalledThenAllocationIsCreated) { TEST(OsAgnosticMemoryManager, givenOsAgnosticMemoryManagerWhenAllocateGraphicsMemoryForNonSvmHostPtrIsCalledThenAllocationIsCreated) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(executionEnvironment); MockMemoryManager memoryManager(executionEnvironment);
AllocationData allocationData; AllocationData allocationData;
allocationData.size = 13; allocationData.size = 13;
@@ -1049,7 +1052,7 @@ using OsAgnosticMemoryManagerWithParams = ::testing::TestWithParam<bool>;
TEST_P(OsAgnosticMemoryManagerWithParams, givenReducedGpuAddressSpaceWhenAllocateGraphicsMemoryForHostPtrIsCalledThenAllocationWithoutFragmentsIsCreated) { TEST_P(OsAgnosticMemoryManagerWithParams, givenReducedGpuAddressSpaceWhenAllocateGraphicsMemoryForHostPtrIsCalledThenAllocationWithoutFragmentsIsCreated) {
bool requiresL3Flush = GetParam(); bool requiresL3Flush = GetParam();
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.setHwInfo(platformDevices[0]); executionEnvironment.setHwInfo(platformDevices[0]);
if (executionEnvironment.isFullRangeSvm()) { if (executionEnvironment.isFullRangeSvm()) {
return; return;
@@ -1068,7 +1071,7 @@ TEST_P(OsAgnosticMemoryManagerWithParams, givenReducedGpuAddressSpaceWhenAllocat
TEST_P(OsAgnosticMemoryManagerWithParams, givenFullGpuAddressSpaceWhenAllocateGraphicsMemoryForHostPtrIsCalledThenAllocationWithFragmentsIsCreated) { TEST_P(OsAgnosticMemoryManagerWithParams, givenFullGpuAddressSpaceWhenAllocateGraphicsMemoryForHostPtrIsCalledThenAllocationWithFragmentsIsCreated) {
bool requiresL3Flush = GetParam(); bool requiresL3Flush = GetParam();
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.setHwInfo(platformDevices[0]); executionEnvironment.setHwInfo(platformDevices[0]);
if (!executionEnvironment.isFullRangeSvm()) { if (!executionEnvironment.isFullRangeSvm()) {
return; return;
@@ -1091,7 +1094,7 @@ TEST_P(OsAgnosticMemoryManagerWithParams, givenDisabledHostPtrTrackingWhenAlloca
DebugManager.flags.EnableHostPtrTracking.set(false); DebugManager.flags.EnableHostPtrTracking.set(false);
bool requiresL3Flush = GetParam(); bool requiresL3Flush = GetParam();
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.setHwInfo(platformDevices[0]); executionEnvironment.setHwInfo(platformDevices[0]);
if (!executionEnvironment.isFullRangeSvm()) { if (!executionEnvironment.isFullRangeSvm()) {
return; return;
@@ -1114,7 +1117,7 @@ INSTANTIATE_TEST_CASE_P(OsAgnosticMemoryManagerWithParams,
::testing::Values(false, true)); ::testing::Values(false, true));
TEST(OsAgnosticMemoryManager, givenLocalMemoryNotSupportedWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) { TEST(OsAgnosticMemoryManager, givenLocalMemoryNotSupportedWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, false, executionEnvironment);
uint64_t heap32Base = 0x80000000000ul; uint64_t heap32Base = 0x80000000000ul;
@@ -1125,7 +1128,7 @@ TEST(OsAgnosticMemoryManager, givenLocalMemoryNotSupportedWhenMemoryManagerIsCre
} }
TEST(OsAgnosticMemoryManager, givenLocalMemorySupportedAndNotAubUsageWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) { TEST(OsAgnosticMemoryManager, givenLocalMemorySupportedAndNotAubUsageWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, false, executionEnvironment); MockMemoryManager memoryManager(false, true, false, executionEnvironment);
memoryManager.allocator32Bit.reset(memoryManager.create32BitAllocator(false)); memoryManager.allocator32Bit.reset(memoryManager.create32BitAllocator(false));
uint64_t heap32Base = 0x80000000000ul; uint64_t heap32Base = 0x80000000000ul;
@@ -1137,7 +1140,7 @@ TEST(OsAgnosticMemoryManager, givenLocalMemorySupportedAndNotAubUsageWhenMemoryM
} }
TEST(OsAgnosticMemoryManager, givenLocalMemoryNotSupportedAndAubUsageWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) { TEST(OsAgnosticMemoryManager, givenLocalMemoryNotSupportedAndAubUsageWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, true, executionEnvironment); MockMemoryManager memoryManager(false, false, true, executionEnvironment);
uint64_t heap32Base = 0x80000000000ul; uint64_t heap32Base = 0x80000000000ul;
@@ -1148,7 +1151,7 @@ TEST(OsAgnosticMemoryManager, givenLocalMemoryNotSupportedAndAubUsageWhenMemoryM
} }
TEST(OsAgnosticMemoryManager, givenLocalMemorySupportedAndAubUsageWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) { TEST(OsAgnosticMemoryManager, givenLocalMemorySupportedAndAubUsageWhenMemoryManagerIsCreatedThenAllocator32BitHasCorrectBaseAddress) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, true, true, executionEnvironment); MockMemoryManager memoryManager(false, true, true, executionEnvironment);
memoryManager.allocator32Bit.reset(memoryManager.create32BitAllocator(true)); memoryManager.allocator32Bit.reset(memoryManager.create32BitAllocator(true));
uint64_t heap32Base = 0x80000000000ul; uint64_t heap32Base = 0x80000000000ul;
@@ -1308,7 +1311,7 @@ TEST_F(MemoryManagerWithCsrTest, givenAllocationThatWasUsedAndIsNotCompletedWhen
class MockAlignMallocMemoryManager : public MockMemoryManager { class MockAlignMallocMemoryManager : public MockMemoryManager {
public: public:
MockAlignMallocMemoryManager() { MockAlignMallocMemoryManager(ExecutionEnvironment &executionEnvironment) : MockMemoryManager(executionEnvironment) {
testMallocRestrictions.minAddress = 0; testMallocRestrictions.minAddress = 0;
alignMallocRestrictions = nullptr; alignMallocRestrictions = nullptr;
alignMallocCount = 0; alignMallocCount = 0;
@@ -1360,7 +1363,8 @@ class MockAlignMallocMemoryManagerTest : public MemoryAllocatorTest {
void SetUp() override { void SetUp() override {
MemoryAllocatorTest::SetUp(); MemoryAllocatorTest::SetUp();
alignedMemoryManager = new (std::nothrow) MockAlignMallocMemoryManager; MockExecutionEnvironment executionEnvironment(*platformDevices);
alignedMemoryManager = new (std::nothrow) MockAlignMallocMemoryManager(executionEnvironment);
//assert we have memory manager //assert we have memory manager
ASSERT_NE(nullptr, memoryManager); ASSERT_NE(nullptr, memoryManager);
} }
@@ -1535,7 +1539,7 @@ TEST(GraphicsAllocation, givenSharedHandleBasedConstructorWhenGraphicsAllocation
} }
TEST(ResidencyDataTest, givenOsContextWhenItIsRegisteredToMemoryManagerThenRefCountIncreases) { TEST(ResidencyDataTest, givenOsContextWhenItIsRegisteredToMemoryManagerThenRefCountIncreases) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
memoryManager.createAndRegisterOsContext(nullptr, HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances()[0], memoryManager.createAndRegisterOsContext(nullptr, HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances()[0],
1, PreemptionHelper::getDefaultPreemptionMode(*platformDevices[0]), false); 1, PreemptionHelper::getDefaultPreemptionMode(*platformDevices[0]), false);
@@ -1544,7 +1548,7 @@ TEST(ResidencyDataTest, givenOsContextWhenItIsRegisteredToMemoryManagerThenRefCo
} }
TEST(ResidencyDataTest, givenDeviceBitfieldWhenCreatingOsContextThenSetValidValue) { TEST(ResidencyDataTest, givenDeviceBitfieldWhenCreatingOsContextThenSetValidValue) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
DeviceBitfield deviceBitfield = getDeviceBitfieldForNDevices(2); DeviceBitfield deviceBitfield = getDeviceBitfieldForNDevices(2);
PreemptionMode preemptionMode = PreemptionMode::MidThread; PreemptionMode preemptionMode = PreemptionMode::MidThread;
@@ -1556,7 +1560,7 @@ TEST(ResidencyDataTest, givenDeviceBitfieldWhenCreatingOsContextThenSetValidValu
} }
TEST(ResidencyDataTest, givenTwoOsContextsWhenTheyAreRegisteredFromHigherToLowerThenProperSizeIsReturned) { TEST(ResidencyDataTest, givenTwoOsContextsWhenTheyAreRegisteredFromHigherToLowerThenProperSizeIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
memoryManager.createAndRegisterOsContext(nullptr, HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances()[0], memoryManager.createAndRegisterOsContext(nullptr, HwHelper::get(platformDevices[0]->pPlatform->eRenderCoreFamily).getGpgpuEngineInstances()[0],
1, PreemptionHelper::getDefaultPreemptionMode(*platformDevices[0]), false); 1, PreemptionHelper::getDefaultPreemptionMode(*platformDevices[0]), false);
@@ -1605,7 +1609,7 @@ TEST(ResidencyDataTest, givenResidencyDataWhenUpdateCompletionDataIsCalledThenIt
} }
TEST(MemoryManagerTest, givenMemoryManagerWhenLockIsCalledOnLockedResourceThenDoesNothing) { TEST(MemoryManagerTest, givenMemoryManagerWhenLockIsCalledOnLockedResourceThenDoesNothing) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
@@ -1625,7 +1629,7 @@ TEST(MemoryManagerTest, givenMemoryManagerWhenLockIsCalledOnLockedResourceThenDo
} }
TEST(MemoryManagerTest, givenMemoryManagerWhenAllocationWasNotUnlockedThenItIsUnlockedDuringDestruction) { TEST(MemoryManagerTest, givenMemoryManagerWhenAllocationWasNotUnlockedThenItIsUnlockedDuringDestruction) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize}); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
@@ -1715,14 +1719,14 @@ TEST_F(MemoryAllocatorTest, whenCommandStreamerIsNotRegisteredThenReturnNullEngi
EXPECT_EQ(nullptr, engineControl); EXPECT_EQ(nullptr, engineControl);
} }
TEST(MemoryManagerCopyMemoryTest, givenAllocationWithNoStorageWhenCopyMemoryToAllocationThenReturnFalse) { TEST(MemoryManagerCopyMemoryTest, givenAllocationWithNoStorageWhenCopyMemoryToAllocationThenReturnFalse) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
uint8_t memory = 1; uint8_t memory = 1;
MockGraphicsAllocation invalidAllocation{nullptr, 0u}; MockGraphicsAllocation invalidAllocation{nullptr, 0u};
EXPECT_FALSE(memoryManager.copyMemoryToAllocation(&invalidAllocation, &memory, sizeof(memory))); EXPECT_FALSE(memoryManager.copyMemoryToAllocation(&invalidAllocation, &memory, sizeof(memory)));
} }
TEST(MemoryManagerCopyMemoryTest, givenValidAllocationAndMemoryWhenCopyMemoryToAllocationThenDataIsCopied) { TEST(MemoryManagerCopyMemoryTest, givenValidAllocationAndMemoryWhenCopyMemoryToAllocationThenDataIsCopied) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MockMemoryManager memoryManager(false, false, executionEnvironment); MockMemoryManager memoryManager(false, false, executionEnvironment);
constexpr uint8_t allocationSize = 10; constexpr uint8_t allocationSize = 10;
uint8_t allocationStorage[allocationSize] = {0}; uint8_t allocationStorage[allocationSize] = {0};

View File

@@ -5,6 +5,7 @@
* *
*/ */
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_memory_manager.h" #include "unit_tests/mocks/mock_memory_manager.h"
#include "unit_tests/mocks/mock_svm_manager.h" #include "unit_tests/mocks/mock_svm_manager.h"
@@ -13,8 +14,8 @@
using namespace NEO; using namespace NEO;
struct SVMMemoryAllocatorTest : ::testing::Test { struct SVMMemoryAllocatorTest : ::testing::Test {
SVMMemoryAllocatorTest() : memoryManager(false, false, executionEnvironment), svmManager(&memoryManager) {} SVMMemoryAllocatorTest() : executionEnvironment(*platformDevices), memoryManager(false, false, executionEnvironment), svmManager(&memoryManager) {}
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment;
MockMemoryManager memoryManager; MockMemoryManager memoryManager;
MockSVMAllocsManager svmManager; MockSVMAllocsManager svmManager;
}; };

View File

@@ -78,5 +78,5 @@ FailDevice::FailDevice(const HardwareInfo &hwInfo, ExecutionEnvironment *executi
} }
FailDeviceAfterOne::FailDeviceAfterOne(const HardwareInfo &hwInfo, ExecutionEnvironment *executionEnvironment, uint32_t deviceIndex) FailDeviceAfterOne::FailDeviceAfterOne(const HardwareInfo &hwInfo, ExecutionEnvironment *executionEnvironment, uint32_t deviceIndex)
: MockDevice(hwInfo, executionEnvironment, deviceIndex) { : MockDevice(hwInfo, executionEnvironment, deviceIndex) {
this->mockMemoryManager.reset(new FailMemoryManager(1)); this->mockMemoryManager.reset(new FailMemoryManager(1, *executionEnvironment));
} }

View File

@@ -91,7 +91,7 @@ GraphicsAllocation *MockMemoryManager::allocate32BitGraphicsMemory(size_t size,
return allocate32BitGraphicsMemoryImpl(allocationData); return allocate32BitGraphicsMemoryImpl(allocationData);
} }
FailMemoryManager::FailMemoryManager(int32_t failedAllocationsCount) { FailMemoryManager::FailMemoryManager(int32_t failedAllocationsCount, ExecutionEnvironment &executionEnvironment) : MockMemoryManager(executionEnvironment) {
this->failedAllocationsCount = failedAllocationsCount; this->failedAllocationsCount = failedAllocationsCount;
} }

View File

@@ -8,6 +8,7 @@
#pragma once #pragma once
#include "runtime/execution_environment/execution_environment.h" #include "runtime/execution_environment/execution_environment.h"
#include "runtime/memory_manager/os_agnostic_memory_manager.h" #include "runtime/memory_manager/os_agnostic_memory_manager.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_host_ptr_manager.h" #include "unit_tests/mocks/mock_host_ptr_manager.h"
#include "gmock/gmock.h" #include "gmock/gmock.h"
@@ -46,10 +47,10 @@ class MockMemoryManager : public MemoryManagerCreate<OsAgnosticMemoryManager> {
hostPtrManager.reset(new MockHostPtrManager); hostPtrManager.reset(new MockHostPtrManager);
}; };
MockMemoryManager() : MockMemoryManager(*(new ExecutionEnvironment)) { MockMemoryManager() : MockMemoryManager(*(new MockExecutionEnvironment(*platformDevices))) {
mockExecutionEnvironment.reset(&executionEnvironment); mockExecutionEnvironment.reset(&executionEnvironment);
}; };
MockMemoryManager(bool enable64pages, bool enableLocalMemory) : MemoryManagerCreate(enable64pages, enableLocalMemory, *(new ExecutionEnvironment)) { MockMemoryManager(bool enable64pages, bool enableLocalMemory) : MemoryManagerCreate(enable64pages, enableLocalMemory, *(new MockExecutionEnvironment(*platformDevices))) {
mockExecutionEnvironment.reset(&executionEnvironment); mockExecutionEnvironment.reset(&executionEnvironment);
} }
GraphicsAllocation *allocateGraphicsMemory64kb(const AllocationData &allocationData) override; GraphicsAllocation *allocateGraphicsMemory64kb(const AllocationData &allocationData) override;
@@ -137,7 +138,7 @@ class FailMemoryManager : public MockMemoryManager {
public: public:
using MemoryManager::allocateGraphicsMemoryWithProperties; using MemoryManager::allocateGraphicsMemoryWithProperties;
using MockMemoryManager::MockMemoryManager; using MockMemoryManager::MockMemoryManager;
FailMemoryManager(int32_t failedAllocationsCount); FailMemoryManager(int32_t failedAllocationsCount, ExecutionEnvironment &executionEnvironment);
GraphicsAllocation *allocateGraphicsMemoryWithAlignment(const AllocationData &allocationData) override { GraphicsAllocation *allocateGraphicsMemoryWithAlignment(const AllocationData &allocationData) override {
if (failedAllocationsCount <= 0) { if (failedAllocationsCount <= 0) {

View File

@@ -9,6 +9,7 @@
#include "runtime/os_interface/linux/drm_memory_manager.h" #include "runtime/os_interface/linux/drm_memory_manager.h"
#include "runtime/os_interface/linux/os_interface.h" #include "runtime/os_interface/linux/os_interface.h"
#include "unit_tests/mocks/linux/mock_drm_memory_manager.h" #include "unit_tests/mocks/linux/mock_drm_memory_manager.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/os_interface/linux/device_command_stream_fixture.h" #include "unit_tests/os_interface/linux/device_command_stream_fixture.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -33,7 +34,7 @@ TEST(DrmMemoryManagerTest, givenDrmMemoryManagerWhenSharedAllocationIsCreatedFro
return 0; return 0;
} }
}; };
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.osInterface = std::make_unique<OSInterface>(); executionEnvironment.osInterface = std::make_unique<OSInterface>();
auto mock = make_unique<MockDrm>(0); auto mock = make_unique<MockDrm>(0);
executionEnvironment.osInterface->get()->setDrm(mock.get()); executionEnvironment.osInterface->get()->setDrm(mock.get());
@@ -97,7 +98,7 @@ TEST(DrmMemoryManagerTest, givenMultipleThreadsWhenSharedAllocationIsCreatedThen
} }
}; };
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.osInterface = std::make_unique<OSInterface>(); executionEnvironment.osInterface = std::make_unique<OSInterface>();
auto mock = make_unique<MockDrm>(0); auto mock = make_unique<MockDrm>(0);
executionEnvironment.osInterface->get()->setDrm(mock.get()); executionEnvironment.osInterface->get()->setDrm(mock.get());

View File

@@ -98,7 +98,7 @@ TEST(ApiOsTest, notSupportedApiList) {
TEST(DeviceOsTest, DeviceCreationFailMidThreadPreemption) { TEST(DeviceOsTest, DeviceCreationFailMidThreadPreemption) {
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread)); DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread));
auto pDevice = MockDevice::createWithNewExecutionEnvironment<FailDeviceAfterOne>(nullptr); auto pDevice = MockDevice::createWithNewExecutionEnvironment<FailDeviceAfterOne>(*platformDevices);
EXPECT_THAT(pDevice, nullptr); EXPECT_THAT(pDevice, nullptr);
} }

View File

@@ -15,6 +15,7 @@
#include "runtime/os_interface/linux/drm_memory_manager.h" #include "runtime/os_interface/linux/drm_memory_manager.h"
#include "runtime/os_interface/linux/os_interface.h" #include "runtime/os_interface/linux/os_interface.h"
#include "test.h" #include "test.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/os_interface/linux/device_command_stream_fixture.h" #include "unit_tests/os_interface/linux/device_command_stream_fixture.h"
#include "drm/i915_drm.h" #include "drm/i915_drm.h"
@@ -54,6 +55,7 @@ class DrmMockForWorker : public Drm {
class DrmGemCloseWorkerFixture { class DrmGemCloseWorkerFixture {
public: public:
DrmGemCloseWorkerFixture() : executionEnvironment(*platformDevices){};
//max loop count for while //max loop count for while
static const uint32_t deadCntInit = 10 * 1000 * 1000; static const uint32_t deadCntInit = 10 * 1000 * 1000;
@@ -99,7 +101,7 @@ class DrmGemCloseWorkerFixture {
: DrmAllocation(GraphicsAllocation::AllocationType::UNDECIDED, bo, nullptr, 0, MemoryPool::MemoryNull, 1u, false) { : DrmAllocation(GraphicsAllocation::AllocationType::UNDECIDED, bo, nullptr, 0, MemoryPool::MemoryNull, 1u, false) {
} }
}; };
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment;
}; };
typedef Test<DrmGemCloseWorkerFixture> DrmGemCloseWorkerTests; typedef Test<DrmGemCloseWorkerFixture> DrmGemCloseWorkerTests;

View File

@@ -9,6 +9,7 @@
#include "runtime/os_interface/linux/drm_memory_manager.h" #include "runtime/os_interface/linux/drm_memory_manager.h"
#include "runtime/os_interface/linux/os_interface.h" #include "runtime/os_interface/linux/os_interface.h"
#include "unit_tests/mocks/linux/mock_drm_memory_manager.h" #include "unit_tests/mocks/linux/mock_drm_memory_manager.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
using namespace NEO; using namespace NEO;
@@ -17,7 +18,7 @@ using namespace ::testing;
using AllocationData = TestedDrmMemoryManager::AllocationData; using AllocationData = TestedDrmMemoryManager::AllocationData;
TEST(DrmMemoryManagerSimpleTest, givenDrmMemoryManagerWhenAllocateInDevicePoolIsCalledThenNullptrAndStatusRetryIsReturned) { TEST(DrmMemoryManagerSimpleTest, givenDrmMemoryManagerWhenAllocateInDevicePoolIsCalledThenNullptrAndStatusRetryIsReturned) {
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
executionEnvironment.osInterface = std::make_unique<OSInterface>(); executionEnvironment.osInterface = std::make_unique<OSInterface>();
executionEnvironment.osInterface->get()->setDrm(Drm::get(0)); executionEnvironment.osInterface->get()->setDrm(Drm::get(0));
TestedDrmMemoryManager memoryManager(executionEnvironment); TestedDrmMemoryManager memoryManager(executionEnvironment);

View File

@@ -10,6 +10,7 @@
#include "unit_tests/fixtures/memory_management_fixture.h" #include "unit_tests/fixtures/memory_management_fixture.h"
#include "unit_tests/mocks/linux/mock_drm_memory_manager.h" #include "unit_tests/mocks/linux/mock_drm_memory_manager.h"
#include "unit_tests/mocks/mock_device.h" #include "unit_tests/mocks/mock_device.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/os_interface/linux/device_command_stream_fixture.h" #include "unit_tests/os_interface/linux/device_command_stream_fixture.h"
#include <memory> #include <memory>
@@ -20,12 +21,13 @@ using AllocationData = TestedDrmMemoryManager::AllocationData;
class DrmMemoryManagerBasic : public ::testing::Test { class DrmMemoryManagerBasic : public ::testing::Test {
public: public:
DrmMemoryManagerBasic() : executionEnvironment(*platformDevices){};
void SetUp() override { void SetUp() override {
executionEnvironment.osInterface = std::make_unique<OSInterface>(); executionEnvironment.osInterface = std::make_unique<OSInterface>();
executionEnvironment.osInterface->get()->setDrm(Drm::get(0)); executionEnvironment.osInterface->get()->setDrm(Drm::get(0));
} }
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment;
}; };
class DrmMemoryManagerFixture : public MemoryManagementFixture { class DrmMemoryManagerFixture : public MemoryManagementFixture {
@@ -37,7 +39,7 @@ class DrmMemoryManagerFixture : public MemoryManagementFixture {
void SetUp() override { void SetUp() override {
MemoryManagementFixture::SetUp(); MemoryManagementFixture::SetUp();
this->mock = new DrmMockCustom; this->mock = new DrmMockCustom;
executionEnvironment = new ExecutionEnvironment; executionEnvironment = new MockExecutionEnvironment(*platformDevices);
executionEnvironment->incRefInternal(); executionEnvironment->incRefInternal();
executionEnvironment->osInterface = std::make_unique<OSInterface>(); executionEnvironment->osInterface = std::make_unique<OSInterface>();
executionEnvironment->osInterface->get()->setDrm(mock); executionEnvironment->osInterface->get()->setDrm(mock);

View File

@@ -62,7 +62,7 @@ TEST(DeviceOsTest, DeviceCreationFail) {
TEST(DeviceOsTest, DeviceCreationFailMidThreadPreemption) { TEST(DeviceOsTest, DeviceCreationFailMidThreadPreemption) {
DebugManagerStateRestore dbgRestore; DebugManagerStateRestore dbgRestore;
DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread)); DebugManager.flags.ForcePreemptionMode.set(static_cast<int32_t>(PreemptionMode::MidThread));
auto pDevice = MockDevice::createWithNewExecutionEnvironment<FailDeviceAfterOne>(nullptr); auto pDevice = MockDevice::createWithNewExecutionEnvironment<FailDeviceAfterOne>(*platformDevices);
EXPECT_THAT(pDevice, nullptr); EXPECT_THAT(pDevice, nullptr);
} }

View File

@@ -8,6 +8,7 @@
#include "runtime/execution_environment/execution_environment.h" #include "runtime/execution_environment/execution_environment.h"
#include "runtime/memory_manager/os_agnostic_memory_manager.h" #include "runtime/memory_manager/os_agnostic_memory_manager.h"
#include "runtime/program/kernel_info.h" #include "runtime/program/kernel_info.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -108,7 +109,7 @@ TEST(KernelInfo, decodeImageKernelArgument) {
TEST(KernelInfoTest, givenKernelInfoWhenCreateKernelAllocationThenCopyWholeKernelHeapToKernelAllocation) { TEST(KernelInfoTest, givenKernelInfoWhenCreateKernelAllocationThenCopyWholeKernelHeapToKernelAllocation) {
KernelInfo kernelInfo; KernelInfo kernelInfo;
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
OsAgnosticMemoryManager memoryManager(executionEnvironment); OsAgnosticMemoryManager memoryManager(executionEnvironment);
SKernelBinaryHeaderCommon kernelHeader; SKernelBinaryHeaderCommon kernelHeader;
const size_t heapSize = 0x40; const size_t heapSize = 0x40;
@@ -137,7 +138,7 @@ class MyMemoryManager : public OsAgnosticMemoryManager {
TEST(KernelInfoTest, givenKernelInfoWhenCreateKernelAllocationAndCannotAllocateMemoryThenReturnsFalse) { TEST(KernelInfoTest, givenKernelInfoWhenCreateKernelAllocationAndCannotAllocateMemoryThenReturnsFalse) {
KernelInfo kernelInfo; KernelInfo kernelInfo;
ExecutionEnvironment executionEnvironment; MockExecutionEnvironment executionEnvironment(*platformDevices);
MyMemoryManager memoryManager(executionEnvironment); MyMemoryManager memoryManager(executionEnvironment);
SKernelBinaryHeaderCommon kernelHeader; SKernelBinaryHeaderCommon kernelHeader;
kernelInfo.heapInfo.pKernelHeader = &kernelHeader; kernelInfo.heapInfo.pKernelHeader = &kernelHeader;

View File

@@ -13,6 +13,7 @@
#include "unit_tests/libult/ult_command_stream_receiver.h" #include "unit_tests/libult/ult_command_stream_receiver.h"
#include "unit_tests/mocks/gl/mock_gl_sharing.h" #include "unit_tests/mocks/gl/mock_gl_sharing.h"
#include "unit_tests/mocks/mock_context.h" #include "unit_tests/mocks/mock_context.h"
#include "unit_tests/mocks/mock_execution_environment.h"
#include "unit_tests/mocks/mock_gmm.h" #include "unit_tests/mocks/mock_gmm.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
@@ -23,7 +24,7 @@ class CreateFromGlTexture : public ::testing::Test {
// temp solution - we need to query size from GMM: // temp solution - we need to query size from GMM:
class TempMM : public OsAgnosticMemoryManager { class TempMM : public OsAgnosticMemoryManager {
public: public:
TempMM() : OsAgnosticMemoryManager(*(new ExecutionEnvironment)) { TempMM() : OsAgnosticMemoryManager(*(new MockExecutionEnvironment(*platformDevices))) {
mockExecutionEnvironment.reset(&executionEnvironment); mockExecutionEnvironment.reset(&executionEnvironment);
} }
GraphicsAllocation *createGraphicsAllocationFromSharedHandle(osHandle handle, bool requireSpecificBitness) override { GraphicsAllocation *createGraphicsAllocationFromSharedHandle(osHandle handle, bool requireSpecificBitness) override {