VBoxMPMisc.h revision e637cb22e348f5665d5473dae55ed785aa7b6e9a
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * VBox WDDM Miniport driver
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * Copyright (C) 2011 Oracle Corporation
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * available from http://www.virtualbox.org. This file is free software;
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * you can redistribute it and/or modify it under the terms of the GNU
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * General Public License (GPL) as published by the Free Software
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync#include "../../common/VBoxVideoTools.h"
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncDECLINLINE(void) vboxVideoLeDetach(LIST_ENTRY *pList, LIST_ENTRY *pDstList)
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync /* pDstList->Flink & pDstList->Blink point to the "real| entries, never to pList
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync * since we've checked IsListEmpty(pList) above */
3633fa76957c4740b8d4372e0dfc938d3c3ea569vboxsync} VBOXWDDM_HTABLE_ITERATOR, *PVBOXWDDM_HTABLE_ITERATOR;
3633fa76957c4740b8d4372e0dfc938d3c3ea569vboxsyncVOID vboxWddmHTableIterInit(PVBOXWDDM_HTABLE pTbl, PVBOXWDDM_HTABLE_ITERATOR pIter);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncPVOID vboxWddmHTableIterNext(PVBOXWDDM_HTABLE_ITERATOR pIter, VBOXWDDM_HANDLE *phHandle);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncBOOL vboxWddmHTableIterHasNext(PVBOXWDDM_HTABLE_ITERATOR pIter);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncPVOID vboxWddmHTableIterRemoveCur(PVBOXWDDM_HTABLE_ITERATOR pIter);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncNTSTATUS vboxWddmHTableCreate(PVBOXWDDM_HTABLE pTbl, uint32_t cSize);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncNTSTATUS vboxWddmHTableRealloc(PVBOXWDDM_HTABLE pTbl, uint32_t cNewSize);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncVBOXWDDM_HANDLE vboxWddmHTablePut(PVBOXWDDM_HTABLE pTbl, PVOID pvData);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncPVOID vboxWddmHTableRemove(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncPVOID vboxWddmHTableGet(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncDECLINLINE(BOOLEAN) vboxWddmSwapchainRetain(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncDECLINLINE(VOID) vboxWddmSwapchainRelease(PVBOXWDDM_SWAPCHAIN pSwapchain);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncPVBOXWDDM_SWAPCHAIN vboxWddmSwapchainRetainByAlloc(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncVOID vboxWddmSwapchainAllocRemove(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain, PVBOXWDDM_ALLOCATION pAlloc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncBOOLEAN vboxWddmSwapchainAllocAdd(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain, PVBOXWDDM_ALLOCATION pAlloc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncVOID vboxWddmSwapchainAllocRemoveAll(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncVOID vboxWddmSwapchainDestroy(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncVOID vboxWddmSwapchainCtxDestroyAll(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmSwapchainCtxEscape(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext, PVBOXDISPIFESCAPE_SWAPCHAININFO pSwapchainInfo, UINT cbSize);
be196d173cf52fa33016912e4745dbe1170ac53avboxsyncNTSTATUS vboxWddmSwapchainCtxInit(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
be196d173cf52fa33016912e4745dbe1170ac53avboxsyncVOID vboxWddmSwapchainCtxTerm(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegQueryDisplaySettingsKeyName(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId,
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegDisplaySettingsQueryRelX(HANDLE hKey, int * pResult);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegDisplaySettingsQueryRelY(HANDLE hKey, int * pResult);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegQueryVideoGuidString(ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegQueryDrvKeyName(PVBOXMP_DEVEXT pDevExt, ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegOpenKey(OUT PHANDLE phKey, IN PWCHAR pName, IN ACCESS_MASK fAccess);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegQueryValueDword(IN HANDLE hKey, IN PWCHAR pName, OUT PDWORD pDword);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmRegSetValueDword(IN HANDLE hKey, IN PWCHAR pName, OUT DWORD val);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncUNICODE_STRING* vboxWddmVGuidGet(PVBOXMP_DEVEXT pDevExt);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsynctypedef struct VBOXWDDM_MM
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncVOID vboxMmFree(PVBOXWDDM_MM pMm, UINT iPage, UINT cPages);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync /* synch lock */
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync// PHYSICAL_ADDRESS PhData;
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsync /* synch lock */
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsync} VBOXVIDEOCM_ALLOC_CONTEXT, *PVBOXVIDEOCM_ALLOC_CONTEXT;
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncNTSTATUS vboxVideoAMgrCreate(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_MGR pMgr, uint32_t offData, uint32_t cbData);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxVideoAMgrDestroy(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_MGR pMgr);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxVideoAMgrCtxCreate(PVBOXVIDEOCM_ALLOC_MGR pMgr, PVBOXVIDEOCM_ALLOC_CONTEXT pCtx);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsyncNTSTATUS vboxVideoAMgrCtxDestroy(PVBOXVIDEOCM_ALLOC_CONTEXT pCtx);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxVideoAMgrCtxAllocCreate(PVBOXVIDEOCM_ALLOC_CONTEXT pContext, PVBOXVIDEOCM_UM_ALLOC pUmAlloc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxVideoAMgrCtxAllocDestroy(PVBOXVIDEOCM_ALLOC_CONTEXT pContext, VBOXDISP_KMHANDLE hSesionHandle);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxVideoAMgrCtxAllocSubmit(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_CONTEXT pContext, UINT cBuffers, VBOXWDDM_UHGSMI_BUFFER_UI_INFO_ESCAPE *paBuffers);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncVOID vboxWddmCounterU32Wait(uint32_t volatile * pu32, uint32_t u32Val);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxUmdDumpBuf(PVBOXDISPIFESCAPE_DBGDUMPBUF pBuf, uint32_t cbBuffer);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync/* wine shrc handle -> allocation map */
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncBOOLEAN vboxShRcTreePut(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncPVBOXWDDM_ALLOCATION vboxShRcTreeGet(PVBOXMP_DEVEXT pDevExt, HANDLE hSharedRc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncBOOLEAN vboxShRcTreeRemove(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsync/* visible rects */
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncDECLINLINE(UINT) VBoxWddmVrListRectsCount(PVBOXWDDMVR_LIST pList)
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncDECLINLINE(BOOLEAN) VBoxWddmVrListIsEmpty(PVBOXWDDMVR_LIST pList)
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncDECLINLINE(void) VBoxWddmVrListInit(PVBOXWDDMVR_LIST pList)
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncvoid VBoxWddmVrListTranslate(PVBOXWDDMVR_LIST pList, LONG x, LONG y);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS VBoxWddmVrListRectsAdd(PVBOXWDDMVR_LIST pList, UINT cRects, const PRECT aRects, BOOLEAN *pfChanged);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS VBoxWddmVrListRectsSubst(PVBOXWDDMVR_LIST pList, UINT cRects, const PRECT aRects, BOOLEAN *pfChanged);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS VBoxWddmVrListRectsGet(PVBOXWDDMVR_LIST pList, UINT cRects, PRECT aRects);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS vboxWddmDrvCfgInit(PUNICODE_STRING pRegStr);
be196d173cf52fa33016912e4745dbe1170ac53avboxsyncNTSTATUS VBoxWddmSlEnableVSyncNotification(PVBOXMP_DEVEXT pDevExt, BOOLEAN fEnable);
cba55d7782acd89472e03b4376591ff57fe7b80evboxsyncNTSTATUS VBoxWddmSlGetScanLine(PVBOXMP_DEVEXT pDevExt, DXGKARG_GETSCANLINE *pSl);
5fa66c0f504a87c7a177cb850c98baaa27ca340fvboxsync#endif /* #ifndef ___VBoxMPMisc_h__ */