Reduce usage of global gfx core helper getter [1/n]

Related-To: NEO-6853
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2022-12-09 15:11:27 +00:00
committed by Compute-Runtime-Automation
parent 637c4e5621
commit 8f308f24e5
16 changed files with 32 additions and 33 deletions

View File

@@ -80,7 +80,7 @@ std::string createBuiltinResourceName(EBuiltInOps::Type builtin, const std::stri
StackVec<std::string, 3> getBuiltinResourceNames(EBuiltInOps::Type builtin, BuiltinCode::ECodeType type, const Device &device) {
auto &hwInfo = device.getHardwareInfo();
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device.getGfxCoreHelper();
auto &productHelper = device.getRootDeviceEnvironment().getHelper<ProductHelper>();
const auto platformName = getFamilyNameWithType(hwInfo);

View File

@@ -73,7 +73,7 @@ const std::vector<char> &SipKernel::getStateSaveAreaHeader() const {
size_t SipKernel::getStateSaveAreaSize(Device *device) const {
auto &hwInfo = device->getHardwareInfo();
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device->getGfxCoreHelper();
auto maxDbgSurfaceSize = gfxCoreHelper.getSipKernelMaxDbgSurfaceSize(hwInfo);
const auto &stateSaveAreaHeader = getStateSaveAreaHeader();
if (stateSaveAreaHeader.empty()) {
@@ -105,7 +105,7 @@ SipKernelType SipKernel::getSipKernelType(Device &device) {
}
SipKernelType SipKernel::getSipKernelType(Device &device, bool debuggingEnabled) {
auto &gfxCoreHelper = GfxCoreHelper::get(device.getHardwareInfo().platform.eRenderCoreFamily);
auto &gfxCoreHelper = device.getGfxCoreHelper();
return gfxCoreHelper.getSipKernelType(debuggingEnabled);
}
@@ -191,7 +191,7 @@ bool SipKernel::initHexadecimalArraySipKernel(SipKernelType type, Device &device
uint32_t *sipKernelBinary = nullptr;
size_t kernelBinarySize = 0u;
auto &hwInfo = device.getHardwareInfo();
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device.getGfxCoreHelper();
gfxCoreHelper.setSipKernelData(sipKernelBinary, kernelBinarySize);
const auto allocType = AllocationType::KERNEL_ISA_INTERNAL;

View File

@@ -77,7 +77,7 @@ CommandContainer::ErrorCode CommandContainer::initialize(Device *device, Allocat
cmdBufferAllocations.push_back(cmdBufferAllocation);
const auto &hardwareInfo = device->getHardwareInfo();
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device->getGfxCoreHelper();
commandStream = std::make_unique<LinearStream>(cmdBufferAllocation->getUnderlyingBuffer(),
alignedSize - cmdBufferReservedSize, this, gfxCoreHelper.getBatchBufferEndSize());
@@ -296,7 +296,7 @@ void CommandContainer::allocateNextCommandBuffer() {
}
void CommandContainer::closeAndAllocateNextCommandBuffer() {
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(device->getHardwareInfo().platform.eRenderCoreFamily);
auto &gfxCoreHelper = device->getGfxCoreHelper();
auto bbEndSize = gfxCoreHelper.getBatchBufferEndSize();
auto ptr = commandStream->getSpace(0u);
memcpy_s(ptr, bbEndSize, gfxCoreHelper.getBatchBufferEndReference(), bbEndSize);
@@ -383,7 +383,7 @@ GraphicsAllocation *CommandContainer::allocateCommandBuffer() {
void CommandContainer::fillReusableAllocationLists() {
this->immediateReusableAllocationList = std::make_unique<NEO::AllocationsList>();
const auto &hardwareInfo = device->getHardwareInfo();
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hardwareInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device->getGfxCoreHelper();
auto amountToFill = gfxCoreHelper.getAmountOfAllocationsToFill();
if (amountToFill == 0u) {
return;

View File

@@ -60,7 +60,7 @@ CommandStreamReceiverHw<GfxFamily>::CommandStreamReceiverHw(ExecutionEnvironment
: CommandStreamReceiver(executionEnvironment, rootDeviceIndex, deviceBitfield) {
const auto &hwInfo = peekHwInfo();
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = getGfxCoreHelper();
localMemoryEnabled = gfxCoreHelper.getEnableLocalMemory(hwInfo);
resetKmdNotifyHelper(new KmdNotifyHelper(&hwInfo.capabilityTable.kmdNotifyProperties));
@@ -292,7 +292,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
}
const auto &hwInfo = peekHwInfo();
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = getGfxCoreHelper();
if (dispatchFlags.blocking || dispatchFlags.dcFlush || dispatchFlags.guardCommandBufferWithPipeControl || this->heapStorageReqiuresRecyclingTag) {
if (this->dispatchMode == DispatchMode::ImmediateDispatch) {
@@ -1082,7 +1082,7 @@ inline void CommandStreamReceiverHw<GfxFamily>::programVFEState(LinearStream &cs
auto disableOverdispatch = (dispatchFlags.additionalKernelExecInfo != AdditionalKernelExecInfo::NotSet);
streamProperties.frontEndState.setProperties(isCooperative, dispatchFlags.disableEUFusion, disableOverdispatch, osContext->isEngineInstanced(), hwInfo);
auto &gfxCoreHelper = NEO::GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = getGfxCoreHelper();
auto engineGroupType = gfxCoreHelper.getEngineGroupType(getOsContext().getEngineType(), getOsContext().getEngineUsage(), hwInfo);
auto pVfeState = PreambleHelper<GfxFamily>::getSpaceForVfeState(&csr, hwInfo, engineGroupType);
PreambleHelper<GfxFamily>::programVfeState(
@@ -1394,7 +1394,7 @@ inline SubmissionStatus CommandStreamReceiverHw<GfxFamily>::flushHandler(BatchBu
template <typename GfxFamily>
inline bool CommandStreamReceiverHw<GfxFamily>::isUpdateTagFromWaitEnabled() {
auto &gfxCoreHelper = GfxCoreHelper::get(peekHwInfo().platform.eRenderCoreFamily);
auto &gfxCoreHelper = getGfxCoreHelper();
auto enabled = gfxCoreHelper.isUpdateTaskCountFromWaitSupported();
enabled &= this->isAnyDirectSubmissionEnabled();
@@ -1514,7 +1514,7 @@ inline bool CommandStreamReceiverHw<GfxFamily>::initDirectSubmission() {
template <typename GfxFamily>
TagAllocatorBase *CommandStreamReceiverHw<GfxFamily>::getTimestampPacketAllocator() {
if (timestampPacketAllocator.get() == nullptr) {
auto &gfxCoreHelper = GfxCoreHelper::get(peekHwInfo().platform.eRenderCoreFamily);
auto &gfxCoreHelper = getGfxCoreHelper();
const RootDeviceIndicesContainer rootDeviceIndices = {rootDeviceIndex};
timestampPacketAllocator = gfxCoreHelper.createTimestampPacketAllocator(rootDeviceIndices, getMemoryManager(), getPreferredTagPoolSize(), getType(), osContext->getDeviceBitfield());

View File

@@ -139,7 +139,7 @@ inline void CommandStreamReceiverHw<GfxFamily>::programActivePartitionConfig(Lin
template <typename GfxFamily>
inline void CommandStreamReceiverHw<GfxFamily>::addPipeControlBeforeStateSip(LinearStream &commandStream, Device &device) {
auto &hwInfo = peekHwInfo();
GfxCoreHelper &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = getGfxCoreHelper();
auto hwInfoConfig = HwInfoConfig::get(hwInfo.platform.eProductFamily);
bool debuggingEnabled = device.getDebugger() != nullptr;
PipeControlArgs args;

View File

@@ -18,7 +18,7 @@ void PreemptionHelper::programStateSip<GfxFamily>(LinearStream &preambleCmdStrea
bool debuggingEnabled = device.getDebugger() != nullptr;
if (debuggingEnabled) {
GfxCoreHelper &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device.getGfxCoreHelper();
auto sipAllocation = SipKernel::getSipKernel(device).getSipAllocation();
if (gfxCoreHelper.isSipWANeeded(hwInfo)) {
@@ -75,7 +75,7 @@ size_t PreemptionHelper::getRequiredStateSipCmdSize<GfxFamily>(Device &device, b
auto &hwInfo = device.getHardwareInfo();
if (debuggingEnabled) {
GfxCoreHelper &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device.getGfxCoreHelper();
if (gfxCoreHelper.isSipWANeeded(hwInfo)) {
size += MemorySynchronizationCommands<GfxFamily>::getSizeForSingleBarrier(false);

View File

@@ -76,7 +76,7 @@ uint64_t ScratchSpaceControllerBase::getScratchPatchAddress() {
void ScratchSpaceControllerBase::reserveHeap(IndirectHeap::Type heapType, IndirectHeap *&indirectHeap) {
if (heapType == IndirectHeap::Type::SURFACE_STATE) {
auto &gfxCoreHelper = GfxCoreHelper::get(executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo()->platform.eRenderCoreFamily);
auto &gfxCoreHelper = executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHelper<GfxCoreHelper>();
auto surfaceStateSize = gfxCoreHelper.getRenderSurfaceStateSize();
indirectHeap->getSpace(surfaceStateSize);
}

View File

@@ -165,8 +165,9 @@ CommandStreamReceiver *TbxCommandStreamReceiverHw<GfxFamily>::create(const std::
uint32_t rootDeviceIndex,
const DeviceBitfield deviceBitfield) {
TbxCommandStreamReceiverHw<GfxFamily> *csr;
auto &hwInfo = *(executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo());
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &rootDeviceEnvironment = *executionEnvironment.rootDeviceEnvironments[rootDeviceIndex];
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
if (withAubDump) {
auto localMemoryEnabled = gfxCoreHelper.getEnableLocalMemory(hwInfo);
@@ -174,11 +175,11 @@ CommandStreamReceiver *TbxCommandStreamReceiverHw<GfxFamily>::create(const std::
if (DebugManager.flags.AUBDumpCaptureFileName.get() != "unk") {
fullName.assign(DebugManager.flags.AUBDumpCaptureFileName.get());
}
executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->initAubCenter(localMemoryEnabled, fullName, CommandStreamReceiverType::CSR_TBX_WITH_AUB);
rootDeviceEnvironment.initAubCenter(localMemoryEnabled, fullName, CommandStreamReceiverType::CSR_TBX_WITH_AUB);
csr = new CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<GfxFamily>>(baseName, executionEnvironment, rootDeviceIndex, deviceBitfield);
auto aubCenter = executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->aubCenter.get();
auto aubCenter = rootDeviceEnvironment.aubCenter.get();
UNRECOVERABLE_IF(nullptr == aubCenter);
auto subCaptureCommon = aubCenter->getSubCaptureCommon();

View File

@@ -97,7 +97,7 @@ class GfxCoreHelper {
virtual uint32_t getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const = 0;
virtual bool isLinearStoragePreferred(bool isSharedContext, bool isImage1d, bool forceLinearStorage) = 0;
virtual uint8_t getBarriersCountFromHasBarriers(uint8_t hasBarriers) const = 0;
virtual uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) = 0;
virtual uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const = 0;
virtual uint32_t alignSlmSize(uint32_t slmSize) = 0;
virtual uint32_t computeSlmValues(const HardwareInfo &hwInfo, uint32_t slmSize) = 0;
@@ -277,7 +277,7 @@ class GfxCoreHelperHw : public GfxCoreHelper {
uint8_t getBarriersCountFromHasBarriers(uint8_t hasBarriers) const override;
uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) override;
uint32_t calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const override;
uint32_t alignSlmSize(uint32_t slmSize) override;

View File

@@ -89,7 +89,7 @@ uint32_t GfxCoreHelperHw<GfxFamily>::getMocsIndex(const GmmHelper &gmmHelper, bo
}
template <typename GfxFamily>
uint32_t GfxCoreHelperHw<GfxFamily>::calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) {
uint32_t GfxCoreHelperHw<GfxFamily>::calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const {
return hwInfo.gtSystemInfo.ThreadCount;
}

View File

@@ -83,7 +83,7 @@ size_t GfxCoreHelperHw<Family>::getPaddingForISAAllocation() const {
}
template <>
uint32_t GfxCoreHelperHw<Family>::calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) {
uint32_t GfxCoreHelperHw<Family>::calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const {
auto maxThreadsPerEuCount = 1024u / grfCount;
return maxThreadsPerEuCount * hwInfo.gtSystemInfo.EUCount;
}

View File

@@ -127,7 +127,7 @@ uint32_t GfxCoreHelperHw<GfxFamily>::getMocsIndex(const GmmHelper &gmmHelper, bo
}
template <typename GfxFamily>
uint32_t GfxCoreHelperHw<GfxFamily>::calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) {
uint32_t GfxCoreHelperHw<GfxFamily>::calculateAvailableThreadCount(const HardwareInfo &hwInfo, uint32_t grfCount) const {
if (grfCount > GrfConfig::DefaultGrfNumber) {
return hwInfo.gtSystemInfo.ThreadCount / 2u;
}

View File

@@ -925,7 +925,7 @@ void Drm::setupSystemInfo(HardwareInfo *hwInfo, SystemInfo *sysInfo) {
}
void Drm::setupCacheInfo(const HardwareInfo &hwInfo) {
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
if (DebugManager.flags.ClosEnabled.get() == 0 || gfxCoreHelper.getNumCacheRegions() == 0) {
this->cacheInfo.reset(new CacheInfo(*this, 0, 0, 0));
@@ -1335,7 +1335,7 @@ uint64_t Drm::getPatIndex(Gmm *gmm, AllocationType allocationType, CacheRegion c
return CommonConstants::unsupportedPatIndex;
}
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo->platform.eRenderCoreFamily);
auto &gfxCoreHelper = rootDeviceEnvironment.getHelper<GfxCoreHelper>();
GMM_RESOURCE_INFO *resourceInfo = nullptr;
GMM_RESOURCE_USAGE_TYPE usageType = CacheSettingsHelper::getGmmUsageType(allocationType, false, *hwInfo);
@@ -1486,7 +1486,7 @@ int Drm::createDrmVirtualMemory(uint32_t &drmVmId) {
auto hwInfo = this->getRootDeviceEnvironment().getHardwareInfo();
auto memInfo = this->getMemoryInfo();
if (DebugManager.flags.UseTileMemoryBankInVirtualMemoryCreation.get() != 0) {
if (memInfo && GfxCoreHelper::get(hwInfo->platform.eRenderCoreFamily).getEnableLocalMemory(*hwInfo)) {
if (memInfo && rootDeviceEnvironment.getHelper<GfxCoreHelper>().getEnableLocalMemory(*hwInfo)) {
regionInstanceClass = memInfo->getMemoryRegionClassAndInstance(memoryBank, *this->rootDeviceEnvironment.getHardwareInfo());
}
}

View File

@@ -20,8 +20,7 @@ namespace NEO {
std::unique_ptr<PerformanceCounters> PerformanceCounters::create(Device *device) {
auto counter = std::make_unique<PerformanceCountersLinux>();
auto drm = device->getOSTime()->getOSInterface()->getDriverModel()->as<Drm>();
auto gen = device->getHardwareInfo().platform.eRenderCoreFamily;
auto &gfxCoreHelper = GfxCoreHelper::get(gen);
auto &gfxCoreHelper = device->getGfxCoreHelper();
UNRECOVERABLE_IF(counter == nullptr);
if (!device->isSubDevice()) {

View File

@@ -20,8 +20,7 @@ namespace NEO {
std::unique_ptr<PerformanceCounters> PerformanceCounters::create(Device *device) {
auto counter = std::make_unique<PerformanceCountersWin>();
auto wddm = device->getOSTime()->getOSInterface()->getDriverModel()->as<Wddm>();
auto gen = device->getHardwareInfo().platform.eRenderCoreFamily;
auto &gfxCoreHelper = GfxCoreHelper::get(gen);
auto &gfxCoreHelper = device->getGfxCoreHelper();
UNRECOVERABLE_IF(counter == nullptr);
counter->clientData.Windows.Adapter = reinterpret_cast<void *>(static_cast<UINT_PTR>(wddm->getAdapter()));

View File

@@ -45,7 +45,7 @@ void EncodeDispatchKernel<Family>::adjustInterfaceDescriptorData(INTERFACE_DESCR
constexpr uint32_t maxThreadsInTGForTGDispatchSize8 = 16u;
constexpr uint32_t maxThreadsInTGForTGDispatchSize4 = 32u;
auto &gfxCoreHelper = GfxCoreHelper::get(hwInfo.platform.eRenderCoreFamily);
auto &gfxCoreHelper = device.getGfxCoreHelper();
uint32_t availableThreadCount = gfxCoreHelper.calculateAvailableThreadCount(hwInfo, numGrf);
if (ImplicitScalingHelper::isImplicitScalingEnabled(device.getDeviceBitfield(), true)) {
const uint32_t tilesCount = device.getNumSubDevices();