mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-07 21:27:04 +08:00
Do not reuse mem obj's allocation
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
69269b9aed
commit
4ac6e09117
@@ -635,10 +635,12 @@ TEST_F(KernelPrivateSurfaceTest, givenKernelWithPrivateSurfaceThatIsInUseByGpuWh
|
||||
privateSurface->updateTaskCount(*tagAddress + 1, csr.getOsContext().getContextId());
|
||||
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_TRUE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
kernel.reset(nullptr);
|
||||
|
||||
EXPECT_FALSE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(csr.getTemporaryAllocations().peekHead(), privateSurface);
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(csr.getDeferredAllocations().peekHead(), privateSurface);
|
||||
}
|
||||
|
||||
TEST_F(KernelPrivateSurfaceTest, WhenPrivateSurfaceAllocationFailsThenOutOfResourcesErrorIsReturned) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -127,12 +127,14 @@ TEST_F(KernelSubstituteTest, givenKernelWithUsedKernelAllocationWhenSubstituteKe
|
||||
char newHeap[newHeapSize];
|
||||
|
||||
EXPECT_TRUE(commandStreamReceiver.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_TRUE(commandStreamReceiver.getDeferredAllocations().peekIsEmpty());
|
||||
|
||||
kernel.mockKernel->substituteKernelHeap(newHeap, newHeapSize);
|
||||
auto secondAllocation = kernel.kernelInfo.kernelAllocation;
|
||||
|
||||
EXPECT_FALSE(commandStreamReceiver.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(commandStreamReceiver.getTemporaryAllocations().peekHead(), firstAllocation);
|
||||
EXPECT_TRUE(commandStreamReceiver.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(commandStreamReceiver.getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(commandStreamReceiver.getDeferredAllocations().peekHead(), firstAllocation);
|
||||
memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(secondAllocation);
|
||||
commandStreamReceiver.getInternalAllocationStorage()->cleanAllocationList(notReadyTaskCount, TEMPORARY_ALLOCATION);
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ TEST_P(MemObjAsyncDestructionTest, givenMemObjWithDestructableAllocationWhenAsyn
|
||||
} else {
|
||||
makeMemObjNotReady();
|
||||
}
|
||||
auto &allocationList = csr->getTemporaryAllocations();
|
||||
auto &allocationList = csr->getDeferredAllocations();
|
||||
EXPECT_TRUE(allocationList.peekIsEmpty());
|
||||
|
||||
delete memObj;
|
||||
@@ -467,7 +467,7 @@ HWTEST_P(MemObjAsyncDestructionTest, givenMemObjWithMapAllocationWithoutMemUseHo
|
||||
|
||||
makeMemObjUsed();
|
||||
|
||||
auto &allocationList = mockCsr->getTemporaryAllocations();
|
||||
auto &allocationList = mockCsr->getDeferredAllocations();
|
||||
EXPECT_TRUE(allocationList.peekIsEmpty());
|
||||
|
||||
delete memObj;
|
||||
@@ -507,7 +507,7 @@ HWTEST_P(MemObjAsyncDestructionTest, givenMemObjWithMapAllocationWithMemUseHostP
|
||||
|
||||
makeMemObjUsed();
|
||||
|
||||
auto &allocationList = mockCsr->getTemporaryAllocations();
|
||||
auto &allocationList = mockCsr->getDeferredAllocations();
|
||||
EXPECT_TRUE(allocationList.peekIsEmpty());
|
||||
|
||||
delete memObj;
|
||||
|
||||
@@ -165,7 +165,7 @@ TEST(MemObj, givenNotReadyGraphicsAllocationWhenMemObjDestroysAllocationAsyncThe
|
||||
auto memoryProperties = ClMemoryPropertiesHelper::createMemoryProperties(CL_MEM_COPY_HOST_PTR, 0, 0, &context.getDevice(0)->getDevice());
|
||||
MemObj memObj(&context, CL_MEM_OBJECT_BUFFER, memoryProperties, CL_MEM_COPY_HOST_PTR, 0,
|
||||
MemoryConstants::pageSize, nullptr, nullptr, 0, true, false, false);
|
||||
auto &allocationList = defaultEngine.commandStreamReceiver->getTemporaryAllocations();
|
||||
auto &allocationList = defaultEngine.commandStreamReceiver->getDeferredAllocations();
|
||||
EXPECT_TRUE(allocationList.peekIsEmpty());
|
||||
memObj.destroyGraphicsAllocation(allocation, true);
|
||||
|
||||
|
||||
@@ -1965,8 +1965,9 @@ TEST_F(MemoryManagerWithCsrTest, givenAllocationThatWasUsedAndIsNotCompletedWhen
|
||||
usedAllocationAndNotGpuCompleted->updateTaskCount(*tagAddress + 1, csr->getOsContext().getContextId());
|
||||
|
||||
memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(usedAllocationAndNotGpuCompleted);
|
||||
EXPECT_FALSE(csr->getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(csr->getTemporaryAllocations().peekHead(), usedAllocationAndNotGpuCompleted);
|
||||
EXPECT_TRUE(csr->getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(csr->getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(csr->getDeferredAllocations().peekHead(), usedAllocationAndNotGpuCompleted);
|
||||
|
||||
// change task count so cleanup will not clear alloc in use
|
||||
usedAllocationAndNotGpuCompleted->updateTaskCount(csr->peekLatestFlushedTaskCount(), csr->getOsContext().getContextId());
|
||||
@@ -2136,7 +2137,7 @@ HWTEST_F(GraphicsAllocationTests, givenAllocationUsedOnlyByNonDefaultCsrWhenChec
|
||||
graphicsAllocation->updateTaskCount(*nonDefaultCsr->getTagAddress() + 1, nonDefaultOsContext->getContextId());
|
||||
|
||||
memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(graphicsAllocation);
|
||||
EXPECT_NE(nullptr, nonDefaultCsr->getInternalAllocationStorage()->getTemporaryAllocations().peekHead());
|
||||
EXPECT_NE(nullptr, nonDefaultCsr->getInternalAllocationStorage()->getDeferredAllocations().peekHead());
|
||||
(*nonDefaultCsr->getTagAddress())++;
|
||||
// no need to call freeGraphicsAllocation
|
||||
}
|
||||
@@ -2156,9 +2157,11 @@ HWTEST_F(GraphicsAllocationTests, givenAllocationUsedOnlyByNonDefaultDeviceWhenC
|
||||
nonDefaultCommandStreamReceiver.latestFlushedTaskCount = notReadyTaskCount;
|
||||
graphicsAllocation->updateTaskCount(notReadyTaskCount, nonDefaultCommandStreamReceiver.getOsContext().getContextId());
|
||||
|
||||
EXPECT_TRUE(nonDefaultCommandStreamReceiver.getInternalAllocationStorage()->getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_TRUE(nonDefaultCommandStreamReceiver.getInternalAllocationStorage()->getTemporaryAllocations().peekIsEmpty());
|
||||
memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(graphicsAllocation);
|
||||
EXPECT_FALSE(nonDefaultCommandStreamReceiver.getInternalAllocationStorage()->getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(nonDefaultCommandStreamReceiver.getInternalAllocationStorage()->getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_TRUE(nonDefaultCommandStreamReceiver.getInternalAllocationStorage()->getTemporaryAllocations().peekIsEmpty());
|
||||
(*nonDefaultCommandStreamReceiver.getTagAddress())++;
|
||||
// no need to call freeGraphicsAllocation
|
||||
}
|
||||
|
||||
@@ -334,10 +334,12 @@ TEST_F(ProgramDataTest, givenConstantAllocationThatIsInUseByGpuWhenProgramIsBein
|
||||
constantSurface->updateTaskCount(*tagAddress + 1, csr.getOsContext().getContextId());
|
||||
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_TRUE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
delete pProgram;
|
||||
pProgram = nullptr;
|
||||
EXPECT_FALSE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(constantSurface, csr.getTemporaryAllocations().peekHead());
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(constantSurface, csr.getDeferredAllocations().peekHead());
|
||||
}
|
||||
|
||||
TEST_F(ProgramDataTest, givenGlobalAllocationThatIsInUseByGpuWhenProgramIsBeingDestroyedThenItIsAddedToTemporaryAllocationList) {
|
||||
@@ -351,10 +353,12 @@ TEST_F(ProgramDataTest, givenGlobalAllocationThatIsInUseByGpuWhenProgramIsBeingD
|
||||
globalSurface->updateTaskCount(*tagAddress + 1, csr.getOsContext().getContextId());
|
||||
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_TRUE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
delete pProgram;
|
||||
pProgram = nullptr;
|
||||
EXPECT_FALSE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(globalSurface, csr.getTemporaryAllocations().peekHead());
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(globalSurface, csr.getDeferredAllocations().peekHead());
|
||||
}
|
||||
|
||||
TEST_F(ProgramDataTest, GivenDeviceForcing32BitMessagesWhenConstAllocationIsPresentInProgramBinariesThen32BitStorageIsAllocated) {
|
||||
|
||||
@@ -667,8 +667,9 @@ HWTEST_F(ProgramFromBinaryTest, givenProgramWhenCleanCurrentKernelInfoIsCalledBu
|
||||
kernelAllocation->updateTaskCount(100, csr.getOsContext().getContextId());
|
||||
*csr.getTagAddress() = 0;
|
||||
pProgram->cleanCurrentKernelInfo(rootDeviceIndex);
|
||||
EXPECT_FALSE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(csr.getTemporaryAllocations().peekHead(), kernelAllocation);
|
||||
EXPECT_TRUE(csr.getTemporaryAllocations().peekIsEmpty());
|
||||
EXPECT_FALSE(csr.getDeferredAllocations().peekIsEmpty());
|
||||
EXPECT_EQ(csr.getDeferredAllocations().peekHead(), kernelAllocation);
|
||||
EXPECT_TRUE(this->pDevice->getUltCommandStreamReceiver<FamilyType>().requiresInstructionCacheFlush);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user