2018-04-05 00:38:36 +08:00
|
|
|
/*
|
2022-01-05 22:24:16 +08:00
|
|
|
* Copyright (C) 2020-2022 Intel Corporation
|
2018-04-05 00:38:36 +08:00
|
|
|
*
|
2018-09-18 15:11:08 +08:00
|
|
|
* SPDX-License-Identifier: MIT
|
2018-04-05 00:38:36 +08:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2022-08-23 12:02:33 +08:00
|
|
|
#include "shared/source/command_stream/stream_properties.h"
|
2020-11-21 23:50:18 +08:00
|
|
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
2021-09-08 23:07:46 +08:00
|
|
|
#include "shared/source/helpers/api_specific_config.h"
|
2022-06-27 22:58:29 +08:00
|
|
|
#include "shared/source/helpers/cache_policy.h"
|
2022-05-18 03:04:23 +08:00
|
|
|
#include "shared/source/helpers/constants.h"
|
2020-11-21 23:50:18 +08:00
|
|
|
#include "shared/source/helpers/hw_helper.h"
|
2021-09-10 08:37:27 +08:00
|
|
|
#include "shared/source/helpers/preamble.h"
|
2022-05-02 21:54:24 +08:00
|
|
|
#include "shared/source/memory_manager/graphics_allocation.h"
|
2022-06-13 22:13:34 +08:00
|
|
|
#include "shared/source/memory_manager/memory_manager.h"
|
2020-02-24 05:44:01 +08:00
|
|
|
#include "shared/source/os_interface/hw_info_config.h"
|
2022-07-24 12:21:16 +08:00
|
|
|
#include "shared/source/unified_memory/usm_memory_support.h"
|
2018-04-05 00:38:36 +08:00
|
|
|
|
2022-07-01 23:06:12 +08:00
|
|
|
#include <bitset>
|
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
namespace NEO {
|
2018-04-05 00:38:36 +08:00
|
|
|
|
2020-11-21 23:50:18 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
int HwInfoConfigHw<gfxProduct>::configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) {
|
2021-12-03 21:52:16 +08:00
|
|
|
enableCompression(hwInfo);
|
2020-11-21 23:50:18 +08:00
|
|
|
enableBlitterOperationsSupport(hwInfo);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2021-03-26 17:57:36 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::getKernelExtendedProperties(uint32_t *fp16, uint32_t *fp32, uint32_t *fp64) {
|
|
|
|
*fp16 = 0u;
|
|
|
|
*fp32 = 0u;
|
|
|
|
*fp64 = 0u;
|
|
|
|
}
|
|
|
|
|
2021-09-10 08:37:27 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-03-08 01:00:26 +08:00
|
|
|
std::vector<int32_t> HwInfoConfigHw<gfxProduct>::getKernelSupportedThreadArbitrationPolicies() {
|
2021-09-10 08:37:27 +08:00
|
|
|
using GfxFamily = typename HwMapper<gfxProduct>::GfxFamily;
|
|
|
|
return PreambleHelper<GfxFamily>::getSupportedThreadArbitrationPolicies();
|
|
|
|
}
|
|
|
|
|
2020-11-20 17:45:15 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2021-01-26 22:31:39 +08:00
|
|
|
void HwInfoConfigHw<gfxProduct>::convertTimestampsFromOaToCsDomain(uint64_t ×tampData){};
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2020-11-20 17:45:15 +08:00
|
|
|
void HwInfoConfigHw<gfxProduct>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {}
|
|
|
|
|
2021-02-05 09:58:42 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2021-04-06 20:35:03 +08:00
|
|
|
void HwInfoConfigHw<gfxProduct>::adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) {}
|
2021-02-05 09:58:42 +08:00
|
|
|
|
2020-11-21 23:50:18 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::enableBlitterOperationsSupport(HardwareInfo *hwInfo) {
|
2021-08-17 20:00:35 +08:00
|
|
|
hwInfo->capabilityTable.blitterOperationsSupported = obtainBlitterPreference(*hwInfo);
|
2020-11-21 23:50:18 +08:00
|
|
|
|
|
|
|
if (DebugManager.flags.EnableBlitterOperationsSupport.get() != -1) {
|
|
|
|
hwInfo->capabilityTable.blitterOperationsSupported = !!DebugManager.flags.EnableBlitterOperationsSupport.get();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint64_t HwInfoConfigHw<gfxProduct>::getDeviceMemCapabilities() {
|
2022-07-01 23:06:12 +08:00
|
|
|
uint64_t capabilities = UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS;
|
|
|
|
|
|
|
|
if (getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::Device)) {
|
|
|
|
capabilities |= UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS | UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
return capabilities;
|
2020-11-21 23:50:18 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint64_t HwInfoConfigHw<gfxProduct>::getSingleDeviceSharedMemCapabilities() {
|
2022-07-01 23:06:12 +08:00
|
|
|
uint64_t capabilities = UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS;
|
|
|
|
|
|
|
|
if (getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::SharedSingleDevice)) {
|
|
|
|
capabilities |= UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS | UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
return capabilities;
|
2020-11-21 23:50:18 +08:00
|
|
|
}
|
2020-11-26 16:31:10 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getHostMemCapabilitiesSupported(const HardwareInfo *hwInfo) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint64_t HwInfoConfigHw<gfxProduct>::getHostMemCapabilities(const HardwareInfo *hwInfo) {
|
|
|
|
bool supported = getHostMemCapabilitiesSupported(hwInfo);
|
|
|
|
|
|
|
|
if (DebugManager.flags.EnableHostUsmSupport.get() != -1) {
|
|
|
|
supported = !!DebugManager.flags.EnableHostUsmSupport.get();
|
|
|
|
}
|
|
|
|
|
2022-07-01 23:06:12 +08:00
|
|
|
uint64_t capabilities = getHostMemCapabilitiesValue();
|
|
|
|
|
|
|
|
if (getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::Host)) {
|
|
|
|
capabilities |= UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS | UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS;
|
|
|
|
}
|
|
|
|
|
|
|
|
return (supported ? capabilities : 0);
|
2020-11-26 16:31:10 +08:00
|
|
|
}
|
2021-04-19 19:31:20 +08:00
|
|
|
|
2021-12-01 23:14:07 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint64_t HwInfoConfigHw<gfxProduct>::getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) {
|
|
|
|
bool supported = false;
|
|
|
|
|
|
|
|
if (DebugManager.flags.EnableSharedSystemUsmSupport.get() != -1) {
|
|
|
|
supported = !!DebugManager.flags.EnableSharedSystemUsmSupport.get();
|
|
|
|
}
|
|
|
|
|
|
|
|
return (supported ? (UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS | UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS | UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS) : 0);
|
|
|
|
}
|
|
|
|
|
2022-07-01 23:06:12 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities capability) {
|
|
|
|
auto supported = false;
|
|
|
|
|
|
|
|
if (DebugManager.flags.EnableUsmConcurrentAccessSupport.get() > 0) {
|
2022-09-20 00:38:59 +08:00
|
|
|
auto capabilityBitset = std::bitset<4>(DebugManager.flags.EnableUsmConcurrentAccessSupport.get());
|
2022-07-01 23:06:12 +08:00
|
|
|
supported = capabilityBitset.test(static_cast<uint32_t>(capability));
|
|
|
|
}
|
|
|
|
|
|
|
|
return supported;
|
|
|
|
}
|
|
|
|
|
2021-04-19 19:31:20 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-06-30 16:04:45 +08:00
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getDeviceMemoryMaxClkRate(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) {
|
2021-04-19 19:31:20 +08:00
|
|
|
return 0u;
|
|
|
|
}
|
|
|
|
|
2022-06-30 16:04:45 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint64_t HwInfoConfigHw<gfxProduct>::getDeviceMemoryPhysicalSizeInBytes(const OSInterface *osIface, uint32_t subDeviceIndex) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint64_t HwInfoConfigHw<gfxProduct>::getDeviceMemoryMaxBandWidthInBytesPerSecond(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2021-06-23 21:34:56 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-07-06 18:14:23 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isMaxThreadsForWorkgroupWARequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getMaxThreadsForWorkgroup(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice) const {
|
|
|
|
uint32_t numThreadsPerEU = hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount;
|
|
|
|
return maxNumEUsPerSubSlice * numThreadsPerEU;
|
|
|
|
}
|
2021-07-06 21:29:10 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::setForceNonCoherent(void *const commandPtr, const StateComputeModeProperties &properties) {}
|
2021-08-19 19:06:49 +08:00
|
|
|
|
2022-04-26 22:28:18 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::updateScmCommand(void *const commandPtr, const StateComputeModeProperties &properties) {}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-05-17 04:34:53 +08:00
|
|
|
void HwInfoConfigHw<gfxProduct>::updateIddCommand(void *const commandPtr, uint32_t numGrf, int32_t threadArbitrationPolicy) {}
|
2022-04-26 22:28:18 +08:00
|
|
|
|
2021-08-19 19:06:49 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isPageTableManagerSupported(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
2021-08-20 23:41:43 +08:00
|
|
|
|
2021-11-30 20:43:06 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::overrideGfxPartitionLayoutForWsl() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-08-20 23:41:43 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const {
|
|
|
|
return CommonConstants::invalidStepping;
|
|
|
|
}
|
2021-08-27 21:30:39 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getSteppingFromHwRevId(const HardwareInfo &hwInfo) const {
|
|
|
|
return CommonConstants::invalidStepping;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const {
|
|
|
|
switch (getSteppingFromHwRevId(hwInfo)) {
|
|
|
|
default:
|
|
|
|
case REVISION_A0:
|
|
|
|
case REVISION_A1:
|
|
|
|
case REVISION_A3:
|
|
|
|
return AubMemDump::SteppingValues::A;
|
|
|
|
case REVISION_B:
|
|
|
|
return AubMemDump::SteppingValues::B;
|
|
|
|
case REVISION_C:
|
|
|
|
return AubMemDump::SteppingValues::C;
|
|
|
|
case REVISION_D:
|
|
|
|
return AubMemDump::SteppingValues::D;
|
|
|
|
case REVISION_K:
|
|
|
|
return AubMemDump::SteppingValues::K;
|
|
|
|
}
|
|
|
|
}
|
2021-09-02 19:11:39 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isDefaultEngineTypeAdjustmentRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
2021-08-31 23:17:18 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
std::string HwInfoConfigHw<gfxProduct>::getDeviceMemoryName() const {
|
|
|
|
return "DDR";
|
|
|
|
}
|
|
|
|
|
2021-09-06 18:34:34 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isDisableOverdispatchAvailable(const HardwareInfo &hwInfo) const {
|
2022-09-22 09:44:06 +08:00
|
|
|
return getFrontEndPropertyDisableOverDispatchSupport();
|
2021-09-06 18:34:34 +08:00
|
|
|
}
|
2021-09-06 23:21:40 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2021-12-03 21:52:16 +08:00
|
|
|
bool HwInfoConfigHw<gfxProduct>::allowCompression(const HardwareInfo &hwInfo) const {
|
2021-09-06 23:21:40 +08:00
|
|
|
return true;
|
|
|
|
}
|
2021-09-08 23:07:46 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::allowStatelessCompression(const HardwareInfo &hwInfo) const {
|
|
|
|
if (!NEO::ApiSpecificConfig::isStatelessCompressionSupported()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (DebugManager.flags.EnableStatelessCompression.get() != -1) {
|
|
|
|
return static_cast<bool>(DebugManager.flags.EnableStatelessCompression.get());
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
2021-09-09 20:27:41 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
LocalMemoryAccessMode HwInfoConfigHw<gfxProduct>::getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const {
|
|
|
|
return LocalMemoryAccessMode::Default;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
LocalMemoryAccessMode HwInfoConfigHw<gfxProduct>::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);
|
|
|
|
}
|
2021-09-14 22:57:43 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
2021-09-15 17:53:12 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isPrefetchDisablingRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
2021-09-21 20:29:24 +08:00
|
|
|
|
2022-06-17 18:14:50 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isAssignEngineRoundRobinSupported() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-09-21 20:29:24 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-02-04 23:43:17 +08:00
|
|
|
std::pair<bool, bool> HwInfoConfigHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const {
|
|
|
|
return {false, false};
|
2021-09-21 20:29:24 +08:00
|
|
|
}
|
|
|
|
|
2021-09-23 23:08:41 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isAdditionalMediaSamplerProgrammingRequired() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isInitialFlagsProgrammingRequired() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isReturnedCmdSizeForMediaSamplerAdjustmentRequired() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-09-24 01:46:36 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::extraParametersInvalid(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-09-24 22:29:49 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::pipeControlWARequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::imagePitchAlignmentWARequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-11-22 20:49:26 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isDirectSubmissionSupported(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-09-24 22:29:49 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isForceEmuInt32DivRemSPWARequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::is3DPipelineSelectWARequired() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-09-28 18:54:52 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isStorageInfoAdjustmentRequired() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2021-10-13 21:30:45 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isBlitterForImagesSupported() const {
|
|
|
|
return false;
|
|
|
|
}
|
2021-11-30 18:19:27 +08:00
|
|
|
|
2021-12-20 22:37:33 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isDcFlushAllowed() const {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2021-11-30 18:19:27 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const {
|
|
|
|
return hwInfo.gtSystemInfo.MaxSubSlicesSupported;
|
|
|
|
}
|
2021-11-26 17:40:06 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getUuid(Device *device, std::array<uint8_t, HwInfoConfig::uuidSize> &uuid) const {
|
|
|
|
return false;
|
|
|
|
}
|
2022-02-18 05:44:55 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isFlushTaskAllowed() const {
|
|
|
|
return false;
|
|
|
|
}
|
2022-03-07 22:31:53 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::programAllStateComputeCommandFields() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-03-09 23:39:57 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isSystolicModeConfigurable(const HardwareInfo &hwInfo) const {
|
2022-09-14 21:03:02 +08:00
|
|
|
return getPipelineSelectPropertySystolicModeSupport();
|
2022-03-09 23:39:57 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isComputeDispatchAllWalkerEnableInComputeWalkerRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-09-20 23:46:54 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isCopyEngineSelectorEnabled(const HardwareInfo &hwInfo) const {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2022-03-09 23:39:57 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-03-24 16:59:17 +08:00
|
|
|
bool HwInfoConfigHw<gfxProduct>::isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const {
|
2022-03-09 23:39:57 +08:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-07-05 18:25:16 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return HwInfoConfigHw<gfxProduct>::isGlobalFenceInCommandStreamRequired(hwInfo);
|
|
|
|
};
|
|
|
|
|
2022-03-09 23:39:57 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isAdjustProgrammableIdPreferredSlmSizeRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-03-22 01:44:02 +08:00
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getThreadEuRatioForScratch(const HardwareInfo &hwInfo) const {
|
|
|
|
return 8u;
|
2022-03-09 23:39:57 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const {
|
2022-09-02 22:23:24 +08:00
|
|
|
return getFrontEndPropertyComputeDispatchAllWalkerSupport();
|
2022-03-09 23:39:57 +08:00
|
|
|
}
|
|
|
|
|
2022-04-12 01:13:44 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isVmBindPatIndexProgrammingSupported() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-03-31 00:00:43 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isIpSamplingSupported(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-04-26 22:28:18 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isGrfNumReportedWithScm() const {
|
2022-04-29 22:33:41 +08:00
|
|
|
if (DebugManager.flags.ForceGrfNumProgrammingWithScm.get() != -1) {
|
|
|
|
return DebugManager.flags.ForceGrfNumProgrammingWithScm.get();
|
|
|
|
}
|
2022-08-23 12:02:33 +08:00
|
|
|
return HwInfoConfigHw<gfxProduct>::getScmPropertyLargeGrfModeSupport();
|
2022-04-26 22:28:18 +08:00
|
|
|
}
|
|
|
|
|
2022-05-17 04:34:53 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isThreadArbitrationPolicyReportedWithScm() const {
|
|
|
|
if (DebugManager.flags.ForceThreadArbitrationPolicyProgrammingWithScm.get() != -1) {
|
|
|
|
return DebugManager.flags.ForceThreadArbitrationPolicyProgrammingWithScm.get();
|
|
|
|
}
|
2022-08-23 12:02:33 +08:00
|
|
|
return HwInfoConfigHw<gfxProduct>::getScmPropertyThreadArbitrationPolicySupport();
|
2022-05-17 04:34:53 +08:00
|
|
|
}
|
|
|
|
|
2022-05-11 01:38:03 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isCooperativeEngineSupported(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-05-13 20:04:24 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isTimestampWaitSupportedForEvents() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-05-02 21:54:24 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isTilePlacementResourceWaRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
if (DebugManager.flags.ForceTile0PlacementForTile1ResourcesWaActive.get() != -1) {
|
|
|
|
return DebugManager.flags.ForceTile0PlacementForTile1ResourcesWaActive.get();
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::allowMemoryPrefetch(const HardwareInfo &hwInfo) const {
|
|
|
|
if (DebugManager.flags.EnableMemoryPrefetch.get() != -1) {
|
|
|
|
return !!DebugManager.flags.EnableMemoryPrefetch.get();
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isBcsReportWaRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
if (DebugManager.flags.DoNotReportTile1BscWaActive.get() != -1) {
|
|
|
|
return DebugManager.flags.DoNotReportTile1BscWaActive.get();
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-07-20 23:05:27 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isBlitSplitEnqueueWARequired(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-05-02 21:54:24 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isBlitCopyRequiredForLocalMemory(const HardwareInfo &hwInfo, const GraphicsAllocation &allocation) const {
|
|
|
|
return allocation.isAllocatedInLocalMemoryPool() &&
|
|
|
|
(HwInfoConfig::get(hwInfo.platform.eProductFamily)->getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::CpuAccessDisallowed ||
|
|
|
|
!allocation.isAllocationLockable());
|
|
|
|
}
|
2022-05-24 01:03:53 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isImplicitScalingSupported(const HardwareInfo &hwInfo) const {
|
|
|
|
return false;
|
|
|
|
}
|
2022-05-25 23:35:43 +08:00
|
|
|
|
2022-06-13 22:13:34 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isCpuCopyNecessary(const void *ptr, MemoryManager *memoryManager) const {
|
|
|
|
return false;
|
|
|
|
}
|
2022-06-15 02:17:04 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isAdjustWalkOrderAvailable(const HardwareInfo &hwInfo) const { return false; }
|
2022-06-22 21:13:37 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-08-23 19:48:18 +08:00
|
|
|
uint32_t HwInfoConfigHw<gfxProduct>::getL1CachePolicy(bool isDebuggerActive) const {
|
|
|
|
return L1CachePolicyHelper<gfxProduct>::getL1CachePolicy(isDebuggerActive);
|
2022-06-22 21:13:37 +08:00
|
|
|
}
|
|
|
|
|
2022-07-25 20:13:27 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::adjustNumberOfCcs(HardwareInfo &hwInfo) const {}
|
2022-08-10 19:52:06 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isPrefetcherDisablingInDirectSubmissionRequired() const {
|
|
|
|
return true;
|
|
|
|
}
|
2022-08-22 22:53:48 +08:00
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isStatefulAddressingModeSupported() const {
|
|
|
|
return true;
|
|
|
|
}
|
2022-08-23 12:02:33 +08:00
|
|
|
|
2022-09-12 20:50:07 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::isPlatformQuerySupported() const {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-08-23 12:02:33 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) {
|
|
|
|
propertiesSupport.coherencyRequired = getScmPropertyCoherencyRequiredSupport();
|
|
|
|
propertiesSupport.threadArbitrationPolicy = isThreadArbitrationPolicyReportedWithScm();
|
|
|
|
propertiesSupport.largeGrfMode = isGrfNumReportedWithScm();
|
|
|
|
propertiesSupport.zPassAsyncComputeThreadLimit = getScmPropertyZPassAsyncComputeThreadLimitSupport();
|
|
|
|
propertiesSupport.pixelAsyncComputeThreadLimit = getScmPropertyPixelAsyncComputeThreadLimitSupport();
|
|
|
|
propertiesSupport.devicePreemptionMode = getScmPropertyDevicePreemptionModeSupport();
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) {
|
|
|
|
fillScmPropertiesSupportStructureBase(propertiesSupport);
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getScmPropertyThreadArbitrationPolicySupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::threadArbitrationPolicy;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getScmPropertyCoherencyRequiredSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::coherencyRequired;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getScmPropertyZPassAsyncComputeThreadLimitSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::zPassAsyncComputeThreadLimit;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getScmPropertyPixelAsyncComputeThreadLimitSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::pixelAsyncComputeThreadLimit;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getScmPropertyLargeGrfModeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::largeGrfMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getScmPropertyDevicePreemptionModeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::devicePreemptionMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getSbaPropertyGlobalAtomicsSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateBaseAddressStateSupport::globalAtomics;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getSbaPropertyStatelessMocsSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::StateBaseAddressStateSupport::statelessMocs;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getPreemptionDbgPropertyPreemptionModeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::PreemptionDebugSupport::preemptionMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getPreemptionDbgPropertyStateSipSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::PreemptionDebugSupport::stateSip;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getPreemptionDbgPropertyCsrSurfaceSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::PreemptionDebugSupport::csrSurface;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getFrontEndPropertyScratchSizeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::FrontEndStateSupport::scratchSize;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getFrontEndPropertyPrivateScratchSizeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::FrontEndStateSupport::privateScratchSize;
|
|
|
|
}
|
|
|
|
|
2022-08-30 04:06:04 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getFrontEndPropertyComputeDispatchAllWalkerSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::FrontEndStateSupport::computeDispatchAllWalker;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getFrontEndPropertyDisableEuFusionSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::FrontEndStateSupport::disableEuFusion;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getFrontEndPropertyDisableOverDispatchSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::FrontEndStateSupport::disableOverdispatch;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getFrontEndPropertySingleSliceDispatchCcsModeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::FrontEndStateSupport::singleSliceDispatchCcsMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-09-02 22:23:24 +08:00
|
|
|
void HwInfoConfigHw<gfxProduct>::fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) {
|
|
|
|
propertiesSupport.computeDispatchAllWalker = isComputeDispatchAllWalkerEnableInCfeStateRequired(hwInfo);
|
2022-08-30 04:06:04 +08:00
|
|
|
propertiesSupport.disableEuFusion = getFrontEndPropertyDisableEuFusionSupport();
|
2022-09-22 09:44:06 +08:00
|
|
|
propertiesSupport.disableOverdispatch = isDisableOverdispatchAvailable(hwInfo);
|
2022-08-30 04:06:04 +08:00
|
|
|
propertiesSupport.singleSliceDispatchCcsMode = getFrontEndPropertySingleSliceDispatchCcsModeSupport();
|
|
|
|
}
|
|
|
|
|
2022-09-13 03:11:56 +08:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getPipelineSelectPropertyModeSelectedSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::PipelineSelectStateSupport::modeSelected;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::PipelineSelectStateSupport::mediaSamplerDopClockGate;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
bool HwInfoConfigHw<gfxProduct>::getPipelineSelectPropertySystolicModeSupport() const {
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
return GfxProduct::PipelineSelectStateSupport::systolicMode;
|
|
|
|
}
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
void HwInfoConfigHw<gfxProduct>::fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) {
|
|
|
|
propertiesSupport.modeSelected = getPipelineSelectPropertyModeSelectedSupport();
|
|
|
|
propertiesSupport.mediaSamplerDopClockGate = getPipelineSelectPropertyMediaSamplerDopClockGateSupport();
|
2022-09-14 21:03:02 +08:00
|
|
|
propertiesSupport.systolicMode = isSystolicModeConfigurable(hwInfo);
|
2022-09-13 03:11:56 +08:00
|
|
|
}
|
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|