mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
feature: Add support for Media frequncy Domain on linux
Related-To: LOCI-4552 Signed-off-by: Mayank Raghuwanshi <mayank.raghuwanshi@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
46007dde5b
commit
085293b230
@@ -208,6 +208,7 @@ class ProductHelper {
|
||||
virtual bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool isCachingOnCpuAvailable() const = 0;
|
||||
virtual bool isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const = 0;
|
||||
virtual bool getMediaFrequencyTileIndex(const ReleaseHelper *releaseHelper, uint32_t &tileIndex) const = 0;
|
||||
|
||||
virtual ~ProductHelper() = default;
|
||||
|
||||
|
||||
@@ -752,6 +752,14 @@ bool ProductHelperHw<gfxProduct>::isDummyBlitWaRequired() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
bool ProductHelperHw<gfxProduct>::getMediaFrequencyTileIndex(const ReleaseHelper *releaseHelper, uint32_t &tileIndex) const {
|
||||
if (releaseHelper) {
|
||||
return releaseHelper->getMediaFrequencyTileIndex(tileIndex);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
bool ProductHelperHw<gfxProduct>::is48bResourceNeededForRayTracing() const {
|
||||
return true;
|
||||
|
||||
@@ -160,6 +160,7 @@ class ProductHelperHw : public ProductHelper {
|
||||
bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const override;
|
||||
bool isCachingOnCpuAvailable() const override;
|
||||
bool isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const override;
|
||||
bool getMediaFrequencyTileIndex(const ReleaseHelper *releaseHelper, uint32_t &tileIndex) const override;
|
||||
|
||||
~ProductHelperHw() override = default;
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ class ReleaseHelper {
|
||||
virtual bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const = 0;
|
||||
virtual bool isPrefetchDisablingRequired() const = 0;
|
||||
virtual int getProductMaxPreferredSlmSize(int preferredEnumValue) const = 0;
|
||||
virtual bool getMediaFrequencyTileIndex(uint32_t &tileIndex) const = 0;
|
||||
|
||||
protected:
|
||||
ReleaseHelper(HardwareIpVersion hardwareIpVersion) : hardwareIpVersion(hardwareIpVersion) {}
|
||||
@@ -47,6 +48,7 @@ class ReleaseHelperHw : public ReleaseHelper {
|
||||
bool isPipeControlPriorToNonPipelinedStateCommandsWARequired() const override;
|
||||
bool isPrefetchDisablingRequired() const override;
|
||||
int getProductMaxPreferredSlmSize(int preferredEnumValue) const override;
|
||||
bool getMediaFrequencyTileIndex(uint32_t &tileIndex) const override;
|
||||
|
||||
private:
|
||||
ReleaseHelperHw(HardwareIpVersion hardwareIpVersion) : ReleaseHelper(hardwareIpVersion) {}
|
||||
|
||||
@@ -28,6 +28,12 @@ int ReleaseHelperHw<release>::getProductMaxPreferredSlmSize(int preferredEnumVal
|
||||
return std::min(preferredEnumValue, static_cast<int>(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K));
|
||||
}
|
||||
|
||||
template <>
|
||||
bool ReleaseHelperHw<release>::getMediaFrequencyTileIndex(uint32_t &tileIndex) const {
|
||||
tileIndex = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
#include "shared/source/release_helper/release_helper_common_xe_lpg.inl"
|
||||
|
||||
|
||||
@@ -28,6 +28,12 @@ int ReleaseHelperHw<release>::getProductMaxPreferredSlmSize(int preferredEnumVal
|
||||
return std::min(preferredEnumValue, static_cast<int>(PREFERRED_SLM_ALLOCATION_SIZE::PREFERRED_SLM_ALLOCATION_SIZE_96K));
|
||||
}
|
||||
|
||||
template <>
|
||||
bool ReleaseHelperHw<release>::getMediaFrequencyTileIndex(uint32_t &tileIndex) const {
|
||||
tileIndex = 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
#include "shared/source/release_helper/release_helper_common_xe_lpg.inl"
|
||||
|
||||
@@ -33,4 +33,9 @@ int ReleaseHelperHw<releaseType>::getProductMaxPreferredSlmSize(int preferredEnu
|
||||
return preferredEnumValue;
|
||||
}
|
||||
|
||||
template <ReleaseType releaseType>
|
||||
bool ReleaseHelperHw<releaseType>::getMediaFrequencyTileIndex(uint32_t &tileIndex) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -80,6 +80,7 @@ using IsAtLeastMtl = IsAtLeastProduct<IGFX_METEORLAKE>;
|
||||
using IsAtMostDg2 = IsAtMostProduct<IGFX_DG2>;
|
||||
|
||||
using IsNotPVC = IsNotWithinProducts<IGFX_PVC, IGFX_PVC>;
|
||||
using IsNotMtl = IsNotWithinProducts<IGFX_METEORLAKE, IGFX_METEORLAKE>;
|
||||
using IsNotPvcOrDg2 = IsNotWithinProducts<IGFX_DG2, IGFX_PVC>;
|
||||
|
||||
using HasStatefulSupport = IsNotAnyGfxCores<IGFX_XE_HPC_CORE>;
|
||||
|
||||
@@ -637,6 +637,17 @@ HWTEST_F(ProductHelperTest, givenProductHelperWhenIsAdjustWalkOrderAvailableCall
|
||||
EXPECT_FALSE(productHelper->isAdjustWalkOrderAvailable(releaseHelper));
|
||||
}
|
||||
|
||||
HWTEST_F(ProductHelperTest, givenProductHelperWhenGetMediaFrequencyTileIndexCallThenFalseReturn) {
|
||||
uint32_t tileIndex = 0;
|
||||
EXPECT_FALSE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
|
||||
}
|
||||
|
||||
HWTEST_F(ProductHelperTest, givenProductHelperAndReleaseHelperNullptrWhenCallingGetMediaFrequencyTileIndexThenReturnFalse) {
|
||||
uint32_t tileIndex = 0;
|
||||
ReleaseHelper *releaseHelper = nullptr;
|
||||
EXPECT_FALSE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
|
||||
}
|
||||
|
||||
HWTEST_F(ProductHelperTest, givenProductHelperWhenIsPrefetcherDisablingInDirectSubmissionRequiredThenTrueIsReturned) {
|
||||
EXPECT_TRUE(productHelper->isPrefetcherDisablingInDirectSubmissionRequired());
|
||||
}
|
||||
|
||||
@@ -27,3 +27,4 @@ HWTEST_EXCLUDE_PRODUCT(ProductHelperCommonTest, givenPatIndexAndAllocationTypeWh
|
||||
HWTEST_EXCLUDE_PRODUCT(CompilerProductHelperFixture, GivenXeHpAndLaterThenBFloat16ConversionIsSupported_IsAtLeastXeHpCore, IGFX_METEORLAKE);
|
||||
HWTEST_EXCLUDE_PRODUCT(CompilerProductHelperFixture, GivenXeHpAndLaterThenMatrixMultiplyAccumulateIsSupported_IsAtLeastXeHpCore, IGFX_METEORLAKE);
|
||||
HWTEST_EXCLUDE_PRODUCT(CompilerProductHelperFixture, GivenXeFamilyThenSplitMatrixMultiplyAccumulateIsSupported_IsWithinXeGfxFamily, IGFX_METEORLAKE);
|
||||
HWTEST_EXCLUDE_PRODUCT(ProductHelperTest, givenProductHelperWhenGetMediaFrequencyTileIndexCallThenFalseReturn, IGFX_METEORLAKE);
|
||||
|
||||
@@ -270,6 +270,25 @@ MTLTEST_F(MtlProductHelper, givenMtlWhenCallIsAdjustWalkOrderAvailableThenReturn
|
||||
}
|
||||
}
|
||||
|
||||
MTLTEST_F(MtlProductHelper, givenMtlWhenCallIsGetMediaFrequencyTileIndexThenReturnProperValue) {
|
||||
VariableBackup<HardwareInfo> backupHwInfo(defaultHwInfo.get());
|
||||
unsigned int gmdReleases[] = {70, 71};
|
||||
defaultHwInfo->ipVersion.architecture = 12;
|
||||
|
||||
for (auto gmdRelease : gmdReleases) {
|
||||
defaultHwInfo->ipVersion.release = gmdRelease;
|
||||
refreshReleaseHelper(defaultHwInfo.get());
|
||||
uint32_t tileIndex = 0;
|
||||
EXPECT_TRUE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
|
||||
}
|
||||
}
|
||||
|
||||
MTLTEST_F(MtlProductHelper, givenMtlAndReleaseHelperNullptrWhenCallingGetMediaFrequencyTileIndexThenReturnFalse) {
|
||||
uint32_t tileIndex = 0;
|
||||
ReleaseHelper *releaseHelper = nullptr;
|
||||
EXPECT_FALSE(productHelper->getMediaFrequencyTileIndex(releaseHelper, tileIndex));
|
||||
}
|
||||
|
||||
MTLTEST_F(MtlProductHelper, givenMtlAndReleaseHelperNullptrWhengetIsMatrixMultiplyAccumulateSupportedThenReturnsFalse) {
|
||||
auto &compilerProductHelper = this->executionEnvironment->rootDeviceEnvironments[0]->getHelper<CompilerProductHelper>();
|
||||
ReleaseHelper *releaseHelper = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user