mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-09 22:43:00 +08:00
Move local memory access mode getters from HwHelper to HwInfoConfig
Signed-off-by: Rafal Maziejuk <rafal.maziejuk@intel.com> Related-To: NEO-4541
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0222649dba
commit
09ac89339e
@@ -19,8 +19,8 @@ namespace NEO {
|
||||
template <typename GfxFamily>
|
||||
uint64_t BlitCommandsHelper<GfxFamily>::getMaxBlitWidthOverride(const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
|
||||
HwHelper &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
if (hwHelper.getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessAllowed) {
|
||||
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
if (hwInfoConfig.getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessAllowed) {
|
||||
return 1024;
|
||||
}
|
||||
return 0;
|
||||
@@ -29,8 +29,8 @@ uint64_t BlitCommandsHelper<GfxFamily>::getMaxBlitWidthOverride(const RootDevice
|
||||
template <typename GfxFamily>
|
||||
uint64_t BlitCommandsHelper<GfxFamily>::getMaxBlitHeightOverride(const RootDeviceEnvironment &rootDeviceEnvironment) {
|
||||
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
|
||||
HwHelper &hwHelper = HwHelper::get(hwInfo.platform.eRenderCoreFamily);
|
||||
if (hwHelper.getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessAllowed) {
|
||||
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
if (hwInfoConfig.getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessAllowed) {
|
||||
return 1024;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -13,7 +13,9 @@ namespace NEO {
|
||||
|
||||
template <>
|
||||
void HwHelperHw<Family>::setExtraAllocationData(AllocationData &allocationData, const AllocationProperties &properties, const HardwareInfo &hwInfo) const {
|
||||
if (LocalMemoryAccessMode::CpuAccessDisallowed == getLocalMemoryAccessMode(hwInfo)) {
|
||||
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
|
||||
if (LocalMemoryAccessMode::CpuAccessDisallowed == hwInfoConfig.getLocalMemoryAccessMode(hwInfo)) {
|
||||
if (properties.allocationType == GraphicsAllocation::AllocationType::LINEAR_STREAM ||
|
||||
properties.allocationType == GraphicsAllocation::AllocationType::INTERNAL_HEAP ||
|
||||
properties.allocationType == GraphicsAllocation::AllocationType::PRINTF_SURFACE ||
|
||||
@@ -28,7 +30,6 @@ void HwHelperHw<Family>::setExtraAllocationData(AllocationData &allocationData,
|
||||
}
|
||||
}
|
||||
|
||||
const auto &hwInfoConfig = *HwInfoConfig::get(hwInfo.platform.eProductFamily);
|
||||
if (hwInfoConfig.allowStatelessCompression(hwInfo)) {
|
||||
if (properties.allocationType == GraphicsAllocation::AllocationType::GLOBAL_SURFACE ||
|
||||
properties.allocationType == GraphicsAllocation::AllocationType::CONSTANT_SURFACE ||
|
||||
|
||||
@@ -36,12 +36,6 @@ struct HardwareCapabilities;
|
||||
struct RootDeviceEnvironment;
|
||||
struct PipeControlArgs;
|
||||
|
||||
enum class LocalMemoryAccessMode {
|
||||
Default = 0,
|
||||
CpuAccessAllowed = 1,
|
||||
CpuAccessDisallowed = 3
|
||||
};
|
||||
|
||||
class HwHelper {
|
||||
public:
|
||||
static HwHelper &get(GFXCORE_FAMILY gfxCore);
|
||||
@@ -68,7 +62,6 @@ class HwHelper {
|
||||
virtual bool isBufferSizeSuitableForRenderCompression(const size_t size, const HardwareInfo &hwInfo) const = 0;
|
||||
virtual bool checkResourceCompatibility(GraphicsAllocation &graphicsAllocation) = 0;
|
||||
virtual bool isBlitCopyRequiredForLocalMemory(const HardwareInfo &hwInfo, const GraphicsAllocation &allocation) const = 0;
|
||||
virtual LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
||||
static bool renderCompressedBuffersSupported(const HardwareInfo &hwInfo);
|
||||
static bool renderCompressedImagesSupported(const HardwareInfo &hwInfo);
|
||||
static bool cacheFlushAfterWalkerSupported(const HardwareInfo &hwInfo);
|
||||
@@ -159,8 +152,6 @@ class HwHelper {
|
||||
virtual void adjustPreemptionSurfaceSize(size_t &csrSize) const = 0;
|
||||
|
||||
protected:
|
||||
virtual LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
||||
|
||||
HwHelper() = default;
|
||||
};
|
||||
|
||||
@@ -316,8 +307,6 @@ class HwHelperHw : public HwHelper {
|
||||
|
||||
bool isBlitCopyRequiredForLocalMemory(const HardwareInfo &hwInfo, const GraphicsAllocation &allocation) const override;
|
||||
|
||||
LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;
|
||||
|
||||
bool isBankOverrideRequired(const HardwareInfo &hwInfo) const override;
|
||||
|
||||
uint32_t getDefaultThreadArbitrationPolicy() const override;
|
||||
@@ -391,8 +380,6 @@ class HwHelperHw : public HwHelper {
|
||||
void adjustPreemptionSurfaceSize(size_t &csrSize) const override;
|
||||
|
||||
protected:
|
||||
LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;
|
||||
|
||||
static const AuxTranslationMode defaultAuxTranslationMode;
|
||||
HwHelperHw() = default;
|
||||
};
|
||||
|
||||
@@ -421,7 +421,8 @@ inline bool HwHelperHw<GfxFamily>::isSpecialWorkgroupSizeRequired(const Hardware
|
||||
template <typename GfxFamily>
|
||||
inline bool HwHelperHw<GfxFamily>::isBlitCopyRequiredForLocalMemory(const HardwareInfo &hwInfo, const GraphicsAllocation &allocation) const {
|
||||
return allocation.isAllocatedInLocalMemoryPool() &&
|
||||
(getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessDisallowed || !allocation.isAllocationLockable());
|
||||
(HwInfoConfig::get(hwInfo.platform.eProductFamily)->getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessDisallowed ||
|
||||
!allocation.isAllocationLockable());
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
@@ -470,22 +471,6 @@ size_t HwHelperHw<GfxFamily>::getSingleTimestampPacketSize() const {
|
||||
return TimestampPackets<typename GfxFamily::TimestampPacketType>::getSinglePacketSize();
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
LocalMemoryAccessMode HwHelperHw<GfxFamily>::getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const {
|
||||
switch (static_cast<LocalMemoryAccessMode>(DebugManager.flags.ForceLocalMemoryAccessMode.get())) {
|
||||
case LocalMemoryAccessMode::Default:
|
||||
case LocalMemoryAccessMode::CpuAccessAllowed:
|
||||
case LocalMemoryAccessMode::CpuAccessDisallowed:
|
||||
return static_cast<LocalMemoryAccessMode>(DebugManager.flags.ForceLocalMemoryAccessMode.get());
|
||||
}
|
||||
return getDefaultLocalMemoryAccessMode(hwInfo);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
inline LocalMemoryAccessMode HwHelperHw<GfxFamily>::getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const {
|
||||
return LocalMemoryAccessMode::Default;
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
size_t MemorySynchronizationCommands<GfxFamily>::getSizeForFullCacheFlush() {
|
||||
return sizeof(typename GfxFamily::PIPE_CONTROL);
|
||||
|
||||
18
shared/source/helpers/local_memory_access_modes.h
Normal file
18
shared/source/helpers/local_memory_access_modes.h
Normal file
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright (C) 2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace NEO {
|
||||
|
||||
enum class LocalMemoryAccessMode {
|
||||
Default = 0,
|
||||
CpuAccessAllowed = 1,
|
||||
CpuAccessDisallowed = 3
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
Reference in New Issue
Block a user