2017-12-21 00:45:38 +01:00
|
|
|
/*
|
2025-01-08 13:52:31 +00:00
|
|
|
* Copyright (C) 2018-2025 Intel Corporation
|
2017-12-21 00:45:38 +01:00
|
|
|
*
|
2018-09-18 09:11:08 +02:00
|
|
|
* SPDX-License-Identifier: MIT
|
2017-12-21 00:45:38 +01:00
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
2024-03-22 11:18:35 +00:00
|
|
|
#include "shared/source/command_stream/queue_throttle.h"
|
2023-03-22 14:45:04 +01:00
|
|
|
#include "shared/source/command_stream/task_count_helper.h"
|
|
|
|
|
|
2023-12-04 23:40:40 +00:00
|
|
|
#include "aubstream/engine_node.h"
|
|
|
|
|
|
2023-02-06 09:05:43 +00:00
|
|
|
#include <igfxfmid.h>
|
2023-02-01 03:12:09 +00:00
|
|
|
#include <memory>
|
2022-11-16 11:03:40 +00:00
|
|
|
#include <optional>
|
2023-02-06 09:05:43 +00:00
|
|
|
#include <string>
|
|
|
|
|
#include <vector>
|
2019-02-27 11:39:32 +01:00
|
|
|
|
2022-11-16 11:03:40 +00:00
|
|
|
namespace aub_stream {
|
|
|
|
|
enum class ProductFamily : uint32_t;
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-26 11:59:46 +01:00
|
|
|
namespace NEO {
|
2024-07-15 16:46:01 +00:00
|
|
|
struct KmdNotifyProperties;
|
2023-11-15 15:04:20 +00:00
|
|
|
struct AllocationData;
|
2023-03-22 14:45:04 +01:00
|
|
|
class CommandStreamReceiver;
|
2022-11-28 19:00:39 +00:00
|
|
|
class Device;
|
|
|
|
|
enum class LocalMemoryAccessMode;
|
2022-08-29 20:06:04 +00:00
|
|
|
struct FrontEndPropertiesSupport;
|
2022-09-12 19:11:56 +00:00
|
|
|
struct HardwareInfo;
|
2023-03-07 15:22:10 +00:00
|
|
|
struct KernelDescriptor;
|
2022-09-12 19:11:56 +00:00
|
|
|
struct PipelineSelectArgs;
|
|
|
|
|
struct PipelineSelectPropertiesSupport;
|
2022-11-22 17:17:04 +00:00
|
|
|
struct StateBaseAddressPropertiesSupport;
|
2021-07-06 13:29:10 +00:00
|
|
|
struct StateComputeModeProperties;
|
2022-08-23 04:02:33 +00:00
|
|
|
struct StateComputeModePropertiesSupport;
|
2022-12-12 16:43:41 +00:00
|
|
|
class ProductHelper;
|
2023-05-05 15:26:09 +00:00
|
|
|
class ReleaseHelper;
|
2024-07-03 13:28:55 +00:00
|
|
|
class Image;
|
2022-05-17 19:04:23 +00:00
|
|
|
class GraphicsAllocation;
|
2022-06-13 14:13:34 +00:00
|
|
|
class MemoryManager;
|
2022-11-14 14:52:40 +00:00
|
|
|
struct RootDeviceEnvironment;
|
2024-03-22 11:18:35 +00:00
|
|
|
struct TimeoutParams;
|
2022-09-12 19:11:56 +00:00
|
|
|
class OSInterface;
|
2023-06-24 00:35:30 +00:00
|
|
|
class DriverModel;
|
2022-01-05 15:24:16 +01:00
|
|
|
enum class DriverModelType;
|
2024-01-20 01:39:14 +00:00
|
|
|
enum class EngineGroupType : uint32_t;
|
2024-01-25 17:07:26 +00:00
|
|
|
enum class GfxMemoryAllocationMethod : uint32_t;
|
|
|
|
|
enum class AllocationType;
|
2024-08-10 12:11:45 +00:00
|
|
|
enum class CacheRegion : uint16_t;
|
|
|
|
|
enum class CachePolicy : uint32_t;
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2023-02-01 03:12:09 +00:00
|
|
|
using ProductHelperCreateFunctionType = std::unique_ptr<ProductHelper> (*)();
|
|
|
|
|
extern ProductHelperCreateFunctionType productHelperFactory[IGFX_MAX_PRODUCT];
|
2017-12-21 00:45:38 +01:00
|
|
|
|
2022-07-01 15:06:12 +00:00
|
|
|
enum class UsmAccessCapabilities {
|
2023-12-11 11:02:15 +00:00
|
|
|
host = 0,
|
|
|
|
|
device,
|
|
|
|
|
sharedSingleDevice,
|
|
|
|
|
sharedCrossDevice,
|
|
|
|
|
sharedSystemCrossDevice
|
2022-07-01 15:06:12 +00:00
|
|
|
};
|
|
|
|
|
|
2022-12-12 16:43:41 +00:00
|
|
|
class ProductHelper {
|
2017-12-21 00:45:38 +01:00
|
|
|
public:
|
2023-02-01 03:12:09 +00:00
|
|
|
static std::unique_ptr<ProductHelper> create(PRODUCT_FAMILY product) {
|
|
|
|
|
auto productHelperCreateFunction = productHelperFactory[product];
|
2023-02-02 09:50:31 +00:00
|
|
|
if (productHelperCreateFunction == nullptr) {
|
|
|
|
|
return nullptr;
|
|
|
|
|
}
|
2023-02-01 03:12:09 +00:00
|
|
|
auto productHelper = productHelperCreateFunction();
|
|
|
|
|
return productHelper;
|
2017-12-21 00:45:38 +01:00
|
|
|
}
|
2023-02-01 03:12:09 +00:00
|
|
|
|
2021-11-26 09:40:06 +00:00
|
|
|
static constexpr uint32_t uuidSize = 16u;
|
2022-05-11 14:08:18 +00:00
|
|
|
static constexpr uint32_t luidSize = 8u;
|
2023-10-05 10:47:44 +00:00
|
|
|
MOCKABLE_VIRTUAL int configureHwInfoWddm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironment);
|
2024-07-19 03:39:45 +02:00
|
|
|
int configureHwInfoDrm(const HardwareInfo *inHwInfo, HardwareInfo *outHwInfo, const RootDeviceEnvironment &rootDeviceEnvironment);
|
2022-11-07 14:47:17 +00:00
|
|
|
virtual int configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) const = 0;
|
2020-11-20 10:45:15 +01:00
|
|
|
virtual void adjustPlatformForProductFamily(HardwareInfo *hwInfo) = 0;
|
2023-01-02 12:19:09 +00:00
|
|
|
virtual void adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const = 0;
|
2022-12-21 11:35:37 +00:00
|
|
|
virtual uint64_t getHostMemCapabilities(const HardwareInfo *hwInfo) const = 0;
|
|
|
|
|
virtual uint64_t getDeviceMemCapabilities() const = 0;
|
|
|
|
|
virtual uint64_t getSingleDeviceSharedMemCapabilities() const = 0;
|
|
|
|
|
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 15:13:56 +00: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 13:34:56 +00:00
|
|
|
virtual bool isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const = 0;
|
2021-07-06 10:14:23 +00: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-05 16:57:56 +00: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 12:00:35 +00:00
|
|
|
virtual bool obtainBlitterPreference(const HardwareInfo &hwInfo) const = 0;
|
2021-10-27 20:22:31 +00:00
|
|
|
virtual bool isBlitterFullySupported(const HardwareInfo &hwInfo) const = 0;
|
2021-08-19 11:06:49 +00:00
|
|
|
virtual bool isPageTableManagerSupported(const HardwareInfo &hwInfo) const = 0;
|
2021-08-20 15:41:43 +00:00
|
|
|
virtual uint32_t getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const = 0;
|
2021-08-27 13:30:39 +00:00
|
|
|
virtual uint32_t getSteppingFromHwRevId(const HardwareInfo &hwInfo) const = 0;
|
|
|
|
|
virtual uint32_t getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const = 0;
|
2022-11-16 11:03:40 +00:00
|
|
|
virtual std::optional<aub_stream::ProductFamily> getAubStreamProductFamily() const = 0;
|
2021-09-02 11:11:39 +00:00
|
|
|
virtual bool isDefaultEngineTypeAdjustmentRequired(const HardwareInfo &hwInfo) const = 0;
|
2021-11-30 12:43:06 +00:00
|
|
|
virtual bool overrideGfxPartitionLayoutForWsl() const = 0;
|
2021-09-06 10:34:34 +00:00
|
|
|
virtual bool isDisableOverdispatchAvailable(const HardwareInfo &hwInfo) const = 0;
|
2021-12-03 13:52:16 +00:00
|
|
|
virtual bool allowCompression(const HardwareInfo &hwInfo) const = 0;
|
2021-09-09 12:27:41 +00:00
|
|
|
virtual LocalMemoryAccessMode getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
2024-02-09 10:34:56 +00:00
|
|
|
virtual bool isNewResidencyModelSupported() const = 0;
|
2023-09-20 13:08:46 +00:00
|
|
|
virtual bool isDirectSubmissionSupported(ReleaseHelper *releaseHelper) const = 0;
|
2023-06-21 11:40:18 +00:00
|
|
|
virtual bool isDirectSubmissionConstantCacheInvalidationNeeded(const HardwareInfo &hwInfo) const = 0;
|
2024-06-03 13:31:49 +00:00
|
|
|
virtual bool restartDirectSubmissionForHostptrFree() const = 0;
|
2024-03-25 15:22:00 +00:00
|
|
|
virtual bool isAdjustDirectSubmissionTimeoutOnThrottleAndAcLineStatusEnabled() const = 0;
|
2024-03-22 11:18:35 +00:00
|
|
|
virtual TimeoutParams getDirectSubmissionControllerTimeoutParams(bool acLineConnected, QueueThrottle queueThrottle) const = 0;
|
2023-05-12 14:49:39 +00:00
|
|
|
virtual std::pair<bool, bool> isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const = 0;
|
2021-09-21 13:34:25 +00:00
|
|
|
virtual bool heapInLocalMem(const HardwareInfo &hwInfo) const = 0;
|
2024-07-17 08:03:49 +00:00
|
|
|
virtual void setCapabilityCoherencyFlag(const HardwareInfo &hwInfo, bool &coherencyFlag) const = 0;
|
2021-09-23 15:08:41 +00:00
|
|
|
virtual bool isAdditionalMediaSamplerProgrammingRequired() const = 0;
|
|
|
|
|
virtual bool isInitialFlagsProgrammingRequired() const = 0;
|
|
|
|
|
virtual bool isReturnedCmdSizeForMediaSamplerAdjustmentRequired() const = 0;
|
2021-09-24 14:29:49 +00: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 10:54:52 +00:00
|
|
|
virtual bool isStorageInfoAdjustmentRequired() const = 0;
|
2021-10-13 13:30:45 +00:00
|
|
|
virtual bool isBlitterForImagesSupported() const = 0;
|
2023-02-05 17:20:25 +00:00
|
|
|
virtual bool isPageFaultSupported() const = 0;
|
2023-02-26 15:46:10 +00:00
|
|
|
virtual bool isKmdMigrationSupported() const = 0;
|
2024-04-08 18:37:35 +00:00
|
|
|
virtual bool isDisableScratchPagesSupported() const = 0;
|
2021-10-15 15:24:03 +00:00
|
|
|
virtual bool isTile64With3DSurfaceOnBCSSupported(const HardwareInfo &hwInfo) const = 0;
|
2021-12-20 14:37:33 +00:00
|
|
|
virtual bool isDcFlushAllowed() const = 0;
|
2024-04-12 11:05:44 +00:00
|
|
|
virtual bool isDcFlushMitigated() const = 0;
|
2024-08-28 10:11:54 +00:00
|
|
|
virtual bool mitigateDcFlush() const = 0;
|
2024-09-05 14:13:40 +00: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 08:54:21 +00:00
|
|
|
virtual bool overrideCacheableForDcFlushMitigation(AllocationType allocationType) const = 0;
|
2024-08-02 11:53:36 +02:00
|
|
|
virtual uint32_t computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const = 0;
|
2023-06-24 00:35:30 +00: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-17 21:44:55 +00:00
|
|
|
virtual bool isFlushTaskAllowed() const = 0;
|
2022-03-09 15:39:57 +00:00
|
|
|
virtual bool isSystolicModeConfigurable(const HardwareInfo &hwInfo) const = 0;
|
2023-02-21 14:27:13 +00:00
|
|
|
virtual bool isInitBuiltinAsyncSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-03-24 08:59:17 +00:00
|
|
|
virtual bool isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-07-05 10:25:16 +00:00
|
|
|
virtual bool isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-09-20 15:46:54 +00:00
|
|
|
virtual bool isCopyEngineSelectorEnabled(const HardwareInfo &hwInfo) const = 0;
|
2022-03-21 17:44:02 +00:00
|
|
|
virtual uint32_t getThreadEuRatioForScratch(const HardwareInfo &hwInfo) const = 0;
|
2025-01-10 09:58:21 +00:00
|
|
|
virtual void adjustScratchSize(size_t &requiredScratchSize) const = 0;
|
2022-12-02 09:30:29 +00:00
|
|
|
virtual size_t getSvmCpuAlignment() const = 0;
|
2022-03-09 15:39:57 +00:00
|
|
|
virtual bool isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-04-11 17:13:44 +00:00
|
|
|
virtual bool isVmBindPatIndexProgrammingSupported() const = 0;
|
2022-07-08 11:29:59 +00:00
|
|
|
virtual bool isIpSamplingSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-04-26 14:28:18 +00:00
|
|
|
virtual bool isGrfNumReportedWithScm() const = 0;
|
2022-05-16 20:34:53 +00:00
|
|
|
virtual bool isThreadArbitrationPolicyReportedWithScm() const = 0;
|
2024-08-28 10:25:16 +00:00
|
|
|
virtual bool isCopyBufferRectSplitSupported() const = 0;
|
2022-05-10 17:38:03 +00:00
|
|
|
virtual bool isCooperativeEngineSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-05-13 12:04:24 +00:00
|
|
|
virtual bool isTimestampWaitSupportedForEvents() const = 0;
|
2022-05-02 13:54:24 +00: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 15:05:27 +00:00
|
|
|
virtual bool isBlitSplitEnqueueWARequired(const HardwareInfo &hwInfo) const = 0;
|
2023-01-26 16:21:09 +00:00
|
|
|
virtual bool isBlitCopyRequiredForLocalMemory(const RootDeviceEnvironment &rootDeviceEnvironment, const GraphicsAllocation &allocation) const = 0;
|
2023-01-27 12:37:09 +00:00
|
|
|
virtual bool isInitDeviceWithFirstSubmissionRequired(const HardwareInfo &hwInfo) const = 0;
|
2022-05-23 17:03:53 +00:00
|
|
|
virtual bool isImplicitScalingSupported(const HardwareInfo &hwInfo) const = 0;
|
2022-06-13 14:13:34 +00:00
|
|
|
virtual bool isCpuCopyNecessary(const void *ptr, MemoryManager *memoryManager) const = 0;
|
2023-01-30 16:27:42 +00:00
|
|
|
virtual bool isUnlockingLockedPtrNecessary(const HardwareInfo &hwInfo) const = 0;
|
2023-05-05 15:26:09 +00:00
|
|
|
virtual bool isAdjustWalkOrderAvailable(const ReleaseHelper *releaseHelper) const = 0;
|
2022-06-17 10:14:50 +00:00
|
|
|
virtual bool isAssignEngineRoundRobinSupported() const = 0;
|
2022-08-23 11:48:18 +00:00
|
|
|
virtual uint32_t getL1CachePolicy(bool isDebuggerActive) const = 0;
|
2022-08-22 12:11:44 +00:00
|
|
|
virtual bool isEvictionIfNecessaryFlagSupported() const = 0;
|
2022-07-25 12:13:27 +00:00
|
|
|
virtual void adjustNumberOfCcs(HardwareInfo &hwInfo) const = 0;
|
2024-07-19 10:25:15 +00:00
|
|
|
virtual bool blitEnqueuePreferred(bool isWriteToImageFromBuffer) const = 0;
|
2022-08-10 11:52:06 +00:00
|
|
|
virtual bool isPrefetcherDisablingInDirectSubmissionRequired() const = 0;
|
2022-08-22 14:53:48 +00:00
|
|
|
virtual bool isStatefulAddressingModeSupported() const = 0;
|
2022-09-12 12:50:07 +00:00
|
|
|
virtual bool isPlatformQuerySupported() const = 0;
|
2022-10-28 09:25:16 +00:00
|
|
|
virtual bool isNonBlockingGpuSubmissionSupported() const = 0;
|
2023-03-22 14:45:04 +01:00
|
|
|
virtual bool isResolveDependenciesByPipeControlsSupported(const HardwareInfo &hwInfo, bool isOOQ, TaskCountType queueTaskCount, const CommandStreamReceiver &queueCsr) const = 0;
|
2022-12-12 15:06:59 +00:00
|
|
|
virtual bool isBufferPoolAllocatorSupported() const = 0;
|
2024-01-05 14:00:04 +00:00
|
|
|
virtual bool isUsmPoolAllocatorSupported() const = 0;
|
2024-05-17 11:54:37 +00:00
|
|
|
virtual bool isDeviceUsmAllocationReuseSupported() const = 0;
|
2024-07-23 14:40:05 +00:00
|
|
|
virtual bool isHostUsmAllocationReuseSupported() const = 0;
|
2024-03-07 15:53:20 +00:00
|
|
|
virtual bool useLocalPreferredForCacheableBuffers() const = 0;
|
2024-02-16 16:26:30 +00:00
|
|
|
virtual bool useGemCreateExtInAllocateMemoryByKMD() const = 0;
|
2023-12-24 07:46:47 +01:00
|
|
|
virtual bool isTlbFlushRequired() const = 0;
|
2024-09-11 09:31:36 +00: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 13:52:55 +00:00
|
|
|
virtual uint32_t getRequiredDetectIndirectVersionVC() const = 0;
|
2023-07-25 14:44:02 +02:00
|
|
|
virtual bool isLinearStoragePreferred(bool isImage1d, bool forceLinearStorage) const = 0;
|
2023-04-27 14:13:51 +00:00
|
|
|
virtual bool isTranslationExceptionSupported() const = 0;
|
2023-05-17 19:21:34 +00:00
|
|
|
virtual uint32_t getMaxNumSamplers() const = 0;
|
2023-10-27 15:54:45 +00:00
|
|
|
virtual uint32_t getCommandBuffersPreallocatedPerCommandQueue() const = 0;
|
2023-11-17 12:14:15 +00:00
|
|
|
virtual uint32_t getInternalHeapsPreallocated() const = 0;
|
2023-11-15 15:04:20 +00:00
|
|
|
virtual bool overrideAllocationCacheable(const AllocationData &allocationData) const = 0;
|
2023-03-15 13:53:53 +00:00
|
|
|
|
2022-08-23 04:02:33 +00:00
|
|
|
virtual bool getFrontEndPropertyScratchSizeSupport() const = 0;
|
|
|
|
|
virtual bool getFrontEndPropertyPrivateScratchSizeSupport() const = 0;
|
2022-08-29 20:06:04 +00:00
|
|
|
virtual bool getFrontEndPropertyComputeDispatchAllWalkerSupport() const = 0;
|
|
|
|
|
virtual bool getFrontEndPropertyDisableEuFusionSupport() const = 0;
|
|
|
|
|
virtual bool getFrontEndPropertyDisableOverDispatchSupport() const = 0;
|
|
|
|
|
virtual bool getFrontEndPropertySingleSliceDispatchCcsModeSupport() const = 0;
|
2022-08-23 04:02:33 +00: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-22 17:17:04 +00:00
|
|
|
virtual bool getStateBaseAddressPropertyBindingTablePoolBaseAddressSupport() const = 0;
|
2022-08-23 04:02:33 +00:00
|
|
|
|
|
|
|
|
virtual bool getPreemptionDbgPropertyPreemptionModeSupport() const = 0;
|
|
|
|
|
virtual bool getPreemptionDbgPropertyStateSipSupport() const = 0;
|
|
|
|
|
virtual bool getPreemptionDbgPropertyCsrSurfaceSupport() const = 0;
|
|
|
|
|
|
2022-09-12 19:11:56 +00:00
|
|
|
virtual bool getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const = 0;
|
|
|
|
|
virtual bool getPipelineSelectPropertySystolicModeSupport() const = 0;
|
|
|
|
|
|
2022-12-15 12:13:57 +00:00
|
|
|
virtual void fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) const = 0;
|
2023-04-27 14:13:51 +00:00
|
|
|
virtual void fillScmPropertiesSupportStructureExtra(StateComputeModePropertiesSupport &propertiesSupport, const RootDeviceEnvironment &rootDeviceEnvironment) const = 0;
|
2022-12-15 12:13:57 +00:00
|
|
|
virtual void fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) const = 0;
|
|
|
|
|
virtual void fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) const = 0;
|
2023-01-23 14:08:25 +00:00
|
|
|
virtual void fillStateBaseAddressPropertiesSupportStructure(StateBaseAddressPropertiesSupport &propertiesSupport) const = 0;
|
2022-08-23 04:02:33 +00:00
|
|
|
|
2023-03-08 10:42:29 +00: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 13:53:58 +00:00
|
|
|
virtual uint32_t getNumberOfPartsInTileForConcurrentKernel(uint32_t ccsCount) const = 0;
|
2023-03-06 15:12:14 +00:00
|
|
|
virtual bool is48bResourceNeededForRayTracing() const = 0;
|
2023-05-29 15:18:31 +00:00
|
|
|
virtual bool disableL3CacheForDebug(const HardwareInfo &hwInfo) const = 0;
|
2023-06-09 15:23:03 +00:00
|
|
|
virtual bool isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const = 0;
|
2023-09-04 14:11:37 +00:00
|
|
|
virtual bool isResolvingSubDeviceIDNeeded(const ReleaseHelper *releaseHelper) const = 0;
|
2024-02-15 15:45:12 +00:00
|
|
|
virtual uint64_t overridePatIndex(bool isUncachedType, uint64_t patIndex, AllocationType allocationType) const = 0;
|
2023-09-22 16:06:50 +00:00
|
|
|
virtual std::vector<uint32_t> getSupportedNumGrfs(const ReleaseHelper *releaseHelper) const = 0;
|
2023-12-04 23:40:40 +00:00
|
|
|
virtual aub_stream::EngineType getDefaultCopyEngine() const = 0;
|
2024-01-20 01:39:14 +00:00
|
|
|
virtual void adjustEngineGroupType(EngineGroupType &engineGroupType) const = 0;
|
2024-01-25 17:07:26 +00:00
|
|
|
virtual std::optional<GfxMemoryAllocationMethod> getPreferredAllocationMethod(AllocationType allocationType) const = 0;
|
|
|
|
|
virtual bool isCachingOnCpuAvailable() const = 0;
|
2024-01-31 14:17:57 +00:00
|
|
|
virtual bool isNewCoherencyModelSupported() const = 0;
|
2024-05-29 09:43:26 +00:00
|
|
|
virtual bool deferMOCSToPatIndex() const = 0;
|
2024-04-24 14:00:07 +00:00
|
|
|
virtual const std::vector<uint32_t> getSupportedLocalDispatchSizes(const HardwareInfo &hwInfo) const = 0;
|
2024-11-22 16:27:12 +00:00
|
|
|
virtual uint32_t getMaxLocalRegionSize(const HardwareInfo &hwInfo) const = 0;
|
2024-11-14 17:09:23 +00:00
|
|
|
virtual bool localDispatchSizeQuerySupported() const = 0;
|
2024-03-27 12:52:30 +00:00
|
|
|
virtual bool supportReadOnlyAllocations() const = 0;
|
2024-04-08 09:32:11 +00:00
|
|
|
virtual bool isDeviceToHostCopySignalingFenceRequired() const = 0;
|
2024-04-05 02:02:14 +00:00
|
|
|
virtual size_t getMaxFillPaternSizeForCopyEngine() const = 0;
|
2024-04-29 11:22:46 +00:00
|
|
|
virtual bool isAvailableExtendedScratch() const = 0;
|
2024-05-22 13:31:31 +00:00
|
|
|
virtual std::optional<bool> isCoherentAllocation(uint64_t patIndex) const = 0;
|
2024-06-24 17:01:44 +00:00
|
|
|
virtual bool isStagingBuffersEnabled() const = 0;
|
2024-07-18 11:32:45 +00:00
|
|
|
virtual uint32_t getCacheLineSize() const = 0;
|
2024-07-19 21:32:41 +00:00
|
|
|
virtual bool supports2DBlockStore() const = 0;
|
|
|
|
|
virtual bool supports2DBlockLoad() const = 0;
|
2024-08-10 12:11:45 +00:00
|
|
|
virtual uint32_t getNumCacheRegions() const = 0;
|
|
|
|
|
virtual uint64_t getPatIndex(CacheRegion cacheRegion, CachePolicy cachePolicy) const = 0;
|
2022-12-12 10:57:02 +00:00
|
|
|
|
2023-02-01 03:12:09 +00:00
|
|
|
virtual ~ProductHelper() = default;
|
2021-08-17 12:00:35 +00:00
|
|
|
|
2021-09-09 12:27:41 +00:00
|
|
|
protected:
|
2023-02-01 03:12:09 +00:00
|
|
|
ProductHelper() = default;
|
|
|
|
|
|
2021-09-09 12:27:41 +00:00
|
|
|
virtual LocalMemoryAccessMode getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const = 0;
|
2022-12-15 12:13:57 +00:00
|
|
|
virtual void fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) const = 0;
|
2024-07-17 08:03:49 +00:00
|
|
|
void setupDefaultEngineType(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment) const;
|
|
|
|
|
int setupProductSpecificConfig(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment) const;
|
2024-07-15 13:00:16 +00:00
|
|
|
static void setupPreemptionSurfaceSize(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment);
|
2024-07-15 16:46:01 +00:00
|
|
|
static void setupKmdNotifyProperties(KmdNotifyProperties &kmdNotifyProperties);
|
2024-07-17 08:03:49 +00:00
|
|
|
static void setupPreemptionMode(HardwareInfo &hwInfo, const RootDeviceEnvironment &rootDeviceEnvironment, bool kmdPreemptionSupport);
|
|
|
|
|
static void setupImageSupport(HardwareInfo &hwInfo);
|
2017-12-21 00:45:38 +01:00
|
|
|
};
|
2019-03-26 11:59:46 +01:00
|
|
|
} // namespace NEO
|