VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispKmt.h@ 41984

Last change on this file since 41984 was 41984, checked in by vboxsync, 13 years ago

wddm/3d: win8 visual studio windows simulator support

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 KB
Line 
1/* $Id: VBoxDispKmt.h 41984 2012-07-02 14:00:09Z vboxsync $ */
2
3/** @file
4 * VBoxVideo Display D3D User mode dll
5 */
6
7/*
8 * Copyright (C) 2011 Oracle Corporation
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 */
18
19#ifndef ___VBoxDispKmt_h__
20#define ___VBoxDispKmt_h__
21
22#include <D3dkmthk.h>
23
24/* win8 release preview-specific stuff */
25typedef struct _D3DKMT_ADAPTERINFO
26{
27 D3DKMT_HANDLE hAdapter;
28 LUID AdapterLuid;
29 ULONG NumOfSources;
30 BOOL bPresentMoveRegionsPreferred;
31} D3DKMT_ADAPTERINFO;
32
33#define MAX_ENUM_ADAPTERS 16
34
35typedef struct _D3DKMT_ENUMADAPTERS
36{
37 ULONG NumAdapters;
38 D3DKMT_ADAPTERINFO Adapters[MAX_ENUM_ADAPTERS];
39} D3DKMT_ENUMADAPTERS;
40
41typedef NTSTATUS (APIENTRY *PFND3DKMT_ENUMADAPTERS)(IN OUT D3DKMT_ENUMADAPTERS*);
42
43typedef struct _D3DKMT_OPENADAPTERFROMLUID
44{
45 LUID AdapterLuid;
46 D3DKMT_HANDLE hAdapter;
47} D3DKMT_OPENADAPTERFROMLUID;
48
49typedef NTSTATUS (APIENTRY *PFND3DKMT_OPENADAPTERFROMLUID)(IN OUT D3DKMT_OPENADAPTERFROMLUID*);
50/* END OF win8 release preview-specific stuff */
51
52typedef enum
53{
54 VBOXDISPKMT_CALLBACKS_VERSION_UNDEFINED = 0,
55 VBOXDISPKMT_CALLBACKS_VERSION_VISTA_WIN7,
56 VBOXDISPKMT_CALLBACKS_VERSION_WIN8
57} VBOXDISPKMT_CALLBACKS_VERSION;
58
59typedef struct VBOXDISPKMT_CALLBACKS
60{
61 HMODULE hGdi32;
62 VBOXDISPKMT_CALLBACKS_VERSION enmVersion;
63 /* open adapter */
64 PFND3DKMT_OPENADAPTERFROMHDC pfnD3DKMTOpenAdapterFromHdc;
65 PFND3DKMT_OPENADAPTERFROMGDIDISPLAYNAME pfnD3DKMTOpenAdapterFromGdiDisplayName;
66 /* close adapter */
67 PFND3DKMT_CLOSEADAPTER pfnD3DKMTCloseAdapter;
68 /* escape */
69 PFND3DKMT_ESCAPE pfnD3DKMTEscape;
70
71 PFND3DKMT_CREATEDEVICE pfnD3DKMTCreateDevice;
72 PFND3DKMT_DESTROYDEVICE pfnD3DKMTDestroyDevice;
73 PFND3DKMT_CREATECONTEXT pfnD3DKMTCreateContext;
74 PFND3DKMT_DESTROYCONTEXT pfnD3DKMTDestroyContext;
75
76 PFND3DKMT_RENDER pfnD3DKMTRender;
77
78 PFND3DKMT_CREATEALLOCATION pfnD3DKMTCreateAllocation;
79 PFND3DKMT_DESTROYALLOCATION pfnD3DKMTDestroyAllocation;
80
81 PFND3DKMT_LOCK pfnD3DKMTLock;
82 PFND3DKMT_UNLOCK pfnD3DKMTUnlock;
83
84 PFND3DKMT_ENUMADAPTERS pfnD3DKMTEnumAdapters;
85 PFND3DKMT_OPENADAPTERFROMLUID pfnD3DKMTOpenAdapterFromLuid;
86} VBOXDISPKMT_CALLBACKS, *PVBOXDISPKMT_CALLBACKS;
87
88typedef struct VBOXDISPKMT_ADAPTER
89{
90 D3DKMT_HANDLE hAdapter;
91 HDC hDc;
92 LUID Luid;
93 PVBOXDISPKMT_CALLBACKS pCallbacks;
94}VBOXDISPKMT_ADAPTER, *PVBOXDISPKMT_ADAPTER;
95
96typedef struct VBOXDISPKMT_DEVICE
97{
98 struct VBOXDISPKMT_ADAPTER *pAdapter;
99 D3DKMT_HANDLE hDevice;
100 VOID *pCommandBuffer;
101 UINT CommandBufferSize;
102 D3DDDI_ALLOCATIONLIST *pAllocationList;
103 UINT AllocationListSize;
104 D3DDDI_PATCHLOCATIONLIST *pPatchLocationList;
105 UINT PatchLocationListSize;
106}VBOXDISPKMT_DEVICE, *PVBOXDISPKMT_DEVICE;
107
108typedef struct VBOXDISPKMT_CONTEXT
109{
110 struct VBOXDISPKMT_DEVICE *pDevice;
111 D3DKMT_HANDLE hContext;
112 VOID *pCommandBuffer;
113 UINT CommandBufferSize;
114 D3DDDI_ALLOCATIONLIST *pAllocationList;
115 UINT AllocationListSize;
116 D3DDDI_PATCHLOCATIONLIST *pPatchLocationList;
117 UINT PatchLocationListSize;
118} VBOXDISPKMT_CONTEXT, *PVBOXDISPKMT_CONTEXT;
119
120HRESULT vboxDispKmtCallbacksInit(PVBOXDISPKMT_CALLBACKS pCallbacks);
121HRESULT vboxDispKmtCallbacksTerm(PVBOXDISPKMT_CALLBACKS pCallbacks);
122
123HRESULT vboxDispKmtOpenAdapter(PVBOXDISPKMT_CALLBACKS pCallbacks, PVBOXDISPKMT_ADAPTER pAdapter);
124HRESULT vboxDispKmtCloseAdapter(PVBOXDISPKMT_ADAPTER pAdapter);
125HRESULT vboxDispKmtCreateDevice(PVBOXDISPKMT_ADAPTER pAdapter, PVBOXDISPKMT_DEVICE pDevice);
126HRESULT vboxDispKmtDestroyDevice(PVBOXDISPKMT_DEVICE pDevice);
127HRESULT vboxDispKmtCreateContext(PVBOXDISPKMT_DEVICE pDevice, PVBOXDISPKMT_CONTEXT pContext,
128 VBOXWDDM_CONTEXT_TYPE enmType,
129 uint32_t crVersionMajor, uint32_t crVersionMinor,
130 HANDLE hEvent, uint64_t u64UmInfo);
131HRESULT vboxDispKmtDestroyContext(PVBOXDISPKMT_CONTEXT pContext);
132
133
134#endif /* #ifndef ___VBoxDispKmt_h__ */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette