Differentiate between users ISA and internal ISA allocation

Related-To: NEO-5240

Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
Mateusz Hoppe
2020-11-12 19:53:30 +01:00
committed by Compute-Runtime-Automation
parent 4052525091
commit 0f42ef1ed7
43 changed files with 246 additions and 69 deletions

View File

@@ -21,6 +21,7 @@ class AubHelper : public NonCopyableOrMovableClass {
case GraphicsAllocation::AllocationType::CONSTANT_SURFACE:
case GraphicsAllocation::AllocationType::GLOBAL_SURFACE:
case GraphicsAllocation::AllocationType::KERNEL_ISA:
case GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL:
case GraphicsAllocation::AllocationType::PRIVATE_SURFACE:
case GraphicsAllocation::AllocationType::SCRATCH_SURFACE:
case GraphicsAllocation::AllocationType::BUFFER:

View File

@@ -591,7 +591,7 @@ void CommandStreamReceiver::printDeviceIndex() {
void CommandStreamReceiver::checkForNewResources(uint32_t submittedTaskCount, uint32_t allocationTaskCount, GraphicsAllocation &gfxAllocation) {
if (useNewResourceImplicitFlush) {
if (allocationTaskCount == GraphicsAllocation::objectNotUsed && gfxAllocation.getAllocationType() != GraphicsAllocation::AllocationType::KERNEL_ISA) {
if (allocationTaskCount == GraphicsAllocation::objectNotUsed && !GraphicsAllocation::isIsaAllocationType(gfxAllocation.getAllocationType())) {
newResources = true;
if (DebugManager.flags.ProvideVerboseImplicitFlush.get()) {
printf("New resource detected of type %llu\n", static_cast<unsigned long long>(gfxAllocation.getAllocationType()));

View File

@@ -17,7 +17,7 @@ HeapAssigner::HeapAssigner() {
apiAllowExternalHeapForSshAndDsh = ApiSpecificConfig::getHeapConfiguration();
}
bool HeapAssigner::useInternal32BitHeap(GraphicsAllocation::AllocationType allocType) {
return allocType == GraphicsAllocation::AllocationType::KERNEL_ISA ||
return GraphicsAllocation::isIsaAllocationType(allocType) ||
allocType == GraphicsAllocation::AllocationType::INTERNAL_HEAP ||
allocType == GraphicsAllocation::AllocationType::DEBUG_MODULE_AREA;
}

View File

@@ -69,6 +69,7 @@ class GraphicsAllocation : public IDNode<GraphicsAllocation> {
INTERNAL_HEAP,
INTERNAL_HOST_MEMORY,
KERNEL_ISA,
KERNEL_ISA_INTERNAL,
LINEAR_STREAM,
MAP_ALLOCATION,
MCS,
@@ -221,6 +222,12 @@ class GraphicsAllocation : public IDNode<GraphicsAllocation> {
allocationType == AllocationType::RING_BUFFER ||
allocationType == AllocationType::SEMAPHORE_BUFFER;
}
static bool isIsaAllocationType(GraphicsAllocation::AllocationType type) {
return type == GraphicsAllocation::AllocationType::KERNEL_ISA ||
type == GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL;
}
void *getReservedAddressPtr() const {
return this->reservedAddressRangeInfo.addressPtr;
}

View File

@@ -349,7 +349,7 @@ bool MemoryManager::getAllocationData(AllocationData &allocationData, const Allo
break;
}
if (properties.allocationType == GraphicsAllocation::AllocationType::KERNEL_ISA) {
if (GraphicsAllocation::isIsaAllocationType(properties.allocationType)) {
allocationData.flags.useSystemMemory = hwHelper.useSystemMemoryPlacementForISA(*hwInfo);
}
@@ -361,6 +361,7 @@ bool MemoryManager::getAllocationData(AllocationData &allocationData, const Allo
case GraphicsAllocation::AllocationType::INSTRUCTION_HEAP:
case GraphicsAllocation::AllocationType::INTERNAL_HEAP:
case GraphicsAllocation::AllocationType::KERNEL_ISA:
case GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL:
case GraphicsAllocation::AllocationType::LINEAR_STREAM:
case GraphicsAllocation::AllocationType::MCS:
case GraphicsAllocation::AllocationType::SCRATCH_SURFACE:

View File

@@ -125,6 +125,7 @@ uint64_t getGpuAddress(GraphicsAllocation::AllocationType allocType, GfxPartitio
sizeAllocated = 0;
break;
case GraphicsAllocation::AllocationType::KERNEL_ISA:
case GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL:
case GraphicsAllocation::AllocationType::INTERNAL_HEAP:
gpuAddress = GmmHelper::canonize(gfxPartition->heapAllocate(HeapIndex::HEAP_INTERNAL_DEVICE_MEMORY, sizeAllocated));
break;

View File

@@ -20,11 +20,15 @@ class AlocationHelperTests : public Test<DeviceFixture> {
HWTEST_F(AlocationHelperTests, givenKernelIsaTypeWhenUse32BitHeapCalledThenTrueReturned) {
EXPECT_TRUE(heapAssigner.use32BitHeap(GraphicsAllocation::AllocationType::KERNEL_ISA));
EXPECT_TRUE(heapAssigner.use32BitHeap(GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL));
}
HWTEST_F(AlocationHelperTests, givenKernelIsaTypeWhenUseIternalAllocatorThenUseHeapInternal) {
auto heapIndex = heapAssigner.get32BitHeapIndex(GraphicsAllocation::AllocationType::KERNEL_ISA, true, *defaultHwInfo, false);
EXPECT_EQ(heapIndex, NEO::HeapIndex::HEAP_INTERNAL_DEVICE_MEMORY);
heapIndex = heapAssigner.get32BitHeapIndex(GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL, true, *defaultHwInfo, false);
EXPECT_EQ(heapIndex, NEO::HeapIndex::HEAP_INTERNAL_DEVICE_MEMORY);
}
HWTEST_F(AlocationHelperTests, givenNotInternalTypeWhenUseIternalAllocatorThenUseHeapExternal) {
@@ -32,8 +36,9 @@ HWTEST_F(AlocationHelperTests, givenNotInternalTypeWhenUseIternalAllocatorThenUs
EXPECT_EQ(heapIndex, NEO::HeapIndex::HEAP_EXTERNAL_DEVICE_MEMORY);
}
HWTEST_F(AlocationHelperTests, givenKernelIsaTypeWhenUseInternalAllocatorCalledThenTrueReturned) {
HWTEST_F(AlocationHelperTests, givenKernelIsaTypesWhenUseInternalAllocatorCalledThenTrueReturned) {
EXPECT_TRUE(heapAssigner.useInternal32BitHeap(GraphicsAllocation::AllocationType::KERNEL_ISA));
EXPECT_TRUE(heapAssigner.useInternal32BitHeap(GraphicsAllocation::AllocationType::KERNEL_ISA_INTERNAL));
}
HWTEST_F(AlocationHelperTests, givenInternalHeapTypeWhenUseInternalAllocatorCalledThenTrueReturned) {