/* * Copyright (C) 2019-2023 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/os_interface/linux/engine_info.h" #include "shared/source/os_interface/linux/ioctl_helper.h" #include "aubstream/engine_node.h" #include "sku_info.h" #include #include #include namespace NEO { struct RootDeviceEnvironment; struct HardwareInfo; class Drm; struct EngineInfo { public: using EngineToInstanceMap = std::map; EngineInfo(Drm *drm, const StackVec, 2> &engineClassInstancePerTile); EngineInfo(Drm *drm, const std::vector &engineInfos); EngineInfo(Drm *drm, uint32_t tileCount, const std::vector &distanceInfos, const std::vector &queryItems, const std::vector &engineInfos); ~EngineInfo() = default; const EngineClassInstance *getEngineInstance(uint32_t tile, aub_stream::EngineType engineType) const; uint32_t getEngineTileIndex(const EngineClassInstance &engine); void getListOfEnginesOnATile(uint32_t tile, std::vector &listOfEngines); std::multimap getEngineTileInfo(); std::vector engines; protected: static aub_stream::EngineType getBaseCopyEngineType(IoctlHelper *ioctlHelper, uint64_t capabilities, bool isIntegratedDevice); static void setSupportedEnginesInfo(const RootDeviceEnvironment &rootDeviceEnvironment, uint32_t numComputeEngines, const BcsInfoMask &bcsInfoMask); void assignCopyEngine(aub_stream::EngineType baseEngineType, uint32_t tileId, const EngineClassInstance &engine, BcsInfoMask &bcsInfoMask, uint32_t &numHostLinkCopyEngines, uint32_t &numScaleUpLinkCopyEngines); std::vector tileToEngineToInstanceMap; std::multimap tileToEngineMap; }; } // namespace NEO