Skip to content

Commit edb7883

Browse files
committed
Move allocateGraphicsMemoryInDevicePool to Os Agnostic memory manager.
Change-Id: Ica179986f401b99e61c3485d549790489cbb1fd5 Signed-off-by: Mrozek, Michal <[email protected]>
1 parent 7989a68 commit edb7883

File tree

5 files changed

+33
-62
lines changed

5 files changed

+33
-62
lines changed

runtime/memory_manager/memory_manager.h

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -198,49 +198,10 @@ class MemoryManager {
198198
virtual GraphicsAllocation *allocateGraphicsMemoryWithAlignment(const AllocationData &allocationData) = 0;
199199
virtual GraphicsAllocation *allocateGraphicsMemory64kb(const AllocationData &allocationData) = 0;
200200
virtual GraphicsAllocation *allocate32BitGraphicsMemoryImpl(const AllocationData &allocationData) = 0;
201-
virtual GraphicsAllocation *allocateGraphicsMemoryInDevicePool(const AllocationData &allocationData, AllocationStatus &status) {
202-
status = AllocationStatus::Error;
203-
switch (allocationData.type) {
204-
case GraphicsAllocation::AllocationType::IMAGE:
205-
case GraphicsAllocation::AllocationType::SHARED_RESOURCE_COPY:
206-
break;
207-
default:
208-
if (!allocationData.flags.useSystemMemory && !(allocationData.flags.allow32Bit && this->force32bitAllocations)) {
209-
GraphicsAllocation *allocation = nullptr;
210-
if (allocationData.type == GraphicsAllocation::AllocationType::SVM_GPU) {
211-
void *cpuAllocation = allocateSystemMemory(allocationData.size, allocationData.alignment);
212-
if (!cpuAllocation) {
213-
return nullptr;
214-
}
215-
uint64_t gpuAddress = reinterpret_cast<uint64_t>(allocationData.hostPtr);
216-
allocation = constructGraphicsAllocation(allocationData.type,
217-
cpuAllocation,
218-
gpuAddress,
219-
allocationData.size, MemoryPool::LocalMemory, false);
220-
allocation->setGpuBaseAddress(gpuAddress);
221-
} else {
222-
allocation = allocateGraphicsMemory(allocationData);
223-
}
224-
225-
if (allocation) {
226-
allocation->storageInfo = allocationData.storageInfo;
227-
allocation->setFlushL3Required(allocationData.flags.flushL3);
228-
status = AllocationStatus::Success;
229-
}
230-
return allocation;
231-
}
232-
}
233-
status = AllocationStatus::RetryInNonDevicePool;
234-
return nullptr;
235-
}
201+
virtual GraphicsAllocation *allocateGraphicsMemoryInDevicePool(const AllocationData &allocationData, AllocationStatus &status) = 0;
236202
GraphicsAllocation *allocateGraphicsMemoryForImageFromHostPtr(const AllocationData &allocationData);
237203
MOCKABLE_VIRTUAL GraphicsAllocation *allocateGraphicsMemoryForImage(const AllocationData &allocationData);
238204
virtual GraphicsAllocation *allocateGraphicsMemoryForImageImpl(const AllocationData &allocationData, std::unique_ptr<Gmm> gmm) = 0;
239-
virtual GraphicsAllocation *constructGraphicsAllocation(GraphicsAllocation::AllocationType allocationType, void *cpuPtrIn, uint64_t gpuAddress,
240-
size_t sizeIn, MemoryPool::Type pool, bool multiOsContextCapable) {
241-
return nullptr;
242-
}
243-
244205
virtual void *lockResourceImpl(GraphicsAllocation &graphicsAllocation) = 0;
245206
virtual void unlockResourceImpl(GraphicsAllocation &graphicsAllocation) = 0;
246207
virtual void freeAssociatedResourceImpl(GraphicsAllocation &graphicsAllocation) { return unlockResourceImpl(graphicsAllocation); };

runtime/memory_manager/os_agnostic_memory_manager.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,6 @@ class OsAgnosticMemoryManager : public MemoryManager {
8080
void unlockResourceImpl(GraphicsAllocation &graphicsAllocation) override {}
8181
GraphicsAllocation *allocate32BitGraphicsMemoryImpl(const AllocationData &allocationData) override;
8282
GraphicsAllocation *allocateGraphicsMemoryInDevicePool(const AllocationData &allocationData, AllocationStatus &status) override;
83-
GraphicsAllocation *constructGraphicsAllocation(GraphicsAllocation::AllocationType allocationType, void *cpuPtrIn, uint64_t gpuAddress,
84-
size_t sizeIn, MemoryPool::Type pool, bool multiOsContextCapable) override {
85-
return new MemoryAllocation(allocationType, cpuPtrIn, cpuPtrIn, gpuAddress, sizeIn, counter++, pool, multiOsContextCapable, false, false);
86-
}
8783

8884
private:
8985
unsigned long long counter = 0;

runtime/memory_manager/os_agnostic_memory_manager_allocate_in_device_pool.cpp

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,36 @@
99

1010
namespace NEO {
1111
GraphicsAllocation *OsAgnosticMemoryManager::allocateGraphicsMemoryInDevicePool(const AllocationData &allocationData, AllocationStatus &status) {
12-
return MemoryManager::allocateGraphicsMemoryInDevicePool(allocationData, status);
12+
status = AllocationStatus::Error;
13+
switch (allocationData.type) {
14+
case GraphicsAllocation::AllocationType::IMAGE:
15+
case GraphicsAllocation::AllocationType::SHARED_RESOURCE_COPY:
16+
break;
17+
default:
18+
if (!allocationData.flags.useSystemMemory && !(allocationData.flags.allow32Bit && this->force32bitAllocations)) {
19+
GraphicsAllocation *allocation = nullptr;
20+
if (allocationData.type == GraphicsAllocation::AllocationType::SVM_GPU) {
21+
void *cpuAllocation = allocateSystemMemory(allocationData.size, allocationData.alignment);
22+
if (!cpuAllocation) {
23+
return nullptr;
24+
}
25+
uint64_t gpuAddress = reinterpret_cast<uint64_t>(allocationData.hostPtr);
26+
allocation = new MemoryAllocation(allocationData.type, cpuAllocation, cpuAllocation, gpuAddress, allocationData.size, counter++, MemoryPool::LocalMemory, false, false, false);
27+
allocation->setGpuBaseAddress(gpuAddress);
28+
} else {
29+
allocation = allocateGraphicsMemory(allocationData);
30+
}
31+
32+
if (allocation) {
33+
allocation->storageInfo = allocationData.storageInfo;
34+
allocation->setFlushL3Required(allocationData.flags.flushL3);
35+
status = AllocationStatus::Success;
36+
}
37+
return allocation;
38+
}
39+
}
40+
status = AllocationStatus::RetryInNonDevicePool;
41+
return nullptr;
1342
}
1443

1544
void MemoryAllocation::overrideMemoryPool(MemoryPool::Type pool) {

runtime/os_interface/windows/wddm_memory_manager_allocate_in_device_pool.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010
namespace NEO {
1111
GraphicsAllocation *WddmMemoryManager::allocateGraphicsMemoryInDevicePool(const AllocationData &allocationData, AllocationStatus &status) {
12-
return MemoryManager::allocateGraphicsMemoryInDevicePool(allocationData, status);
12+
status = AllocationStatus::RetryInNonDevicePool;
13+
return nullptr;
1314
}
1415
bool WddmMemoryManager::copyMemoryToAllocation(GraphicsAllocation *graphicsAllocation, const void *memoryToCopy, uint32_t sizeToCopy) const {
1516
return MemoryManager::copyMemoryToAllocation(graphicsAllocation, memoryToCopy, sizeToCopy);

unit_tests/memory_manager/memory_manager_tests.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1677,22 +1677,6 @@ TEST(MemoryManagerTest, givenAllocationTypesThatMayNeedL3FlushWhenCallingGetAllo
16771677
}
16781678
}
16791679

1680-
TEST(MemoryManagerTest, givenSpecializedMemoryManagerWhenCallingConstructGraphicsAllocationThenNullptrIsReturned) {
1681-
struct MemoryManagerConstructAllocation : public MockMemoryManager {
1682-
GraphicsAllocation *constructGraphicsAllocation(GraphicsAllocation::AllocationType allocationType, void *cpuPtrIn, uint64_t gpuAddress,
1683-
size_t sizeIn, MemoryPool::Type pool, bool multiOsContextCapable) override {
1684-
return MemoryManager::constructGraphicsAllocation(allocationType, cpuPtrIn, gpuAddress,
1685-
sizeIn, pool, multiOsContextCapable);
1686-
}
1687-
MemoryManagerConstructAllocation(ExecutionEnvironment &executionEnvironment) : MockMemoryManager(false, executionEnvironment) {}
1688-
};
1689-
1690-
MockExecutionEnvironment executionEnvironment(*platformDevices);
1691-
MemoryManagerConstructAllocation memoryManager(executionEnvironment);
1692-
auto allocation = memoryManager.constructGraphicsAllocation(GraphicsAllocation::AllocationType::UNKNOWN, nullptr, 0, 0, MemoryPool::MemoryNull, false);
1693-
EXPECT_EQ(nullptr, allocation);
1694-
}
1695-
16961680
TEST(HeapSelectorTest, given32bitInternalAllocationWhenSelectingHeapThenInternalHeapIsUsed) {
16971681
GraphicsAllocation allocation{GraphicsAllocation::AllocationType::KERNEL_ISA, nullptr, 0, 0, 0, MemoryPool::MemoryNull, false};
16981682
allocation.set32BitAllocation(true);

0 commit comments

Comments
 (0)