/* * Copyright (C) 2017-2020 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/os_interface/windows/os_inc.h" #include "shared/source/os_interface/windows/os_library_win.h" #include "shared/source/os_interface/windows/thk_wrapper.h" #include #include #include namespace NEO { class Gdi { public: Gdi(); ~Gdi(){}; ThkWrapper openAdapterFromHdc; ThkWrapper openAdapterFromLuid; ThkWrapper createAllocation; ThkWrapper destroyAllocation; ThkWrapper destroyAllocation2; ThkWrapper queryAdapterInfo; ThkWrapper closeAdapter; ThkWrapper createDevice; ThkWrapper destroyDevice; ThkWrapper escape; ThkWrapper createContext; ThkWrapper destroyContext; ThkWrapper openResource; ThkWrapper openResourceFromNtHandle; ThkWrapper queryResourceInfo; ThkWrapper queryResourceInfoFromNtHandle; ThkWrapper lock; ThkWrapper unlock; ThkWrapper render; ThkWrapper createSynchronizationObject; ThkWrapper createSynchronizationObject2; ThkWrapper destroySynchronizationObject; ThkWrapper signalSynchronizationObject; ThkWrapper waitForSynchronizationObject; ThkWrapper waitForSynchronizationObjectFromCpu; ThkWrapper signalSynchronizationObjectFromCpu; ThkWrapper waitForSynchronizationObjectFromGpu; ThkWrapper signalSynchronizationObjectFromGpu; ThkWrapper createPagingQueue; ThkWrapper destroyPagingQueue; ThkWrapper lock2; ThkWrapper unlock2; ThkWrapper mapGpuVirtualAddress; ThkWrapper reserveGpuVirtualAddress; ThkWrapper freeGpuVirtualAddress; ThkWrapper updateGpuVirtualAddress; ThkWrapper submitCommand; ThkWrapper makeResident; ThkWrapper evict; ThkWrapper registerTrimNotification; ThkWrapper unregisterTrimNotification; // HW queue ThkWrapper createHwQueue; ThkWrapper destroyHwQueue; ThkWrapper submitCommandToHwQueue; // For debug purposes ThkWrapper getDeviceState; bool isInitialized() { return initialized; } MOCKABLE_VIRTUAL bool setupHwQueueProcAddresses(); protected: MOCKABLE_VIRTUAL bool getAllProcAddresses(); bool initialized; NEO::Windows::OsLibrary gdiDll; }; } // namespace NEO