2017-12-21 07:45:38 +08:00
|
|
|
/*
|
2025-01-08 21:52:31 +08:00
|
|
|
* Copyright (C) 2018-2025 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
|
2024-03-22 19:18:35 +08:00
|
|
|
#include "shared/source/command_stream/queue_throttle.h"
|
2023-03-22 21:45:04 +08:00
|
|
|
#include "shared/source/command_stream/task_count_helper.h"
|
|
|
|
|
2023-12-05 07:40:40 +08:00
|
|
|
#include "aubstream/engine_node.h"
|
|
|
|
|
2023-02-06 17:05:43 +08:00
|
|
|
#include <igfxfmid.h>
|
2023-02-01 11:12:09 +08:00
|
|
|
#include <memory>
|
2022-11-16 19:03:40 +08:00
|
|
|
#include <optional>
|
2023-02-06 17:05:43 +08:00
|
|
|
#include <string>
|
|
|
|
#include <vector>
|
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 {
|
2024-07-16 00:46:01 +08:00
|
|
|
struct KmdNotifyProperties;
|
2023-11-15 23:04:20 +08:00
|
|
|
struct AllocationData;
|
2023-03-22 21:45:04 +08:00
|
|
|
class CommandStreamReceiver;
|
2022-11-29 03:00:39 +08:00
|
|
|
class Device;
|
2025-01-25 00:39:50 +08:00
|
|
|
class Drm;
|
2022-11-29 03:00:39 +08:00
|
|
|
enum class LocalMemoryAccessMode;
|
2022-08-30 04:06:04 +08:00
|
|
|
struct FrontEndPropertiesSupport;
|
2022-09-13 03:11:56 +08:00
|
|
|
struct HardwareInfo;
|
2023-03-07 23:22:10 +08:00
|
|
|
struct KernelDescriptor;
|
2022-09-13 03:11:56 +08:00
|
|
|
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;
|
2022-12-13 00:43:41 +08:00
|
|
|
class ProductHelper;
|
2023-05-05 23:26:09 +08:00
|
|
|
class ReleaseHelper;
|
2024-07-03 21:28:55 +08:00
|
|
|
class Image;
|
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;
|
2024-03-22 19:18:35 +08:00
|
|
|
struct TimeoutParams;
|
2022-09-13 03:11:56 +08:00
|
|
|
class OSInterface;
|
2023-06-24 08:35:30 +08:00
|
|
|
class DriverModel;
|
2022-01-05 22:24:16 +08:00
|
|
|
enum class DriverModelType;
|
2024-01-20 09:39:14 +08:00
|
|
|
enum class EngineGroupType : uint32_t;
|
2024-01-26 01:07:26 +08:00
|
|
|
enum class GfxMemoryAllocationMethod : uint32_t;
|
|
|
|
enum class AllocationType;
|
2024-08-10 20:11:45 +08:00
|
|
|
enum class CacheRegion : uint16_t;
|
|
|
|
enum class CachePolicy : uint32_t;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2023-02-01 11:12:09 +08:00
|
|
|
using ProductHelperCreateFunctionType = std::unique_ptr<ProductHelper> (*)();
|
|
|
|
extern ProductHelperCreateFunctionType productHelperFactory[IGFX_MAX_PRODUCT];
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2022-07-01 23:06:12 +08:00
|
|
|
enum class UsmAccessCapabilities {
|
2023-12-11 19:02:15 +08:00
|
|
|
host = 0,
|
|
|
|
device,
|
|
|
|
sharedSingleDevice,
|
|
|
|
sharedCrossDevice,
|
|
|
|
sharedSystemCrossDevice
|
2022-07-01 23:06:12 +08:00
|
|
|
};
|
|
|
|
|
2022-12-13 00:43:41 +08:00
|
|
|
class ProductHelper {
|
2017-12-21 07:45:38 +08:00
|
|
|
public:
|
2023-02-01 11:12:09 +08:00
|
|
|
static std::unique_ptr<ProductHelper> create(PRODUCT_FAMILY product) {
|
|
|
|
auto productHelperCreateFunction = productHelperFactory[product];
|
2023-02-02 17:50:31 +08:00
|
|
|
if (productHelperCreateFunction == nullptr) {
|
|
|
|
return nullptr;
|
|
|
|
}
|
2023-02-01 11:12:09 +08:00
|
|
|
auto productHelper = productHelperCreateFunction();
|
|
|
|
return productHelper;
|
2017-12-21 07:45:38 +08:00
|
|
|
}
|
2023-02-01 11:12:09 +08:00
|
|
|
|
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;
|
2023-10-05 18:47:44 +08:00
|
|
|
MOCKABLE_VIRTUAL int configureHwInfoWddm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironment);
|
2024-07-19 09:39:45 +08:00
|
|
|
int configureHwInfoDrm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironment);
|
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;
|
2023-01-02 20:19:09 +08:00
|
|
|
virtual void adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const = 0;
|
2022-12-21 19:35:37 +08:00
|
|
|
virtual uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) const = 0;
|
|
|
|
virtual uint64_t getDeviceMemCapabilities() const = 0;
|
2025-01-25 00:39:50 +08:00
|
|
|
virtual uint64_t getSingleDeviceSharedMemCapabilities(bool isKmdMigrationAvailable) const = 0;
|
2022-12-21 19:35:37 +08:00
|
|
|
virtual uint64_t getCrossDeviceSharedMemCapabilities() const = 0;
|
|
|
|
virtual uint64_t getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) const = 0;
|
|
|
|
virtual std::vector<int32_t> getKernelSupportedThreadArbitrationPolicies() const = 0;
|
2022-12-20 23:13:56 +08:00
|
|
|
virtual uint32_t getDeviceMemoryMaxClkRate(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) const = 0;
|
|
|
|
virtual uint64_t getDeviceMemoryPhysicalSizeInBytes(const OSInterface *osIface, uint32_t subDeviceIndex) const = 0;
|
|
|
|
virtual uint64_t getDeviceMemoryMaxBandWidthInBytesPerSecond(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) const = 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;
|
2023-01-06 00:57:56 +08:00
|
|
|
virtual void setForceNonCoherent(void *const commandPtr, const StateComputeModeProperties &properties) const = 0;
|
|
|
|
virtual void updateScmCommand(void *const commandPtr, const StateComputeModeProperties &properties) const = 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;
|
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-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-09 20:27:41 +08:00
|
|
|
virtual LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
2024-02-09 18:34:56 +08:00
|
|
|
virtual bool isNewResidencyModelSupported() const = 0;
|
2023-09-20 21:08:46 +08:00
|
|
|
virtual bool isDirectSubmissionSupported(ReleaseHelper *releaseHelper) const = 0;
|
2023-06-21 19:40:18 +08:00
|
|
|
virtual bool isDirectSubmissionConstantCacheInvalidationNeeded(const HardwareInfo &hwInfo) const = 0;
|
2024-06-03 21:31:49 +08:00
|
|
|
virtual bool restartDirectSubmissionForHostptrFree() const = 0;
|
2024-03-25 23:22:00 +08:00
|
|
|
virtual bool isAdjustDirectSubmissionTimeoutOnThrottleAndAcLineStatusEnabled() const = 0;
|
2024-03-22 19:18:35 +08:00
|
|
|
virtual TimeoutParams getDirectSubmissionControllerTimeoutParams(bool acLineConnected, QueueThrottle queueThrottle) const = 0;
|
2023-05-12 22:49:39 +08:00
|
|
|
virtual std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const = 0;
|
2021-09-21 21:34:25 +08:00
|
|
|
virtual bool heapInLocalMem(const HardwareInfo &hwInfo) const = 0;
|
2024-07-17 16:03:49 +08:00
|
|
|
virtual void setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) const = 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 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;
|
2023-02-06 01:20:25 +08:00
|
|
|
virtual bool isPageFaultSupported() const = 0;
|
2023-02-26 23:46:10 +08:00
|
|
|
virtual bool isKmdMigrationSupported() const = 0;
|
2024-04-09 02:37:35 +08:00
|
|
|
virtual bool isDisableScratchPagesSupported() const = 0;
|
2025-01-24 18:50:51 +08:00
|
|
|
virtual bool areSecondaryContextsSupported() 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;
|
2024-04-12 19:05:44 +08:00
|
|
|
virtual bool isDcFlushMitigated() const = 0;
|
2024-08-28 18:11:54 +08:00
|
|
|
virtual bool mitigateDcFlush() const = 0;
|
2024-09-05 22:13:40 +08:00
|
|
|
virtual bool overrideUsageForDcFlushMitigation(AllocationType allocationType) const = 0;
|
|
|
|
virtual bool overridePatToUCAndTwoWayCohForDcFlushMitigation(AllocationType allocationType) const = 0;
|
|
|
|
virtual bool overridePatToUCAndOneWayCohForDcFlushMitigation(AllocationType allocationType) const = 0;
|
2024-05-21 16:54:21 +08:00
|
|
|
virtual bool overrideCacheableForDcFlushMitigation(AllocationType allocationType) const = 0;
|
2024-08-02 17:53:36 +08:00
|
|
|
virtual uint32_t computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const = 0;
|
2023-06-24 08:35:30 +08:00
|
|
|
virtual bool getUuid(NEO::DriverModel *driverModel, const uint32_t subDeviceCount, const uint32_t deviceIndex, std::array<uint8_t, ProductHelper::uuidSize> &uuid) const = 0;
|
2022-02-18 05:44:55 +08:00
|
|
|
virtual bool isFlushTaskAllowed() const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
virtual bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const = 0;
|
2023-02-21 22:27:13 +08:00
|
|
|
virtual bool isInitBuiltinAsyncSupported(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-09-20 23:46:54 +08:00
|
|
|
virtual bool isCopyEngineSelectorEnabled(const HardwareInfo &hwInfo) const = 0;
|
2022-03-22 01:44:02 +08:00
|
|
|
virtual uint32_t getThreadEuRatioForScratch(const HardwareInfo &hwInfo) const = 0;
|
2025-01-10 17:58:21 +08:00
|
|
|
virtual void adjustScratchSize(size_t &requiredScratchSize) const = 0;
|
2022-12-02 17:30:29 +08:00
|
|
|
virtual size_t getSvmCpuAlignment() const = 0;
|
2022-03-09 23:39:57 +08:00
|
|
|
virtual bool isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const = 0;
|
2025-01-22 18:33:32 +08:00
|
|
|
virtual bool adjustDispatchAllRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-04-12 01:13:44 +08:00
|
|
|
virtual bool isVmBindPatIndexProgrammingSupported() 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;
|
2024-08-28 18:25:16 +08:00
|
|
|
virtual bool isCopyBufferRectSplitSupported() 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;
|
2023-01-27 00:21:09 +08:00
|
|
|
virtual bool isBlitCopyRequiredForLocalMemory(const RootDeviceEnvironment &rootDeviceEnvironment, const GraphicsAllocation &allocation) const = 0;
|
2023-01-27 20:37:09 +08:00
|
|
|
virtual bool isInitDeviceWithFirstSubmissionRequired(const HardwareInfo &hwInfo) 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;
|
2023-01-31 00:27:42 +08:00
|
|
|
virtual bool isUnlockingLockedPtrNecessary(const HardwareInfo &hwInfo) const = 0;
|
2023-05-05 23:26:09 +08:00
|
|
|
virtual bool isAdjustWalkOrderAvailable(const ReleaseHelper *releaseHelper) 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;
|
2024-07-19 18:25:15 +08:00
|
|
|
virtual bool blitEnqueuePreferred(bool isWriteToImageFromBuffer) 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;
|
2023-03-22 21:45:04 +08:00
|
|
|
virtual bool isResolveDependenciesByPipeControlsSupported(const HardwareInfo &hwInfo, bool isOOQ, TaskCountType queueTaskCount, const CommandStreamReceiver &queueCsr) const = 0;
|
2022-12-12 23:06:59 +08:00
|
|
|
virtual bool isBufferPoolAllocatorSupported() const = 0;
|
2024-01-05 22:00:04 +08:00
|
|
|
virtual bool isUsmPoolAllocatorSupported() const = 0;
|
2024-05-17 19:54:37 +08:00
|
|
|
virtual bool isDeviceUsmAllocationReuseSupported() const = 0;
|
2024-07-23 22:40:05 +08:00
|
|
|
virtual bool isHostUsmAllocationReuseSupported() const = 0;
|
2024-03-07 23:53:20 +08:00
|
|
|
virtual bool useLocalPreferredForCacheableBuffers() const = 0;
|
2024-02-17 00:26:30 +08:00
|
|
|
virtual bool useGemCreateExtInAllocateMemoryByKMD() const = 0;
|
2023-12-24 14:46:47 +08:00
|
|
|
virtual bool isTlbFlushRequired() const = 0;
|
2024-09-11 17:31:36 +08:00
|
|
|
virtual bool isDetectIndirectAccessInKernelSupported(const KernelDescriptor &kernelDescriptor, const bool isPrecompiled, const uint32_t precompiledKernelIndirectDetectionVersion) const = 0;
|
|
|
|
virtual uint32_t getRequiredDetectIndirectVersion() const = 0;
|
2024-09-13 21:52:55 +08:00
|
|
|
virtual uint32_t getRequiredDetectIndirectVersionVC() const = 0;
|
2023-07-25 20:44:02 +08:00
|
|
|
virtual bool isLinearStoragePreferred(bool isImage1d, bool forceLinearStorage) const = 0;
|
2023-04-27 22:13:51 +08:00
|
|
|
virtual bool isTranslationExceptionSupported() const = 0;
|
2023-05-18 03:21:34 +08:00
|
|
|
virtual uint32_t getMaxNumSamplers() const = 0;
|
2023-10-27 23:54:45 +08:00
|
|
|
virtual uint32_t getCommandBuffersPreallocatedPerCommandQueue() const = 0;
|
2023-11-17 20:14:15 +08:00
|
|
|
virtual uint32_t getInternalHeapsPreallocated() const = 0;
|
2023-11-15 23:04:20 +08:00
|
|
|
virtual bool overrideAllocationCacheable(const AllocationData &allocationData) const = 0;
|
2025-01-30 23:37:10 +08:00
|
|
|
virtual bool is2MBLocalMemAlignmentEnabled() const = 0;
|
2023-03-15 21:53:53 +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 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 getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const = 0;
|
|
|
|
virtual bool getPipelineSelectPropertySystolicModeSupport() const = 0;
|
|
|
|
|
2022-12-15 20:13:57 +08:00
|
|
|
virtual void fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) const = 0;
|
2023-04-27 22:13:51 +08:00
|
|
|
virtual void fillScmPropertiesSupportStructureExtra(StateComputeModePropertiesSupport &propertiesSupport, const RootDeviceEnvironment &rootDeviceEnvironment) const = 0;
|
2022-12-15 20:13:57 +08:00
|
|
|
virtual void fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual void fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) const = 0;
|
2023-01-23 22:08:25 +08:00
|
|
|
virtual void fillStateBaseAddressPropertiesSupportStructure(StateBaseAddressPropertiesSupport &propertiesSupport) const = 0;
|
2022-08-23 12:02:33 +08:00
|
|
|
|
2023-03-08 18:42:29 +08:00
|
|
|
virtual bool isFusedEuDisabledForDpas(bool kernelHasDpasInstructions, const uint32_t *lws, const uint32_t *groupCount, const HardwareInfo &hwInfo) const = 0;
|
|
|
|
virtual bool isCalculationForDisablingEuFusionWithDpasNeeded(const HardwareInfo &hwInfo) const = 0;
|
2023-09-14 21:53:58 +08:00
|
|
|
virtual uint32_t getNumberOfPartsInTileForConcurrentKernel(uint32_t ccsCount) const = 0;
|
2023-03-06 23:12:14 +08:00
|
|
|
virtual bool is48bResourceNeededForRayTracing() const = 0;
|
2023-05-29 23:18:31 +08:00
|
|
|
virtual bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const = 0;
|
2023-06-09 23:23:03 +08:00
|
|
|
virtual bool isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const = 0;
|
2023-09-04 22:11:37 +08:00
|
|
|
virtual bool isResolvingSubDeviceIDNeeded(const ReleaseHelper *releaseHelper) const = 0;
|
2024-02-15 23:45:12 +08:00
|
|
|
virtual uint64_t overridePatIndex(bool isUncachedType, uint64_t patIndex, AllocationType allocationType) const = 0;
|
2023-09-23 00:06:50 +08:00
|
|
|
virtual std::vector<uint32_t> getSupportedNumGrfs(const ReleaseHelper *releaseHelper) const = 0;
|
2023-12-05 07:40:40 +08:00
|
|
|
virtual aub_stream::EngineType getDefaultCopyEngine() const = 0;
|
2024-01-20 09:39:14 +08:00
|
|
|
virtual void adjustEngineGroupType(EngineGroupType &engineGroupType) const = 0;
|
2024-01-26 01:07:26 +08:00
|
|
|
virtual std::optional<GfxMemoryAllocationMethod> getPreferredAllocationMethod(AllocationType allocationType) const = 0;
|
|
|
|
virtual bool isCachingOnCpuAvailable() const = 0;
|
2024-01-31 22:17:57 +08:00
|
|
|
virtual bool isNewCoherencyModelSupported() const = 0;
|
2024-05-29 17:43:26 +08:00
|
|
|
virtual bool deferMOCSToPatIndex() const = 0;
|
2024-04-24 22:00:07 +08:00
|
|
|
virtual const std::vector<uint32_t> getSupportedLocalDispatchSizes(const HardwareInfo &hwInfo) const = 0;
|
2024-11-23 00:27:12 +08:00
|
|
|
virtual uint32_t getMaxLocalRegionSize(const HardwareInfo &hwInfo) const = 0;
|
2024-11-15 01:09:23 +08:00
|
|
|
virtual bool localDispatchSizeQuerySupported() const = 0;
|
2024-03-27 20:52:30 +08:00
|
|
|
virtual bool supportReadOnlyAllocations() const = 0;
|
2024-04-08 17:32:11 +08:00
|
|
|
virtual bool isDeviceToHostCopySignalingFenceRequired() const = 0;
|
2024-04-05 10:02:14 +08:00
|
|
|
virtual size_t getMaxFillPaternSizeForCopyEngine() const = 0;
|
2024-04-29 19:22:46 +08:00
|
|
|
virtual bool isAvailableExtendedScratch() const = 0;
|
2024-05-22 21:31:31 +08:00
|
|
|
virtual std::optional<bool> isCoherentAllocation(uint64_t patIndex) const = 0;
|
2024-06-25 01:01:44 +08:00
|
|
|
virtual bool isStagingBuffersEnabled() const = 0;
|
2024-07-18 19:32:45 +08:00
|
|
|
virtual uint32_t getCacheLineSize() const = 0;
|
2024-07-20 05:32:41 +08:00
|
|
|
virtual bool supports2DBlockStore() const = 0;
|
|
|
|
virtual bool supports2DBlockLoad() const = 0;
|
2024-08-10 20:11:45 +08:00
|
|
|
virtual uint32_t getNumCacheRegions() const = 0;
|
|
|
|
virtual uint64_t getPatIndex(CacheRegion cacheRegion, CachePolicy cachePolicy) const = 0;
|
2022-12-12 18:57:02 +08:00
|
|
|
|
2023-02-01 11:12:09 +08:00
|
|
|
virtual ~ProductHelper() = default;
|
2021-08-17 20:00:35 +08:00
|
|
|
|
2021-09-09 20:27:41 +08:00
|
|
|
protected:
|
2023-02-01 11:12:09 +08:00
|
|
|
ProductHelper() = default;
|
|
|
|
|
2021-09-09 20:27:41 +08:00
|
|
|
virtual LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
2022-12-15 20:13:57 +08:00
|
|
|
virtual void fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) const = 0;
|
2024-07-17 16:03:49 +08:00
|
|
|
void setupDefaultEngineType(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment) const;
|
|
|
|
int setupProductSpecificConfig(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment) const;
|
2024-07-15 21:00:16 +08:00
|
|
|
static void setupPreemptionSurfaceSize(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment);
|
2024-07-16 00:46:01 +08:00
|
|
|
static void setupKmdNotifyProperties(KmdNotifyProperties &kmdNotifyProperties);
|
2024-07-17 16:03:49 +08:00
|
|
|
static void setupPreemptionMode(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment, bool kmdPreemptionSupport);
|
|
|
|
static void setupImageSupport(HardwareInfo &hwInfo);
|
2017-12-21 07:45:38 +08:00
|
|
|
};
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|