2017-12-21 07:45:38 +08:00
|
|
|
/*
|
2021-12-20 20:58:34 +08:00
|
|
|
* Copyright (C) 2018-2022 Intel Corporation
|
2017-12-21 07:45:38 +08:00
|
|
|
*
|
2018-09-18 15:11:08 +08:00
|
|
|
* SPDX-License-Identifier: MIT
|
2017-12-21 07:45:38 +08:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2022-05-18 03:04:23 +08:00
|
|
|
#include "shared/source/helpers/common_types.h"
|
2020-02-24 05:44:01 +08:00
|
|
|
#include "shared/source/helpers/hw_info.h"
|
2021-09-09 20:27:41 +08:00
|
|
|
#include "shared/source/helpers/local_memory_access_modes.h"
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-02-27 18:39:32 +08:00
|
|
|
#include "igfxfmid.h"
|
2022-06-20 20:16:05 +08:00
|
|
|
|
2022-11-16 19:03:40 +08:00
|
|
|
#include <optional>
|
|
|
|
|
2022-06-20 20:16:05 +08:00
|
|
|
namespace AOT {
|
|
|
|
enum PRODUCT_CONFIG : uint32_t;
|
|
|
|
}
|
2019-02-27 18:39:32 +08:00
|
|
|
|
2022-11-16 19:03:40 +08:00
|
|
|
namespace aub_stream {
|
|
|
|
enum class ProductFamily : uint32_t;
|
|
|
|
}
|
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
namespace NEO {
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2022-08-30 04:06:04 +08:00
|
|
|
struct FrontEndPropertiesSupport;
|
2022-09-13 03:11:56 +08:00
|
|
|
struct HardwareInfo;
|
|
|
|
struct PipelineSelectArgs;
|
|
|
|
struct PipelineSelectPropertiesSupport;
|
2022-11-23 01:17:04 +08:00
|
|
|
struct StateBaseAddressPropertiesSupport;
|
2021-07-06 21:29:10 +08:00
|
|
|
struct StateComputeModeProperties;
|
2022-08-23 12:02:33 +08:00
|
|
|
struct StateComputeModePropertiesSupport;
|
2017-12-21 07:45:38 +08:00
|
|
|
class HwInfoConfig;
|
2022-05-18 03:04:23 +08:00
|
|
|
class GraphicsAllocation;
|
2022-06-13 22:13:34 +08:00
|
|
|
class MemoryManager;
|
2022-11-14 22:52:40 +08:00
|
|
|
struct RootDeviceEnvironment;
|
2022-09-13 03:11:56 +08:00
|
|
|
class OSInterface;
|
2022-01-05 22:24:16 +08:00
|
|
|
enum class DriverModelType;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
extern HwInfoConfig *hwInfoConfigFactory[IGFX_MAX_PRODUCT];
|
|
|
|
|
2022-07-01 23:06:12 +08:00
|
|
|
enum class UsmAccessCapabilities {
|
|
|
|
Host = 0,
|
|
|
|
Device,
|
|
|
|
SharedSingleDevice,
|
|
|
|
SharedCrossDevice,
|
|
|
|
SharedSystemCrossDevice
|
|
|
|
};
|
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
class HwInfoConfig {
|
|
|
|
public:
|
|
|
|
static HwInfoConfig *get(PRODUCT_FAMILY product) {
|
|
|
|
return hwInfoConfigFactory[product];
|
|
|
|
}
|
2021-11-26 17:40:06 +08:00
|
|
|
static constexpr uint32_t uuidSize = 16u;
|
2022-05-11 22:08:18 +08:00
|
|
|
static constexpr uint32_t luidSize = 8u;
|
2022-11-14 22:52:40 +08:00
|
|
|
int configureHwInfoWddm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironemnt);
|
|
|
|
int configureHwInfoDrm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironemnt);
|
2022-11-07 22:47:17 +08:00
|
|
|
virtual int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) const = 0;
|
2020-11-20 17:45:15 +08:00
|
|
|
virtual void adjustPlatformForProductFamily(HardwareInfo *hwInfo) = 0;
|
2021-04-06 20:35:03 +08:00
|
|
|
virtual void adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) = 0;
|
2022-11-11 06:13:46 +08:00
|
|
|
virtual void disableRcsExposure(HardwareInfo *hwInfo) const = 0;
|
2020-05-19 18:46:31 +08:00
|
|
|
virtual uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) = 0;
|
2020-01-31 17:05:51 +08:00
|
|
|
virtual uint64_t getDeviceMemCapabilities() = 0;
|
|
|
|
virtual uint64_t getSingleDeviceSharedMemCapabilities() = 0;
|
|
|
|
virtual uint64_t getCrossDeviceSharedMemCapabilities() = 0;
|
2021-12-01 23:14:07 +08:00
|
|
|
virtual uint64_t getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) = 0;
|
2021-03-26 17:57:36 +08:00
|
|
|
virtual void getKernelExtendedProperties(uint32_t *fp16, uint32_t *fp32, uint32_t *fp64) = 0;
|
2022-03-08 01:00:26 +08:00
|
|
|
virtual std::vector<int32_t> getKernelSupportedThreadArbitrationPolicies() = 0;
|
2022-06-30 16:04:45 +08:00
|
|
|
virtual uint32_t getDeviceMemoryMaxClkRate(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) = 0;
|
|
|
|
virtual uint64_t getDeviceMemoryPhysicalSizeInBytes(const OSInterface *osIface, uint32_t subDeviceIndex) = 0;
|
|
|
|
virtual uint64_t getDeviceMemoryMaxBandWidthInBytesPerSecond(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) = 0;
|
2021-06-23 21:34:56 +08:00
|
|
|
virtual bool isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const = 0;
|
2021-07-06 18:14:23 +08:00
|
|
|
virtual bool isMaxThreadsForWorkgroupWARequired(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual uint32_t getMaxThreadsForWorkgroupInDSSOrSS(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice, uint32_t maxNumEUsPerDualSubSlice) const = 0;
|
|
|
|
virtual uint32_t getMaxThreadsForWorkgroup(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice) const = 0;
|
2021-07-06 21:29:10 +08:00
|
|
|
virtual void setForceNonCoherent(void *const commandPtr, const StateComputeModeProperties &properties) = 0;
|
2022-04-26 22:28:18 +08:00
|
|
|
virtual void updateScmCommand(void *const commandPtr, const StateComputeModeProperties &properties) = 0;
|
2022-05-17 04:34:53 +08:00
|
|
|
virtual void updateIddCommand(void *const commandPtr, uint32_t numGrf, int32_t threadArbitrationPolicy) = 0;
|
2021-08-17 20:00:35 +08:00
|
|
|
virtual bool obtainBlitterPreference(const HardwareInfo &hwInfo) const = 0;
|
2021-10-28 04:22:31 +08:00
|
|
|
virtual bool isBlitterFullySupported(const HardwareInfo &hwInfo) const = 0;
|
2021-08-19 19:06:49 +08:00
|
|
|
virtual bool isPageTableManagerSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-06-14 07:13:43 +08:00
|
|
|
virtual AOT::PRODUCT_CONFIG getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const = 0;
|
2021-08-20 23:41:43 +08:00
|
|
|
virtual uint32_t getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const = 0;
|
2021-08-27 21:30:39 +08:00
|
|
|
virtual uint32_t getSteppingFromHwRevId(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual uint32_t getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const = 0;
|
2022-11-16 19:03:40 +08:00
|
|
|
virtual std::optional<aub_stream::ProductFamily> getAubStreamProductFamily() const = 0;
|
2021-09-02 19:11:39 +08:00
|
|
|
virtual bool isDefaultEngineTypeAdjustmentRequired(const HardwareInfo &hwInfo) const = 0;
|
2021-11-30 20:43:06 +08:00
|
|
|
virtual bool overrideGfxPartitionLayoutForWsl() const = 0;
|
2021-08-31 23:17:18 +08:00
|
|
|
virtual std::string getDeviceMemoryName() const = 0;
|
2021-09-06 18:34:34 +08:00
|
|
|
virtual bool isDisableOverdispatchAvailable(const HardwareInfo &hwInfo) const = 0;
|
2021-12-03 21:52:16 +08:00
|
|
|
virtual bool allowCompression(const HardwareInfo &hwInfo) const = 0;
|
2021-09-08 23:07:46 +08:00
|
|
|
virtual bool allowStatelessCompression(const HardwareInfo &hwInfo) const = 0;
|
2021-09-09 20:27:41 +08:00
|
|
|
virtual LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
2021-09-14 22:57:43 +08:00
|
|
|
virtual bool isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const = 0;
|
2021-09-15 17:53:12 +08:00
|
|
|
virtual bool isPrefetchDisablingRequired(const HardwareInfo &hwInfo) const = 0;
|
2021-09-20 20:05:09 +08:00
|
|
|
virtual bool isNewResidencyModelSupported() const = 0;
|
2021-11-22 20:49:26 +08:00
|
|
|
virtual bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-02-04 23:43:17 +08:00
|
|
|
virtual std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const = 0;
|
2021-09-21 21:34:25 +08:00
|
|
|
virtual bool heapInLocalMem(const HardwareInfo &hwInfo) const = 0;
|
2021-09-22 22:39:01 +08:00
|
|
|
virtual void setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) = 0;
|
2021-09-23 23:08:41 +08:00
|
|
|
virtual bool isAdditionalMediaSamplerProgrammingRequired() const = 0;
|
|
|
|
virtual bool isInitialFlagsProgrammingRequired() const = 0;
|
|
|
|
virtual bool isReturnedCmdSizeForMediaSamplerAdjustmentRequired() const = 0;
|
2021-09-24 01:46:36 +08:00
|
|
|
virtual bool extraParametersInvalid(const HardwareInfo &hwInfo) const = 0;
|
2021-09-24 22:29:49 +08:00
|
|
|
virtual bool pipeControlWARequired(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual bool imagePitchAlignmentWARequired(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual bool isForceEmuInt32DivRemSPWARequired(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual bool is3DPipelineSelectWARequired() const = 0;
|
2021-09-28 18:54:52 +08:00
|
|
|
virtual bool isStorageInfoAdjustmentRequired() const = 0;
|
2021-10-13 21:30:45 +08:00
|
|
|
virtual bool isBlitterForImagesSupported() const = 0;
|
2021-10-15 23:24:03 +08:00
|
|
|
virtual bool isTile64With3DSurfaceOnBCSSupported(const HardwareInfo &hwInfo) const = 0;
|
2021-12-20 22:37:33 +08:00
|
|
|
virtual bool isDcFlushAllowed() const = 0;
|
2021-11-30 18:19:27 +08:00
|
|
|
virtual uint32_t computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const = 0;
|
2021-11-26 17:40:06 +08:00
|
|
|
virtual bool getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const = 0;
|
2022-02-18 05:44:55 +08:00
|
|
|
virtual bool isFlushTaskAllowed() const = 0;
|
2022-03-07 22:31:53 +08:00
|
|
|
virtual bool programAllStateComputeCommandFields() const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
virtual bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const = 0;
|
2022-03-24 16:59:17 +08:00
|
|
|
virtual bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-07-05 18:25:16 +08:00
|
|
|
virtual bool isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
virtual bool isComputeDispatchAllWalkerEnableInComputeWalkerRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-09-20 23:46:54 +08:00
|
|
|
virtual bool isCopyEngineSelectorEnabled(const HardwareInfo &hwInfo) const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
virtual bool isAdjustProgrammableIdPreferredSlmSizeRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-03-22 01:44:02 +08:00
|
|
|
virtual uint32_t getThreadEuRatioForScratch(const HardwareInfo &hwInfo) const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
virtual bool isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-04-12 01:13:44 +08:00
|
|
|
virtual bool isVmBindPatIndexProgrammingSupported() const = 0;
|
2022-04-13 22:19:27 +08:00
|
|
|
virtual bool isBFloat16ConversionSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-05-25 23:35:43 +08:00
|
|
|
virtual bool isMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-07-08 19:29:59 +08:00
|
|
|
virtual bool isIpSamplingSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-04-26 22:28:18 +08:00
|
|
|
virtual bool isGrfNumReportedWithScm() const = 0;
|
2022-05-17 04:34:53 +08:00
|
|
|
virtual bool isThreadArbitrationPolicyReportedWithScm() const = 0;
|
2022-05-11 01:38:03 +08:00
|
|
|
virtual bool isCooperativeEngineSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-05-13 20:04:24 +08:00
|
|
|
virtual bool isTimestampWaitSupportedForEvents() const = 0;
|
2022-05-02 21:54:24 +08:00
|
|
|
virtual bool isTilePlacementResourceWaRequired(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual bool allowMemoryPrefetch(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual bool isBcsReportWaRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-07-20 23:05:27 +08:00
|
|
|
virtual bool isBlitSplitEnqueueWARequired(const HardwareInfo &hwInfo) const = 0;
|
2022-05-02 21:54:24 +08:00
|
|
|
virtual bool isBlitCopyRequiredForLocalMemory(const HardwareInfo &hwInfo, const GraphicsAllocation &allocation) const = 0;
|
2022-05-24 01:03:53 +08:00
|
|
|
virtual bool isImplicitScalingSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-06-13 22:13:34 +08:00
|
|
|
virtual bool isCpuCopyNecessary(const void *ptr, MemoryManager *memoryManager) const = 0;
|
2022-06-15 02:17:04 +08:00
|
|
|
virtual bool isAdjustWalkOrderAvailable(const HardwareInfo &hwInfo) const = 0;
|
2022-06-17 18:14:50 +08:00
|
|
|
virtual bool isAssignEngineRoundRobinSupported() const = 0;
|
2022-08-23 19:48:18 +08:00
|
|
|
virtual uint32_t getL1CachePolicy(bool isDebuggerActive) const = 0;
|
2022-08-22 20:11:44 +08:00
|
|
|
virtual bool isEvictionIfNecessaryFlagSupported() const = 0;
|
2022-07-25 20:13:27 +08:00
|
|
|
virtual void adjustNumberOfCcs(HardwareInfo &hwInfo) const = 0;
|
2022-08-10 19:52:06 +08:00
|
|
|
virtual bool isPrefetcherDisablingInDirectSubmissionRequired() const = 0;
|
2022-08-22 22:53:48 +08:00
|
|
|
virtual bool isStatefulAddressingModeSupported() const = 0;
|
2022-09-12 20:50:07 +08:00
|
|
|
virtual bool isPlatformQuerySupported() const = 0;
|
2022-10-28 17:25:16 +08:00
|
|
|
virtual bool isNonBlockingGpuSubmissionSupported() const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
|
2022-08-23 12:02:33 +08:00
|
|
|
virtual bool getFrontEndPropertyScratchSizeSupport() const = 0;
|
|
|
|
virtual bool getFrontEndPropertyPrivateScratchSizeSupport() const = 0;
|
2022-08-30 04:06:04 +08:00
|
|
|
virtual bool getFrontEndPropertyComputeDispatchAllWalkerSupport() const = 0;
|
|
|
|
virtual bool getFrontEndPropertyDisableEuFusionSupport() const = 0;
|
|
|
|
virtual bool getFrontEndPropertyDisableOverDispatchSupport() const = 0;
|
|
|
|
virtual bool getFrontEndPropertySingleSliceDispatchCcsModeSupport() const = 0;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
|
|
|
virtual bool getScmPropertyThreadArbitrationPolicySupport() const = 0;
|
|
|
|
virtual bool getScmPropertyCoherencyRequiredSupport() const = 0;
|
|
|
|
virtual bool getScmPropertyZPassAsyncComputeThreadLimitSupport() const = 0;
|
|
|
|
virtual bool getScmPropertyPixelAsyncComputeThreadLimitSupport() const = 0;
|
|
|
|
virtual bool getScmPropertyLargeGrfModeSupport() const = 0;
|
|
|
|
virtual bool getScmPropertyDevicePreemptionModeSupport() const = 0;
|
|
|
|
|
2022-11-23 01:17:04 +08:00
|
|
|
virtual bool getStateBaseAddressPropertyGlobalAtomicsSupport() const = 0;
|
|
|
|
virtual bool getStateBaseAddressPropertyStatelessMocsSupport() const = 0;
|
|
|
|
virtual bool getStateBaseAddressPropertyBindingTablePoolBaseAddressSupport() const = 0;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
|
|
|
virtual bool getPreemptionDbgPropertyPreemptionModeSupport() const = 0;
|
|
|
|
virtual bool getPreemptionDbgPropertyStateSipSupport() const = 0;
|
|
|
|
virtual bool getPreemptionDbgPropertyCsrSurfaceSupport() const = 0;
|
|
|
|
|
2022-09-13 03:11:56 +08:00
|
|
|
virtual bool getPipelineSelectPropertyModeSelectedSupport() const = 0;
|
|
|
|
virtual bool getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const = 0;
|
|
|
|
virtual bool getPipelineSelectPropertySystolicModeSupport() const = 0;
|
|
|
|
|
2022-08-23 12:02:33 +08:00
|
|
|
virtual void fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) = 0;
|
2022-09-02 22:23:24 +08:00
|
|
|
virtual void fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) = 0;
|
2022-09-13 03:11:56 +08:00
|
|
|
virtual void fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) = 0;
|
2022-11-23 01:17:04 +08:00
|
|
|
virtual void fillStateBaseAddressPropertiesSupportStructure(StateBaseAddressPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) = 0;
|
2022-11-28 23:05:25 +08:00
|
|
|
virtual uint32_t getDefaultRevisionId() const = 0;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
2021-12-20 20:58:34 +08:00
|
|
|
MOCKABLE_VIRTUAL ~HwInfoConfig() = default;
|
2021-08-17 20:00:35 +08:00
|
|
|
|
2021-09-09 20:27:41 +08:00
|
|
|
protected:
|
|
|
|
virtual LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
2022-08-23 12:02:33 +08:00
|
|
|
virtual void fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) = 0;
|
2021-09-09 20:27:41 +08:00
|
|
|
|
|
|
|
public:
|
2022-01-12 23:32:07 +08:00
|
|
|
uint32_t threadsPerEu = 0u;
|
2017-12-21 07:45:38 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
class HwInfoConfigHw : public HwInfoConfig {
|
|
|
|
public:
|
|
|
|
static HwInfoConfig *get() {
|
|
|
|
static HwInfoConfigHw<gfxProduct> instance;
|
|
|
|
return &instance;
|
|
|
|
}
|
2022-11-07 22:47:17 +08:00
|
|
|
int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) const override;
|
2020-11-20 17:45:15 +08:00
|
|
|
void adjustPlatformForProductFamily(HardwareInfo *hwInfo) override;
|
2021-04-06 20:35:03 +08:00
|
|
|
void adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) override;
|
2022-11-11 06:13:46 +08:00
|
|
|
void disableRcsExposure(HardwareInfo *hwInfo) const override;
|
2020-05-19 18:46:31 +08:00
|
|
|
uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) override;
|
2020-01-31 17:05:51 +08:00
|
|
|
uint64_t getDeviceMemCapabilities() override;
|
|
|
|
uint64_t getSingleDeviceSharedMemCapabilities() override;
|
|
|
|
uint64_t getCrossDeviceSharedMemCapabilities() override;
|
2021-12-01 23:14:07 +08:00
|
|
|
uint64_t getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) override;
|
2021-03-26 17:57:36 +08:00
|
|
|
void getKernelExtendedProperties(uint32_t *fp16, uint32_t *fp32, uint32_t *fp64) override;
|
2022-03-08 01:00:26 +08:00
|
|
|
std::vector<int32_t> getKernelSupportedThreadArbitrationPolicies() override;
|
2022-06-30 16:04:45 +08:00
|
|
|
uint32_t getDeviceMemoryMaxClkRate(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) override;
|
|
|
|
uint64_t getDeviceMemoryPhysicalSizeInBytes(const OSInterface *osIface, uint32_t subDeviceIndex) override;
|
|
|
|
uint64_t getDeviceMemoryMaxBandWidthInBytesPerSecond(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) override;
|
2021-06-23 21:34:56 +08:00
|
|
|
bool isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const override;
|
2021-07-06 18:14:23 +08:00
|
|
|
bool isMaxThreadsForWorkgroupWARequired(const HardwareInfo &hwInfo) const override;
|
|
|
|
uint32_t getMaxThreadsForWorkgroupInDSSOrSS(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice, uint32_t maxNumEUsPerDualSubSlice) const override;
|
|
|
|
uint32_t getMaxThreadsForWorkgroup(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice) const override;
|
2021-07-06 21:29:10 +08:00
|
|
|
void setForceNonCoherent(void *const commandPtr, const StateComputeModeProperties &properties) override;
|
2022-04-26 22:28:18 +08:00
|
|
|
void updateScmCommand(void *const commandPtr, const StateComputeModeProperties &properties) override;
|
2022-05-17 04:34:53 +08:00
|
|
|
void updateIddCommand(void *const commandPtr, uint32_t numGrf, int32_t threadArbitrationPolicy) override;
|
2021-08-17 20:00:35 +08:00
|
|
|
bool obtainBlitterPreference(const HardwareInfo &hwInfo) const override;
|
2021-10-28 04:22:31 +08:00
|
|
|
bool isBlitterFullySupported(const HardwareInfo &hwInfo) const override;
|
2021-08-19 19:06:49 +08:00
|
|
|
bool isPageTableManagerSupported(const HardwareInfo &hwInfo) const override;
|
2021-11-30 20:43:06 +08:00
|
|
|
bool overrideGfxPartitionLayoutForWsl() const override;
|
2021-08-20 23:41:43 +08:00
|
|
|
uint32_t getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const override;
|
2022-06-14 07:13:43 +08:00
|
|
|
AOT::PRODUCT_CONFIG getProductConfigFromHwInfo(const HardwareInfo &hwInfo) const override;
|
2021-08-27 21:30:39 +08:00
|
|
|
uint32_t getSteppingFromHwRevId(const HardwareInfo &hwInfo) const override;
|
|
|
|
uint32_t getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const override;
|
2022-11-16 19:03:40 +08:00
|
|
|
std::optional<aub_stream::ProductFamily> getAubStreamProductFamily() const override;
|
2021-09-02 19:11:39 +08:00
|
|
|
bool isDefaultEngineTypeAdjustmentRequired(const HardwareInfo &hwInfo) const override;
|
2021-08-31 23:17:18 +08:00
|
|
|
std::string getDeviceMemoryName() const override;
|
2021-09-06 18:34:34 +08:00
|
|
|
bool isDisableOverdispatchAvailable(const HardwareInfo &hwInfo) const override;
|
2021-12-03 21:52:16 +08:00
|
|
|
bool allowCompression(const HardwareInfo &hwInfo) const override;
|
2021-09-08 23:07:46 +08:00
|
|
|
bool allowStatelessCompression(const HardwareInfo &hwInfo) const override;
|
2021-09-09 20:27:41 +08:00
|
|
|
LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;
|
2021-09-14 22:57:43 +08:00
|
|
|
bool isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const override;
|
2021-09-15 17:53:12 +08:00
|
|
|
bool isPrefetchDisablingRequired(const HardwareInfo &hwInfo) const override;
|
2021-09-20 20:05:09 +08:00
|
|
|
bool isNewResidencyModelSupported() const override;
|
2021-11-22 20:49:26 +08:00
|
|
|
bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const override;
|
2022-02-04 23:43:17 +08:00
|
|
|
std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const override;
|
2021-09-21 21:34:25 +08:00
|
|
|
bool heapInLocalMem(const HardwareInfo &hwInfo) const override;
|
2021-09-22 22:39:01 +08:00
|
|
|
void setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) override;
|
2021-09-23 23:08:41 +08:00
|
|
|
bool isAdditionalMediaSamplerProgrammingRequired() const override;
|
|
|
|
bool isInitialFlagsProgrammingRequired() const override;
|
|
|
|
bool isReturnedCmdSizeForMediaSamplerAdjustmentRequired() const override;
|
2021-09-24 01:46:36 +08:00
|
|
|
bool extraParametersInvalid(const HardwareInfo &hwInfo) const override;
|
2021-09-24 22:29:49 +08:00
|
|
|
bool pipeControlWARequired(const HardwareInfo &hwInfo) const override;
|
|
|
|
bool imagePitchAlignmentWARequired(const HardwareInfo &hwInfo) const override;
|
|
|
|
bool isForceEmuInt32DivRemSPWARequired(const HardwareInfo &hwInfo) const override;
|
|
|
|
bool is3DPipelineSelectWARequired() const override;
|
2021-09-28 18:54:52 +08:00
|
|
|
bool isStorageInfoAdjustmentRequired() const override;
|
2021-10-13 21:30:45 +08:00
|
|
|
bool isBlitterForImagesSupported() const override;
|
2021-10-15 23:24:03 +08:00
|
|
|
bool isTile64With3DSurfaceOnBCSSupported(const HardwareInfo &hwInfo) const override;
|
2021-12-20 22:37:33 +08:00
|
|
|
bool isDcFlushAllowed() const override;
|
2021-11-30 18:19:27 +08:00
|
|
|
uint32_t computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const override;
|
2021-11-26 17:40:06 +08:00
|
|
|
bool getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const override;
|
2022-02-18 05:44:55 +08:00
|
|
|
bool isFlushTaskAllowed() const override;
|
2022-03-07 22:31:53 +08:00
|
|
|
bool programAllStateComputeCommandFields() const override;
|
2022-03-09 23:39:57 +08:00
|
|
|
bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const override;
|
|
|
|
bool isComputeDispatchAllWalkerEnableInComputeWalkerRequired(const HardwareInfo &hwInfo) const override;
|
2022-09-20 23:46:54 +08:00
|
|
|
bool isCopyEngineSelectorEnabled(const HardwareInfo &hwInfo) const override;
|
2022-03-24 16:59:17 +08:00
|
|
|
bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const override;
|
2022-07-05 18:25:16 +08:00
|
|
|
bool isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const override;
|
2022-03-09 23:39:57 +08:00
|
|
|
bool isAdjustProgrammableIdPreferredSlmSizeRequired(const HardwareInfo &hwInfo) const override;
|
2022-03-22 01:44:02 +08:00
|
|
|
uint32_t getThreadEuRatioForScratch(const HardwareInfo &hwInfo) const override;
|
2022-03-09 23:39:57 +08:00
|
|
|
bool isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const override;
|
2022-04-12 01:13:44 +08:00
|
|
|
bool isVmBindPatIndexProgrammingSupported() const override;
|
2022-04-13 22:19:27 +08:00
|
|
|
bool isBFloat16ConversionSupported(const HardwareInfo &hwInfo) const override;
|
2022-05-25 23:35:43 +08:00
|
|
|
bool isMatrixMultiplyAccumulateSupported(const HardwareInfo &hwInfo) const override;
|
2022-07-08 19:29:59 +08:00
|
|
|
bool isIpSamplingSupported(const HardwareInfo &hwInfo) const override;
|
2022-04-26 22:28:18 +08:00
|
|
|
bool isGrfNumReportedWithScm() const override;
|
2022-05-17 04:34:53 +08:00
|
|
|
bool isThreadArbitrationPolicyReportedWithScm() const override;
|
2022-05-11 01:38:03 +08:00
|
|
|
bool isCooperativeEngineSupported(const HardwareInfo &hwInfo) const override;
|
2022-05-13 20:04:24 +08:00
|
|
|
bool isTimestampWaitSupportedForEvents() const override;
|
2022-05-02 21:54:24 +08:00
|
|
|
bool isTilePlacementResourceWaRequired(const HardwareInfo &hwInfo) const override;
|
2022-07-20 23:05:27 +08:00
|
|
|
bool isBlitSplitEnqueueWARequired(const HardwareInfo &hwInfo) const override;
|
2022-05-02 21:54:24 +08:00
|
|
|
bool allowMemoryPrefetch(const HardwareInfo &hwInfo) const override;
|
|
|
|
bool isBcsReportWaRequired(const HardwareInfo &hwInfo) const override;
|
|
|
|
bool isBlitCopyRequiredForLocalMemory(const HardwareInfo &hwInfo, const GraphicsAllocation &allocation) const override;
|
2022-05-24 01:03:53 +08:00
|
|
|
bool isImplicitScalingSupported(const HardwareInfo &hwInfo) const override;
|
2022-06-13 22:13:34 +08:00
|
|
|
bool isCpuCopyNecessary(const void *ptr, MemoryManager *memoryManager) const override;
|
2022-06-15 02:17:04 +08:00
|
|
|
bool isAdjustWalkOrderAvailable(const HardwareInfo &hwInfo) const override;
|
2022-06-17 18:14:50 +08:00
|
|
|
bool isAssignEngineRoundRobinSupported() const override;
|
2022-08-23 19:48:18 +08:00
|
|
|
uint32_t getL1CachePolicy(bool isDebuggerActive) const override;
|
2022-08-22 20:11:44 +08:00
|
|
|
bool isEvictionIfNecessaryFlagSupported() const override;
|
2022-07-25 20:13:27 +08:00
|
|
|
void adjustNumberOfCcs(HardwareInfo &hwInfo) const override;
|
2022-08-10 19:52:06 +08:00
|
|
|
bool isPrefetcherDisablingInDirectSubmissionRequired() const override;
|
2022-08-22 22:53:48 +08:00
|
|
|
bool isStatefulAddressingModeSupported() const override;
|
2022-09-12 20:50:07 +08:00
|
|
|
bool isPlatformQuerySupported() const override;
|
2022-10-28 17:25:16 +08:00
|
|
|
bool isNonBlockingGpuSubmissionSupported() const override;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2022-08-23 12:02:33 +08:00
|
|
|
bool getFrontEndPropertyScratchSizeSupport() const override;
|
|
|
|
bool getFrontEndPropertyPrivateScratchSizeSupport() const override;
|
2022-08-30 04:06:04 +08:00
|
|
|
bool getFrontEndPropertyComputeDispatchAllWalkerSupport() const override;
|
|
|
|
bool getFrontEndPropertyDisableEuFusionSupport() const override;
|
|
|
|
bool getFrontEndPropertyDisableOverDispatchSupport() const override;
|
|
|
|
bool getFrontEndPropertySingleSliceDispatchCcsModeSupport() const override;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
|
|
|
bool getScmPropertyThreadArbitrationPolicySupport() const override;
|
|
|
|
bool getScmPropertyCoherencyRequiredSupport() const override;
|
|
|
|
bool getScmPropertyZPassAsyncComputeThreadLimitSupport() const override;
|
|
|
|
bool getScmPropertyPixelAsyncComputeThreadLimitSupport() const override;
|
|
|
|
bool getScmPropertyLargeGrfModeSupport() const override;
|
|
|
|
bool getScmPropertyDevicePreemptionModeSupport() const override;
|
|
|
|
|
2022-11-23 01:17:04 +08:00
|
|
|
bool getStateBaseAddressPropertyGlobalAtomicsSupport() const override;
|
|
|
|
bool getStateBaseAddressPropertyStatelessMocsSupport() const override;
|
|
|
|
bool getStateBaseAddressPropertyBindingTablePoolBaseAddressSupport() const override;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
|
|
|
bool getPreemptionDbgPropertyPreemptionModeSupport() const override;
|
|
|
|
bool getPreemptionDbgPropertyStateSipSupport() const override;
|
|
|
|
bool getPreemptionDbgPropertyCsrSurfaceSupport() const override;
|
|
|
|
|
2022-09-13 03:11:56 +08:00
|
|
|
bool getPipelineSelectPropertyModeSelectedSupport() const override;
|
|
|
|
bool getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const override;
|
|
|
|
bool getPipelineSelectPropertySystolicModeSupport() const override;
|
|
|
|
|
2022-08-23 12:02:33 +08:00
|
|
|
void fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) override;
|
2022-09-02 22:23:24 +08:00
|
|
|
void fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) override;
|
2022-11-23 01:17:04 +08:00
|
|
|
void fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) override;
|
|
|
|
void fillStateBaseAddressPropertiesSupportStructure(StateBaseAddressPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) override;
|
2022-11-28 23:05:25 +08:00
|
|
|
uint32_t getDefaultRevisionId() const override;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
2017-12-21 07:45:38 +08:00
|
|
|
protected:
|
2020-11-21 23:50:18 +08:00
|
|
|
HwInfoConfigHw() = default;
|
|
|
|
|
2022-11-07 22:47:17 +08:00
|
|
|
void enableCompression(HardwareInfo *hwInfo) const;
|
|
|
|
void enableBlitterOperationsSupport(HardwareInfo *hwInfo) const;
|
2022-07-01 23:06:12 +08:00
|
|
|
bool getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities capability);
|
2020-11-26 16:31:10 +08:00
|
|
|
uint64_t getHostMemCapabilitiesValue();
|
|
|
|
bool getHostMemCapabilitiesSupported(const HardwareInfo *hwInfo);
|
2021-09-09 20:27:41 +08:00
|
|
|
LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const override;
|
2022-08-23 12:02:33 +08:00
|
|
|
void fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) override;
|
2017-12-21 07:45:38 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2018-03-15 22:03:51 +08:00
|
|
|
struct EnableProductHwInfoConfig {
|
2017-12-21 07:45:38 +08:00
|
|
|
typedef typename HwMapper<gfxProduct>::GfxProduct GfxProduct;
|
|
|
|
|
2018-03-15 22:03:51 +08:00
|
|
|
EnableProductHwInfoConfig() {
|
2017-12-21 07:45:38 +08:00
|
|
|
HwInfoConfig *pHwInfoConfig = HwInfoConfigHw<gfxProduct>::get();
|
|
|
|
hwInfoConfigFactory[gfxProduct] = pHwInfoConfig;
|
|
|
|
pHwInfoConfig->threadsPerEu = GfxProduct::threadsPerEu;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|