Destroy resource handle when created
When allocation is created and createResource is set we need to remove resourceHandle instead of allocation handle list otherwise in long running application (a lot of allocations) we will observe memory leak. Signed-off-by: Kamil Diedrich <kamil.diedrich@intel.com>
This commit is contained in:
parent
cb18657cb8
commit
5a6a90aa0e
|
@ -811,6 +811,24 @@ TEST_F(WddmMemoryManagerTest, givenWddmMemoryManagerWhenFreeAllocFromSharedHandl
|
|||
EXPECT_EQ(lastDestroyed, expectedDestroyHandle);
|
||||
}
|
||||
|
||||
TEST_F(WddmMemoryManagerTest, givenWddmMemoryManagerWhenFreeAllocFromHostPtrIsCalledThenDestroyResourceHandle) {
|
||||
auto size = 13u;
|
||||
auto hostPtr = reinterpret_cast<const void *>(0x10001);
|
||||
|
||||
AllocationData allocationData;
|
||||
allocationData.size = size;
|
||||
allocationData.hostPtr = hostPtr;
|
||||
auto allocation = static_cast<WddmAllocation *>(memoryManager->allocateGraphicsMemoryForNonSvmHostPtr(allocationData));
|
||||
|
||||
auto expectedDestroyHandle = allocation->resourceHandle;
|
||||
EXPECT_NE(0u, expectedDestroyHandle);
|
||||
auto lastDestroyed = getMockLastDestroyedResHandleFcn();
|
||||
EXPECT_EQ(0u, lastDestroyed);
|
||||
memoryManager->freeGraphicsMemory(allocation);
|
||||
lastDestroyed = getMockLastDestroyedResHandleFcn();
|
||||
EXPECT_EQ(lastDestroyed, expectedDestroyHandle);
|
||||
}
|
||||
|
||||
TEST_F(WddmMemoryManagerTest, givenWddmMemoryManagerSizeZeroWhenCreateFromSharedHandleIsCalledThenUpdateSize) {
|
||||
auto osHandle = 1u;
|
||||
auto size = 4096u;
|
||||
|
|
|
@ -565,7 +565,7 @@ void WddmMemoryManager::freeGraphicsMemoryImpl(GraphicsAllocation *gfxAllocation
|
|||
input->fragmentsStorage.fragmentCount > 0) {
|
||||
cleanGraphicsMemoryCreatedFromHostPtr(gfxAllocation);
|
||||
} else {
|
||||
if (input->peekSharedHandle() || input->peekInternalHandle(nullptr) != 0) {
|
||||
if (input->resourceHandle != 0) {
|
||||
[[maybe_unused]] auto status = tryDeferDeletions(nullptr, 0, input->resourceHandle, gfxAllocation->getRootDeviceIndex());
|
||||
DEBUG_BREAK_IF(!status);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue