text: /*
   * Copyright (C) 2019-2020 Intel Corporation
   *
   * SPDX-License-Identifier: MIT
   *
   */
  
  #include "shared/source/gmm_helper/gmm_helper.h"
  #include "shared/source/helpers/hw_helper_base.inl"
  
  namespace NEO {
  
  template <typename GfxFamily>
  void HwHelperHw<GfxFamily>::adjustDefaultEngineType(HardwareInfo *pHwInfo) {
  }
  
  template <typename GfxFamily>
  uint32_t HwHelperHw<GfxFamily>::getComputeUnitsUsedForScratch(const HardwareInfo *pHwInfo) const {
      return pHwInfo->gtSystemInfo.MaxSubSlicesSupported * pHwInfo->gtSystemInfo.MaxEuPerSubSlice *
             pHwInfo->gtSystemInfo.ThreadCount / pHwInfo->gtSystemInfo.EUCount;
  }
  
  template <typename GfxFamily>
  void HwHelperHw<GfxFamily>::setCapabilityCoherencyFlag(const HardwareInfo *pHwInfo, bool &coherencyFlag) {
      coherencyFlag = true;
  }
  
  template <typename GfxFamily>
  bool HwHelperHw<GfxFamily>::isLocalMemoryEnabled(const HardwareInfo &hwInfo) const {
      return false;
  }
  
  template <typename GfxFamily>
  bool HwHelperHw<GfxFamily>::hvAlign4Required() const {
      return true;
  }
  
  template <typename GfxFamily>
  bool HwHelperHw<GfxFamily>::timestampPacketWriteSupported() const {
      return false;
  }
  
  template <typename GfxFamily>
  const HwHelper::EngineInstancesContainer HwHelperHw<GfxFamily>::getGpgpuEngineInstances(const HardwareInfo &hwInfo) const {
      return {aub_stream::ENGINE_RCS,
              aub_stream::ENGINE_RCS,  // low priority
              aub_stream::ENGINE_RCS}; // internal usage
  }
  
  template <typename GfxFamily>
  std::string HwHelperHw<GfxFamily>::getExtensions() const {
      return "";
  }
  
  template <typename GfxFamily>
  uint32_t HwHelperHw<GfxFamily>::getMocsIndex(const GmmHelper &gmmHelper, bool l3enabled, bool l1enabled) const {
      if (l3enabled) {
          return gmmHelper.getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER) >> 1;
      }
      return gmmHelper.getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED) >> 1;
  }
  
  template <typename GfxFamily>
  uint32_t HwHelperHw<GfxFamily>::calculateAvailableThreadCount(PRODUCT_FAMILY family, uint32_t grfCount, uint32_t euCount,
                                                                uint32_t threadsPerEu) {
      return threadsPerEu * euCount;
  }
  
  template <typename GfxFamily>
  bool HwHelperHw<GfxFamily>::isIndependentForwardProgressSupported() {
      return true;
  }
  
  template <typename GfxFamily>
  void MemorySynchronizationCommands<GfxFamily>::addPipeControlWA(LinearStream &commandStream, uint64_t gpuAddress, const HardwareInfo &hwInfo) {
  }
  
  template <typename GfxFamily>
  void MemorySynchronizationCommands<GfxFamily>::setExtraPipeControlProperties(PIPE_CONTROL &pipeControl, const HardwareInfo &hwInfo) {
  }
  
  template <typename GfxFamily>
  void MemorySynchronizationCommands<GfxFamily>::setExtraCacheFlushFields(PIPE_CONTROL &pipeControl) {
  }
  
  } // namespace NEO
  