mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 12:23:05 +08:00
fix: Override prefer no cpu access for dc flush mitigation
Related-To: NEO-10556 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
f8330b1779
commit
9a2fa1dcb1
@@ -42,6 +42,8 @@ Gmm::Gmm(GmmHelper *gmmHelper, const void *alignedPtr, size_t alignedSize, size_
|
|||||||
|
|
||||||
this->preferNoCpuAccess = CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsage, gmmHelper->getRootDeviceEnvironment());
|
this->preferNoCpuAccess = CacheSettingsHelper::preferNoCpuAccess(gmmResourceUsage, gmmHelper->getRootDeviceEnvironment());
|
||||||
bool cacheable = !this->preferNoCpuAccess && !CacheSettingsHelper::isUncachedType(gmmResourceUsage);
|
bool cacheable = !this->preferNoCpuAccess && !CacheSettingsHelper::isUncachedType(gmmResourceUsage);
|
||||||
|
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.doOverride(this->preferNoCpuAccess);
|
||||||
gmmRequirements.overriderCacheable.doOverride(cacheable);
|
gmmRequirements.overriderCacheable.doOverride(cacheable);
|
||||||
resourceParams.Flags.Info.Cacheable = cacheable;
|
resourceParams.Flags.Info.Cacheable = cacheable;
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ struct GmmRequirements {
|
|||||||
bool preferCompressed;
|
bool preferCompressed;
|
||||||
bool allowLargePages;
|
bool allowLargePages;
|
||||||
Overrider<bool> overriderCacheable;
|
Overrider<bool> overriderCacheable;
|
||||||
|
Overrider<bool> overriderPreferNoCpuAccess;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Gmm {
|
class Gmm {
|
||||||
|
|||||||
@@ -225,6 +225,10 @@ GraphicsAllocation *WddmMemoryManager::allocateGraphicsMemoryUsingKmdAndMapItToC
|
|||||||
gmmRequirements.overriderCacheable.enableOverride = true;
|
gmmRequirements.overriderCacheable.enableOverride = true;
|
||||||
gmmRequirements.overriderCacheable.value = true;
|
gmmRequirements.overriderCacheable.value = true;
|
||||||
}
|
}
|
||||||
|
if (productHelper.overrideCacheableForDcFlushMitigation(allocationData.type)) {
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.enableOverride = true;
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
auto gmm = new Gmm(executionEnvironment.rootDeviceEnvironments[allocationData.rootDeviceIndex]->getGmmHelper(), nullptr,
|
auto gmm = new Gmm(executionEnvironment.rootDeviceEnvironments[allocationData.rootDeviceIndex]->getGmmHelper(), nullptr,
|
||||||
sizeAligned, 0u,
|
sizeAligned, 0u,
|
||||||
@@ -451,6 +455,10 @@ GraphicsAllocation *WddmMemoryManager::allocateGraphicsMemoryForNonSvmHostPtr(co
|
|||||||
gmmRequirements.overriderCacheable.enableOverride = true;
|
gmmRequirements.overriderCacheable.enableOverride = true;
|
||||||
gmmRequirements.overriderCacheable.value = true;
|
gmmRequirements.overriderCacheable.value = true;
|
||||||
}
|
}
|
||||||
|
if (productHelper.overrideCacheableForDcFlushMitigation(allocationData.type)) {
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.enableOverride = true;
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.value = false;
|
||||||
|
}
|
||||||
|
|
||||||
auto gmm = new Gmm(executionEnvironment.rootDeviceEnvironments[allocationData.rootDeviceIndex]->getGmmHelper(), alignedPtr, alignedSize, 0u,
|
auto gmm = new Gmm(executionEnvironment.rootDeviceEnvironments[allocationData.rootDeviceIndex]->getGmmHelper(), alignedPtr, alignedSize, 0u,
|
||||||
CacheSettingsHelper::getGmmUsageType(wddmAllocation->getAllocationType(), !!allocationData.flags.uncacheable, productHelper), {}, gmmRequirements);
|
CacheSettingsHelper::getGmmUsageType(wddmAllocation->getAllocationType(), !!allocationData.flags.uncacheable, productHelper), {}, gmmRequirements);
|
||||||
|
|||||||
@@ -122,6 +122,18 @@ HWTEST_F(GmmTests, givenVariousResourceUsageTypeWhenCreateGmmThenFlagCacheableIs
|
|||||||
auto gmm = std::make_unique<Gmm>(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements);
|
auto gmm = std::make_unique<Gmm>(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements);
|
||||||
EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable);
|
EXPECT_TRUE(gmm->resourceParams.Flags.Info.Cacheable);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.enableOverride = true;
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.value = true;
|
||||||
|
auto gmm = std::make_unique<Gmm>(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements);
|
||||||
|
EXPECT_TRUE(gmm->getPreferNoCpuAccess());
|
||||||
|
}
|
||||||
|
{
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.enableOverride = true;
|
||||||
|
gmmRequirements.overriderPreferNoCpuAccess.value = false;
|
||||||
|
auto gmm = std::make_unique<Gmm>(getGmmHelper(), nullptr, 0, 0, GMM_RESOURCE_USAGE_OCL_BUFFER, storageInfo, gmmRequirements);
|
||||||
|
EXPECT_FALSE(gmm->getPreferNoCpuAccess());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
Reference in New Issue
Block a user