mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 12:23:05 +08:00
Fix crash caused by missing residency data.
Change-Id: Ib615e3b13382950ec8ecc128bea0032a126666e0
This commit is contained in:
committed by
sys_ocldev
parent
e0e25d28c6
commit
ad65477868
@@ -120,6 +120,7 @@ void OsAgnosticMemoryManager::addAllocationToHostPtrManager(GraphicsAllocation *
|
|||||||
fragment.fragmentCpuPointer = gfxAllocation->getUnderlyingBuffer();
|
fragment.fragmentCpuPointer = gfxAllocation->getUnderlyingBuffer();
|
||||||
fragment.fragmentSize = alignUp(gfxAllocation->getUnderlyingBufferSize(), MemoryConstants::pageSize);
|
fragment.fragmentSize = alignUp(gfxAllocation->getUnderlyingBufferSize(), MemoryConstants::pageSize);
|
||||||
fragment.osInternalStorage = new OsHandle();
|
fragment.osInternalStorage = new OsHandle();
|
||||||
|
fragment.residency = new ResidencyData();
|
||||||
hostPtrManager.storeFragment(fragment);
|
hostPtrManager.storeFragment(fragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,8 +129,10 @@ void OsAgnosticMemoryManager::removeAllocationFromHostPtrManager(GraphicsAllocat
|
|||||||
auto fragment = hostPtrManager.getFragment(buffer);
|
auto fragment = hostPtrManager.getFragment(buffer);
|
||||||
if (fragment && fragment->driverAllocation) {
|
if (fragment && fragment->driverAllocation) {
|
||||||
OsHandle *osStorageToRelease = fragment->osInternalStorage;
|
OsHandle *osStorageToRelease = fragment->osInternalStorage;
|
||||||
|
ResidencyData *residencyDataToRelease = fragment->residency;
|
||||||
if (hostPtrManager.releaseHostPtr(buffer)) {
|
if (hostPtrManager.releaseHostPtr(buffer)) {
|
||||||
delete osStorageToRelease;
|
delete osStorageToRelease;
|
||||||
|
delete residencyDataToRelease;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -429,6 +429,7 @@ void DrmMemoryManager::addAllocationToHostPtrManager(GraphicsAllocation *gfxAllo
|
|||||||
fragment.fragmentCpuPointer = gfxAllocation->getUnderlyingBuffer();
|
fragment.fragmentCpuPointer = gfxAllocation->getUnderlyingBuffer();
|
||||||
fragment.fragmentSize = alignUp(gfxAllocation->getUnderlyingBufferSize(), MemoryConstants::pageSize);
|
fragment.fragmentSize = alignUp(gfxAllocation->getUnderlyingBufferSize(), MemoryConstants::pageSize);
|
||||||
fragment.osInternalStorage = new OsHandle();
|
fragment.osInternalStorage = new OsHandle();
|
||||||
|
fragment.residency = new ResidencyData();
|
||||||
fragment.osInternalStorage->bo = drmMemory->getBO();
|
fragment.osInternalStorage->bo = drmMemory->getBO();
|
||||||
hostPtrManager.storeFragment(fragment);
|
hostPtrManager.storeFragment(fragment);
|
||||||
}
|
}
|
||||||
@@ -438,8 +439,10 @@ void DrmMemoryManager::removeAllocationFromHostPtrManager(GraphicsAllocation *gf
|
|||||||
auto fragment = hostPtrManager.getFragment(buffer);
|
auto fragment = hostPtrManager.getFragment(buffer);
|
||||||
if (fragment && fragment->driverAllocation) {
|
if (fragment && fragment->driverAllocation) {
|
||||||
OsHandle *osStorageToRelease = fragment->osInternalStorage;
|
OsHandle *osStorageToRelease = fragment->osInternalStorage;
|
||||||
|
ResidencyData *residencyDataToRelease = fragment->residency;
|
||||||
if (hostPtrManager.releaseHostPtr(buffer)) {
|
if (hostPtrManager.releaseHostPtr(buffer)) {
|
||||||
delete osStorageToRelease;
|
delete osStorageToRelease;
|
||||||
|
delete residencyDataToRelease;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ TEST_F(MemoryAllocatorTest, GivenGraphicsAllocationWhenAddAndRemoveAllocationToH
|
|||||||
EXPECT_EQ(fragment->fragmentCpuPointer, cpuPtr);
|
EXPECT_EQ(fragment->fragmentCpuPointer, cpuPtr);
|
||||||
EXPECT_EQ(fragment->fragmentSize, size);
|
EXPECT_EQ(fragment->fragmentSize, size);
|
||||||
EXPECT_NE(fragment->osInternalStorage, nullptr);
|
EXPECT_NE(fragment->osInternalStorage, nullptr);
|
||||||
|
EXPECT_NE(fragment->residency, nullptr);
|
||||||
|
|
||||||
FragmentStorage fragmentStorage = {};
|
FragmentStorage fragmentStorage = {};
|
||||||
fragmentStorage.fragmentCpuPointer = cpuPtr;
|
fragmentStorage.fragmentCpuPointer = cpuPtr;
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ TEST_F(DrmMemoryManagerTest, GivenGraphicsAllocationWhenAddAndRemoveAllocationTo
|
|||||||
EXPECT_EQ(fragment->fragmentSize, size);
|
EXPECT_EQ(fragment->fragmentSize, size);
|
||||||
EXPECT_NE(fragment->osInternalStorage, nullptr);
|
EXPECT_NE(fragment->osInternalStorage, nullptr);
|
||||||
EXPECT_EQ(fragment->osInternalStorage->bo, gfxAllocation.getBO());
|
EXPECT_EQ(fragment->osInternalStorage->bo, gfxAllocation.getBO());
|
||||||
|
EXPECT_NE(fragment->residency, nullptr);
|
||||||
|
|
||||||
FragmentStorage fragmentStorage = {};
|
FragmentStorage fragmentStorage = {};
|
||||||
fragmentStorage.fragmentCpuPointer = cpuPtr;
|
fragmentStorage.fragmentCpuPointer = cpuPtr;
|
||||||
|
|||||||
Reference in New Issue
Block a user