Skip to content

Commit 620bb97

Browse files
Resubmit fix for task count hang
Signed-off-by: John Falkowski <[email protected]>
1 parent c303c21 commit 620bb97

File tree

18 files changed

+202
-49
lines changed

18 files changed

+202
-49
lines changed

level_zero/core/source/cmdqueue/cmdqueue.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ NEO::SubmissionStatus CommandQueueImp::submitBatchBuffer(size_t offset, NEO::Res
9898
csr->setActivePartitions(partitionCount);
9999
auto ret = csr->submitBatchBuffer(batchBuffer, csr->getResidencyAllocations());
100100
if (ret != NEO::SubmissionStatus::SUCCESS) {
101+
commandStream->getGraphicsAllocation()->updateTaskCount(csr->peekTaskCount(), csr->getOsContext().getContextId());
102+
commandStream->getGraphicsAllocation()->updateResidencyTaskCount(csr->peekTaskCount(), csr->getOsContext().getContextId());
101103
return ret;
102104
}
103105

level_zero/core/source/cmdqueue/cmdqueue_hw.inl

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "shared/source/helpers/hw_info.h"
2424
#include "shared/source/helpers/pipe_control_args.h"
2525
#include "shared/source/helpers/preamble.h"
26+
#include "shared/source/memory_manager/graphics_allocation.h"
2627
#include "shared/source/memory_manager/memory_manager.h"
2728
#include "shared/source/memory_manager/residency_container.h"
2829
#include "shared/source/os_interface/hw_info_config.h"
@@ -476,27 +477,37 @@ ze_result_t CommandQueueHw<gfxCoreFamily>::executeCommandLists(
476477
csr->setLatestFlushedTaskCount(this->taskCount);
477478
}
478479

479-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
480+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), false);
480481

482+
ze_result_t retVal = ZE_RESULT_SUCCESS;
481483
if (getSynchronousMode() == ZE_COMMAND_QUEUE_MODE_SYNCHRONOUS) {
482484
const auto synchronizeResult = this->synchronize(std::numeric_limits<uint64_t>::max());
483485
if (synchronizeResult == ZE_RESULT_ERROR_DEVICE_LOST) {
484-
return ZE_RESULT_ERROR_DEVICE_LOST;
486+
retVal = ZE_RESULT_ERROR_DEVICE_LOST;
485487
}
488+
} else {
489+
csr->pollForCompletion();
486490
}
487-
488491
this->heapContainer.clear();
489492

490-
csr->pollForCompletion();
491-
492-
if (ret != NEO::SubmissionStatus::SUCCESS) {
493+
if ((ret != NEO::SubmissionStatus::SUCCESS) || (retVal == ZE_RESULT_ERROR_DEVICE_LOST)) {
494+
for (auto &gfx : csr->getResidencyAllocations()) {
495+
if (csr->peekLatestFlushedTaskCount() == 0) {
496+
gfx->releaseUsageInOsContext(csr->getOsContext().getContextId());
497+
} else {
498+
gfx->updateTaskCount(csr->peekLatestFlushedTaskCount(), csr->getOsContext().getContextId());
499+
}
500+
}
501+
if (retVal != ZE_RESULT_ERROR_DEVICE_LOST) {
502+
retVal = ZE_RESULT_ERROR_UNKNOWN;
503+
}
493504
if (ret == NEO::SubmissionStatus::OUT_OF_MEMORY) {
494-
return ZE_RESULT_ERROR_OUT_OF_DEVICE_MEMORY;
505+
retVal = ZE_RESULT_ERROR_OUT_OF_DEVICE_MEMORY;
495506
}
496-
return ZE_RESULT_ERROR_UNKNOWN;
497507
}
498508

499-
return ZE_RESULT_SUCCESS;
509+
csr->getResidencyAllocations().clear();
510+
return retVal;
500511
}
501512

502513
template <GFXCORE_FAMILY gfxCoreFamily>

level_zero/core/test/unit_tests/sources/cmdqueue/test_cmdqueue_1.cpp

Lines changed: 94 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -356,11 +356,15 @@ HWTEST_F(CommandQueueCreate, givenContainerWithAllocationsWhenResidencyContainer
356356
false,
357357
returnValue));
358358
ResidencyContainer container;
359-
commandQueue->submitBatchBuffer(0, container, nullptr, false);
359+
uint32_t peekTaskCountBefore = commandQueue->csr->peekTaskCount();
360+
uint32_t flushedTaskCountBefore = commandQueue->csr->peekLatestFlushedTaskCount();
361+
NEO::SubmissionStatus ret = commandQueue->submitBatchBuffer(0, container, nullptr, false);
360362
EXPECT_EQ(csr->makeResidentCalledTimes, 0u);
361-
362-
EXPECT_EQ(commandQueue->commandStream->getGraphicsAllocation()->getTaskCount(commandQueue->csr->getOsContext().getContextId()), commandQueue->csr->peekTaskCount());
363+
EXPECT_EQ(ret, NEO::SubmissionStatus::SUCCESS);
364+
EXPECT_EQ((peekTaskCountBefore + 1), commandQueue->csr->peekTaskCount());
365+
EXPECT_EQ((flushedTaskCountBefore + 1), commandQueue->csr->peekLatestFlushedTaskCount());
363366
EXPECT_EQ(commandQueue->commandStream->getGraphicsAllocation()->getTaskCount(commandQueue->csr->getOsContext().getContextId()), commandQueue->csr->peekTaskCount());
367+
EXPECT_EQ(commandQueue->commandStream->getGraphicsAllocation()->getResidencyTaskCount(commandQueue->csr->getOsContext().getContextId()), commandQueue->csr->peekTaskCount());
364368
commandQueue->destroy();
365369
}
366370

@@ -377,9 +381,14 @@ HWTEST_F(CommandQueueCreate, givenCommandStreamReceiverFailsThenSubmitBatchBuffe
377381
false,
378382
returnValue));
379383
ResidencyContainer container;
384+
uint32_t peekTaskCountBefore = commandQueue->csr->peekTaskCount();
385+
uint32_t flushedTaskCountBefore = commandQueue->csr->peekLatestFlushedTaskCount();
380386
NEO::SubmissionStatus ret = commandQueue->submitBatchBuffer(0, container, nullptr, false);
381387
EXPECT_EQ(ret, NEO::SubmissionStatus::FAILED);
382-
388+
EXPECT_EQ(peekTaskCountBefore, commandQueue->csr->peekTaskCount());
389+
EXPECT_EQ(flushedTaskCountBefore, commandQueue->csr->peekLatestFlushedTaskCount());
390+
EXPECT_EQ(commandQueue->commandStream->getGraphicsAllocation()->getTaskCount(commandQueue->csr->getOsContext().getContextId()), commandQueue->csr->peekTaskCount());
391+
EXPECT_EQ(commandQueue->commandStream->getGraphicsAllocation()->getResidencyTaskCount(commandQueue->csr->getOsContext().getContextId()), commandQueue->csr->peekTaskCount());
383392
commandQueue->destroy();
384393
}
385394

@@ -1537,6 +1546,87 @@ HWTEST2_F(ExecuteCommandListTests, givenFailingSubmitBatchBufferThenExecuteComma
15371546
commandList->destroy();
15381547
}
15391548

1549+
HWTEST2_F(ExecuteCommandListTests, givenFailingSubmitBatchBufferThenResetGraphicsTaskCountsLatestFlushedTaskCountZero, IsAtLeastSkl) {
1550+
ze_command_queue_desc_t desc = {};
1551+
1552+
NEO::CommandStreamReceiver *csr;
1553+
device->getCsrForOrdinalAndIndex(&csr, 0u, 0u);
1554+
1555+
auto commandQueue = new MockCommandQueueSubmitBatchBuffer<gfxCoreFamily>(device, csr, &desc);
1556+
commandQueue->submitBatchBufferResult = NEO::SubmissionStatus::FAILED;
1557+
1558+
commandQueue->initialize(false, false);
1559+
auto commandList = new CommandListCoreFamily<gfxCoreFamily>();
1560+
commandList->initialize(device, NEO::EngineGroupType::Compute, 0u);
1561+
auto commandListHandle = commandList->toHandle();
1562+
1563+
void *alloc = alignedMalloc(0x100, 0x100);
1564+
NEO::GraphicsAllocation graphicsAllocation1(0, NEO::AllocationType::BUFFER, alloc, 0u, 0u, 1u, MemoryPool::System4KBPages, 1u);
1565+
NEO::GraphicsAllocation graphicsAllocation2(0, NEO::AllocationType::BUFFER, alloc, 0u, 0u, 1u, MemoryPool::System4KBPages, 1u);
1566+
commandList->commandContainer.addToResidencyContainer(&graphicsAllocation1);
1567+
commandList->commandContainer.addToResidencyContainer(&graphicsAllocation2);
1568+
static_cast<NEO::UltCommandStreamReceiver<FamilyType> *>(csr)->taskCount = 0;
1569+
auto res = commandQueue->executeCommandLists(1, &commandListHandle, nullptr, false);
1570+
EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, res);
1571+
1572+
EXPECT_EQ(NEO::GraphicsAllocation::objectNotUsed, graphicsAllocation1.getTaskCount(csr->getOsContext().getContextId()));
1573+
EXPECT_EQ(NEO::GraphicsAllocation::objectNotUsed, graphicsAllocation2.getTaskCount(csr->getOsContext().getContextId()));
1574+
commandQueue->destroy();
1575+
commandList->destroy();
1576+
alignedFree(alloc);
1577+
}
1578+
1579+
HWTEST2_F(ExecuteCommandListTests, givenFailingSubmitBatchBufferThenResetGraphicsTaskCountsLatestFlushedTaskCountNonZero, IsAtLeastSkl) {
1580+
ze_command_queue_desc_t desc = {};
1581+
1582+
NEO::CommandStreamReceiver *csr;
1583+
device->getCsrForOrdinalAndIndex(&csr, 0u, 0u);
1584+
1585+
auto commandQueue = new MockCommandQueueSubmitBatchBuffer<gfxCoreFamily>(device, csr, &desc);
1586+
commandQueue->submitBatchBufferResult = NEO::SubmissionStatus::FAILED;
1587+
1588+
commandQueue->initialize(false, false);
1589+
auto commandList = new CommandListCoreFamily<gfxCoreFamily>();
1590+
commandList->initialize(device, NEO::EngineGroupType::Compute, 0u);
1591+
auto commandListHandle = commandList->toHandle();
1592+
1593+
void *alloc = alignedMalloc(0x100, 0x100);
1594+
NEO::GraphicsAllocation graphicsAllocation1(0, NEO::AllocationType::BUFFER, alloc, 0u, 0u, 1u, MemoryPool::System4KBPages, 1u);
1595+
NEO::GraphicsAllocation graphicsAllocation2(0, NEO::AllocationType::BUFFER, alloc, 0u, 0u, 1u, MemoryPool::System4KBPages, 1u);
1596+
commandList->commandContainer.addToResidencyContainer(&graphicsAllocation1);
1597+
commandList->commandContainer.addToResidencyContainer(&graphicsAllocation2);
1598+
static_cast<NEO::UltCommandStreamReceiver<FamilyType> *>(csr)->taskCount = 2;
1599+
auto res = commandQueue->executeCommandLists(1, &commandListHandle, nullptr, false);
1600+
EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, res);
1601+
1602+
EXPECT_EQ(2u, graphicsAllocation1.getTaskCount(csr->getOsContext().getContextId()));
1603+
EXPECT_EQ(2u, graphicsAllocation2.getTaskCount(csr->getOsContext().getContextId()));
1604+
commandQueue->destroy();
1605+
commandList->destroy();
1606+
alignedFree(alloc);
1607+
}
1608+
1609+
HWTEST2_F(ExecuteCommandListTests, givenFailingSubmitBatchBufferThenWaitForCompletionFalse, IsAtLeastSkl) {
1610+
ze_command_queue_desc_t desc = {};
1611+
NEO::CommandStreamReceiver *csr;
1612+
device->getCsrForOrdinalAndIndex(&csr, 0u, 0u);
1613+
auto commandQueue = new MockCommandQueueSubmitBatchBuffer<gfxCoreFamily>(device, csr, &desc);
1614+
commandQueue->submitBatchBufferResult = NEO::SubmissionStatus::FAILED;
1615+
1616+
commandQueue->initialize(false, false);
1617+
auto commandList = new CommandListCoreFamily<gfxCoreFamily>();
1618+
commandList->initialize(device, NEO::EngineGroupType::Compute, 0u);
1619+
auto commandListHandle = commandList->toHandle();
1620+
uint32_t flushedTaskCountPrior = csr->peekTaskCount();
1621+
csr->setLatestFlushedTaskCount(flushedTaskCountPrior);
1622+
auto res = commandQueue->executeCommandLists(1, &commandListHandle, nullptr, false);
1623+
EXPECT_EQ(ZE_RESULT_ERROR_UNKNOWN, res);
1624+
EXPECT_EQ(csr->peekLatestFlushedTaskCount(), flushedTaskCountPrior);
1625+
1626+
commandQueue->destroy();
1627+
commandList->destroy();
1628+
}
1629+
15401630
HWTEST2_F(ExecuteCommandListTests, givenSuccessfulSubmitBatchBufferThenExecuteCommandListReturnsSuccess, IsAtLeastSkl) {
15411631
ze_command_queue_desc_t desc = {};
15421632
NEO::CommandStreamReceiver *csr;

opencl/test/unit_test/kernel/kernel_image_arg_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2018-2021 Intel Corporation
2+
* Copyright (C) 2018-2022 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -249,7 +249,7 @@ HWTEST_F(KernelImageArgTest, givenImgWithMcsAllocWhenMakeResidentThenMakeMcsAllo
249249
pKernel->makeResident(*csr.get());
250250
EXPECT_TRUE(csr->isMadeResident(mcsAlloc));
251251

252-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
252+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
253253

254254
EXPECT_TRUE(csr->isMadeNonResident(mcsAlloc));
255255

opencl/test/unit_test/kernel/kernel_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ TEST_F(KernelPrivateSurfaceTest, WhenChangingResidencyThenCsrResidencySizeIsUpda
610610
pKernel->makeResident(*csr.get());
611611
EXPECT_EQ(1u, csr->residency.size());
612612

613-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
613+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
614614
EXPECT_EQ(0u, csr->residency.size());
615615

616616
delete pKernel;

opencl/test/unit_test/os_interface/linux/drm_command_stream_tests_2.cpp

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, givenFragmentedAllocationsWithR
356356

357357
EXPECT_EQ(3u, residency.size());
358358

359-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
359+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
360360

361361
//check that each packet is not resident
362362
EXPECT_FALSE(graphicsAllocation->fragmentsStorage.fragmentStorageData[0].residency->resident[osContext.getContextId()]);
@@ -378,7 +378,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, givenFragmentedAllocationsWithR
378378

379379
EXPECT_EQ(3u, residency.size());
380380

381-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
381+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
382382

383383
EXPECT_EQ(0u, residency.size());
384384

@@ -621,7 +621,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, GivenFlushMultipleTimesThenSucc
621621
EncodeNoop<FamilyType>::alignToCacheLine(cs);
622622
BatchBuffer batchBuffer3{cs.getGraphicsAllocation(), 16, 0, nullptr, false, false, QueueThrottle::MEDIUM, QueueSliceCount::defaultSliceCount, cs.getUsed(), &cs, nullptr, false};
623623
csr->flush(batchBuffer3, csr->getResidencyAllocations());
624-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
624+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
625625
mm->freeGraphicsMemory(allocation);
626626
mm->freeGraphicsMemory(allocation2);
627627

@@ -721,13 +721,32 @@ HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, WhenMakingResidentThenClearResi
721721
EXPECT_NE(0u, csr->getResidencyAllocations().size());
722722

723723
csr->processResidency(csr->getResidencyAllocations(), 0u);
724-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
724+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
725725
EXPECT_EQ(0u, csr->getResidencyAllocations().size());
726726

727727
mm->freeGraphicsMemory(allocation1);
728728
mm->freeGraphicsMemory(allocation2);
729729
}
730730

731+
HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, WhenMakingResidentThenNotClearResidencyAllocationsInCommandStreamReceiver) {
732+
auto allocation1 = mm->allocateGraphicsMemoryWithProperties(MockAllocationProperties{csr->getRootDeviceIndex(), MemoryConstants::pageSize});
733+
auto allocation2 = mm->allocateGraphicsMemoryWithProperties(MockAllocationProperties{csr->getRootDeviceIndex(), MemoryConstants::pageSize});
734+
735+
ASSERT_NE(nullptr, allocation1);
736+
ASSERT_NE(nullptr, allocation2);
737+
738+
csr->makeResident(*allocation1);
739+
csr->makeResident(*allocation2);
740+
EXPECT_NE(0u, csr->getResidencyAllocations().size());
741+
742+
csr->processResidency(csr->getResidencyAllocations(), 0u);
743+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), false);
744+
EXPECT_NE(0u, csr->getResidencyAllocations().size());
745+
746+
mm->freeGraphicsMemory(allocation1);
747+
mm->freeGraphicsMemory(allocation2);
748+
}
749+
731750
HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, givenMultipleMakeResidentWhenMakeNonResidentIsCalledOnlyOnceThenSurfaceIsMadeNonResident) {
732751
auto allocation1 = mm->allocateGraphicsMemoryWithProperties(MockAllocationProperties{csr->getRootDeviceIndex(), MemoryConstants::pageSize});
733752

@@ -739,7 +758,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, givenMultipleMakeResidentWhenMa
739758
EXPECT_NE(0u, csr->getResidencyAllocations().size());
740759

741760
csr->processResidency(csr->getResidencyAllocations(), 0u);
742-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
761+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
743762

744763
EXPECT_EQ(0u, csr->getResidencyAllocations().size());
745764
EXPECT_FALSE(allocation1->isResident(csr->getOsContext().getContextId()));
@@ -759,7 +778,7 @@ HWTEST_TEMPLATED_F(DrmCommandStreamEnhancedTest, givenAllocationThatIsAlwaysResi
759778
EXPECT_NE(0u, csr->getResidencyAllocations().size());
760779

761780
csr->processResidency(csr->getResidencyAllocations(), 0u);
762-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
781+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
763782

764783
EXPECT_EQ(0u, csr->getResidencyAllocations().size());
765784
EXPECT_TRUE(allocation1->isResident(csr->getOsContext().getContextId()));

opencl/test/unit_test/os_interface/windows/device_command_stream_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,7 @@ HWTEST_TEMPLATED_F(WddmCommandStreamMockGdiTest, WhenMakingResidentThenResidency
840840

841841
csr->processResidency(csr->getResidencyAllocations(), 0u);
842842

843-
csr->makeSurfacePackNonResident(csr->getResidencyAllocations());
843+
csr->makeSurfacePackNonResident(csr->getResidencyAllocations(), true);
844844

845845
EXPECT_EQ(0u, csr->getResidencyAllocations().size());
846846
EXPECT_EQ(0u, csr->getEvictionAllocations().size());

opencl/test/unit_test/program/program_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1426,7 +1426,7 @@ HWTEST_F(PatchTokenTests, givenKernelRequiringConstantAllocationWhenMakeResident
14261426

14271427
EXPECT_EQ(*pDst, reinterpret_cast<uintptr_t>(constBuffGpuAddr));
14281428

1429-
pCommandStreamReceiver->makeSurfacePackNonResident(pCommandStreamReceiver->getResidencyAllocations());
1429+
pCommandStreamReceiver->makeSurfacePackNonResident(pCommandStreamReceiver->getResidencyAllocations(), true);
14301430
EXPECT_EQ(0u, pCommandStreamReceiver->residency.size());
14311431

14321432
std::vector<Surface *> surfaces;

shared/source/command_stream/command_stream_receiver.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ SubmissionStatus CommandStreamReceiver::submitBatchBuffer(BatchBuffer &batchBuff
103103
this->latestSentTaskCount = taskCount + 1;
104104

105105
SubmissionStatus retVal = this->flush(batchBuffer, allocationsForResidency);
106+
107+
if (retVal != NEO::SubmissionStatus::SUCCESS) {
108+
return retVal;
109+
}
106110
if (!isUpdateTagFromWaitEnabled()) {
107111
this->latestFlushedTaskCount = taskCount + 1;
108112
}
@@ -155,11 +159,13 @@ void CommandStreamReceiver::makeNonResident(GraphicsAllocation &gfxAllocation) {
155159
}
156160
}
157161

158-
void CommandStreamReceiver::makeSurfacePackNonResident(ResidencyContainer &allocationsForResidency) {
162+
void CommandStreamReceiver::makeSurfacePackNonResident(ResidencyContainer &allocationsForResidency, bool clearAllocations) {
159163
for (auto &surface : allocationsForResidency) {
160164
this->makeNonResident(*surface);
161165
}
162-
allocationsForResidency.clear();
166+
if (clearAllocations) {
167+
allocationsForResidency.clear();
168+
}
163169
this->processEviction();
164170
}
165171

shared/source/command_stream/command_stream_receiver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class CommandStreamReceiver {
9797
void makeResident(MultiGraphicsAllocation &gfxAllocation);
9898
MOCKABLE_VIRTUAL void makeResident(GraphicsAllocation &gfxAllocation);
9999
virtual void makeNonResident(GraphicsAllocation &gfxAllocation);
100-
MOCKABLE_VIRTUAL void makeSurfacePackNonResident(ResidencyContainer &allocationsForResidency);
100+
MOCKABLE_VIRTUAL void makeSurfacePackNonResident(ResidencyContainer &allocationsForResidency, bool clearAllocations);
101101
virtual void processResidency(const ResidencyContainer &allocationsForResidency, uint32_t handleId) {}
102102
virtual void processEviction();
103103
void makeResidentHostPtrAllocation(GraphicsAllocation *gfxAllocation);

0 commit comments

Comments
 (0)