VBoxMPMisc.h revision e6ad2e18e663b076aeabfec994947514566a7acc
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * VBox WDDM Miniport driver
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * Copyright (C) 2011 Oracle Corporation
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * available from http://www.virtualbox.org. This file is free software;
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#include "../../common/VBoxVideoTools.h"
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsyncDECLINLINE(void) vboxVideoLeDetach(LIST_ENTRY *pList, LIST_ENTRY *pDstList)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* pDstList->Flink & pDstList->Blink point to the "real| entries, never to pList
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync * since we've checked IsListEmpty(pList) above */
614cbe11a7e5588dc8d369e223174b1441a09359vboxsync} VBOXWDDM_HTABLE_ITERATOR, *PVBOXWDDM_HTABLE_ITERATOR;
614cbe11a7e5588dc8d369e223174b1441a09359vboxsyncVOID vboxWddmHTableIterInit(PVBOXWDDM_HTABLE pTbl, PVBOXWDDM_HTABLE_ITERATOR pIter);
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsyncPVOID vboxWddmHTableIterNext(PVBOXWDDM_HTABLE_ITERATOR pIter, VBOXWDDM_HANDLE *phHandle);
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsyncBOOL vboxWddmHTableIterHasNext(PVBOXWDDM_HTABLE_ITERATOR pIter);
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsyncPVOID vboxWddmHTableIterRemoveCur(PVBOXWDDM_HTABLE_ITERATOR pIter);
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsyncNTSTATUS vboxWddmHTableCreate(PVBOXWDDM_HTABLE pTbl, uint32_t cSize);
7666082b743c5e146a8cee6cc794ff4bc3fd0ffdvboxsyncNTSTATUS vboxWddmHTableRealloc(PVBOXWDDM_HTABLE pTbl, uint32_t cNewSize);
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsyncVBOXWDDM_HANDLE vboxWddmHTablePut(PVBOXWDDM_HTABLE pTbl, PVOID pvData);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncPVOID vboxWddmHTableRemove(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncPVOID vboxWddmHTableGet(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncDECLINLINE(BOOLEAN) vboxWddmSwapchainRetain(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncDECLINLINE(VOID) vboxWddmSwapchainRelease(PVBOXWDDM_SWAPCHAIN pSwapchain);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncPVBOXWDDM_SWAPCHAIN vboxWddmSwapchainRetainByAlloc(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncVOID vboxWddmSwapchainAllocRemove(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain, PVBOXWDDM_ALLOCATION pAlloc);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncBOOLEAN vboxWddmSwapchainAllocAdd(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain, PVBOXWDDM_ALLOCATION pAlloc);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncVOID vboxWddmSwapchainAllocRemoveAll(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncVOID vboxWddmSwapchainDestroy(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncVOID vboxWddmSwapchainCtxDestroyAll(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmSwapchainCtxEscape(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext, PVBOXDISPIFESCAPE_SWAPCHAININFO pSwapchainInfo, UINT cbSize);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmSwapchainCtxInit(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncVOID vboxWddmSwapchainCtxTerm(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegQueryDisplaySettingsKeyName(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId,
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegDisplaySettingsQueryRelX(HANDLE hKey, int * pResult);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegDisplaySettingsQueryRelY(HANDLE hKey, int * pResult);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegQueryVideoGuidString(ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegQueryDrvKeyName(PVBOXMP_DEVEXT pDevExt, ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
f351fab06d1e1507b72f5c574df71193061fd393vboxsyncNTSTATUS vboxWddmRegOpenKey(OUT PHANDLE phKey, IN PWCHAR pName, IN ACCESS_MASK fAccess);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegQueryValueDword(IN HANDLE hKey, IN PWCHAR pName, OUT PDWORD pDword);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxWddmRegSetValueDword(IN HANDLE hKey, IN PWCHAR pName, OUT DWORD val);
b1c3cdef473df2fbc621d5da81acc82dbfb8a11avboxsyncUNICODE_STRING* vboxWddmVGuidGet(PVBOXMP_DEVEXT pDevExt);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsynctypedef struct VBOXWDDM_MM
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncVOID vboxMmFree(PVBOXWDDM_MM pMm, UINT iPage, UINT cPages);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* synch lock */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync// PHYSICAL_ADDRESS PhData;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync /* synch lock */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync} VBOXVIDEOCM_ALLOC_CONTEXT, *PVBOXVIDEOCM_ALLOC_CONTEXT;
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS vboxVideoAMgrCreate(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_MGR pMgr, uint32_t offData, uint32_t cbData);
aaeb2e2f6ed5b164f1dec9a16a7adeb84f64cf31vboxsyncNTSTATUS vboxVideoAMgrDestroy(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_MGR pMgr);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsyncNTSTATUS vboxVideoAMgrCtxCreate(PVBOXVIDEOCM_ALLOC_MGR pMgr, PVBOXVIDEOCM_ALLOC_CONTEXT pCtx);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsyncNTSTATUS vboxVideoAMgrCtxDestroy(PVBOXVIDEOCM_ALLOC_CONTEXT pCtx);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsyncNTSTATUS vboxVideoAMgrCtxAllocCreate(PVBOXVIDEOCM_ALLOC_CONTEXT pContext, PVBOXVIDEOCM_UM_ALLOC pUmAlloc);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsyncNTSTATUS vboxVideoAMgrCtxAllocDestroy(PVBOXVIDEOCM_ALLOC_CONTEXT pContext, VBOXDISP_KMHANDLE hSesionHandle);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsyncNTSTATUS vboxVideoAMgrCtxAllocSubmit(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_CONTEXT pContext, UINT cBuffers, VBOXWDDM_UHGSMI_BUFFER_UI_INFO_ESCAPE *paBuffers);
b74ca013e5f201a2dd371e6c438433ceac12af30vboxsyncVOID vboxWddmCounterU32Wait(uint32_t volatile * pu32, uint32_t u32Val);
72ef2b9fc5ffc01d0dabd5052d6e8baa3a952773vboxsyncNTSTATUS vboxUmdDumpBuf(PVBOXDISPIFESCAPE_DBGDUMPBUF pBuf, uint32_t cbBuffer);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync/* wine shrc handle -> allocation map */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncBOOLEAN vboxShRcTreePut(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncPVBOXWDDM_ALLOCATION vboxShRcTreeGet(PVBOXMP_DEVEXT pDevExt, HANDLE hSharedRc);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncBOOLEAN vboxShRcTreeRemove(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
42c1972c22e09797b4b24afbd0ec114ed076c37cvboxsync/* visible rects */
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncDECLINLINE(UINT) VBoxWddmVrListRectsCount(PVBOXWDDMVR_LIST pList)
22e281e75ed636601178296c6daebda8f1d17c59vboxsyncDECLINLINE(BOOLEAN) VBoxWddmVrListIsEmpty(PVBOXWDDMVR_LIST pList)
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncDECLINLINE(void) VBoxWddmVrListInit(PVBOXWDDMVR_LIST pList)
2634ec5cbf8f1fa0a968cd4664ead6df1fed730dvboxsyncvoid VBoxWddmVrListTranslate(PVBOXWDDMVR_LIST pList, LONG x, LONG y);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS VBoxWddmVrListRectsAdd(PVBOXWDDMVR_LIST pList, UINT cRects, const PRECT aRects, BOOLEAN *pfChanged);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsyncNTSTATUS VBoxWddmVrListRectsSubst(PVBOXWDDMVR_LIST pList, UINT cRects, const PRECT aRects, BOOLEAN *pfChanged);
3ecd8008b81f02a04220705ae0033142af363280vboxsyncNTSTATUS VBoxWddmVrListRectsGet(PVBOXWDDMVR_LIST pList, UINT cRects, PRECT aRects);
d408b82da0773c7e8cd4b3a01cb8a065a2c73a2dvboxsync#endif /* #ifndef ___VBoxMPMisc_h__ */