Skip to content

Commit 44491a1

Browse files
Use MemoryManager retrieved from ExecutionEnvironment in Kernel dtor
Change-Id: I5f3880e1a95b3cbd262847d97776b0b92a580181
1 parent 62e56d2 commit 44491a1

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

runtime/kernel/kernel.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,12 @@ Kernel::~Kernel() {
100100
crossThreadDataSize = 0;
101101

102102
if (privateSurface) {
103-
device.getMemoryManager()->checkGpuUsageAndDestroyGraphicsAllocations(privateSurface);
103+
program->peekExecutionEnvironment().memoryManager->checkGpuUsageAndDestroyGraphicsAllocations(privateSurface);
104104
privateSurface = nullptr;
105105
}
106106

107107
if (kernelReflectionSurface) {
108-
device.getMemoryManager()->freeGraphicsMemory(kernelReflectionSurface);
108+
program->peekExecutionEnvironment().memoryManager->freeGraphicsMemory(kernelReflectionSurface);
109109
kernelReflectionSurface = nullptr;
110110
}
111111

unit_tests/kernel/kernel_tests.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2411,3 +2411,16 @@ TEST(KernelTest, whenAllocationReadOnlyNonFlushRequiredThenAssignNullPointerToCa
24112411
EXPECT_EQ(nullptr, kernel.mockKernel->kernelArgRequiresCacheFlush[0]);
24122412
}
24132413

2414+
TEST(KernelTest, givenKernelUsesPrivateMemoryWhenDeviceReleasedBeforeKernelThenKernelUsesMemoryManagerFromEnvironment) {
2415+
auto device = std::unique_ptr<MockDevice>(MockDevice::createWithNewExecutionEnvironment<MockDevice>(platformDevices[0]));
2416+
auto executionEnvironment = device->getExecutionEnvironment();
2417+
2418+
auto mockKernel = std::make_unique<MockKernelWithInternals>(*device);
2419+
GraphicsAllocation *privateSurface = device->getExecutionEnvironment()->memoryManager->allocateGraphicsMemoryWithProperties(MockAllocationProperties{MemoryConstants::pageSize});
2420+
mockKernel->mockKernel->setPrivateSurface(privateSurface, 10);
2421+
2422+
executionEnvironment->incRefInternal();
2423+
device.reset(nullptr);
2424+
mockKernel.reset(nullptr);
2425+
executionEnvironment->decRefInternal();
2426+
}

0 commit comments

Comments
 (0)