/* * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/helpers/api_specific_config.h" #include "shared/source/helpers/driver_model_type.h" #include "shared/source/helpers/hw_helper.h" #include "shared/source/helpers/preamble.h" #include "shared/source/os_interface/hw_info_config.h" namespace NEO { template int HwInfoConfigHw::configureHardwareCustom(HardwareInfo *hwInfo, OSInterface *osIface) { enableCompression(hwInfo); enableBlitterOperationsSupport(hwInfo); return 0; } template void HwInfoConfigHw::getKernelExtendedProperties(uint32_t *fp16, uint32_t *fp32, uint32_t *fp64) { *fp16 = 0u; *fp32 = 0u; *fp64 = 0u; } template std::vector HwInfoConfigHw::getKernelSupportedThreadArbitrationPolicies() { using GfxFamily = typename HwMapper::GfxFamily; return PreambleHelper::getSupportedThreadArbitrationPolicies(); } template void HwInfoConfigHw::convertTimestampsFromOaToCsDomain(uint64_t ×tampData){}; template void HwInfoConfigHw::adjustPlatformForProductFamily(HardwareInfo *hwInfo) {} template void HwInfoConfigHw::adjustSamplerState(void *sampler, const HardwareInfo &hwInfo) {} template void HwInfoConfigHw::enableBlitterOperationsSupport(HardwareInfo *hwInfo) { hwInfo->capabilityTable.blitterOperationsSupported = obtainBlitterPreference(*hwInfo); if (DebugManager.flags.EnableBlitterOperationsSupport.get() != -1) { hwInfo->capabilityTable.blitterOperationsSupported = !!DebugManager.flags.EnableBlitterOperationsSupport.get(); } } template uint64_t HwInfoConfigHw::getDeviceMemCapabilities() { return (UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS); } template uint64_t HwInfoConfigHw::getSingleDeviceSharedMemCapabilities() { return (UNIFIED_SHARED_MEMORY_ACCESS | UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS); } template bool HwInfoConfigHw::getHostMemCapabilitiesSupported(const HardwareInfo *hwInfo) { return true; } template uint64_t HwInfoConfigHw::getHostMemCapabilities(const HardwareInfo *hwInfo) { bool supported = getHostMemCapabilitiesSupported(hwInfo); if (DebugManager.flags.EnableHostUsmSupport.get() != -1) { supported = !!DebugManager.flags.EnableHostUsmSupport.get(); } return (supported ? getHostMemCapabilitiesValue() : 0); } template uint64_t HwInfoConfigHw::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); } template uint32_t HwInfoConfigHw::getDeviceMemoryMaxClkRate(const HardwareInfo *hwInfo) { return 0u; } template bool HwInfoConfigHw::isAdditionalStateBaseAddressWARequired(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::isMaxThreadsForWorkgroupWARequired(const HardwareInfo &hwInfo) const { return false; } template uint32_t HwInfoConfigHw::getMaxThreadsForWorkgroup(const HardwareInfo &hwInfo, uint32_t maxNumEUsPerSubSlice) const { uint32_t numThreadsPerEU = hwInfo.gtSystemInfo.ThreadCount / hwInfo.gtSystemInfo.EUCount; return maxNumEUsPerSubSlice * numThreadsPerEU; } template void HwInfoConfigHw::setForceNonCoherent(void *const commandPtr, const StateComputeModeProperties &properties) {} template bool HwInfoConfigHw::isPageTableManagerSupported(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::overrideGfxPartitionLayoutForWsl() const { return false; } template uint32_t HwInfoConfigHw::getHwRevIdFromStepping(uint32_t stepping, const HardwareInfo &hwInfo) const { return CommonConstants::invalidStepping; } template uint32_t HwInfoConfigHw::getSteppingFromHwRevId(const HardwareInfo &hwInfo) const { return CommonConstants::invalidStepping; } template uint32_t HwInfoConfigHw::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; } } template void HwInfoConfigHw::setAdditionalPipelineSelectFields(void *pipelineSelectCmd, const PipelineSelectArgs &pipelineSelectArgs, const HardwareInfo &hwInfo) {} template bool HwInfoConfigHw::isDefaultEngineTypeAdjustmentRequired(const HardwareInfo &hwInfo) const { return false; } template std::string HwInfoConfigHw::getDeviceMemoryName() const { return "DDR"; } template bool HwInfoConfigHw::isDisableOverdispatchAvailable(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::allowCompression(const HardwareInfo &hwInfo) const { return true; } template bool HwInfoConfigHw::allowStatelessCompression(const HardwareInfo &hwInfo) const { if (!NEO::ApiSpecificConfig::isStatelessCompressionSupported()) { return false; } if (DebugManager.flags.EnableStatelessCompression.get() != -1) { return static_cast(DebugManager.flags.EnableStatelessCompression.get()); } return false; } template LocalMemoryAccessMode HwInfoConfigHw::getDefaultLocalMemoryAccessMode(const HardwareInfo &hwInfo) const { return LocalMemoryAccessMode::Default; } template LocalMemoryAccessMode HwInfoConfigHw::getLocalMemoryAccessMode(const HardwareInfo &hwInfo) const { switch (static_cast(DebugManager.flags.ForceLocalMemoryAccessMode.get())) { case LocalMemoryAccessMode::Default: case LocalMemoryAccessMode::CpuAccessAllowed: case LocalMemoryAccessMode::CpuAccessDisallowed: return static_cast(DebugManager.flags.ForceLocalMemoryAccessMode.get()); } return getDefaultLocalMemoryAccessMode(hwInfo); } template bool HwInfoConfigHw::isAllocationSizeAdjustmentRequired(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::isPrefetchDisablingRequired(const HardwareInfo &hwInfo) const { return false; } template std::pair HwInfoConfigHw::isPipeControlPriorToNonPipelinedStateCommandsWARequired(const HardwareInfo &hwInfo, bool isRcs) const { return {false, false}; } template bool HwInfoConfigHw::isAdditionalMediaSamplerProgrammingRequired() const { return false; } template bool HwInfoConfigHw::isInitialFlagsProgrammingRequired() const { return false; } template bool HwInfoConfigHw::isReturnedCmdSizeForMediaSamplerAdjustmentRequired() const { return false; } template bool HwInfoConfigHw::extraParametersInvalid(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::pipeControlWARequired(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::imagePitchAlignmentWARequired(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::isDirectSubmissionSupported(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::isForceEmuInt32DivRemSPWARequired(const HardwareInfo &hwInfo) const { return false; } template bool HwInfoConfigHw::is3DPipelineSelectWARequired() const { return false; } template bool HwInfoConfigHw::isStorageInfoAdjustmentRequired() const { return false; } template bool HwInfoConfigHw::isBlitterForImagesSupported() const { return false; } template bool HwInfoConfigHw::isDcFlushAllowed() const { return true; } template uint32_t HwInfoConfigHw::computeMaxNeededSubSliceSpace(const HardwareInfo &hwInfo) const { return hwInfo.gtSystemInfo.MaxSubSlicesSupported; } template bool HwInfoConfigHw::getUuid(Device *device, std::array &uuid) const { return false; } template bool HwInfoConfigHw::isFlushTaskAllowed() const { return false; } template bool HwInfoConfigHw::programAllStateComputeCommandFields() const { return false; } } // namespace NEO