@@ -579,6 +579,43 @@ TEST(OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenForce32bitallocationI
579579 EXPECT_TRUE (memoryManager.peekForce32BitAllocations ());
580580}
581581
582+ TEST (OsAgnosticMemoryManager, givenMemoryManagerWhenAskedFor32BitAllocationWhenLimitedAllocationIsEnabledThenGpuRangeFromExternalHeapIsAllocatiedAndBaseAddressIsSet) {
583+ if (is32bit) {
584+ GTEST_SKIP ();
585+ }
586+
587+ ExecutionEnvironment *executionEnvironment = platformImpl->peekExecutionEnvironment ();
588+ MockMemoryManager memoryManager (*executionEnvironment);
589+ memoryManager.setForce32BitAllocations (true );
590+ memoryManager.forceLimitedRangeAllocator (0xFFFFFFFFF );
591+
592+ AllocationData allocationData;
593+ MockMemoryManager::getAllocationData (allocationData, {MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER}, nullptr , StorageInfo{});
594+ auto gfxAllocation = memoryManager.allocateGraphicsMemoryWithAlignment (allocationData);
595+ ASSERT_NE (gfxAllocation, nullptr );
596+ EXPECT_NE (gfxAllocation->getGpuBaseAddress (), 0ull );
597+ EXPECT_EQ (gfxAllocation->getGpuBaseAddress (), memoryManager.getExternalHeapBaseAddress ());
598+ memoryManager.freeGraphicsMemory (gfxAllocation);
599+ }
600+
601+ TEST (OsAgnosticMemoryManager, givenMemoryManagerWhenAskedForNon32BitAllocationWhenLimitedAllocationIsEnabledThenGpuRangeFromiStandardHeapIsAllocatiedAndBaseAddressIsNotSet) {
602+ if (is32bit) {
603+ GTEST_SKIP ();
604+ }
605+
606+ ExecutionEnvironment *executionEnvironment = platformImpl->peekExecutionEnvironment ();
607+ MockMemoryManager memoryManager (*executionEnvironment);
608+ memoryManager.forceLimitedRangeAllocator (0xFFFFFFFFF );
609+
610+ AllocationData allocationData;
611+ MockMemoryManager::getAllocationData (allocationData, {MemoryConstants::pageSize, GraphicsAllocation::AllocationType::BUFFER}, nullptr , StorageInfo{});
612+ auto gfxAllocation = memoryManager.allocateGraphicsMemoryWithAlignment (allocationData);
613+ ASSERT_NE (gfxAllocation, nullptr );
614+ EXPECT_EQ (gfxAllocation->getGpuBaseAddress (), 0ull );
615+ EXPECT_EQ (gfxAllocation->getGpuAddress (), memoryManager.gfxPartition ->getHeapLimit (HeapIndex::HEAP_STANDARD) + 1 - GfxPartition::heapGranularity - MemoryConstants::pageSize);
616+ memoryManager.freeGraphicsMemory (gfxAllocation);
617+ }
618+
582619TEST (OsAgnosticMemoryManager, givenDefaultMemoryManagerWhenAllocateGraphicsMemoryForImageIsCalledThenGraphicsAllocationIsReturned) {
583620 ExecutionEnvironment *executionEnvironment = platformImpl->peekExecutionEnvironment ();
584621 MockMemoryManager memoryManager (*executionEnvironment);
0 commit comments