1 /* 2 * Copyright (C) 2020-2021 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #include "level_zero/tools/source/sysman/windows/os_sysman_imp.h" 9 10 #include "shared/source/os_interface/windows/wddm/wddm.h" 11 12 namespace L0 { 13 init()14ze_result_t WddmSysmanImp::init() { 15 pDevice = Device::fromHandle(pParentSysmanDeviceImp->hCoreDevice); 16 UNRECOVERABLE_IF(nullptr == pDevice); 17 18 NEO::OSInterface &OsInterface = pDevice->getOsInterface(); 19 auto driverModel = OsInterface.getDriverModel(); 20 if (driverModel) { 21 pWddm = driverModel->as<NEO::Wddm>(); 22 } 23 pKmdSysManager = KmdSysManager::create(pWddm); 24 UNRECOVERABLE_IF(nullptr == pKmdSysManager); 25 26 return ZE_RESULT_SUCCESS; 27 } 28 getDeviceHandle()29Device *WddmSysmanImp::getDeviceHandle() { 30 return pDevice; 31 } 32 getWddm()33NEO::Wddm &WddmSysmanImp::getWddm() { 34 UNRECOVERABLE_IF(nullptr == pWddm); 35 return *pWddm; 36 } 37 getKmdSysManager()38KmdSysManager &WddmSysmanImp::getKmdSysManager() { 39 UNRECOVERABLE_IF(nullptr == pKmdSysManager); 40 return *pKmdSysManager; 41 } 42 WddmSysmanImp(SysmanDeviceImp * pParentSysmanDeviceImp)43WddmSysmanImp::WddmSysmanImp(SysmanDeviceImp *pParentSysmanDeviceImp) { 44 this->pParentSysmanDeviceImp = pParentSysmanDeviceImp; 45 } 46 ~WddmSysmanImp()47WddmSysmanImp::~WddmSysmanImp() { 48 if (nullptr != pKmdSysManager) { 49 delete pKmdSysManager; 50 pKmdSysManager = nullptr; 51 } 52 } 53 create(SysmanDeviceImp * pParentSysmanDeviceImp)54OsSysman *OsSysman::create(SysmanDeviceImp *pParentSysmanDeviceImp) { 55 WddmSysmanImp *pWddmSysmanImp = new WddmSysmanImp(pParentSysmanDeviceImp); 56 return static_cast<OsSysman *>(pWddmSysmanImp); 57 } 58 59 } // namespace L0 60