fix: Do not increase host USM alignment when CAL enabled
Resolves: GSD-10808
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
Source: b7cba510a3
This commit is contained in:
parent
794a497c47
commit
f052d61d33
|
@ -855,6 +855,26 @@ TEST_F(UnifiedMemoryManagerPropertiesTest,
|
||||||
svmManager->freeSVMAlloc(ptr);
|
svmManager->freeSVMAlloc(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(UnifiedMemoryManagerPropertiesTest,
|
||||||
|
givenCALAndSizeGreaterThan2mbWhenDiscretGpuAndCreateHostUSMThenDoNotAlignSizeAndVATo2mb) {
|
||||||
|
DebugManagerStateRestore restorer;
|
||||||
|
debugManager.flags.NEO_CAL_ENABLED.set(1);
|
||||||
|
|
||||||
|
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
|
||||||
|
std::map<uint32_t, DeviceBitfield> deviceBitfields{{mockRootDeviceIndex, DeviceBitfield(0x1)}};
|
||||||
|
SVMAllocsManager::UnifiedMemoryProperties unifiedMemoryProperties(InternalMemoryType::hostUnifiedMemory, 1, rootDeviceIndices, deviceBitfields);
|
||||||
|
|
||||||
|
svmManager->multiOsContextSupport = true;
|
||||||
|
auto ptr = svmManager->createHostUnifiedMemoryAllocation(4 * MemoryConstants::pageSize2M + MemoryConstants::pageSize64k, unifiedMemoryProperties);
|
||||||
|
|
||||||
|
auto allocation = svmManager->getSVMAlloc(ptr);
|
||||||
|
|
||||||
|
EXPECT_EQ(4 * MemoryConstants::pageSize2M + MemoryConstants::pageSize64k, allocation->gpuAllocations.getDefaultGraphicsAllocation()->getUnderlyingBufferSize());
|
||||||
|
EXPECT_TRUE(isAligned(allocation->gpuAllocations.getDefaultGraphicsAllocation()->getGpuAddress(), MemoryConstants::pageSize));
|
||||||
|
|
||||||
|
svmManager->freeSVMAlloc(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(UnifiedMemoryManagerPropertiesTest,
|
TEST_F(UnifiedMemoryManagerPropertiesTest,
|
||||||
given1ByteAsAllocationSizeWhenHostMemAllocIsCreatedItIsAlignedTo4k) {
|
given1ByteAsAllocationSizeWhenHostMemAllocIsCreatedItIsAlignedTo4k) {
|
||||||
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
|
RootDeviceIndicesContainer rootDeviceIndices = {mockRootDeviceIndex};
|
||||||
|
|
|
@ -296,7 +296,7 @@ void *SVMAllocsManager::createSVMAlloc(size_t size, const SvmAllocationPropertie
|
||||||
void *SVMAllocsManager::createHostUnifiedMemoryAllocation(size_t size,
|
void *SVMAllocsManager::createHostUnifiedMemoryAllocation(size_t size,
|
||||||
const UnifiedMemoryProperties &memoryProperties) {
|
const UnifiedMemoryProperties &memoryProperties) {
|
||||||
bool isDiscrete = false;
|
bool isDiscrete = false;
|
||||||
if (size >= MemoryConstants::pageSize2M) {
|
if (size >= MemoryConstants::pageSize2M && !debugManager.flags.NEO_CAL_ENABLED.get()) {
|
||||||
for (const auto rootDeviceIndex : memoryProperties.rootDeviceIndices) {
|
for (const auto rootDeviceIndex : memoryProperties.rootDeviceIndices) {
|
||||||
isDiscrete |= !this->memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo()->capabilityTable.isIntegratedDevice;
|
isDiscrete |= !this->memoryManager->peekExecutionEnvironment().rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo()->capabilityTable.isIntegratedDevice;
|
||||||
if (isDiscrete) {
|
if (isDiscrete) {
|
||||||
|
|
Loading…
Reference in New Issue