2018-04-04 18:38:36 +02:00
|
|
|
/*
|
2024-01-05 14:00:04 +00:00
|
|
|
* Copyright (C) 2020-2024 Intel Corporation
|
2018-04-04 18:38:36 +02:00
|
|
|
*
|
2018-09-18 09:11:08 +02:00
|
|
|
* SPDX-License-Identifier: MIT
|
2018-04-04 18:38:36 +02:00
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
2022-12-01 19:42:57 +00:00
|
|
|
#include "shared/source/aub_mem_dump/aub_mem_dump.h"
|
2022-08-23 04:02:33 +00:00
|
|
|
#include "shared/source/command_stream/stream_properties.h"
|
2020-11-21 15:50:18 +00:00
|
|
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
2024-03-22 11:18:35 +00:00
|
|
|
#include "shared/source/direct_submission/direct_submission_controller.h"
|
2023-01-26 16:21:09 +00:00
|
|
|
#include "shared/source/execution_environment/root_device_environment.h"
|
2022-06-27 14:58:29 +00:00
|
|
|
#include "shared/source/helpers/cache_policy.h"
|
2022-05-17 19:04:23 +00:00
|
|
|
#include "shared/source/helpers/constants.h"
|
2023-08-23 14:45:48 +00:00
|
|
|
#include "shared/source/helpers/hw_info.h"
|
2023-03-08 09:30:38 +00:00
|
|
|
#include "shared/source/helpers/hw_mapper.h"
|
2022-11-28 19:00:39 +00:00
|
|
|
#include "shared/source/helpers/local_memory_access_modes.h"
|
2021-09-10 00:37:27 +00:00
|
|
|
#include "shared/source/helpers/preamble.h"
|
2023-04-18 13:53:43 +00:00
|
|
|
#include "shared/source/kernel/kernel_properties.h"
|
2024-02-15 15:45:12 +00:00
|
|
|
#include "shared/source/memory_manager/allocation_properties.h"
|
2022-05-02 13:54:24 +00:00
|
|
|
#include "shared/source/memory_manager/graphics_allocation.h"
|
2022-06-13 14:13:34 +00:00
|
|
|
#include "shared/source/memory_manager/memory_manager.h"
|
2023-03-10 12:28:11 +00:00
|
|
|
#include "shared/source/os_interface/product_helper.h"
|
2023-02-06 09:05:43 +00:00
|
|
|
#include "shared/source/os_interface/product_helper_hw.h"
|
2023-05-05 15:26:09 +00:00
|
|
|
#include "shared/source/release_helper/release_helper.h"
|
2022-07-24 04:21:16 +00:00
|
|
|
#include "shared/source/unified_memory/usm_memory_support.h"
|
2018-04-04 18:38:36 +02:00
|
|
|
|
2023-12-04 23:40:40 +00:00
|
|
|
#include "aubstream/engine_node.h"
|
|
|
|
|
|
2022-07-01 15:06:12 +00:00
|
|
|
#include <bitset>
|
|
|
|
|
|
2019-03-26 11:59:46 +01:00
|
|
|
namespace NEO {
|
2018-04-04 18:38:36 +02:00
|
|
|
|
2020-11-21 15:50:18 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
int ProductHelperHw<gfxProduct>::configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) const {
|
2021-12-03 13:52:16 +00:00
|
|
|
enableCompression(hwInfo);
|
2020-11-21 15:50:18 +00:00
|
|
|
enableBlitterOperationsSupport(hwInfo);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
2021-03-26 09:57:36 +00:00
|
|
|
|
2021-09-10 00:37:27 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
std::vector<int32_t> ProductHelperHw<gfxProduct>::getKernelSupportedThreadArbitrationPolicies() const {
|
2021-09-10 00:37:27 +00:00
|
|
|
using GfxFamily = typename HwMapper<gfxProduct>::GfxFamily;
|
|
|
|
|
return PreambleHelper<GfxFamily>::getSupportedThreadArbitrationPolicies();
|
|
|
|
|
}
|
|
|
|
|
|
2021-01-26 14:31:39 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {}
|
2020-11-20 10:45:15 +01:00
|
|
|
|
2021-02-05 01:58:42 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-08-23 11:33:09 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) const {
|
|
|
|
|
using SAMPLER_STATE = typename HwMapper<gfxProduct>::GfxFamily::SAMPLER_STATE;
|
|
|
|
|
auto samplerState = reinterpret_cast<SAMPLER_STATE *>(sampler);
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ForceSamplerLowFilteringPrecision.get()) {
|
2023-08-23 11:33:09 +00:00
|
|
|
samplerState->setLowQualityFilter(SAMPLER_STATE::LOW_QUALITY_FILTER_ENABLE);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-02-05 01:58:42 +00:00
|
|
|
|
2023-01-12 06:17:26 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-12-24 07:46:47 +01:00
|
|
|
bool ProductHelperHw<gfxProduct>::isTlbFlushRequired() const {
|
2023-05-01 07:07:14 +00:00
|
|
|
bool tlbFlushRequired = true;
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ForceTlbFlush.get() != -1) {
|
|
|
|
|
tlbFlushRequired = !!debugManager.flags.ForceTlbFlush.get();
|
2023-05-01 07:07:14 +00:00
|
|
|
}
|
|
|
|
|
return tlbFlushRequired;
|
2023-01-12 06:17:26 +00:00
|
|
|
}
|
|
|
|
|
|
2023-03-07 15:22:10 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2024-01-12 11:46:49 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isDetectIndirectAccessInKernelSupported(const KernelDescriptor &kernelDescriptor, const bool isPrecompiled, const uint32_t kernelIndirectDetectionVersion) const {
|
2023-04-26 04:11:43 +02:00
|
|
|
constexpr bool enabled = false;
|
|
|
|
|
return enabled;
|
2023-03-07 15:22:10 +00:00
|
|
|
}
|
|
|
|
|
|
2020-11-21 15:50:18 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::enableBlitterOperationsSupport(HardwareInfo *hwInfo) const {
|
2021-08-17 12:00:35 +00:00
|
|
|
hwInfo->capabilityTable.blitterOperationsSupported = obtainBlitterPreference(*hwInfo);
|
2020-11-21 15:50:18 +00:00
|
|
|
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.EnableBlitterOperationsSupport.get() != -1) {
|
|
|
|
|
hwInfo->capabilityTable.blitterOperationsSupported = !!debugManager.flags.EnableBlitterOperationsSupport.get();
|
2020-11-21 15:50:18 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::getDeviceMemCapabilities() const {
|
2023-12-04 14:47:26 +00:00
|
|
|
uint64_t capabilities = UnifiedSharedMemoryFlags::access | UnifiedSharedMemoryFlags::atomicAccess;
|
2022-07-01 15:06:12 +00:00
|
|
|
|
2023-12-11 11:02:15 +00:00
|
|
|
if (getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::device)) {
|
2023-12-04 14:47:26 +00:00
|
|
|
capabilities |= UnifiedSharedMemoryFlags::concurrentAccess | UnifiedSharedMemoryFlags::concurrentAtomicAccess;
|
2022-07-01 15:06:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return capabilities;
|
2020-11-21 15:50:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::getSingleDeviceSharedMemCapabilities() const {
|
2023-12-04 14:47:26 +00:00
|
|
|
uint64_t capabilities = UnifiedSharedMemoryFlags::access | UnifiedSharedMemoryFlags::atomicAccess;
|
2022-07-01 15:06:12 +00:00
|
|
|
|
2023-12-11 11:02:15 +00:00
|
|
|
if (isKmdMigrationSupported() || getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::sharedSingleDevice)) {
|
2023-12-04 14:47:26 +00:00
|
|
|
capabilities |= UnifiedSharedMemoryFlags::concurrentAccess | UnifiedSharedMemoryFlags::concurrentAtomicAccess;
|
2022-07-01 15:06:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return capabilities;
|
2020-11-21 15:50:18 +00:00
|
|
|
}
|
2020-11-26 08:31:10 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getHostMemCapabilitiesSupported(const HardwareInfo *hwInfo) const {
|
2020-11-26 08:31:10 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::getHostMemCapabilities(const HardwareInfo *hwInfo) const {
|
2020-11-26 08:31:10 +00:00
|
|
|
bool supported = getHostMemCapabilitiesSupported(hwInfo);
|
|
|
|
|
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.EnableHostUsmSupport.get() != -1) {
|
|
|
|
|
supported = !!debugManager.flags.EnableHostUsmSupport.get();
|
2020-11-26 08:31:10 +00:00
|
|
|
}
|
|
|
|
|
|
2022-07-01 15:06:12 +00:00
|
|
|
uint64_t capabilities = getHostMemCapabilitiesValue();
|
|
|
|
|
|
2023-12-11 11:02:15 +00:00
|
|
|
if (getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities::host)) {
|
2023-12-04 14:47:26 +00:00
|
|
|
capabilities |= UnifiedSharedMemoryFlags::concurrentAccess | UnifiedSharedMemoryFlags::concurrentAtomicAccess;
|
2022-07-01 15:06:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (supported ? capabilities : 0);
|
2020-11-26 08:31:10 +00:00
|
|
|
}
|
2021-04-19 11:31:20 +00:00
|
|
|
|
2021-12-01 15:14:07 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::getSharedSystemMemCapabilities(const HardwareInfo *hwInfo) const {
|
2021-12-01 15:14:07 +00:00
|
|
|
bool supported = false;
|
|
|
|
|
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.EnableSharedSystemUsmSupport.get() != -1) {
|
|
|
|
|
supported = !!debugManager.flags.EnableSharedSystemUsmSupport.get();
|
2021-12-01 15:14:07 +00:00
|
|
|
}
|
|
|
|
|
|
2023-12-04 14:47:26 +00:00
|
|
|
return (supported ? (UnifiedSharedMemoryFlags::access | UnifiedSharedMemoryFlags::atomicAccess | UnifiedSharedMemoryFlags::concurrentAccess | UnifiedSharedMemoryFlags::concurrentAtomicAccess) : 0);
|
2021-12-01 15:14:07 +00:00
|
|
|
}
|
|
|
|
|
|
2022-07-01 15:06:12 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-21 11:35:37 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getConcurrentAccessMemCapabilitiesSupported(UsmAccessCapabilities capability) const {
|
2022-07-01 15:06:12 +00:00
|
|
|
auto supported = false;
|
|
|
|
|
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.EnableUsmConcurrentAccessSupport.get() > 0) {
|
|
|
|
|
auto capabilityBitset = std::bitset<4>(debugManager.flags.EnableUsmConcurrentAccessSupport.get());
|
2022-07-01 15:06:12 +00:00
|
|
|
supported = capabilityBitset.test(static_cast<uint32_t>(capability));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return supported;
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-19 11:31:20 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-20 15:13:56 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getDeviceMemoryMaxClkRate(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) const {
|
2021-04-19 11:31:20 +00:00
|
|
|
return 0u;
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-30 08:04:45 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-20 15:13:56 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::getDeviceMemoryPhysicalSizeInBytes(const OSInterface *osIface, uint32_t subDeviceIndex) const {
|
2022-06-30 08:04:45 +00:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-20 15:13:56 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::getDeviceMemoryMaxBandWidthInBytesPerSecond(const HardwareInfo &hwInfo, const OSInterface *osIface, uint32_t subDeviceIndex) const {
|
2022-06-30 08:04:45 +00:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-15 15:04:20 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::overrideAllocationCacheable(const AllocationData &allocationData) const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-06-23 13:34:56 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const {
|
2021-06-23 13:34:56 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-06 10:14:23 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isMaxThreadsForWorkgroupWARequired(const HardwareInfo &hwInfo) const {
|
2021-07-06 10:14:23 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getMaxThreadsForWorkgroup(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice) const {
|
2021-07-06 10:14:23 +00:00
|
|
|
uint32_t numThreadsPerEU = hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount;
|
|
|
|
|
return maxNumEUsPerSubSlice * numThreadsPerEU;
|
|
|
|
|
}
|
2021-07-06 13:29:10 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-01-05 16:57:56 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::setForceNonCoherent(void *const commandPtr, const StateComputeModeProperties &properties) const {}
|
2021-08-19 11:06:49 +00:00
|
|
|
|
2022-04-26 14:28:18 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-01-05 16:57:56 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::updateScmCommand(void *const commandPtr, const StateComputeModeProperties &properties) const {}
|
2022-04-26 14:28:18 +00:00
|
|
|
|
2021-08-19 11:06:49 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isPageTableManagerSupported(const HardwareInfo &hwInfo) const {
|
2021-08-19 11:06:49 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2021-08-20 15:41:43 +00:00
|
|
|
|
2021-11-30 12:43:06 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::overrideGfxPartitionLayoutForWsl() const {
|
2021-11-30 12:43:06 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-08-20 15:41:43 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const {
|
2021-08-20 15:41:43 +00:00
|
|
|
return CommonConstants::invalidStepping;
|
|
|
|
|
}
|
2021-08-27 13:30:39 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getSteppingFromHwRevId(const HardwareInfo &hwInfo) const {
|
2021-08-27 13:30:39 +00:00
|
|
|
return CommonConstants::invalidStepping;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getAubStreamSteppingFromHwRevId(const HardwareInfo &hwInfo) const {
|
2021-08-27 13:30:39 +00:00
|
|
|
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 11:11:39 +00:00
|
|
|
|
2022-11-16 11:03:40 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
std::optional<aub_stream::ProductFamily> ProductHelperHw<gfxProduct>::getAubStreamProductFamily() const {
|
2022-11-16 11:03:40 +00:00
|
|
|
return std::nullopt;
|
|
|
|
|
};
|
|
|
|
|
|
2021-09-02 11:11:39 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isDefaultEngineTypeAdjustmentRequired(const HardwareInfo &hwInfo) const {
|
2021-09-02 11:11:39 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2021-08-31 15:17:18 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
std::string ProductHelperHw<gfxProduct>::getDeviceMemoryName() const {
|
2021-08-31 15:17:18 +00:00
|
|
|
return "DDR";
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-06 10:34:34 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isDisableOverdispatchAvailable(const HardwareInfo &hwInfo) const {
|
2022-09-22 01:44:06 +00:00
|
|
|
return getFrontEndPropertyDisableOverDispatchSupport();
|
2021-09-06 10:34:34 +00:00
|
|
|
}
|
2021-09-06 15:21:40 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::allowCompression(const HardwareInfo &hwInfo) const {
|
2021-09-06 15:21:40 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
2021-09-08 15:07:46 +00:00
|
|
|
|
2021-09-09 12:27:41 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
LocalMemoryAccessMode ProductHelperHw<gfxProduct>::getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const {
|
2023-12-19 10:17:17 +00:00
|
|
|
return LocalMemoryAccessMode::defaultMode;
|
2021-09-09 12:27:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
LocalMemoryAccessMode ProductHelperHw<gfxProduct>::getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const {
|
2023-11-30 08:32:25 +00:00
|
|
|
switch (static_cast<LocalMemoryAccessMode>(debugManager.flags.ForceLocalMemoryAccessMode.get())) {
|
2023-12-19 10:17:17 +00:00
|
|
|
case LocalMemoryAccessMode::defaultMode:
|
|
|
|
|
case LocalMemoryAccessMode::cpuAccessAllowed:
|
|
|
|
|
case LocalMemoryAccessMode::cpuAccessDisallowed:
|
2023-11-30 08:32:25 +00:00
|
|
|
return static_cast<LocalMemoryAccessMode>(debugManager.flags.ForceLocalMemoryAccessMode.get());
|
2021-09-09 12:27:41 +00:00
|
|
|
}
|
|
|
|
|
return getDefaultLocalMemoryAccessMode(hwInfo);
|
|
|
|
|
}
|
2021-09-14 14:57:43 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const {
|
2021-09-14 14:57:43 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2023-06-05 13:12:13 +00:00
|
|
|
|
2022-06-17 10:14:50 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isAssignEngineRoundRobinSupported() const {
|
2022-06-17 10:14:50 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-21 12:29:24 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-05-12 14:49:39 +00:00
|
|
|
std::pair<bool, bool> ProductHelperHw<gfxProduct>::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs, const ReleaseHelper *releaseHelper) const {
|
2023-08-31 09:16:18 +00:00
|
|
|
auto isBasicWARequired = false;
|
|
|
|
|
if (releaseHelper) {
|
|
|
|
|
isBasicWARequired = releaseHelper->isPipeControlPriorToNonPipelinedStateCommandsWARequired();
|
|
|
|
|
}
|
|
|
|
|
auto isExtendedWARequired = false;
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ProgramExtendedPipeControlPriorToNonPipelinedStateCommand.get() != -1) {
|
|
|
|
|
isExtendedWARequired = debugManager.flags.ProgramExtendedPipeControlPriorToNonPipelinedStateCommand.get();
|
2023-08-31 09:16:18 +00:00
|
|
|
}
|
|
|
|
|
return {isBasicWARequired, isExtendedWARequired};
|
2021-09-21 12:29:24 +00:00
|
|
|
}
|
|
|
|
|
|
2021-09-23 15:08:41 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isAdditionalMediaSamplerProgrammingRequired() const {
|
2021-09-23 15:08:41 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isInitialFlagsProgrammingRequired() const {
|
2021-09-23 15:08:41 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isReturnedCmdSizeForMediaSamplerAdjustmentRequired() const {
|
2021-09-23 15:08:41 +00:00
|
|
|
return false;
|
2021-09-23 17:46:36 +00:00
|
|
|
}
|
|
|
|
|
|
2021-09-24 14:29:49 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::pipeControlWARequired(const HardwareInfo &hwInfo) const {
|
2021-09-24 14:29:49 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::imagePitchAlignmentWARequired(const HardwareInfo &hwInfo) const {
|
2021-09-24 14:29:49 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-22 12:49:26 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-09-20 13:08:46 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isDirectSubmissionSupported(ReleaseHelper *releaseHelper) const {
|
|
|
|
|
if (releaseHelper) {
|
|
|
|
|
return releaseHelper->isDirectSubmissionSupported();
|
|
|
|
|
}
|
2023-06-21 11:40:18 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isDirectSubmissionConstantCacheInvalidationNeeded(const HardwareInfo &hwInfo) const {
|
2021-11-22 12:49:26 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-25 15:22:00 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isAdjustDirectSubmissionTimeoutOnThrottleAndAcLineStatusEnabled() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-24 14:29:49 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2024-03-22 11:18:35 +00:00
|
|
|
TimeoutParams ProductHelperHw<gfxProduct>::getDirectSubmissionControllerTimeoutParams(bool acLineConnected, QueueThrottle queueThrottle) const {
|
|
|
|
|
TimeoutParams params{};
|
|
|
|
|
params.maxTimeout = std::chrono::microseconds{DirectSubmissionController::defaultTimeout};
|
|
|
|
|
params.timeout = std::chrono::microseconds{DirectSubmissionController::defaultTimeout};
|
|
|
|
|
params.timeoutDivisor = 1;
|
|
|
|
|
params.directSubmissionEnabled = true;
|
|
|
|
|
return params;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isForceEmuInt32DivRemSPWARequired(const HardwareInfo &hwInfo) const {
|
2021-09-24 14:29:49 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::is3DPipelineSelectWARequired() const {
|
2021-09-24 14:29:49 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-09-28 10:54:52 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isStorageInfoAdjustmentRequired() const {
|
2021-09-28 10:54:52 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-10-13 13:30:45 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isBlitterForImagesSupported() const {
|
2021-10-13 13:30:45 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2021-11-30 10:19:27 +00:00
|
|
|
|
2023-02-05 17:20:25 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isPageFaultSupported() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-07 15:11:08 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::blitEnqueueAllowed() const {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2023-02-26 15:46:10 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isKmdMigrationSupported() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-08 18:37:35 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isDisableScratchPagesSupported() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-20 14:37:33 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isDcFlushAllowed() const {
|
2024-03-14 10:15:48 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
bool dcFlushAllowed = GfxProduct::isDcFlushAllowed;
|
2024-03-12 13:16:19 +00:00
|
|
|
|
|
|
|
|
if (debugManager.flags.AllowDcFlush.get() != -1) {
|
|
|
|
|
dcFlushAllowed = debugManager.flags.AllowDcFlush.get();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return dcFlushAllowed;
|
2021-12-20 14:37:33 +00:00
|
|
|
}
|
|
|
|
|
|
2024-04-12 11:05:44 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isDcFlushMitigated() const {
|
|
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
bool dcFlushAllowed = GfxProduct::isDcFlushAllowed;
|
|
|
|
|
return this->isDcFlushAllowed() != dcFlushAllowed;
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-15 12:46:28 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::overridePatAndUsageForDcFlushMitigation(AllocationType allocationType) const {
|
|
|
|
|
return this->isDcFlushMitigated() &&
|
|
|
|
|
(allocationType == AllocationType::externalHostPtr ||
|
|
|
|
|
allocationType == AllocationType::bufferHostMemory ||
|
|
|
|
|
allocationType == AllocationType::mapAllocation ||
|
|
|
|
|
allocationType == AllocationType::svmCpu ||
|
|
|
|
|
allocationType == AllocationType::svmZeroCopy ||
|
|
|
|
|
allocationType == AllocationType::internalHostMemory ||
|
|
|
|
|
allocationType == AllocationType::timestampPacketTagBuffer ||
|
|
|
|
|
allocationType == AllocationType::tagBuffer ||
|
|
|
|
|
allocationType == AllocationType::gpuTimestampDeviceBuffer);
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-30 10:19:27 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const {
|
2021-11-30 10:19:27 +00:00
|
|
|
return hwInfo.gtSystemInfo.MaxSubSlicesSupported;
|
|
|
|
|
}
|
2021-11-26 09:40:06 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-06-24 00:35:30 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getUuid(NEO::DriverModel *driverModel, const uint32_t subDeviceCount, const uint32_t deviceIndex, std::array<uint8_t, ProductHelper::uuidSize> &uuid) const {
|
2021-11-26 09:40:06 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2022-02-17 21:44:55 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isFlushTaskAllowed() const {
|
2022-11-17 00:02:16 +00:00
|
|
|
return true;
|
2022-02-17 21:44:55 +00:00
|
|
|
}
|
2022-03-07 14:31:53 +00:00
|
|
|
|
2022-03-09 15:39:57 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isSystolicModeConfigurable(const HardwareInfo &hwInfo) const {
|
2022-09-14 13:03:02 +00:00
|
|
|
return getPipelineSelectPropertySystolicModeSupport();
|
2022-03-09 15:39:57 +00:00
|
|
|
}
|
|
|
|
|
|
2022-09-20 15:46:54 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isCopyEngineSelectorEnabled(const HardwareInfo &hwInfo) const {
|
2022-09-20 15:46:54 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-09 15:39:57 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isGlobalFenceInCommandStreamRequired(const HardwareInfo &hwInfo) const {
|
2022-03-09 15:39:57 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-05 10:25:16 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isGlobalFenceInDirectSubmissionRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
|
return ProductHelperHw<gfxProduct>::isGlobalFenceInCommandStreamRequired(hwInfo);
|
2022-07-05 10:25:16 +00:00
|
|
|
};
|
|
|
|
|
|
2022-03-09 15:39:57 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isAdjustProgrammableIdPreferredSlmSizeRequired(const HardwareInfo &hwInfo) const {
|
2022-03-09 15:39:57 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getThreadEuRatioForScratch(const HardwareInfo &hwInfo) const {
|
2022-03-21 17:44:02 +00:00
|
|
|
return 8u;
|
2022-03-09 15:39:57 +00:00
|
|
|
}
|
|
|
|
|
|
2023-01-09 14:45:56 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
size_t ProductHelperHw<gfxProduct>::getSvmCpuAlignment() const {
|
2023-07-10 18:22:39 +00:00
|
|
|
return MemoryConstants::pageSize2M;
|
2023-01-09 14:45:56 +00:00
|
|
|
}
|
|
|
|
|
|
2022-03-09 15:39:57 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isComputeDispatchAllWalkerEnableInCfeStateRequired(const HardwareInfo &hwInfo) const {
|
2022-09-02 14:23:24 +00:00
|
|
|
return getFrontEndPropertyComputeDispatchAllWalkerSupport();
|
2022-03-09 15:39:57 +00:00
|
|
|
}
|
|
|
|
|
|
2022-04-11 17:13:44 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isVmBindPatIndexProgrammingSupported() const {
|
2022-04-11 17:13:44 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-30 16:00:43 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isIpSamplingSupported(const HardwareInfo &hwInfo) const {
|
2022-03-30 16:00:43 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-26 14:28:18 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isGrfNumReportedWithScm() const {
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ForceGrfNumProgrammingWithScm.get() != -1) {
|
|
|
|
|
return debugManager.flags.ForceGrfNumProgrammingWithScm.get();
|
2022-04-29 14:33:41 +00:00
|
|
|
}
|
2022-12-12 16:43:41 +00:00
|
|
|
return ProductHelperHw<gfxProduct>::getScmPropertyLargeGrfModeSupport();
|
2022-04-26 14:28:18 +00:00
|
|
|
}
|
|
|
|
|
|
2022-05-16 20:34:53 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isThreadArbitrationPolicyReportedWithScm() const {
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ForceThreadArbitrationPolicyProgrammingWithScm.get() != -1) {
|
|
|
|
|
return debugManager.flags.ForceThreadArbitrationPolicyProgrammingWithScm.get();
|
2022-05-16 20:34:53 +00:00
|
|
|
}
|
2022-12-12 16:43:41 +00:00
|
|
|
return ProductHelperHw<gfxProduct>::getScmPropertyThreadArbitrationPolicySupport();
|
2022-05-16 20:34:53 +00:00
|
|
|
}
|
|
|
|
|
|
2022-05-10 17:38:03 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2024-03-07 16:30:14 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isFlatRingBufferSupported() const {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isCooperativeEngineSupported(const HardwareInfo &hwInfo) const {
|
2022-05-10 17:38:03 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-02 13:54:24 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isTilePlacementResourceWaRequired(const HardwareInfo &hwInfo) const {
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ForceTile0PlacementForTile1ResourcesWaActive.get() != -1) {
|
|
|
|
|
return debugManager.flags.ForceTile0PlacementForTile1ResourcesWaActive.get();
|
2022-05-02 13:54:24 +00:00
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::allowMemoryPrefetch(const HardwareInfo &hwInfo) const {
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.EnableMemoryPrefetch.get() != -1) {
|
|
|
|
|
return !!debugManager.flags.EnableMemoryPrefetch.get();
|
2022-05-02 13:54:24 +00:00
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isBcsReportWaRequired(const HardwareInfo &hwInfo) const {
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.DoNotReportTile1BscWaActive.get() != -1) {
|
|
|
|
|
return debugManager.flags.DoNotReportTile1BscWaActive.get();
|
2022-05-02 13:54:24 +00:00
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-20 15:05:27 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isBlitSplitEnqueueWARequired(const HardwareInfo &hwInfo) const {
|
2022-07-20 15:05:27 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-02 13:54:24 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-03-31 13:25:38 +02:00
|
|
|
bool ProductHelperHw<gfxProduct>::isBlitCopyRequiredForLocalMemory(const RootDeviceEnvironment &rootDeviceEnvironment, const GraphicsAllocation &allocation) const {
|
2023-01-26 16:21:09 +00:00
|
|
|
auto &productHelper = rootDeviceEnvironment.getHelper<ProductHelper>();
|
|
|
|
|
auto &hwInfo = *rootDeviceEnvironment.getHardwareInfo();
|
2022-05-02 13:54:24 +00:00
|
|
|
return allocation.isAllocatedInLocalMemoryPool() &&
|
2023-12-19 10:17:17 +00:00
|
|
|
(productHelper.getLocalMemoryAccessMode(hwInfo) == LocalMemoryAccessMode::cpuAccessDisallowed ||
|
2022-05-02 13:54:24 +00:00
|
|
|
!allocation.isAllocationLockable());
|
|
|
|
|
}
|
2022-05-23 17:03:53 +00:00
|
|
|
|
2023-01-27 12:37:09 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isInitDeviceWithFirstSubmissionRequired(const HardwareInfo &hwInfo) const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-23 17:03:53 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isImplicitScalingSupported(const HardwareInfo &hwInfo) const {
|
2022-05-23 17:03:53 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2022-05-25 15:35:43 +00:00
|
|
|
|
2022-06-13 14:13:34 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isCpuCopyNecessary(const void *ptr, MemoryManager *memoryManager) const {
|
2022-06-13 14:13:34 +00:00
|
|
|
return false;
|
2023-01-30 16:27:42 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isUnlockingLockedPtrNecessary(const HardwareInfo &hwInfo) const {
|
|
|
|
|
return false;
|
2022-06-13 14:13:34 +00:00
|
|
|
}
|
2022-06-14 18:17:04 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-05-05 15:26:09 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isAdjustWalkOrderAvailable(const ReleaseHelper *releaseHelper) const {
|
|
|
|
|
if (releaseHelper) {
|
|
|
|
|
return releaseHelper->isAdjustWalkOrderAvailable();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2022-06-22 13:13:37 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getL1CachePolicy(bool isDebuggerActive) const {
|
2022-08-23 11:48:18 +00:00
|
|
|
return L1CachePolicyHelper<gfxProduct>::getL1CachePolicy(isDebuggerActive);
|
2022-06-22 13:13:37 +00:00
|
|
|
}
|
|
|
|
|
|
2022-07-25 12:13:27 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::adjustNumberOfCcs(HardwareInfo &hwInfo) const {}
|
2022-08-10 11:52:06 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isPrefetcherDisablingInDirectSubmissionRequired() const {
|
2022-08-10 11:52:06 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
2022-08-22 14:53:48 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isStatefulAddressingModeSupported() const {
|
2022-08-22 14:53:48 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
2023-02-16 11:10:34 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-09-14 13:53:58 +00:00
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getNumberOfPartsInTileForConcurrentKernel(uint32_t ccsCount) const {
|
2023-02-16 11:10:34 +00:00
|
|
|
return 1u;
|
|
|
|
|
}
|
2022-08-23 04:02:33 +00:00
|
|
|
|
2022-09-12 12:50:07 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isPlatformQuerySupported() const {
|
2022-09-12 12:50:07 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-28 09:25:16 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isNonBlockingGpuSubmissionSupported() const {
|
2022-10-28 09:25:16 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-29 13:28:05 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-03-22 14:45:04 +01:00
|
|
|
bool ProductHelperHw<gfxProduct>::isResolveDependenciesByPipeControlsSupported(const HardwareInfo &hwInfo, bool isOOQ, TaskCountType queueTaskCount, const CommandStreamReceiver &queueCsr) const {
|
2022-11-29 13:28:05 +00:00
|
|
|
constexpr bool enabled = false;
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ResolveDependenciesViaPipeControls.get() != -1) {
|
|
|
|
|
return debugManager.flags.ResolveDependenciesViaPipeControls.get() == 1;
|
2022-11-29 13:28:05 +00:00
|
|
|
}
|
|
|
|
|
return enabled;
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-08 11:56:06 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isMidThreadPreemptionDisallowedForRayTracingKernels() const {
|
2022-12-08 11:56:06 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-12 15:06:59 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-15 12:13:57 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::fillScmPropertiesSupportStructureBase(StateComputeModePropertiesSupport &propertiesSupport) const {
|
2022-08-23 04:02:33 +00:00
|
|
|
propertiesSupport.coherencyRequired = getScmPropertyCoherencyRequiredSupport();
|
|
|
|
|
propertiesSupport.threadArbitrationPolicy = isThreadArbitrationPolicyReportedWithScm();
|
|
|
|
|
propertiesSupport.largeGrfMode = isGrfNumReportedWithScm();
|
|
|
|
|
propertiesSupport.zPassAsyncComputeThreadLimit = getScmPropertyZPassAsyncComputeThreadLimitSupport();
|
|
|
|
|
propertiesSupport.pixelAsyncComputeThreadLimit = getScmPropertyPixelAsyncComputeThreadLimitSupport();
|
|
|
|
|
propertiesSupport.devicePreemptionMode = getScmPropertyDevicePreemptionModeSupport();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-15 12:13:57 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::fillScmPropertiesSupportStructure(StateComputeModePropertiesSupport &propertiesSupport) const {
|
2022-08-23 04:02:33 +00:00
|
|
|
fillScmPropertiesSupportStructureBase(propertiesSupport);
|
|
|
|
|
}
|
|
|
|
|
|
2023-04-27 14:13:51 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
void ProductHelperHw<gfxProduct>::fillScmPropertiesSupportStructureExtra(StateComputeModePropertiesSupport &propertiesSupport, const RootDeviceEnvironment &rootDeviceEnvironment) const {}
|
|
|
|
|
|
2022-08-23 04:02:33 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getScmPropertyThreadArbitrationPolicySupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::threadArbitrationPolicy;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getScmPropertyCoherencyRequiredSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::coherencyRequired;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getScmPropertyZPassAsyncComputeThreadLimitSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::zPassAsyncComputeThreadLimit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getScmPropertyPixelAsyncComputeThreadLimitSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::pixelAsyncComputeThreadLimit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getScmPropertyLargeGrfModeSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::largeGrfMode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getScmPropertyDevicePreemptionModeSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateComputeModeStateSupport::devicePreemptionMode;
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-22 17:17:04 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getStateBaseAddressPropertyBindingTablePoolBaseAddressSupport() const {
|
2022-11-22 17:17:04 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::StateBaseAddressStateSupport::bindingTablePoolBaseAddress;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-01-23 14:08:25 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::fillStateBaseAddressPropertiesSupportStructure(StateBaseAddressPropertiesSupport &propertiesSupport) const {
|
2022-11-22 17:17:04 +00:00
|
|
|
propertiesSupport.bindingTablePoolBaseAddress = getStateBaseAddressPropertyBindingTablePoolBaseAddressSupport();
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-23 04:02:33 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getPreemptionDbgPropertyPreemptionModeSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::PreemptionDebugSupport::preemptionMode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getPreemptionDbgPropertyStateSipSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::PreemptionDebugSupport::stateSip;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getPreemptionDbgPropertyCsrSurfaceSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::PreemptionDebugSupport::csrSurface;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getFrontEndPropertyScratchSizeSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::FrontEndStateSupport::scratchSize;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getFrontEndPropertyPrivateScratchSizeSupport() const {
|
2022-08-23 04:02:33 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::FrontEndStateSupport::privateScratchSize;
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-29 20:06:04 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getFrontEndPropertyComputeDispatchAllWalkerSupport() const {
|
2022-08-29 20:06:04 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::FrontEndStateSupport::computeDispatchAllWalker;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getFrontEndPropertyDisableEuFusionSupport() const {
|
2022-08-29 20:06:04 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::FrontEndStateSupport::disableEuFusion;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getFrontEndPropertyDisableOverDispatchSupport() const {
|
2022-08-29 20:06:04 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::FrontEndStateSupport::disableOverdispatch;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getFrontEndPropertySingleSliceDispatchCcsModeSupport() const {
|
2022-08-29 20:06:04 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::FrontEndStateSupport::singleSliceDispatchCcsMode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-15 12:13:57 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::fillFrontEndPropertiesSupportStructure(FrontEndPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) const {
|
2022-09-02 14:23:24 +00:00
|
|
|
propertiesSupport.computeDispatchAllWalker = isComputeDispatchAllWalkerEnableInCfeStateRequired(hwInfo);
|
2022-08-29 20:06:04 +00:00
|
|
|
propertiesSupport.disableEuFusion = getFrontEndPropertyDisableEuFusionSupport();
|
2022-09-22 01:44:06 +00:00
|
|
|
propertiesSupport.disableOverdispatch = isDisableOverdispatchAvailable(hwInfo);
|
2022-08-29 20:06:04 +00:00
|
|
|
propertiesSupport.singleSliceDispatchCcsMode = getFrontEndPropertySingleSliceDispatchCcsModeSupport();
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-12 19:11:56 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getPipelineSelectPropertyMediaSamplerDopClockGateSupport() const {
|
2022-09-12 19:11:56 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::PipelineSelectStateSupport::mediaSamplerDopClockGate;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-12 16:43:41 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::getPipelineSelectPropertySystolicModeSupport() const {
|
2022-09-12 19:11:56 +00:00
|
|
|
using GfxProduct = typename HwMapper<gfxProduct>::GfxProduct;
|
|
|
|
|
return GfxProduct::PipelineSelectStateSupport::systolicMode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2022-12-15 12:13:57 +00:00
|
|
|
void ProductHelperHw<gfxProduct>::fillPipelineSelectPropertiesSupportStructure(PipelineSelectPropertiesSupport &propertiesSupport, const HardwareInfo &hwInfo) const {
|
2022-09-12 19:11:56 +00:00
|
|
|
propertiesSupport.mediaSamplerDopClockGate = getPipelineSelectPropertyMediaSamplerDopClockGateSupport();
|
2022-09-14 13:03:02 +00:00
|
|
|
propertiesSupport.systolicMode = isSystolicModeConfigurable(hwInfo);
|
2022-09-12 19:11:56 +00:00
|
|
|
}
|
|
|
|
|
|
2023-01-26 09:55:59 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-03-08 10:42:29 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isFusedEuDisabledForDpas(bool kernelHasDpasInstructions, const uint32_t *lws, const uint32_t *groupCount, const HardwareInfo &hwInfo) const {
|
2023-01-26 09:55:59 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-03-08 10:42:29 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isCalculationForDisablingEuFusionWithDpasNeeded(const HardwareInfo &hwInfo) const {
|
2023-01-26 09:55:59 +00:00
|
|
|
return false;
|
|
|
|
|
}
|
2023-02-28 21:08:09 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isDummyBlitWaRequired() const {
|
|
|
|
|
return false;
|
2023-07-24 14:35:07 +00:00
|
|
|
}
|
|
|
|
|
|
2023-03-06 15:12:14 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::is48bResourceNeededForRayTracing() const {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-15 13:53:53 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-07-25 14:44:02 +02:00
|
|
|
bool ProductHelperHw<gfxProduct>::isLinearStoragePreferred(bool isImage1d, bool forceLinearStorage) const {
|
2023-11-30 08:32:25 +00:00
|
|
|
if (debugManager.flags.ForceLinearImages.get() || forceLinearStorage || isImage1d) {
|
2023-03-15 13:53:53 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2023-04-27 14:13:51 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isTranslationExceptionSupported() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-17 19:21:34 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
uint32_t ProductHelperHw<gfxProduct>::getMaxNumSamplers() const {
|
|
|
|
|
return 16u;
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-29 15:18:31 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::disableL3CacheForDebug(const HardwareInfo &) const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-09 15:23:03 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isSkippingStatefulInformationRequired(const KernelDescriptor &kernelDescriptor) const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-28 11:37:11 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2023-09-04 14:11:37 +00:00
|
|
|
bool ProductHelperHw<gfxProduct>::isResolvingSubDeviceIDNeeded(const ReleaseHelper *releaseHelper) const {
|
2023-08-28 11:37:11 +00:00
|
|
|
if (releaseHelper) {
|
2023-09-04 14:11:37 +00:00
|
|
|
return releaseHelper->isResolvingSubDeviceIDNeeded();
|
2023-08-28 11:37:11 +00:00
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-29 14:15:08 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2024-02-15 15:45:12 +00:00
|
|
|
uint64_t ProductHelperHw<gfxProduct>::overridePatIndex(bool isUncachedType, uint64_t patIndex, AllocationType allocationType) const {
|
2023-08-29 14:15:08 +00:00
|
|
|
return patIndex;
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-22 16:06:50 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
std::vector<uint32_t> ProductHelperHw<gfxProduct>::getSupportedNumGrfs(const ReleaseHelper *releaseHelper) const {
|
|
|
|
|
if (releaseHelper) {
|
|
|
|
|
return releaseHelper->getSupportedNumGrfs();
|
|
|
|
|
}
|
|
|
|
|
return {128u};
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-04 23:40:40 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
aub_stream::EngineType ProductHelperHw<gfxProduct>::getDefaultCopyEngine() const {
|
|
|
|
|
return aub_stream::EngineType::ENGINE_BCS;
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-20 01:39:14 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
void ProductHelperHw<gfxProduct>::adjustEngineGroupType(EngineGroupType &engineGroupType) const {}
|
|
|
|
|
|
2024-01-25 17:07:26 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
std::optional<GfxMemoryAllocationMethod> ProductHelperHw<gfxProduct>::getPreferredAllocationMethod(AllocationType allocationType) const {
|
|
|
|
|
return {};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isCachingOnCpuAvailable() const {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-31 14:17:57 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isNewCoherencyModelSupported() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2024-02-06 10:04:56 +00:00
|
|
|
|
2024-03-27 12:52:30 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::supportReadOnlyAllocations() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-06 10:04:56 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
2024-04-24 14:00:07 +00:00
|
|
|
const std::vector<uint32_t> ProductHelperHw<gfxProduct>::getSupportedLocalDispatchSizes(const HardwareInfo &hwInfo) const {
|
2024-02-06 10:04:56 +00:00
|
|
|
return {};
|
|
|
|
|
}
|
2024-04-05 02:02:14 +00:00
|
|
|
|
2024-04-08 09:32:11 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isDeviceToHostCopySignalingFenceRequired() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-05 02:02:14 +00:00
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
size_t ProductHelperHw<gfxProduct>::getMaxFillPaternSizeForCopyEngine() const {
|
|
|
|
|
return 4 * sizeof(uint32_t);
|
|
|
|
|
}
|
2024-04-29 11:22:46 +00:00
|
|
|
|
|
|
|
|
template <PRODUCT_FAMILY gfxProduct>
|
|
|
|
|
bool ProductHelperHw<gfxProduct>::isAvailableExtendedScratch() const {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2019-03-26 11:59:46 +01:00
|
|
|
} // namespace NEO
|