Create storage info while getting allocation data

Related-To: NEO-3127

Change-Id: I716a1d5624cf34d74bafd8c9ab3f5cc5ded43275
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2019-05-06 15:33:36 +02:00
committed by sys_ocldev
parent 58492b846f
commit cadc461712
7 changed files with 45 additions and 48 deletions

View File

@ -204,8 +204,7 @@ OsContext *MemoryManager::createAndRegisterOsContext(CommandStreamReceiver *comm
return osContext; return osContext;
} }
bool MemoryManager::getAllocationData(AllocationData &allocationData, const AllocationProperties &properties, const StorageInfo storageInfo, bool MemoryManager::getAllocationData(AllocationData &allocationData, const AllocationProperties &properties, const void *hostPtr) {
const void *hostPtr) {
UNRECOVERABLE_IF(hostPtr == nullptr && !properties.flags.allocateMemory); UNRECOVERABLE_IF(hostPtr == nullptr && !properties.flags.allocateMemory);
UNRECOVERABLE_IF(properties.allocationType == GraphicsAllocation::AllocationType::UNKNOWN); UNRECOVERABLE_IF(properties.allocationType == GraphicsAllocation::AllocationType::UNKNOWN);
@ -302,7 +301,7 @@ bool MemoryManager::getAllocationData(AllocationData &allocationData, const Allo
allocationData.hostPtr = hostPtr; allocationData.hostPtr = hostPtr;
allocationData.size = properties.size; allocationData.size = properties.size;
allocationData.type = properties.allocationType; allocationData.type = properties.allocationType;
allocationData.storageInfo = storageInfo; allocationData.storageInfo = MemoryManager::createStorageInfoFromProperties(properties);
allocationData.alignment = properties.alignment ? properties.alignment : MemoryConstants::preferredAlignment; allocationData.alignment = properties.alignment ? properties.alignment : MemoryConstants::preferredAlignment;
allocationData.imgInfo = properties.imgInfo; allocationData.imgInfo = properties.imgInfo;
@ -314,8 +313,7 @@ bool MemoryManager::getAllocationData(AllocationData &allocationData, const Allo
GraphicsAllocation *MemoryManager::allocateGraphicsMemoryInPreferredPool(const AllocationProperties &properties, const void *hostPtr) { GraphicsAllocation *MemoryManager::allocateGraphicsMemoryInPreferredPool(const AllocationProperties &properties, const void *hostPtr) {
AllocationData allocationData; AllocationData allocationData;
auto storageInfo = MemoryManager::createStorageInfoFromProperties(properties); getAllocationData(allocationData, properties, hostPtr);
getAllocationData(allocationData, properties, storageInfo, hostPtr);
AllocationStatus status = AllocationStatus::Error; AllocationStatus status = AllocationStatus::Error;
GraphicsAllocation *allocation = allocateGraphicsMemoryInDevicePool(allocationData, status); GraphicsAllocation *allocation = allocateGraphicsMemoryInDevicePool(allocationData, status);

View File

@ -183,8 +183,7 @@ class MemoryManager {
ImageInfo *imgInfo = nullptr; ImageInfo *imgInfo = nullptr;
}; };
static bool getAllocationData(AllocationData &allocationData, const AllocationProperties &properties, const StorageInfo storageInfo, static bool getAllocationData(AllocationData &allocationData, const AllocationProperties &properties, const void *hostPtr);
const void *hostPtr);
static bool useInternal32BitAllocator(GraphicsAllocation::AllocationType allocationType) { static bool useInternal32BitAllocator(GraphicsAllocation::AllocationType allocationType) {
return allocationType == GraphicsAllocation::AllocationType::KERNEL_ISA || return allocationType == GraphicsAllocation::AllocationType::KERNEL_ISA ||
allocationType == GraphicsAllocation::AllocationType::INTERNAL_HEAP; allocationType == GraphicsAllocation::AllocationType::INTERNAL_HEAP;

View File

@ -24,7 +24,7 @@ class MemoryManagerGetAlloctionDataTest : public testing::TestWithParam<Graphics
TEST(MemoryManagerGetAlloctionDataTest, givenHostMemoryAllocationTypeAndAllocateMemoryFlagAndNullptrWhenAllocationDataIsQueriedThenCorrectFlagsAndSizeAreSet) { TEST(MemoryManagerGetAlloctionDataTest, givenHostMemoryAllocationTypeAndAllocateMemoryFlagAndNullptrWhenAllocationDataIsQueriedThenCorrectFlagsAndSizeAreSet) {
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
EXPECT_EQ(10u, allocData.size); EXPECT_EQ(10u, allocData.size);
@ -35,7 +35,7 @@ TEST(MemoryManagerGetAlloctionDataTest, givenNonHostMemoryAllocatoinTypeWhenAllo
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_FALSE(allocData.flags.useSystemMemory); EXPECT_FALSE(allocData.flags.useSystemMemory);
EXPECT_EQ(10u, allocData.size); EXPECT_EQ(10u, allocData.size);
@ -47,7 +47,7 @@ TEST(MemoryManagerGetAlloctionDataTest, givenAllocateMemoryFlagTrueWhenHostPtrIs
char memory = 0; char memory = 0;
AllocationProperties properties(true, sizeof(memory), GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, sizeof(memory), GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, &memory); MockMemoryManager::getAllocationData(allocData, properties, &memory);
EXPECT_EQ(sizeof(memory), allocData.size); EXPECT_EQ(sizeof(memory), allocData.size);
EXPECT_EQ(nullptr, allocData.hostPtr); EXPECT_EQ(nullptr, allocData.hostPtr);
@ -57,7 +57,7 @@ TEST(MemoryManagerGetAlloctionDataTest, givenBufferTypeWhenAllocationDataIsQueri
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.forcePin); EXPECT_TRUE(allocData.flags.forcePin);
} }
@ -66,7 +66,7 @@ TEST(MemoryManagerGetAlloctionDataTest, givenBufferHostMemoryTypeWhenAllocationD
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.forcePin); EXPECT_TRUE(allocData.flags.forcePin);
} }
@ -75,7 +75,7 @@ TEST(MemoryManagerGetAlloctionDataTest, givenBufferCompressedTypeWhenAllocationD
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_COMPRESSED); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_COMPRESSED);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.forcePin); EXPECT_TRUE(allocData.flags.forcePin);
} }
@ -84,7 +84,7 @@ TEST(MemoryManagerGetAlloctionDataTest, givenDefaultAllocationFlagsWhenAllocatio
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(false, 0, GraphicsAllocation::AllocationType::BUFFER_COMPRESSED); AllocationProperties properties(false, 0, GraphicsAllocation::AllocationType::BUFFER_COMPRESSED);
char memory; char memory;
MockMemoryManager::getAllocationData(allocData, properties, {}, &memory); MockMemoryManager::getAllocationData(allocData, properties, &memory);
EXPECT_FALSE(allocData.flags.allocateMemory); EXPECT_FALSE(allocData.flags.allocateMemory);
} }
@ -96,7 +96,7 @@ TEST_P(MemoryManagerGetAlloctionData32BitAnd64kbPagesAllowedTest, givenAllocatio
auto allocType = GetParam(); auto allocType = GetParam();
AllocationProperties properties(true, 0, allocType); AllocationProperties properties(true, 0, allocType);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.allow32Bit); EXPECT_TRUE(allocData.flags.allow32Bit);
EXPECT_TRUE(allocData.flags.allow64kbPages); EXPECT_TRUE(allocData.flags.allow64kbPages);
@ -108,7 +108,7 @@ TEST_P(MemoryManagerGetAlloctionData32BitAnd64kbPagesAllowedTest, given64kbAllow
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, allocType); AllocationProperties properties(true, 10, allocType);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
bool bufferCompressedType = (allocType == GraphicsAllocation::AllocationType::BUFFER_COMPRESSED); bool bufferCompressedType = (allocType == GraphicsAllocation::AllocationType::BUFFER_COMPRESSED);
EXPECT_TRUE(allocData.flags.allow64kbPages); EXPECT_TRUE(allocData.flags.allow64kbPages);
MockMemoryManager mockMemoryManager(true, false); MockMemoryManager mockMemoryManager(true, false);
@ -127,7 +127,7 @@ TEST_P(MemoryManagerGetAlloctionData32BitAnd64kbPagesNotAllowedTest, givenAlloca
auto allocType = GetParam(); auto allocType = GetParam();
AllocationProperties properties(true, 0, allocType); AllocationProperties properties(true, 0, allocType);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_FALSE(allocData.flags.allow32Bit); EXPECT_FALSE(allocData.flags.allow32Bit);
EXPECT_FALSE(allocData.flags.allow64kbPages); EXPECT_FALSE(allocData.flags.allow64kbPages);
@ -167,7 +167,7 @@ TEST(MemoryManagerTest, givenForced32BitSetWhenGraphicsMemoryFor32BitAllowedType
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@ -190,7 +190,7 @@ TEST(MemoryManagerTest, givenForced32BitEnabledWhenGraphicsMemoryWihtoutAllow32B
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
allocData.flags.allow32Bit = false; allocData.flags.allow32Bit = false;
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
@ -208,7 +208,7 @@ TEST(MemoryManagerTest, givenForced32BitDisabledWhenGraphicsMemoryWith32BitFlagF
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@ -223,7 +223,7 @@ TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryMustBeHostMemoryA
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@ -241,7 +241,7 @@ TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryWithoutAllow64kbP
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
allocData.flags.allow64kbPages = false; allocData.flags.allow64kbPages = false;
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
@ -258,7 +258,7 @@ TEST(MemoryManagerTest, givenDisabled64kbPagesWhenGraphicsMemoryMustBeHostMemory
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@ -277,7 +277,7 @@ TEST(MemoryManagerTest, givenForced32BitAndEnabled64kbPagesWhenGraphicsMemoryMus
AllocationData allocData; AllocationData allocData;
AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(true, 10, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@ -297,7 +297,7 @@ TEST(MemoryManagerTest, givenEnabled64kbPagesWhenGraphicsMemoryIsAllocatedWithHo
AllocationProperties properties(false, 1, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY); AllocationProperties properties(false, 1, GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY);
char memory[1]; char memory[1];
MockMemoryManager::getAllocationData(allocData, properties, {}, &memory); MockMemoryManager::getAllocationData(allocData, properties, &memory);
auto allocation = memoryManager.allocateGraphicsMemory(allocData); auto allocation = memoryManager.allocateGraphicsMemory(allocData);
ASSERT_NE(nullptr, allocation); ASSERT_NE(nullptr, allocation);
@ -345,76 +345,76 @@ TEST(MemoryManagerTest, givenMemoryManagerWhenBufferTypeIsPassedAndAllocateInDev
TEST(MemoryManagerTest, givenSvmAllocationTypeWhenGetAllocationDataIsCalledThenAllocatingMemoryIsRequested) { TEST(MemoryManagerTest, givenSvmAllocationTypeWhenGetAllocationDataIsCalledThenAllocatingMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SVM_ZERO_COPY}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SVM_ZERO_COPY}, nullptr);
EXPECT_TRUE(allocData.flags.allocateMemory); EXPECT_TRUE(allocData.flags.allocateMemory);
} }
TEST(MemoryManagerTest, givenSvmAllocationTypeWhenGetAllocationDataIsCalledThen64kbPagesAreAllowedAnd32BitAllocationIsDisallowed) { TEST(MemoryManagerTest, givenSvmAllocationTypeWhenGetAllocationDataIsCalledThen64kbPagesAreAllowedAnd32BitAllocationIsDisallowed) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SVM_ZERO_COPY}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SVM_ZERO_COPY}, nullptr);
EXPECT_TRUE(allocData.flags.allow64kbPages); EXPECT_TRUE(allocData.flags.allow64kbPages);
EXPECT_FALSE(allocData.flags.allow32Bit); EXPECT_FALSE(allocData.flags.allow32Bit);
} }
TEST(MemoryManagerTest, givenTagBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenTagBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::TAG_BUFFER}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::TAG_BUFFER}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenPreemptionTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenPreemptionTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::PREEMPTION}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::PREEMPTION}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenSharedContextImageTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenSharedContextImageTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SHARED_CONTEXT_IMAGE}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SHARED_CONTEXT_IMAGE}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenMCSTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenMCSTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::MCS}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::MCS}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenDeviceQueueBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenDeviceQueueBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::DEVICE_QUEUE_BUFFER}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::DEVICE_QUEUE_BUFFER}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenInternalHostMemoryTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenInternalHostMemoryTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::INTERNAL_HOST_MEMORY}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenFillPatternTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenFillPatternTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::FILL_PATTERN}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::FILL_PATTERN}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenLinearStreamTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) { TEST(MemoryManagerTest, givenLinearStreamTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::LINEAR_STREAM}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::LINEAR_STREAM}, nullptr);
EXPECT_FALSE(allocData.flags.useSystemMemory); EXPECT_FALSE(allocData.flags.useSystemMemory);
EXPECT_TRUE(allocData.flags.requiresCpuAccess); EXPECT_TRUE(allocData.flags.requiresCpuAccess);
} }
TEST(MemoryManagerTest, givenTimestampPacketTagBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequestedAndRequireCpuAccess) { TEST(MemoryManagerTest, givenTimestampPacketTagBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequestedAndRequireCpuAccess) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::TIMESTAMP_PACKET_TAG_BUFFER}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::TIMESTAMP_PACKET_TAG_BUFFER}, nullptr);
EXPECT_FALSE(allocData.flags.useSystemMemory); EXPECT_FALSE(allocData.flags.useSystemMemory);
EXPECT_TRUE(allocData.flags.requiresCpuAccess); EXPECT_TRUE(allocData.flags.requiresCpuAccess);
} }
TEST(MemoryManagerTest, givenProfilingTagBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { TEST(MemoryManagerTest, givenProfilingTagBufferTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::PROFILING_TAG_BUFFER}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::PROFILING_TAG_BUFFER}, nullptr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
EXPECT_FALSE(allocData.flags.requiresCpuAccess); EXPECT_FALSE(allocData.flags.requiresCpuAccess);
} }
@ -426,7 +426,7 @@ TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagEn
properties.flags.multiOsContextCapable = true; properties.flags.multiOsContextCapable = true;
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.multiOsContextCapable); EXPECT_TRUE(allocData.flags.multiOsContextCapable);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(properties); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(properties);
@ -441,7 +441,7 @@ TEST(MemoryManagerTest, givenAllocationPropertiesWithMultiOsContextCapableFlagDi
properties.flags.multiOsContextCapable = false; properties.flags.multiOsContextCapable = false;
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_FALSE(allocData.flags.multiOsContextCapable); EXPECT_FALSE(allocData.flags.multiOsContextCapable);
auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(properties); auto allocation = memoryManager.allocateGraphicsMemoryWithProperties(properties);
@ -455,20 +455,20 @@ TEST(MemoryManagerTest, givenInternalHeapTypeThenUseInternal32BitAllocator) {
TEST(MemoryManagerTest, givenInternalHeapTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) { TEST(MemoryManagerTest, givenInternalHeapTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::INTERNAL_HEAP}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::INTERNAL_HEAP}, nullptr);
EXPECT_FALSE(allocData.flags.useSystemMemory); EXPECT_FALSE(allocData.flags.useSystemMemory);
EXPECT_TRUE(allocData.flags.requiresCpuAccess); EXPECT_TRUE(allocData.flags.requiresCpuAccess);
} }
TEST(MemoryManagerTest, givenKernelIsaTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) { TEST(MemoryManagerTest, givenKernelIsaTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::KERNEL_ISA}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::KERNEL_ISA}, nullptr);
EXPECT_FALSE(allocData.flags.useSystemMemory); EXPECT_FALSE(allocData.flags.useSystemMemory);
} }
TEST(MemoryManagerTest, givenLinearStreamWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) { TEST(MemoryManagerTest, givenLinearStreamWhenGetAllocationDataIsCalledThenSystemMemoryIsNotRequested) {
AllocationData allocData; AllocationData allocData;
MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::LINEAR_STREAM}, {}, nullptr); MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::LINEAR_STREAM}, nullptr);
EXPECT_FALSE(allocData.flags.useSystemMemory); EXPECT_FALSE(allocData.flags.useSystemMemory);
EXPECT_TRUE(allocData.flags.requiresCpuAccess); EXPECT_TRUE(allocData.flags.requiresCpuAccess);
} }
@ -480,7 +480,7 @@ TEST(MemoryManagerTest, givenKernelIsaTypeThenUseInternal32BitAllocator) {
TEST(MemoryManagerTest, givenExternalHostMemoryWhenGetAllocationDataIsCalledThenItHasProperFieldsSet) { TEST(MemoryManagerTest, givenExternalHostMemoryWhenGetAllocationDataIsCalledThenItHasProperFieldsSet) {
AllocationData allocData; AllocationData allocData;
auto hostPtr = reinterpret_cast<void *>(0x1234); auto hostPtr = reinterpret_cast<void *>(0x1234);
MockMemoryManager::getAllocationData(allocData, {false, 1, GraphicsAllocation::AllocationType::EXTERNAL_HOST_PTR}, {}, hostPtr); MockMemoryManager::getAllocationData(allocData, {false, 1, GraphicsAllocation::AllocationType::EXTERNAL_HOST_PTR}, hostPtr);
EXPECT_TRUE(allocData.flags.useSystemMemory); EXPECT_TRUE(allocData.flags.useSystemMemory);
EXPECT_FALSE(allocData.flags.allocateMemory); EXPECT_FALSE(allocData.flags.allocateMemory);
EXPECT_FALSE(allocData.flags.allow32Bit); EXPECT_FALSE(allocData.flags.allow32Bit);

View File

@ -1662,7 +1662,7 @@ TEST(MemoryManagerTest, givenAllocationTypesThatMayNeedL3FlushWhenCallingGetAllo
for (auto allocationType : allocationTypesThatMayNeedL3Flush) { for (auto allocationType : allocationTypesThatMayNeedL3Flush) {
properties.allocationType = allocationType; properties.allocationType = allocationType;
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_TRUE(allocData.flags.flushL3); EXPECT_TRUE(allocData.flags.flushL3);
} }
@ -1671,7 +1671,7 @@ TEST(MemoryManagerTest, givenAllocationTypesThatMayNeedL3FlushWhenCallingGetAllo
for (auto allocationType : allocationTypesThatMayNeedL3Flush) { for (auto allocationType : allocationTypesThatMayNeedL3Flush) {
properties.allocationType = allocationType; properties.allocationType = allocationType;
MockMemoryManager::getAllocationData(allocData, properties, {}, nullptr); MockMemoryManager::getAllocationData(allocData, properties, nullptr);
EXPECT_FALSE(allocData.flags.flushL3); EXPECT_FALSE(allocData.flags.flushL3);
} }
} }

View File

@ -108,7 +108,7 @@ class TestedDrmMemoryManager : public MemoryManagerCreate<DrmMemoryManager> {
DrmAllocation *allocate32BitGraphicsMemory(size_t size, const void *ptr, GraphicsAllocation::AllocationType allocationType) { DrmAllocation *allocate32BitGraphicsMemory(size_t size, const void *ptr, GraphicsAllocation::AllocationType allocationType) {
bool allocateMemory = ptr == nullptr; bool allocateMemory = ptr == nullptr;
AllocationData allocationData; AllocationData allocationData;
getAllocationData(allocationData, MockAllocationProperties(allocateMemory, size, allocationType), {}, ptr); getAllocationData(allocationData, MockAllocationProperties(allocateMemory, size, allocationType), ptr);
return allocate32BitGraphicsMemoryImpl(allocationData); return allocate32BitGraphicsMemoryImpl(allocationData);
} }
}; };

View File

@ -93,7 +93,7 @@ GraphicsAllocation *MockMemoryManager::allocateGraphicsMemoryWithAlignment(const
GraphicsAllocation *MockMemoryManager::allocate32BitGraphicsMemory(size_t size, const void *ptr, GraphicsAllocation::AllocationType allocationType) { GraphicsAllocation *MockMemoryManager::allocate32BitGraphicsMemory(size_t size, const void *ptr, GraphicsAllocation::AllocationType allocationType) {
bool allocateMemory = ptr == nullptr; bool allocateMemory = ptr == nullptr;
AllocationData allocationData; AllocationData allocationData;
getAllocationData(allocationData, MockAllocationProperties(allocateMemory, size, allocationType), {}, ptr); getAllocationData(allocationData, MockAllocationProperties(allocateMemory, size, allocationType), ptr);
return allocate32BitGraphicsMemoryImpl(allocationData); return allocate32BitGraphicsMemoryImpl(allocationData);
} }

View File

@ -41,7 +41,7 @@ class MockWddmMemoryManager : public MemoryManagerCreate<WddmMemoryManager> {
GraphicsAllocation *allocate32BitGraphicsMemory(size_t size, const void *ptr, GraphicsAllocation::AllocationType allocationType) { GraphicsAllocation *allocate32BitGraphicsMemory(size_t size, const void *ptr, GraphicsAllocation::AllocationType allocationType) {
bool allocateMemory = ptr == nullptr; bool allocateMemory = ptr == nullptr;
AllocationData allocationData; AllocationData allocationData;
getAllocationData(allocationData, MockAllocationProperties(allocateMemory, size, allocationType), {}, ptr); getAllocationData(allocationData, MockAllocationProperties(allocateMemory, size, allocationType), ptr);
return allocate32BitGraphicsMemoryImpl(allocationData); return allocate32BitGraphicsMemoryImpl(allocationData);
} }