VBoxDispKmt.h revision 87150caf549846b0edba30c50dabe5092df70b5f
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync/* $Id$ */
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync/** @file
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * VBoxVideo Display D3D User mode dll
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync */
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync/*
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * Copyright (C) 2011 Oracle Corporation
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync *
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * available from http://www.virtualbox.org. This file is free software;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * General Public License (GPL) as published by the Free Software
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync */
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync#ifndef ___VBoxDispKmt_h__
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync#define ___VBoxDispKmt_h__
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync#include <D3dkmthk.h>
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsynctypedef struct VBOXDISPKMT_CALLBACKS
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync{
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync HMODULE hGdi32;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync /* open adapter */
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_OPENADAPTERFROMHDC pfnD3DKMTOpenAdapterFromHdc;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_OPENADAPTERFROMGDIDISPLAYNAME pfnD3DKMTOpenAdapterFromGdiDisplayName;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync /* close adapter */
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_CLOSEADAPTER pfnD3DKMTCloseAdapter;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync /* escape */
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_ESCAPE pfnD3DKMTEscape;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_CREATEDEVICE pfnD3DKMTCreateDevice;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_DESTROYDEVICE pfnD3DKMTDestroyDevice;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_CREATECONTEXT pfnD3DKMTCreateContext;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_DESTROYCONTEXT pfnD3DKMTDestroyContext;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_RENDER pfnD3DKMTRender;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_CREATEALLOCATION pfnD3DKMTCreateAllocation;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_DESTROYALLOCATION pfnD3DKMTDestroyAllocation;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_LOCK pfnD3DKMTLock;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PFND3DKMT_UNLOCK pfnD3DKMTUnlock;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync} VBOXDISPKMT_CALLBACKS, *PVBOXDISPKMT_CALLBACKS;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsynctypedef struct VBOXDISPKMT_ADAPTER
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync{
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DKMT_HANDLE hAdapter;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync HDC hDc;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync PVBOXDISPKMT_CALLBACKS pCallbacks;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync}VBOXDISPKMT_ADAPTER, *PVBOXDISPKMT_ADAPTER;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsynctypedef struct VBOXDISPKMT_DEVICE
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync{
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync struct VBOXDISPKMT_ADAPTER *pAdapter;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DKMT_HANDLE hDevice;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync VOID *pCommandBuffer;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync UINT CommandBufferSize;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DDDI_ALLOCATIONLIST *pAllocationList;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync UINT AllocationListSize;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DDDI_PATCHLOCATIONLIST *pPatchLocationList;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync UINT PatchLocationListSize;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync}VBOXDISPKMT_DEVICE, *PVBOXDISPKMT_DEVICE;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsynctypedef struct VBOXDISPKMT_CONTEXT
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync{
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync struct VBOXDISPKMT_DEVICE *pDevice;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DKMT_HANDLE hContext;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync VOID *pCommandBuffer;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync UINT CommandBufferSize;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DDDI_ALLOCATIONLIST *pAllocationList;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync UINT AllocationListSize;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync D3DDDI_PATCHLOCATIONLIST *pPatchLocationList;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync UINT PatchLocationListSize;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync} VBOXDISPKMT_CONTEXT, *PVBOXDISPKMT_CONTEXT;
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtCallbacksInit(PVBOXDISPKMT_CALLBACKS pCallbacks);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtCallbacksTerm(PVBOXDISPKMT_CALLBACKS pCallbacks);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtOpenAdapter(PVBOXDISPKMT_CALLBACKS pCallbacks, PVBOXDISPKMT_ADAPTER pAdapter);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtCloseAdapter(PVBOXDISPKMT_ADAPTER pAdapter);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtCreateDevice(PVBOXDISPKMT_ADAPTER pAdapter, PVBOXDISPKMT_DEVICE pDevice);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtDestroyDevice(PVBOXDISPKMT_DEVICE pDevice);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtCreateContext(PVBOXDISPKMT_DEVICE pDevice, PVBOXDISPKMT_CONTEXT pContext,
87150caf549846b0edba30c50dabe5092df70b5fvboxsync VBOXWDDM_CONTEXT_TYPE enmType,
87150caf549846b0edba30c50dabe5092df70b5fvboxsync uint32_t crVersionMajor, uint32_t crVersionMinor,
87150caf549846b0edba30c50dabe5092df70b5fvboxsync HANDLE hEvent, uint64_t u64UmInfo);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsyncHRESULT vboxDispKmtDestroyContext(PVBOXDISPKMT_CONTEXT pContext);
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync
9055f61bb57d2a625c6434d55beac7565c3b3c0dvboxsync#endif /* #ifndef ___VBoxDispKmt_h__ */