1 /* 2 * Copyright (C) 2020 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #pragma once 9 #include "level_zero/core/source/device/device.h" 10 #include <level_zero/zes_api.h> 11 12 #include <vector> 13 14 struct _zes_mem_handle_t { 15 virtual ~_zes_mem_handle_t() = default; 16 }; 17 18 namespace L0 { 19 20 struct OsSysman; 21 22 class Memory : _zes_mem_handle_t { 23 public: 24 virtual ze_result_t memoryGetProperties(zes_mem_properties_t *pProperties) = 0; 25 virtual ze_result_t memoryGetBandwidth(zes_mem_bandwidth_t *pBandwidth) = 0; 26 virtual ze_result_t memoryGetState(zes_mem_state_t *pState) = 0; 27 fromHandle(zes_mem_handle_t handle)28 static Memory *fromHandle(zes_mem_handle_t handle) { 29 return static_cast<Memory *>(handle); 30 } toHandle()31 inline zes_mem_handle_t toHandle() { return this; } 32 bool initSuccess = false; 33 }; 34 35 struct MemoryHandleContext { MemoryHandleContextMemoryHandleContext36 MemoryHandleContext(OsSysman *pOsSysman) : pOsSysman(pOsSysman){}; 37 ~MemoryHandleContext(); 38 39 ze_result_t init(std::vector<ze_device_handle_t> &deviceHandles); 40 41 ze_result_t memoryGet(uint32_t *pCount, zes_mem_handle_t *phMemory); 42 43 OsSysman *pOsSysman = nullptr; 44 bool isLmemSupported = false; 45 std::vector<Memory *> handleList = {}; 46 47 private: 48 void createHandle(ze_device_handle_t deviceHandle); 49 }; 50 51 } // namespace L0 52