1 | /** @file
|
---|
2 | *
|
---|
3 | * VBoxVideo Display D3D User mode dll
|
---|
4 | *
|
---|
5 | * Copyright (C) 2010 Oracle Corporation
|
---|
6 | *
|
---|
7 | * This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
8 | * available from http://www.virtualbox.org. This file is free software;
|
---|
9 | * you can redistribute it and/or modify it under the terms of the GNU
|
---|
10 | * General Public License (GPL) as published by the Free Software
|
---|
11 | * Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
12 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
13 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
14 | */
|
---|
15 | #include <windows.h>
|
---|
16 | #include <d3d9types.h>
|
---|
17 | //#include <d3dtypes.h>
|
---|
18 | #include <D3dumddi.h>
|
---|
19 | #include <d3dhal.h>
|
---|
20 |
|
---|
21 |
|
---|
22 | #include <iprt/initterm.h>
|
---|
23 | #include <iprt/log.h>
|
---|
24 | #include <iprt/mem.h>
|
---|
25 |
|
---|
26 | #include <VBox/Log.h>
|
---|
27 |
|
---|
28 | #include <VBox/VBoxGuestLib.h>
|
---|
29 |
|
---|
30 | #include "VBoxDispD3D.h"
|
---|
31 | #include "VBoxDispD3DCmn.h"
|
---|
32 |
|
---|
33 | #ifdef VBOXWDDMDISP_DEBUG
|
---|
34 | # include <stdio.h>
|
---|
35 | #endif
|
---|
36 |
|
---|
37 | static FORMATOP gVBoxFormatOps3D[] = {
|
---|
38 | {D3DDDIFMT_A8R8G8B8,
|
---|
39 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
40 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
41 | FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
|
---|
42 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
43 | FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
44 | FORMATOP_SRGBWRITE|FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
45 |
|
---|
46 | {D3DDDIFMT_X8R8G8B8,
|
---|
47 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
48 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
49 | FORMATOP_DISPLAYMODE|FORMATOP_3DACCELERATION|
|
---|
50 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
51 | FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
52 | FORMATOP_SRGBWRITE|FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
53 |
|
---|
54 | {D3DDDIFMT_A2R10G10B10,
|
---|
55 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
56 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
57 | 0|
|
---|
58 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
59 | FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
60 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
61 |
|
---|
62 | {D3DDDIFMT_X1R5G5B5,
|
---|
63 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
64 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
65 | 0|
|
---|
66 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
67 | FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
68 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
69 |
|
---|
70 | {D3DDDIFMT_A1R5G5B5,
|
---|
71 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
72 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
73 | FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
|
---|
74 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
75 | FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
76 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
77 |
|
---|
78 | {D3DDDIFMT_A4R4G4B4,
|
---|
79 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
80 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
81 | FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
|
---|
82 | FORMATOP_OFFSCREENPLAIN|
|
---|
83 | 0|
|
---|
84 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
85 |
|
---|
86 | {D3DDDIFMT_R5G6B5,
|
---|
87 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
88 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
89 | FORMATOP_DISPLAYMODE|FORMATOP_3DACCELERATION|
|
---|
90 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
91 | FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
92 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
93 |
|
---|
94 | {D3DDDIFMT_L16,
|
---|
95 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
96 | 0|
|
---|
97 | 0|
|
---|
98 | FORMATOP_OFFSCREENPLAIN|
|
---|
99 | 0|
|
---|
100 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
101 |
|
---|
102 | {D3DDDIFMT_A8L8,
|
---|
103 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
104 | 0|
|
---|
105 | 0|
|
---|
106 | FORMATOP_OFFSCREENPLAIN|
|
---|
107 | 0|
|
---|
108 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
109 |
|
---|
110 | {D3DDDIFMT_A8,
|
---|
111 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
112 | 0|
|
---|
113 | 0|
|
---|
114 | FORMATOP_OFFSCREENPLAIN|
|
---|
115 | 0|
|
---|
116 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
117 |
|
---|
118 | {D3DDDIFMT_L8,
|
---|
119 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
120 | 0|
|
---|
121 | 0|
|
---|
122 | FORMATOP_OFFSCREENPLAIN|
|
---|
123 | 0|
|
---|
124 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
125 |
|
---|
126 | {D3DDDIFMT_D16, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
127 | {D3DDDIFMT_D24S8, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
128 | {D3DDDIFMT_D24X8, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
129 | {D3DDDIFMT_D16_LOCKABLE, FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
130 | {D3DDDIFMT_X8D24, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
131 | {D3DDDIFMT_D32F_LOCKABLE, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
132 | {D3DDDIFMT_S8D24, FORMATOP_TEXTURE|FORMATOP_ZSTENCIL|FORMATOP_ZSTENCIL_WITH_ARBITRARY_COLOR_DEPTH, 0, 0, 0},
|
---|
133 |
|
---|
134 | {D3DDDIFMT_DXT1,
|
---|
135 | FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
|
---|
136 | 0|
|
---|
137 | 0|
|
---|
138 | FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
139 | 0|
|
---|
140 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
141 |
|
---|
142 | {D3DDDIFMT_DXT2,
|
---|
143 | FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
|
---|
144 | 0|
|
---|
145 | 0|
|
---|
146 | FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
147 | 0|
|
---|
148 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
149 |
|
---|
150 | {D3DDDIFMT_DXT3,
|
---|
151 | FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
|
---|
152 | 0|
|
---|
153 | 0|
|
---|
154 | FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
155 | 0|
|
---|
156 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
157 |
|
---|
158 | {D3DDDIFMT_DXT4,
|
---|
159 | FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
|
---|
160 | 0|
|
---|
161 | 0|
|
---|
162 | FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
163 | 0|
|
---|
164 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
165 |
|
---|
166 | {D3DDDIFMT_DXT5,
|
---|
167 | FORMATOP_TEXTURE|FORMATOP_CUBETEXTURE|
|
---|
168 | 0|
|
---|
169 | 0|
|
---|
170 | FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
171 | 0|
|
---|
172 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
173 |
|
---|
174 | {D3DDDIFMT_X8L8V8U8,
|
---|
175 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
176 | 0|
|
---|
177 | 0|
|
---|
178 | 0|
|
---|
179 | FORMATOP_BUMPMAP|
|
---|
180 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
181 |
|
---|
182 | {D3DDDIFMT_A2W10V10U10,
|
---|
183 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
184 | 0|
|
---|
185 | 0|
|
---|
186 | 0|
|
---|
187 | FORMATOP_BUMPMAP|
|
---|
188 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
189 |
|
---|
190 | {D3DDDIFMT_V8U8,
|
---|
191 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
192 | 0|
|
---|
193 | 0|
|
---|
194 | 0|
|
---|
195 | FORMATOP_BUMPMAP|
|
---|
196 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
197 |
|
---|
198 | {D3DDDIFMT_Q8W8V8U8,
|
---|
199 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
200 | 0|
|
---|
201 | 0|
|
---|
202 | FORMATOP_OFFSCREENPLAIN|
|
---|
203 | FORMATOP_BUMPMAP|
|
---|
204 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
205 |
|
---|
206 | {D3DDDIFMT_CxV8U8, FORMATOP_NOFILTER|FORMATOP_NOALPHABLEND|FORMATOP_NOTEXCOORDWRAPNORMIP, 0, 0, 0},
|
---|
207 |
|
---|
208 | {D3DDDIFMT_R16F,
|
---|
209 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
210 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
211 | 0|
|
---|
212 | FORMATOP_OFFSCREENPLAIN|
|
---|
213 | 0|
|
---|
214 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
215 |
|
---|
216 | {D3DDDIFMT_R32F,
|
---|
217 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
218 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
219 | 0|
|
---|
220 | FORMATOP_OFFSCREENPLAIN|
|
---|
221 | 0|
|
---|
222 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
223 |
|
---|
224 | {D3DDDIFMT_G16R16F,
|
---|
225 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
226 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
227 | 0|
|
---|
228 | FORMATOP_OFFSCREENPLAIN|
|
---|
229 | 0|
|
---|
230 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
231 |
|
---|
232 | {D3DDDIFMT_G32R32F,
|
---|
233 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
234 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
235 | 0|
|
---|
236 | FORMATOP_OFFSCREENPLAIN|
|
---|
237 | 0|
|
---|
238 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
239 |
|
---|
240 | {D3DDDIFMT_A16B16G16R16F,
|
---|
241 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
242 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
243 | 0|
|
---|
244 | FORMATOP_OFFSCREENPLAIN|
|
---|
245 | 0|
|
---|
246 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
247 |
|
---|
248 | {D3DDDIFMT_A32B32G32R32F,
|
---|
249 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
250 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
251 | 0|
|
---|
252 | FORMATOP_OFFSCREENPLAIN|
|
---|
253 | 0|
|
---|
254 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
255 |
|
---|
256 | {D3DDDIFMT_G16R16,
|
---|
257 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
258 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
259 | 0|
|
---|
260 | FORMATOP_OFFSCREENPLAIN|
|
---|
261 | 0|
|
---|
262 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
263 |
|
---|
264 | {D3DDDIFMT_A16B16G16R16,
|
---|
265 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
266 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
267 | 0|
|
---|
268 | FORMATOP_OFFSCREENPLAIN|
|
---|
269 | 0|
|
---|
270 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
271 |
|
---|
272 | {D3DDDIFMT_V16U16,
|
---|
273 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
274 | 0|
|
---|
275 | 0|
|
---|
276 | 0|
|
---|
277 | FORMATOP_BUMPMAP|
|
---|
278 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
279 |
|
---|
280 | {D3DDDIFMT_P8, FORMATOP_DISPLAYMODE|FORMATOP_3DACCELERATION|FORMATOP_OFFSCREENPLAIN, 0, 0, 0},
|
---|
281 |
|
---|
282 | {D3DDDIFMT_UYVY,
|
---|
283 | 0|
|
---|
284 | 0|
|
---|
285 | 0|
|
---|
286 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
287 | FORMATOP_NOFILTER|
|
---|
288 | FORMATOP_NOALPHABLEND|
|
---|
289 | FORMATOP_NOTEXCOORDWRAPNORMIP, 0, 0, 0},
|
---|
290 |
|
---|
291 | {D3DDDIFMT_YUY2,
|
---|
292 | 0|
|
---|
293 | 0|
|
---|
294 | 0|
|
---|
295 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
296 | FORMATOP_NOFILTER|
|
---|
297 | FORMATOP_NOALPHABLEND|
|
---|
298 | FORMATOP_NOTEXCOORDWRAPNORMIP, 0, 0, 0},
|
---|
299 |
|
---|
300 | {D3DDDIFMT_Q16W16V16U16,
|
---|
301 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
302 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
303 | 0|
|
---|
304 | FORMATOP_OFFSCREENPLAIN|
|
---|
305 | FORMATOP_BUMPMAP|FORMATOP_DMAP|
|
---|
306 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
307 |
|
---|
308 | {D3DDDIFMT_X8B8G8R8,
|
---|
309 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
310 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
311 | FORMATOP_SAME_FORMAT_UP_TO_ALPHA_RENDERTARGET|
|
---|
312 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|FORMATOP_SRGBREAD|
|
---|
313 | FORMATOP_DMAP|FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
314 | FORMATOP_SRGBWRITE|FORMATOP_AUTOGENMIPMAP|FORMATOP_VERTEXTEXTURE|
|
---|
315 | FORMATOP_OVERLAY, 0, 0, 0},
|
---|
316 |
|
---|
317 | {D3DDDIFMT_BINARYBUFFER, FORMATOP_OFFSCREENPLAIN, 0, 0, 0},
|
---|
318 |
|
---|
319 | {D3DDDIFMT_A4L4,
|
---|
320 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|
|
---|
321 | 0|
|
---|
322 | 0|
|
---|
323 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
324 | FORMATOP_DMAP|
|
---|
325 | FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
326 |
|
---|
327 | {D3DDDIFMT_A2B10G10R10,
|
---|
328 | FORMATOP_TEXTURE|FORMATOP_VOLUMETEXTURE|FORMATOP_CUBETEXTURE|FORMATOP_OFFSCREEN_RENDERTARGET|
|
---|
329 | FORMATOP_SAME_FORMAT_RENDERTARGET|
|
---|
330 | 0|
|
---|
331 | FORMATOP_CONVERT_TO_ARGB|FORMATOP_OFFSCREENPLAIN|
|
---|
332 | FORMATOP_DMAP|FORMATOP_MEMBEROFGROUP_ARGB|
|
---|
333 | FORMATOP_AUTOGENMIPMAP|FORMATOP_VERTEXTEXTURE, 0, 0, 0},
|
---|
334 | };
|
---|
335 |
|
---|
336 | static FORMATOP gVBoxFormatOpsBase[] = {
|
---|
337 | {D3DDDIFMT_X8R8G8B8, FORMATOP_DISPLAYMODE, 0, 0, 0},
|
---|
338 |
|
---|
339 | {D3DDDIFMT_R8G8B8, FORMATOP_DISPLAYMODE, 0, 0, 0},
|
---|
340 |
|
---|
341 | {D3DDDIFMT_R5G6B5, FORMATOP_DISPLAYMODE, 0, 0, 0},
|
---|
342 |
|
---|
343 | {D3DDDIFMT_P8, FORMATOP_DISPLAYMODE, 0, 0, 0},
|
---|
344 | };
|
---|
345 |
|
---|
346 | static DDSURFACEDESC gVBoxSurfDescsBase[] = {
|
---|
347 | {
|
---|
348 | sizeof (DDSURFACEDESC), /* DWORD dwSize; */
|
---|
349 | DDSD_CAPS | DDSD_PIXELFORMAT, /* DWORD dwFlags; */
|
---|
350 | 0, /* DWORD dwHeight; */
|
---|
351 | 0, /* DWORD dwWidth; */
|
---|
352 | {
|
---|
353 | 0, /* Union */
|
---|
354 | /* LONG lPitch; */
|
---|
355 | /* DWORD dwLinearSize; */
|
---|
356 | },
|
---|
357 | 0, /* DWORD dwBackBufferCount; */
|
---|
358 | {
|
---|
359 | 0, /* Union */
|
---|
360 | /* DWORD dwMipMapCount; */
|
---|
361 | /* DWORD dwZBufferBitDepth; */
|
---|
362 | /* DWORD dwRefreshRate; */
|
---|
363 | },
|
---|
364 | 0, /* DWORD dwAlphaBitDepth; */
|
---|
365 | 0, /* DWORD dwReserved; */
|
---|
366 | NULL, /* LPVOID lpSurface; */
|
---|
367 | {
|
---|
368 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
369 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
370 | }, /* DDCOLORKEY ddckCKDestOverlay; */
|
---|
371 | {
|
---|
372 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
373 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
374 | }, /* DDCOLORKEY ddckCKDestBlt; */
|
---|
375 | {
|
---|
376 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
377 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
378 | }, /* DDCOLORKEY ddckCKSrcOverlay; */
|
---|
379 | {
|
---|
380 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
381 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
382 | }, /* DDCOLORKEY ddckCKSrcBlt; */
|
---|
383 | {
|
---|
384 | sizeof (DDPIXELFORMAT), /* DWORD dwSize; */
|
---|
385 | DDPF_RGB, /* DWORD dwFlags; */
|
---|
386 | 0, /* DWORD dwFourCC; */
|
---|
387 | {
|
---|
388 | 32, /* union */
|
---|
389 | /* DWORD dwRGBBitCount; */
|
---|
390 | /* DWORD dwYUVBitCount; */
|
---|
391 | /* DWORD dwZBufferBitDepth; */
|
---|
392 | /* DWORD dwAlphaBitDepth; */
|
---|
393 | /* DWORD dwLuminanceBitCount; */
|
---|
394 | /* DWORD dwBumpBitCount; */
|
---|
395 | },
|
---|
396 | {
|
---|
397 | 0xff0000, /* union */
|
---|
398 | /* DWORD dwRBitMask; */
|
---|
399 | /* DWORD dwYBitMask; */
|
---|
400 | /* DWORD dwStencilBitDepth; */
|
---|
401 | /* DWORD dwLuminanceBitMask; */
|
---|
402 | /* DWORD dwBumpDuBitMask; */
|
---|
403 | },
|
---|
404 | {
|
---|
405 | 0xff00,
|
---|
406 | /* DWORD dwGBitMask; */
|
---|
407 | /* DWORD dwUBitMask; */
|
---|
408 | /* DWORD dwZBitMask; */
|
---|
409 | /* DWORD dwBumpDvBitMask; */
|
---|
410 | },
|
---|
411 | {
|
---|
412 | 0xff,
|
---|
413 | /* DWORD dwBBitMask; */
|
---|
414 | /* DWORD dwVBitMask; */
|
---|
415 | /* DWORD dwStencilBitMask; */
|
---|
416 | /* DWORD dwBumpLuminanceBitMask; */
|
---|
417 | },
|
---|
418 | {
|
---|
419 | 0,
|
---|
420 | /* DWORD dwRGBAlphaBitMask; */
|
---|
421 | /* DWORD dwYUVAlphaBitMask; */
|
---|
422 | /* DWORD dwLuminanceAlphaBitMask; */
|
---|
423 | /* DWORD dwRGBZBitMask; */
|
---|
424 | /* DWORD dwYUVZBitMask; */
|
---|
425 | },
|
---|
426 | }, /* DDPIXELFORMAT ddpfPixelFormat; */
|
---|
427 | {
|
---|
428 | DDSCAPS_BACKBUFFER
|
---|
429 | | DDSCAPS_COMPLEX
|
---|
430 | | DDSCAPS_FLIP
|
---|
431 | | DDSCAPS_FRONTBUFFER
|
---|
432 | | DDSCAPS_LOCALVIDMEM
|
---|
433 | | DDSCAPS_PRIMARYSURFACE
|
---|
434 | | DDSCAPS_VIDEOMEMORY
|
---|
435 | | DDSCAPS_VISIBLE /* DWORD dwCaps; */
|
---|
436 | } /* DDSCAPS ddsCaps; */
|
---|
437 | },
|
---|
438 | {
|
---|
439 | sizeof (DDSURFACEDESC), /* DWORD dwSize; */
|
---|
440 | DDSD_CAPS | DDSD_PIXELFORMAT, /* DWORD dwFlags; */
|
---|
441 | 0, /* DWORD dwHeight; */
|
---|
442 | 0, /* DWORD dwWidth; */
|
---|
443 | {
|
---|
444 | 0, /* Union */
|
---|
445 | /* LONG lPitch; */
|
---|
446 | /* DWORD dwLinearSize; */
|
---|
447 | },
|
---|
448 | 0, /* DWORD dwBackBufferCount; */
|
---|
449 | {
|
---|
450 | 0, /* Union */
|
---|
451 | /* DWORD dwMipMapCount; */
|
---|
452 | /* DWORD dwZBufferBitDepth; */
|
---|
453 | /* DWORD dwRefreshRate; */
|
---|
454 | },
|
---|
455 | 0, /* DWORD dwAlphaBitDepth; */
|
---|
456 | 0, /* DWORD dwReserved; */
|
---|
457 | NULL, /* LPVOID lpSurface; */
|
---|
458 | {
|
---|
459 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
460 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
461 | }, /* DDCOLORKEY ddckCKDestOverlay; */
|
---|
462 | {
|
---|
463 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
464 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
465 | }, /* DDCOLORKEY ddckCKDestBlt; */
|
---|
466 | {
|
---|
467 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
468 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
469 | }, /* DDCOLORKEY ddckCKSrcOverlay; */
|
---|
470 | {
|
---|
471 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
472 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
473 | }, /* DDCOLORKEY ddckCKSrcBlt; */
|
---|
474 | {
|
---|
475 | sizeof (DDPIXELFORMAT), /* DWORD dwSize; */
|
---|
476 | DDPF_RGB, /* DWORD dwFlags; */
|
---|
477 | 0, /* DWORD dwFourCC; */
|
---|
478 | {
|
---|
479 | 24, /* union */
|
---|
480 | /* DWORD dwRGBBitCount; */
|
---|
481 | /* DWORD dwYUVBitCount; */
|
---|
482 | /* DWORD dwZBufferBitDepth; */
|
---|
483 | /* DWORD dwAlphaBitDepth; */
|
---|
484 | /* DWORD dwLuminanceBitCount; */
|
---|
485 | /* DWORD dwBumpBitCount; */
|
---|
486 | },
|
---|
487 | {
|
---|
488 | 0xff0000, /* union */
|
---|
489 | /* DWORD dwRBitMask; */
|
---|
490 | /* DWORD dwYBitMask; */
|
---|
491 | /* DWORD dwStencilBitDepth; */
|
---|
492 | /* DWORD dwLuminanceBitMask; */
|
---|
493 | /* DWORD dwBumpDuBitMask; */
|
---|
494 | },
|
---|
495 | {
|
---|
496 | 0xff00,
|
---|
497 | /* DWORD dwGBitMask; */
|
---|
498 | /* DWORD dwUBitMask; */
|
---|
499 | /* DWORD dwZBitMask; */
|
---|
500 | /* DWORD dwBumpDvBitMask; */
|
---|
501 | },
|
---|
502 | {
|
---|
503 | 0xff,
|
---|
504 | /* DWORD dwBBitMask; */
|
---|
505 | /* DWORD dwVBitMask; */
|
---|
506 | /* DWORD dwStencilBitMask; */
|
---|
507 | /* DWORD dwBumpLuminanceBitMask; */
|
---|
508 | },
|
---|
509 | {
|
---|
510 | 0,
|
---|
511 | /* DWORD dwRGBAlphaBitMask; */
|
---|
512 | /* DWORD dwYUVAlphaBitMask; */
|
---|
513 | /* DWORD dwLuminanceAlphaBitMask; */
|
---|
514 | /* DWORD dwRGBZBitMask; */
|
---|
515 | /* DWORD dwYUVZBitMask; */
|
---|
516 | },
|
---|
517 | }, /* DDPIXELFORMAT ddpfPixelFormat; */
|
---|
518 | {
|
---|
519 | DDSCAPS_BACKBUFFER
|
---|
520 | | DDSCAPS_COMPLEX
|
---|
521 | | DDSCAPS_FLIP
|
---|
522 | | DDSCAPS_FRONTBUFFER
|
---|
523 | | DDSCAPS_LOCALVIDMEM
|
---|
524 | | DDSCAPS_PRIMARYSURFACE
|
---|
525 | | DDSCAPS_VIDEOMEMORY
|
---|
526 | | DDSCAPS_VISIBLE /* DWORD dwCaps; */
|
---|
527 | } /* DDSCAPS ddsCaps; */
|
---|
528 | },
|
---|
529 | {
|
---|
530 | sizeof (DDSURFACEDESC), /* DWORD dwSize; */
|
---|
531 | DDSD_CAPS | DDSD_PIXELFORMAT, /* DWORD dwFlags; */
|
---|
532 | 0, /* DWORD dwHeight; */
|
---|
533 | 0, /* DWORD dwWidth; */
|
---|
534 | {
|
---|
535 | 0, /* Union */
|
---|
536 | /* LONG lPitch; */
|
---|
537 | /* DWORD dwLinearSize; */
|
---|
538 | },
|
---|
539 | 0, /* DWORD dwBackBufferCount; */
|
---|
540 | {
|
---|
541 | 0, /* Union */
|
---|
542 | /* DWORD dwMipMapCount; */
|
---|
543 | /* DWORD dwZBufferBitDepth; */
|
---|
544 | /* DWORD dwRefreshRate; */
|
---|
545 | },
|
---|
546 | 0, /* DWORD dwAlphaBitDepth; */
|
---|
547 | 0, /* DWORD dwReserved; */
|
---|
548 | NULL, /* LPVOID lpSurface; */
|
---|
549 | {
|
---|
550 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
551 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
552 | }, /* DDCOLORKEY ddckCKDestOverlay; */
|
---|
553 | {
|
---|
554 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
555 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
556 | }, /* DDCOLORKEY ddckCKDestBlt; */
|
---|
557 | {
|
---|
558 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
559 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
560 | }, /* DDCOLORKEY ddckCKSrcOverlay; */
|
---|
561 | {
|
---|
562 | 0, /* DWORD dwColorSpaceLowValue; */
|
---|
563 | 0, /* DWORD dwColorSpaceHighValue; */
|
---|
564 | }, /* DDCOLORKEY ddckCKSrcBlt; */
|
---|
565 | {
|
---|
566 | sizeof (DDPIXELFORMAT), /* DWORD dwSize; */
|
---|
567 | DDPF_RGB, /* DWORD dwFlags; */
|
---|
568 | 0, /* DWORD dwFourCC; */
|
---|
569 | {
|
---|
570 | 16, /* union */
|
---|
571 | /* DWORD dwRGBBitCount; */
|
---|
572 | /* DWORD dwYUVBitCount; */
|
---|
573 | /* DWORD dwZBufferBitDepth; */
|
---|
574 | /* DWORD dwAlphaBitDepth; */
|
---|
575 | /* DWORD dwLuminanceBitCount; */
|
---|
576 | /* DWORD dwBumpBitCount; */
|
---|
577 | },
|
---|
578 | {
|
---|
579 | 0xf800, /* union */
|
---|
580 | /* DWORD dwRBitMask; */
|
---|
581 | /* DWORD dwYBitMask; */
|
---|
582 | /* DWORD dwStencilBitDepth; */
|
---|
583 | /* DWORD dwLuminanceBitMask; */
|
---|
584 | /* DWORD dwBumpDuBitMask; */
|
---|
585 | },
|
---|
586 | {
|
---|
587 | 0x7e0,
|
---|
588 | /* DWORD dwGBitMask; */
|
---|
589 | /* DWORD dwUBitMask; */
|
---|
590 | /* DWORD dwZBitMask; */
|
---|
591 | /* DWORD dwBumpDvBitMask; */
|
---|
592 | },
|
---|
593 | {
|
---|
594 | 0x1f,
|
---|
595 | /* DWORD dwBBitMask; */
|
---|
596 | /* DWORD dwVBitMask; */
|
---|
597 | /* DWORD dwStencilBitMask; */
|
---|
598 | /* DWORD dwBumpLuminanceBitMask; */
|
---|
599 | },
|
---|
600 | {
|
---|
601 | 0,
|
---|
602 | /* DWORD dwRGBAlphaBitMask; */
|
---|
603 | /* DWORD dwYUVAlphaBitMask; */
|
---|
604 | /* DWORD dwLuminanceAlphaBitMask; */
|
---|
605 | /* DWORD dwRGBZBitMask; */
|
---|
606 | /* DWORD dwYUVZBitMask; */
|
---|
607 | },
|
---|
608 | }, /* DDPIXELFORMAT ddpfPixelFormat; */
|
---|
609 | {
|
---|
610 | DDSCAPS_BACKBUFFER
|
---|
611 | | DDSCAPS_COMPLEX
|
---|
612 | | DDSCAPS_FLIP
|
---|
613 | | DDSCAPS_FRONTBUFFER
|
---|
614 | | DDSCAPS_LOCALVIDMEM
|
---|
615 | | DDSCAPS_PRIMARYSURFACE
|
---|
616 | | DDSCAPS_VIDEOMEMORY
|
---|
617 | | DDSCAPS_VISIBLE /* DWORD dwCaps; */
|
---|
618 | } /* DDSCAPS ddsCaps; */
|
---|
619 | },
|
---|
620 | };
|
---|
621 |
|
---|
622 | #ifdef VBOX_WITH_VIDEOHWACCEL
|
---|
623 |
|
---|
624 | static bool vboxVhwaIsEnabled(PVBOXWDDMDISP_ADAPTER pAdapter)
|
---|
625 | {
|
---|
626 | for (uint32_t i = 0; i < pAdapter->cHeads; ++i)
|
---|
627 | {
|
---|
628 | if (pAdapter->aHeads[i].Vhwa.Settings.fFlags & VBOXVHWA_F_ENABLED)
|
---|
629 | return true;
|
---|
630 | }
|
---|
631 | return false;
|
---|
632 | }
|
---|
633 |
|
---|
634 | static bool vboxVhwaHasCKeying(PVBOXWDDMDISP_ADAPTER pAdapter)
|
---|
635 | {
|
---|
636 | for (uint32_t i = 0; i < pAdapter->cHeads; ++i)
|
---|
637 | {
|
---|
638 | VBOXVHWA_INFO* pSettings = &pAdapter->aHeads[i].Vhwa.Settings;
|
---|
639 | if ((pSettings->fFlags & VBOXVHWA_F_ENABLED)
|
---|
640 | && ((pSettings->fFlags & VBOXVHWA_F_CKEY_DST)
|
---|
641 | || (pSettings->fFlags & VBOXVHWA_F_CKEY_SRC))
|
---|
642 | )
|
---|
643 | return true;
|
---|
644 | }
|
---|
645 | return false;
|
---|
646 | }
|
---|
647 |
|
---|
648 | static void vboxVhwaPopulateOverlayFourccSurfDesc(DDSURFACEDESC *pDesc, uint32_t fourcc)
|
---|
649 | {
|
---|
650 | memset(pDesc, 0, sizeof (DDSURFACEDESC));
|
---|
651 |
|
---|
652 | pDesc->dwSize = sizeof (DDSURFACEDESC);
|
---|
653 | pDesc->dwFlags = DDSD_CAPS | DDSD_PIXELFORMAT;
|
---|
654 | pDesc->ddpfPixelFormat.dwSize = sizeof (DDPIXELFORMAT);
|
---|
655 | pDesc->ddpfPixelFormat.dwFlags = DDPF_FOURCC;
|
---|
656 | pDesc->ddpfPixelFormat.dwFourCC = fourcc;
|
---|
657 | pDesc->ddsCaps.dwCaps = DDSCAPS_BACKBUFFER
|
---|
658 | | DDSCAPS_COMPLEX
|
---|
659 | | DDSCAPS_FLIP
|
---|
660 | | DDSCAPS_FRONTBUFFER
|
---|
661 | | DDSCAPS_LOCALVIDMEM
|
---|
662 | | DDSCAPS_OVERLAY
|
---|
663 | | DDSCAPS_VIDEOMEMORY
|
---|
664 | | DDSCAPS_VISIBLE;
|
---|
665 | }
|
---|
666 |
|
---|
667 | #endif
|
---|
668 |
|
---|
669 | static bool vboxPixFormatMatch(DDPIXELFORMAT *pFormat1, DDPIXELFORMAT *pFormat2)
|
---|
670 | {
|
---|
671 | return !memcmp(pFormat1, pFormat2, sizeof (DDPIXELFORMAT));
|
---|
672 | }
|
---|
673 |
|
---|
674 | int vboxSurfDescMerge(DDSURFACEDESC *paDescs, uint32_t *pcDescs, uint32_t cMaxDescs, DDSURFACEDESC *pDesc)
|
---|
675 | {
|
---|
676 | uint32_t cDescs = *pcDescs;
|
---|
677 |
|
---|
678 | Assert(cMaxDescs >= cDescs);
|
---|
679 | Assert(pDesc->dwFlags == (DDSD_CAPS | DDSD_PIXELFORMAT));
|
---|
680 | if (pDesc->dwFlags != (DDSD_CAPS | DDSD_PIXELFORMAT))
|
---|
681 | return VERR_INVALID_PARAMETER;
|
---|
682 |
|
---|
683 | for (uint32_t i = 0; i < cDescs; ++i)
|
---|
684 | {
|
---|
685 | DDSURFACEDESC *pCur = &paDescs[i];
|
---|
686 | if (vboxPixFormatMatch(&pCur->ddpfPixelFormat, &pDesc->ddpfPixelFormat))
|
---|
687 | {
|
---|
688 | if (pDesc->dwFlags & DDSD_CAPS)
|
---|
689 | {
|
---|
690 | pCur->dwFlags |= DDSD_CAPS;
|
---|
691 | pCur->ddsCaps.dwCaps |= pDesc->ddsCaps.dwCaps;
|
---|
692 | }
|
---|
693 | return VINF_SUCCESS;
|
---|
694 | }
|
---|
695 | }
|
---|
696 |
|
---|
697 | if (cMaxDescs > cDescs)
|
---|
698 | {
|
---|
699 | paDescs[cDescs] = *pDesc;
|
---|
700 | ++cDescs;
|
---|
701 | *pcDescs = cDescs;
|
---|
702 | return VINF_SUCCESS;
|
---|
703 | }
|
---|
704 | return VERR_BUFFER_OVERFLOW;
|
---|
705 | }
|
---|
706 |
|
---|
707 | int vboxFormatOpsMerge(FORMATOP *paOps, uint32_t *pcOps, uint32_t cMaxOps, FORMATOP *pOp)
|
---|
708 | {
|
---|
709 | uint32_t cOps = *pcOps;
|
---|
710 |
|
---|
711 | Assert(cMaxOps >= cOps);
|
---|
712 |
|
---|
713 | for (uint32_t i = 0; i < cOps; ++i)
|
---|
714 | {
|
---|
715 | FORMATOP *pCur = &paOps[i];
|
---|
716 | if (pCur->Format == pOp->Format)
|
---|
717 | {
|
---|
718 | pCur->Operations |= pOp->Operations;
|
---|
719 | Assert(pCur->FlipMsTypes == pOp->FlipMsTypes);
|
---|
720 | Assert(pCur->BltMsTypes == pOp->BltMsTypes);
|
---|
721 | Assert(pCur->PrivateFormatBitCount == pOp->PrivateFormatBitCount);
|
---|
722 | return VINF_SUCCESS;
|
---|
723 | }
|
---|
724 | }
|
---|
725 |
|
---|
726 | if (cMaxOps > cOps)
|
---|
727 | {
|
---|
728 | paOps[cOps] = *pOp;
|
---|
729 | ++cOps;
|
---|
730 | *pcOps = cOps;
|
---|
731 | return VINF_SUCCESS;
|
---|
732 | }
|
---|
733 | return VERR_BUFFER_OVERFLOW;
|
---|
734 | }
|
---|
735 |
|
---|
736 | static uint32_t vboxFormatToFourcc(D3DDDIFORMAT format)
|
---|
737 | {
|
---|
738 | uint32_t uFormat = (uint32_t)format;
|
---|
739 | /* assume that in case both four bytes are non-zero, this is a fourcc */
|
---|
740 | if ((format & 0xff000000)
|
---|
741 | && (format & 0x00ff0000)
|
---|
742 | && (format & 0x0000ff00)
|
---|
743 | && (format & 0x000000ff)
|
---|
744 | )
|
---|
745 | return uFormat;
|
---|
746 | return 0;
|
---|
747 | }
|
---|
748 |
|
---|
749 | int vboxCapsInit(PVBOXWDDMDISP_ADAPTER pAdapter)
|
---|
750 | {
|
---|
751 | pAdapter->cFormstOps = 0;
|
---|
752 | pAdapter->paFormstOps = NULL;
|
---|
753 | pAdapter->cSurfDescs = 0;
|
---|
754 | pAdapter->paSurfDescs = NULL;
|
---|
755 |
|
---|
756 | if (pAdapter->uIfVersion > 7)
|
---|
757 | {
|
---|
758 | if (pAdapter->pD3D9If)
|
---|
759 | {
|
---|
760 | pAdapter->paFormstOps = (FORMATOP*)RTMemAllocZ(sizeof (gVBoxFormatOps3D));
|
---|
761 | Assert(pAdapter->paFormstOps);
|
---|
762 | if (pAdapter->paFormstOps)
|
---|
763 | {
|
---|
764 | memcpy (pAdapter->paFormstOps , gVBoxFormatOps3D, sizeof (gVBoxFormatOps3D));
|
---|
765 | pAdapter->cFormstOps = RT_ELEMENTS(gVBoxFormatOps3D);
|
---|
766 | }
|
---|
767 | else
|
---|
768 | return VERR_OUT_OF_RESOURCES;
|
---|
769 |
|
---|
770 | /* @todo: do we need surface caps here ? */
|
---|
771 | }
|
---|
772 | }
|
---|
773 | #ifdef VBOX_WITH_VIDEOHWACCEL
|
---|
774 | else
|
---|
775 | {
|
---|
776 | /* just calc the max number of formats */
|
---|
777 | uint32_t cFormats = RT_ELEMENTS(gVBoxFormatOpsBase);
|
---|
778 | uint32_t cSurfDescs = RT_ELEMENTS(gVBoxSurfDescsBase);
|
---|
779 | uint32_t cOverlayFormats = 0;
|
---|
780 | for (uint32_t i = 0; i < pAdapter->cHeads; ++i)
|
---|
781 | {
|
---|
782 | VBOXDISPVHWA_INFO *pVhwa = &pAdapter->aHeads[i].Vhwa;
|
---|
783 | if (pVhwa->Settings.fFlags & VBOXVHWA_F_ENABLED)
|
---|
784 | {
|
---|
785 | cOverlayFormats += pVhwa->Settings.cFormats;
|
---|
786 | }
|
---|
787 | }
|
---|
788 |
|
---|
789 | cFormats += cOverlayFormats;
|
---|
790 | cSurfDescs += cOverlayFormats;
|
---|
791 |
|
---|
792 | uint32_t cbFormatOps = cFormats * sizeof (FORMATOP);
|
---|
793 | cbFormatOps = (cbFormatOps + 7) & ~3;
|
---|
794 | /* ensure the surf descs are 8 byte alligned */
|
---|
795 | uint32_t offSurfDescs = (cbFormatOps + 7) & ~3;
|
---|
796 | uint32_t cbSurfDescs = cSurfDescs * sizeof (DDSURFACEDESC);
|
---|
797 | uint32_t cbBuf = offSurfDescs + cbSurfDescs;
|
---|
798 | uint8_t* pvBuf = (uint8_t*)RTMemAllocZ(cbBuf);
|
---|
799 | Assert(pvBuf);
|
---|
800 | if (pvBuf)
|
---|
801 | {
|
---|
802 | pAdapter->paFormstOps = (FORMATOP*)pvBuf;
|
---|
803 | memcpy (pAdapter->paFormstOps , gVBoxFormatOpsBase, sizeof (gVBoxFormatOpsBase));
|
---|
804 | pAdapter->cFormstOps = RT_ELEMENTS(gVBoxFormatOpsBase);
|
---|
805 |
|
---|
806 | FORMATOP fo = {D3DDDIFMT_UNKNOWN, 0, 0, 0, 0};
|
---|
807 | for (uint32_t i = 0; i < pAdapter->cHeads; ++i)
|
---|
808 | {
|
---|
809 | VBOXDISPVHWA_INFO *pVhwa = &pAdapter->aHeads[i].Vhwa;
|
---|
810 | if (pVhwa->Settings.fFlags & VBOXVHWA_F_ENABLED)
|
---|
811 | {
|
---|
812 | for (uint32_t j = 0; j < pVhwa->Settings.cFormats; ++j)
|
---|
813 | {
|
---|
814 | fo.Format = pVhwa->Settings.aFormats[j];
|
---|
815 | fo.Operations = FORMATOP_OVERLAY;
|
---|
816 | int rc = vboxFormatOpsMerge(pAdapter->paFormstOps, &pAdapter->cFormstOps, cFormats, &fo);
|
---|
817 | AssertRC(rc);
|
---|
818 | }
|
---|
819 | }
|
---|
820 | }
|
---|
821 |
|
---|
822 | pAdapter->paSurfDescs = (DDSURFACEDESC*)(pvBuf + offSurfDescs);
|
---|
823 | memcpy (pAdapter->paSurfDescs , gVBoxSurfDescsBase, sizeof (gVBoxSurfDescsBase));
|
---|
824 | pAdapter->cSurfDescs = RT_ELEMENTS(gVBoxSurfDescsBase);
|
---|
825 |
|
---|
826 | DDSURFACEDESC sd;
|
---|
827 | for (uint32_t i = 0; i < pAdapter->cHeads; ++i)
|
---|
828 | {
|
---|
829 | VBOXDISPVHWA_INFO *pVhwa = &pAdapter->aHeads[i].Vhwa;
|
---|
830 | if (pVhwa->Settings.fFlags & VBOXVHWA_F_ENABLED)
|
---|
831 | {
|
---|
832 | for (uint32_t j = 0; j < pVhwa->Settings.cFormats; ++j)
|
---|
833 | {
|
---|
834 | uint32_t fourcc = vboxFormatToFourcc(pVhwa->Settings.aFormats[j]);
|
---|
835 | if (fourcc)
|
---|
836 | {
|
---|
837 | vboxVhwaPopulateOverlayFourccSurfDesc(&sd, fourcc);
|
---|
838 | int rc = vboxSurfDescMerge(pAdapter->paSurfDescs, &pAdapter->cSurfDescs, cSurfDescs, &sd);
|
---|
839 | AssertRC(rc);
|
---|
840 | }
|
---|
841 | }
|
---|
842 | }
|
---|
843 | }
|
---|
844 | }
|
---|
845 | else
|
---|
846 | return VERR_OUT_OF_RESOURCES;
|
---|
847 | }
|
---|
848 | #endif
|
---|
849 |
|
---|
850 | return VINF_SUCCESS;
|
---|
851 | }
|
---|
852 |
|
---|
853 | void vboxCapsFree(PVBOXWDDMDISP_ADAPTER pAdapter)
|
---|
854 | {
|
---|
855 | if (pAdapter->paFormstOps)
|
---|
856 | RTMemFree(pAdapter->paFormstOps);
|
---|
857 | }
|
---|
858 |
|
---|
859 | /**
|
---|
860 | * DLL entry point.
|
---|
861 | */
|
---|
862 | BOOL WINAPI DllMain(HINSTANCE hInstance,
|
---|
863 | DWORD dwReason,
|
---|
864 | LPVOID lpReserved)
|
---|
865 | {
|
---|
866 | switch (dwReason)
|
---|
867 | {
|
---|
868 | case DLL_PROCESS_ATTACH:
|
---|
869 | {
|
---|
870 | RTR3Init();
|
---|
871 |
|
---|
872 | vboxVDbgPrint(("VBoxDispD3D: DLL loaded.\n"));
|
---|
873 |
|
---|
874 | // VbglR3Init();
|
---|
875 | break;
|
---|
876 | }
|
---|
877 |
|
---|
878 | case DLL_PROCESS_DETACH:
|
---|
879 | {
|
---|
880 | vboxVDbgPrint(("VBoxDispD3D: DLL unloaded.\n"));
|
---|
881 | // VbglR3Term();
|
---|
882 | /// @todo RTR3Term();
|
---|
883 | break;
|
---|
884 | }
|
---|
885 |
|
---|
886 | default:
|
---|
887 | break;
|
---|
888 | }
|
---|
889 | return TRUE;
|
---|
890 | }
|
---|
891 |
|
---|
892 | static HRESULT APIENTRY vboxWddmDispGetCaps (HANDLE hAdapter, CONST D3DDDIARG_GETCAPS* pData)
|
---|
893 | {
|
---|
894 | vboxVDbgPrint(("==> "__FUNCTION__", hAdapter(0x%p), caps type(%d)\n", hAdapter, pData->Type));
|
---|
895 |
|
---|
896 | HRESULT hr = S_OK;
|
---|
897 | PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)hAdapter;
|
---|
898 |
|
---|
899 | switch (pData->Type)
|
---|
900 | {
|
---|
901 | case D3DDDICAPS_DDRAW:
|
---|
902 | {
|
---|
903 | Assert(pData->DataSize >= sizeof (DDRAW_CAPS));
|
---|
904 | if (pData->DataSize >= sizeof (DDRAW_CAPS))
|
---|
905 | {
|
---|
906 | memset(pData->pData, 0, sizeof (DDRAW_CAPS));
|
---|
907 | #ifdef VBOX_WITH_VIDEOHWACCEL
|
---|
908 | if (vboxVhwaHasCKeying(pAdapter))
|
---|
909 | {
|
---|
910 | DDRAW_CAPS *pCaps = (DDRAW_CAPS*)pData->pData;
|
---|
911 | pCaps->Caps |= DDRAW_CAPS_COLORKEY
|
---|
912 | | DDRAW_CAPS2_DYNAMICTEXTURES
|
---|
913 | | DDRAW_CAPS2_FLIPNOVSYNC
|
---|
914 | ;
|
---|
915 | }
|
---|
916 | #endif
|
---|
917 | }
|
---|
918 | else
|
---|
919 | hr = E_INVALIDARG;
|
---|
920 | break;
|
---|
921 | }
|
---|
922 | case D3DDDICAPS_DDRAW_MODE_SPECIFIC:
|
---|
923 | {
|
---|
924 | Assert(pData->DataSize >= sizeof (DDRAW_MODE_SPECIFIC_CAPS));
|
---|
925 | if (pData->DataSize >= sizeof (DDRAW_MODE_SPECIFIC_CAPS))
|
---|
926 | {
|
---|
927 | DDRAW_MODE_SPECIFIC_CAPS * pCaps = (DDRAW_MODE_SPECIFIC_CAPS*)pData->pData;
|
---|
928 | memset(&pCaps->Caps /* do not cleanup the first "Head" field,
|
---|
929 | zero starting with the one following "Head", i.e. Caps */,
|
---|
930 | 0, sizeof (DDRAW_MODE_SPECIFIC_CAPS) - RT_OFFSETOF(DDRAW_MODE_SPECIFIC_CAPS, Caps));
|
---|
931 | #ifdef VBOX_WITH_VIDEOHWACCEL
|
---|
932 | VBOXVHWA_INFO *pSettings = &pAdapter->aHeads[pCaps->Head].Vhwa.Settings;
|
---|
933 | if (pSettings->fFlags & VBOXVHWA_F_ENABLED)
|
---|
934 | {
|
---|
935 | pCaps->Caps |= MODE_CAPS_OVERLAY | MODE_CAPS_OVERLAYSTRETCH;
|
---|
936 |
|
---|
937 | if (pSettings->fFlags & VBOXVHWA_F_CKEY_DST)
|
---|
938 | {
|
---|
939 | pCaps->CKeyCaps |= MODE_CKEYCAPS_DESTOVERLAY
|
---|
940 | | MODE_CKEYCAPS_DESTOVERLAYYUV /* ?? */
|
---|
941 | ;
|
---|
942 | }
|
---|
943 |
|
---|
944 | if (pSettings->fFlags & VBOXVHWA_F_CKEY_SRC)
|
---|
945 | {
|
---|
946 | pCaps->CKeyCaps |= MODE_CKEYCAPS_SRCOVERLAY
|
---|
947 | | MODE_CKEYCAPS_SRCOVERLAYCLRSPACE /* ?? */
|
---|
948 | | MODE_CKEYCAPS_SRCOVERLAYCLRSPACEYUV /* ?? */
|
---|
949 | | MODE_CKEYCAPS_SRCOVERLAYYUV /* ?? */
|
---|
950 | ;
|
---|
951 | }
|
---|
952 |
|
---|
953 | pCaps->FxCaps = MODE_FXCAPS_OVERLAYSHRINKX
|
---|
954 | | MODE_FXCAPS_OVERLAYSHRINKY
|
---|
955 | | MODE_FXCAPS_OVERLAYSTRETCHX
|
---|
956 | | MODE_FXCAPS_OVERLAYSTRETCHY;
|
---|
957 |
|
---|
958 |
|
---|
959 | pCaps->MaxVisibleOverlays = pSettings->cOverlaysSupported;
|
---|
960 | pCaps->MinOverlayStretch = 1;
|
---|
961 | pCaps->MaxOverlayStretch = 32000;
|
---|
962 | }
|
---|
963 | #endif
|
---|
964 | }
|
---|
965 | else
|
---|
966 | hr = E_INVALIDARG;
|
---|
967 | break;
|
---|
968 | }
|
---|
969 | case D3DDDICAPS_GETFORMATCOUNT:
|
---|
970 | *((uint32_t*)pData->pData) = pAdapter->cFormstOps;
|
---|
971 | break;
|
---|
972 | case D3DDDICAPS_GETFORMATDATA:
|
---|
973 | Assert(pData->DataSize >= pAdapter->cFormstOps * sizeof (FORMATOP));
|
---|
974 | memcpy(pData->pData, pAdapter->paFormstOps, pAdapter->cFormstOps * sizeof (FORMATOP));
|
---|
975 | break;
|
---|
976 | case D3DDDICAPS_GETD3DQUERYCOUNT:
|
---|
977 | *((uint32_t*)pData->pData) = 0;//VBOX_QUERYTYPE_COUNT();
|
---|
978 | break;
|
---|
979 | case D3DDDICAPS_GETD3DQUERYDATA:
|
---|
980 | AssertBreakpoint();
|
---|
981 | memset(pData->pData, 0, pData->DataSize);
|
---|
982 | // Assert(pData->DataSize >= VBOX_QUERYTYPE_COUNT() * sizeof (D3DDDIQUERYTYPE));
|
---|
983 | // memcpy(pData->pData, gVBoxQueryTypes, VBOX_QUERYTYPE_COUNT() * sizeof (D3DDDIQUERYTYPE));
|
---|
984 | break;
|
---|
985 | case D3DDDICAPS_GETD3D3CAPS:
|
---|
986 | Assert(pData->DataSize >= sizeof (D3DHAL_GLOBALDRIVERDATA));
|
---|
987 | if (pData->DataSize >= sizeof (D3DHAL_GLOBALDRIVERDATA))
|
---|
988 | {
|
---|
989 | D3DHAL_GLOBALDRIVERDATA *pCaps = (D3DHAL_GLOBALDRIVERDATA *)pData->pData;
|
---|
990 | memset (pCaps, 0, sizeof (D3DHAL_GLOBALDRIVERDATA));
|
---|
991 | pCaps->dwSize = sizeof (D3DHAL_GLOBALDRIVERDATA);
|
---|
992 | pCaps->hwCaps.dwSize = sizeof (D3DDEVICEDESC_V1);
|
---|
993 | pCaps->hwCaps.dwFlags = D3DDD_COLORMODEL
|
---|
994 | | D3DDD_DEVCAPS
|
---|
995 | | D3DDD_DEVICERENDERBITDEPTH;
|
---|
996 |
|
---|
997 | pCaps->hwCaps.dcmColorModel = D3DCOLOR_RGB;
|
---|
998 | pCaps->hwCaps.dwDevCaps = D3DDEVCAPS_CANRENDERAFTERFLIP
|
---|
999 | | D3DDEVCAPS_DRAWPRIMTLVERTEX
|
---|
1000 | | D3DDEVCAPS_EXECUTESYSTEMMEMORY
|
---|
1001 | | D3DDEVCAPS_FLOATTLVERTEX
|
---|
1002 | | D3DDEVCAPS_HWRASTERIZATION
|
---|
1003 | | D3DDEVCAPS_HWTRANSFORMANDLIGHT
|
---|
1004 | | D3DDEVCAPS_TLVERTEXSYSTEMMEMORY
|
---|
1005 | | D3DDEVCAPS_TEXTUREVIDEOMEMORY;
|
---|
1006 | pCaps->hwCaps.dtcTransformCaps.dwSize = sizeof (D3DTRANSFORMCAPS);
|
---|
1007 | pCaps->hwCaps.dtcTransformCaps.dwCaps = 0;
|
---|
1008 | pCaps->hwCaps.bClipping = FALSE;
|
---|
1009 | pCaps->hwCaps.dlcLightingCaps.dwSize = sizeof (D3DLIGHTINGCAPS);
|
---|
1010 | pCaps->hwCaps.dlcLightingCaps.dwCaps = 0;
|
---|
1011 | pCaps->hwCaps.dlcLightingCaps.dwLightingModel = 0;
|
---|
1012 | pCaps->hwCaps.dlcLightingCaps.dwNumLights = 0;
|
---|
1013 | pCaps->hwCaps.dpcLineCaps.dwSize = sizeof (D3DPRIMCAPS);
|
---|
1014 | pCaps->hwCaps.dpcLineCaps.dwMiscCaps = 0;
|
---|
1015 | pCaps->hwCaps.dpcLineCaps.dwRasterCaps = 0;
|
---|
1016 | pCaps->hwCaps.dpcLineCaps.dwZCmpCaps = 0;
|
---|
1017 | pCaps->hwCaps.dpcLineCaps.dwSrcBlendCaps = 0;
|
---|
1018 | pCaps->hwCaps.dpcLineCaps.dwDestBlendCaps = 0;
|
---|
1019 | pCaps->hwCaps.dpcLineCaps.dwAlphaCmpCaps = 0;
|
---|
1020 | pCaps->hwCaps.dpcLineCaps.dwShadeCaps = 0;
|
---|
1021 | pCaps->hwCaps.dpcLineCaps.dwTextureCaps = 0;
|
---|
1022 | pCaps->hwCaps.dpcLineCaps.dwTextureFilterCaps = 0;
|
---|
1023 | pCaps->hwCaps.dpcLineCaps.dwTextureBlendCaps = 0;
|
---|
1024 | pCaps->hwCaps.dpcLineCaps.dwTextureAddressCaps = 0;
|
---|
1025 | pCaps->hwCaps.dpcLineCaps.dwStippleWidth = 0;
|
---|
1026 | pCaps->hwCaps.dpcLineCaps.dwStippleHeight = 0;
|
---|
1027 |
|
---|
1028 | pCaps->hwCaps.dpcTriCaps.dwSize = sizeof (D3DPRIMCAPS);
|
---|
1029 | pCaps->hwCaps.dpcTriCaps.dwMiscCaps = 0;
|
---|
1030 | pCaps->hwCaps.dpcTriCaps.dwRasterCaps = 0;
|
---|
1031 | pCaps->hwCaps.dpcTriCaps.dwZCmpCaps = 0;
|
---|
1032 | pCaps->hwCaps.dpcTriCaps.dwSrcBlendCaps = 0;
|
---|
1033 | pCaps->hwCaps.dpcTriCaps.dwDestBlendCaps = 0;
|
---|
1034 | pCaps->hwCaps.dpcTriCaps.dwAlphaCmpCaps = 0;
|
---|
1035 | pCaps->hwCaps.dpcTriCaps.dwShadeCaps = 0;
|
---|
1036 | pCaps->hwCaps.dpcTriCaps.dwTextureCaps = 0;
|
---|
1037 | pCaps->hwCaps.dpcTriCaps.dwTextureFilterCaps = 0;
|
---|
1038 | pCaps->hwCaps.dpcTriCaps.dwTextureBlendCaps = 0;
|
---|
1039 | pCaps->hwCaps.dpcTriCaps.dwTextureAddressCaps = 0;
|
---|
1040 | pCaps->hwCaps.dpcTriCaps.dwStippleWidth = 0;
|
---|
1041 | pCaps->hwCaps.dpcTriCaps.dwStippleHeight = 0;
|
---|
1042 | pCaps->hwCaps.dwDeviceRenderBitDepth = 0;
|
---|
1043 | pCaps->hwCaps.dwDeviceZBufferBitDepth = DDBD_8 | DDBD_16 | DDBD_24 | DDBD_32;
|
---|
1044 | pCaps->hwCaps.dwMaxBufferSize = 0;
|
---|
1045 | pCaps->hwCaps.dwMaxVertexCount = 0;
|
---|
1046 |
|
---|
1047 |
|
---|
1048 | pCaps->dwNumVertices = 0;
|
---|
1049 | pCaps->dwNumClipVertices = 0;
|
---|
1050 | pCaps->dwNumTextureFormats = pAdapter->cSurfDescs;
|
---|
1051 | pCaps->lpTextureFormats = pAdapter->paSurfDescs;
|
---|
1052 | }
|
---|
1053 | else
|
---|
1054 | hr = E_INVALIDARG;
|
---|
1055 | break;
|
---|
1056 | case D3DDDICAPS_GETD3D7CAPS:
|
---|
1057 | Assert(pData->DataSize >= sizeof (D3DHAL_D3DEXTENDEDCAPS));
|
---|
1058 | if (pData->DataSize >= sizeof (D3DHAL_D3DEXTENDEDCAPS))
|
---|
1059 | memset(pData->pData, 0, sizeof (D3DHAL_D3DEXTENDEDCAPS));
|
---|
1060 | else
|
---|
1061 | hr = E_INVALIDARG;
|
---|
1062 | break;
|
---|
1063 | case D3DDDICAPS_GETD3D9CAPS:
|
---|
1064 | {
|
---|
1065 | Assert(pData->DataSize >= sizeof (D3DCAPS9));
|
---|
1066 | if (pData->DataSize >= sizeof (D3DCAPS9))
|
---|
1067 | {
|
---|
1068 | if (pAdapter->pD3D9If)
|
---|
1069 | {
|
---|
1070 | hr = pAdapter->pD3D9If->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, (D3DCAPS9*)pData->pData);
|
---|
1071 | Assert(hr == S_OK);
|
---|
1072 | if (hr == S_OK)
|
---|
1073 | break;
|
---|
1074 |
|
---|
1075 | vboxVDbgPrintR((__FUNCTION__": GetDeviceCaps hr(%d)\n", hr));
|
---|
1076 | /* let's fall back to the 3D disabled case */
|
---|
1077 | hr = S_OK;
|
---|
1078 | }
|
---|
1079 |
|
---|
1080 | memset(pData->pData, 0, sizeof (D3DCAPS9));
|
---|
1081 | }
|
---|
1082 | else
|
---|
1083 | hr = E_INVALIDARG;
|
---|
1084 | break;
|
---|
1085 | }
|
---|
1086 | case D3DDDICAPS_GETGAMMARAMPCAPS:
|
---|
1087 | *((uint32_t*)pData->pData) = 0;
|
---|
1088 | break;
|
---|
1089 | case D3DDDICAPS_GETMULTISAMPLEQUALITYLEVELS:
|
---|
1090 | case D3DDDICAPS_GETD3D5CAPS:
|
---|
1091 | case D3DDDICAPS_GETD3D6CAPS:
|
---|
1092 | case D3DDDICAPS_GETD3D8CAPS:
|
---|
1093 | case D3DDDICAPS_GETDECODEGUIDCOUNT:
|
---|
1094 | case D3DDDICAPS_GETDECODEGUIDS:
|
---|
1095 | case D3DDDICAPS_GETDECODERTFORMATCOUNT:
|
---|
1096 | case D3DDDICAPS_GETDECODERTFORMATS:
|
---|
1097 | case D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFOCOUNT:
|
---|
1098 | case D3DDDICAPS_GETDECODECOMPRESSEDBUFFERINFO:
|
---|
1099 | case D3DDDICAPS_GETDECODECONFIGURATIONCOUNT:
|
---|
1100 | case D3DDDICAPS_GETDECODECONFIGURATIONS:
|
---|
1101 | case D3DDDICAPS_GETVIDEOPROCESSORDEVICEGUIDCOUNT:
|
---|
1102 | case D3DDDICAPS_GETVIDEOPROCESSORDEVICEGUIDS:
|
---|
1103 | case D3DDDICAPS_GETVIDEOPROCESSORRTFORMATCOUNT:
|
---|
1104 | case D3DDDICAPS_GETVIDEOPROCESSORRTFORMATS:
|
---|
1105 | case D3DDDICAPS_GETVIDEOPROCESSORRTSUBSTREAMFORMATCOUNT:
|
---|
1106 | case D3DDDICAPS_GETVIDEOPROCESSORRTSUBSTREAMFORMATS:
|
---|
1107 | case D3DDDICAPS_GETVIDEOPROCESSORCAPS:
|
---|
1108 | case D3DDDICAPS_GETPROCAMPRANGE:
|
---|
1109 | case D3DDDICAPS_FILTERPROPERTYRANGE:
|
---|
1110 | case D3DDDICAPS_GETEXTENSIONGUIDCOUNT:
|
---|
1111 | case D3DDDICAPS_GETEXTENSIONGUIDS:
|
---|
1112 | case D3DDDICAPS_GETEXTENSIONCAPS:
|
---|
1113 | vboxVDbgPrint((__FUNCTION__": unimplemented caps type(%d)\n", pData->Type));
|
---|
1114 | AssertBreakpoint();
|
---|
1115 | if (pData->pData && pData->DataSize)
|
---|
1116 | memset(pData->pData, 0, pData->DataSize);
|
---|
1117 | break;
|
---|
1118 | default:
|
---|
1119 | vboxVDbgPrint((__FUNCTION__": unknown caps type(%d)\n", pData->Type));
|
---|
1120 | AssertBreakpoint();
|
---|
1121 | }
|
---|
1122 |
|
---|
1123 | vboxVDbgPrint(("<== "__FUNCTION__", hAdapter(0x%p), caps type(%d)\n", hAdapter, pData->Type));
|
---|
1124 |
|
---|
1125 | return S_OK;
|
---|
1126 | }
|
---|
1127 |
|
---|
1128 | static HRESULT APIENTRY vboxWddmDDevSetRenderState(HANDLE hDevice, CONST D3DDDIARG_RENDERSTATE* pData)
|
---|
1129 | {
|
---|
1130 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1131 | AssertBreakpoint();
|
---|
1132 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1133 | return E_FAIL;
|
---|
1134 | }
|
---|
1135 |
|
---|
1136 | static HRESULT APIENTRY vboxWddmDDevUpdateWInfo(HANDLE hDevice, CONST D3DDDIARG_WINFO* pData)
|
---|
1137 | {
|
---|
1138 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1139 | AssertBreakpoint();
|
---|
1140 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1141 | return E_FAIL;
|
---|
1142 | }
|
---|
1143 |
|
---|
1144 | static HRESULT APIENTRY vboxWddmDDevValidateDevice(HANDLE hDevice, D3DDDIARG_VALIDATETEXTURESTAGESTATE* pData)
|
---|
1145 | {
|
---|
1146 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1147 | AssertBreakpoint();
|
---|
1148 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1149 | return E_FAIL;
|
---|
1150 | }
|
---|
1151 |
|
---|
1152 | static HRESULT APIENTRY vboxWddmDDevSetTextureStageState(HANDLE hDevice, CONST D3DDDIARG_TEXTURESTAGESTATE* pData)
|
---|
1153 | {
|
---|
1154 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1155 | AssertBreakpoint();
|
---|
1156 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1157 | return E_FAIL;
|
---|
1158 | }
|
---|
1159 |
|
---|
1160 | static HRESULT APIENTRY vboxWddmDDevSetTexture(HANDLE hDevice, UINT Stage, HANDLE hTexture)
|
---|
1161 | {
|
---|
1162 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1163 | AssertBreakpoint();
|
---|
1164 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1165 | return E_FAIL;
|
---|
1166 | }
|
---|
1167 |
|
---|
1168 | static HRESULT APIENTRY vboxWddmDDevSetPixelShader(HANDLE hDevice, HANDLE hShaderHandle)
|
---|
1169 | {
|
---|
1170 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1171 | AssertBreakpoint();
|
---|
1172 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1173 | return E_FAIL;
|
---|
1174 | }
|
---|
1175 |
|
---|
1176 | static HRESULT APIENTRY vboxWddmDDevSetPixelShaderConst(HANDLE hDevice, CONST D3DDDIARG_SETPIXELSHADERCONST* pData, CONST FLOAT* pRegisters)
|
---|
1177 | {
|
---|
1178 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1179 | AssertBreakpoint();
|
---|
1180 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1181 | return E_FAIL;
|
---|
1182 | }
|
---|
1183 |
|
---|
1184 | static HRESULT APIENTRY vboxWddmDDevSetStreamSourceUm(HANDLE hDevice, CONST D3DDDIARG_SETSTREAMSOURCEUM* pData, CONST VOID* pUMBuffer )
|
---|
1185 | {
|
---|
1186 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1187 | AssertBreakpoint();
|
---|
1188 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1189 | return E_FAIL;
|
---|
1190 | }
|
---|
1191 |
|
---|
1192 | static HRESULT APIENTRY vboxWddmDDevSetIndices(HANDLE hDevice, CONST D3DDDIARG_SETINDICES* pData)
|
---|
1193 | {
|
---|
1194 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1195 | AssertBreakpoint();
|
---|
1196 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1197 | return E_FAIL;
|
---|
1198 | }
|
---|
1199 |
|
---|
1200 | static HRESULT APIENTRY vboxWddmDDevSetIndicesUm(HANDLE hDevice, UINT IndexSize, CONST VOID* pUMBuffer)
|
---|
1201 | {
|
---|
1202 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1203 | AssertBreakpoint();
|
---|
1204 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1205 | return E_FAIL;
|
---|
1206 | }
|
---|
1207 |
|
---|
1208 | static HRESULT APIENTRY vboxWddmDDevDrawPrimitive(HANDLE hDevice, CONST D3DDDIARG_DRAWPRIMITIVE* pData, CONST UINT* pFlagBuffer)
|
---|
1209 | {
|
---|
1210 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1211 | AssertBreakpoint();
|
---|
1212 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1213 | return E_FAIL;
|
---|
1214 | }
|
---|
1215 |
|
---|
1216 | static HRESULT APIENTRY vboxWddmDDevDrawIndexedPrimitive(HANDLE hDevice, CONST D3DDDIARG_DRAWINDEXEDPRIMITIVE* pData)
|
---|
1217 | {
|
---|
1218 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1219 | AssertBreakpoint();
|
---|
1220 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1221 | return E_FAIL;
|
---|
1222 | }
|
---|
1223 |
|
---|
1224 | static HRESULT APIENTRY vboxWddmDDevDrawRectPatch(HANDLE hDevice, CONST D3DDDIARG_DRAWRECTPATCH* pData, CONST D3DDDIRECTPATCH_INFO* pInfo, CONST FLOAT* pPatch)
|
---|
1225 | {
|
---|
1226 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1227 | AssertBreakpoint();
|
---|
1228 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1229 | return E_FAIL;
|
---|
1230 | }
|
---|
1231 |
|
---|
1232 | static HRESULT APIENTRY vboxWddmDDevDrawTriPatch(HANDLE hDevice, CONST D3DDDIARG_DRAWTRIPATCH* pData, CONST D3DDDITRIPATCH_INFO* pInfo, CONST FLOAT* pPatch)
|
---|
1233 | {
|
---|
1234 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1235 | AssertBreakpoint();
|
---|
1236 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1237 | return E_FAIL;
|
---|
1238 | }
|
---|
1239 |
|
---|
1240 | static HRESULT APIENTRY vboxWddmDDevDrawPrimitive2(HANDLE hDevice, CONST D3DDDIARG_DRAWPRIMITIVE2* pData)
|
---|
1241 | {
|
---|
1242 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1243 | AssertBreakpoint();
|
---|
1244 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1245 | return E_FAIL;
|
---|
1246 | }
|
---|
1247 |
|
---|
1248 | static HRESULT APIENTRY vboxWddmDDevDrawIndexedPrimitive2(HANDLE hDevice, CONST D3DDDIARG_DRAWINDEXEDPRIMITIVE2* pData, UINT dwIndicesSize, CONST VOID* pIndexBuffer, CONST UINT* pFlagBuffer)
|
---|
1249 | {
|
---|
1250 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1251 | AssertBreakpoint();
|
---|
1252 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1253 | return E_FAIL;
|
---|
1254 | }
|
---|
1255 |
|
---|
1256 | static HRESULT APIENTRY vboxWddmDDevVolBlt(HANDLE hDevice, CONST D3DDDIARG_VOLUMEBLT* pData)
|
---|
1257 | {
|
---|
1258 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1259 | AssertBreakpoint();
|
---|
1260 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1261 | return E_FAIL;
|
---|
1262 | }
|
---|
1263 |
|
---|
1264 | static HRESULT APIENTRY vboxWddmDDevBufBlt(HANDLE hDevice, CONST D3DDDIARG_BUFFERBLT* pData)
|
---|
1265 | {
|
---|
1266 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1267 | AssertBreakpoint();
|
---|
1268 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1269 | return E_FAIL;
|
---|
1270 | }
|
---|
1271 |
|
---|
1272 | static HRESULT APIENTRY vboxWddmDDevTexBlt(HANDLE hDevice, CONST D3DDDIARG_TEXBLT* pData)
|
---|
1273 | {
|
---|
1274 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1275 | AssertBreakpoint();
|
---|
1276 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1277 | return E_FAIL;
|
---|
1278 | }
|
---|
1279 |
|
---|
1280 | static HRESULT APIENTRY vboxWddmDDevStateSet(HANDLE hDevice, D3DDDIARG_STATESET* pData)
|
---|
1281 | {
|
---|
1282 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1283 | AssertBreakpoint();
|
---|
1284 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1285 | return E_FAIL;
|
---|
1286 | }
|
---|
1287 | static HRESULT APIENTRY vboxWddmDDevSetPriority(HANDLE hDevice, CONST D3DDDIARG_SETPRIORITY* pData)
|
---|
1288 | {
|
---|
1289 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1290 | AssertBreakpoint();
|
---|
1291 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1292 | return E_FAIL;
|
---|
1293 | }
|
---|
1294 | static HRESULT APIENTRY vboxWddmDDevClear(HANDLE hDevice, CONST D3DDDIARG_CLEAR* pData, UINT NumRect, CONST RECT* pRect)
|
---|
1295 | {
|
---|
1296 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1297 | AssertBreakpoint();
|
---|
1298 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1299 | return E_FAIL;
|
---|
1300 | }
|
---|
1301 | static HRESULT APIENTRY vboxWddmDDevUpdatePalette(HANDLE hDevice, CONST D3DDDIARG_UPDATEPALETTE* pData, CONST PALETTEENTRY* pPaletteData)
|
---|
1302 | {
|
---|
1303 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1304 | AssertBreakpoint();
|
---|
1305 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1306 | return E_FAIL;
|
---|
1307 | }
|
---|
1308 |
|
---|
1309 | static HRESULT APIENTRY vboxWddmDDevSetPalette(HANDLE hDevice, CONST D3DDDIARG_SETPALETTE* pData)
|
---|
1310 | {
|
---|
1311 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1312 | AssertBreakpoint();
|
---|
1313 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1314 | return E_FAIL;
|
---|
1315 | }
|
---|
1316 |
|
---|
1317 | static HRESULT APIENTRY vboxWddmDDevSetVertexShaderConst(HANDLE hDevice, CONST D3DDDIARG_SETVERTEXSHADERCONST* pData , CONST VOID* pRegisters)
|
---|
1318 | {
|
---|
1319 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1320 | AssertBreakpoint();
|
---|
1321 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1322 | return E_FAIL;
|
---|
1323 | }
|
---|
1324 | static HRESULT APIENTRY vboxWddmDDevMultiplyTransform(HANDLE hDevice, CONST D3DDDIARG_MULTIPLYTRANSFORM* pData)
|
---|
1325 | {
|
---|
1326 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1327 | AssertBreakpoint();
|
---|
1328 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1329 | return E_FAIL;
|
---|
1330 | }
|
---|
1331 | static HRESULT APIENTRY vboxWddmDDevSetTransform(HANDLE hDevice, CONST D3DDDIARG_SETTRANSFORM* pData)
|
---|
1332 | {
|
---|
1333 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1334 | AssertBreakpoint();
|
---|
1335 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1336 | return E_FAIL;
|
---|
1337 | }
|
---|
1338 | static HRESULT APIENTRY vboxWddmDDevSetViewport(HANDLE hDevice, CONST D3DDDIARG_VIEWPORTINFO* pData)
|
---|
1339 | {
|
---|
1340 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1341 | AssertBreakpoint();
|
---|
1342 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1343 | return E_FAIL;
|
---|
1344 | }
|
---|
1345 | static HRESULT APIENTRY vboxWddmDDevSetZRange(HANDLE hDevice, CONST D3DDDIARG_ZRANGE* pData)
|
---|
1346 | {
|
---|
1347 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1348 | AssertBreakpoint();
|
---|
1349 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1350 | return E_FAIL;
|
---|
1351 | }
|
---|
1352 | static HRESULT APIENTRY vboxWddmDDevSetMaterial(HANDLE hDevice, CONST D3DDDIARG_SETMATERIAL* pData)
|
---|
1353 | {
|
---|
1354 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1355 | AssertBreakpoint();
|
---|
1356 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1357 | return E_FAIL;
|
---|
1358 | }
|
---|
1359 | static HRESULT APIENTRY vboxWddmDDevSetLight(HANDLE hDevice, CONST D3DDDIARG_SETLIGHT* pData, CONST D3DDDI_LIGHT* pLightProperties)
|
---|
1360 | {
|
---|
1361 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1362 | AssertBreakpoint();
|
---|
1363 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1364 | return E_FAIL;
|
---|
1365 | }
|
---|
1366 | static HRESULT APIENTRY vboxWddmDDevCreateLight(HANDLE hDevice, CONST D3DDDIARG_CREATELIGHT* pData)
|
---|
1367 | {
|
---|
1368 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1369 | AssertBreakpoint();
|
---|
1370 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1371 | return E_FAIL;
|
---|
1372 | }
|
---|
1373 | static HRESULT APIENTRY vboxWddmDDevDestroyLight(HANDLE hDevice, CONST D3DDDIARG_DESTROYLIGHT* pData)
|
---|
1374 | {
|
---|
1375 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1376 | AssertBreakpoint();
|
---|
1377 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1378 | return E_FAIL;
|
---|
1379 | }
|
---|
1380 | static HRESULT APIENTRY vboxWddmDDevSetClipPlane(HANDLE hDevice, CONST D3DDDIARG_SETCLIPPLANE* pData)
|
---|
1381 | {
|
---|
1382 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1383 | AssertBreakpoint();
|
---|
1384 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1385 | return E_FAIL;
|
---|
1386 | }
|
---|
1387 |
|
---|
1388 | static HRESULT APIENTRY vboxWddmDDevGetInfo(HANDLE hDevice, UINT DevInfoID, VOID* pDevInfoStruct, UINT DevInfoSize)
|
---|
1389 | {
|
---|
1390 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1391 | AssertBreakpoint();
|
---|
1392 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1393 | return E_NOTIMPL;
|
---|
1394 | }
|
---|
1395 |
|
---|
1396 | static HRESULT APIENTRY vboxWddmDDevLock(HANDLE hDevice, D3DDDIARG_LOCK* pData)
|
---|
1397 | {
|
---|
1398 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1399 | AssertBreakpoint();
|
---|
1400 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1401 | return E_FAIL;
|
---|
1402 | }
|
---|
1403 | static HRESULT APIENTRY vboxWddmDDevUnlock(HANDLE hDevice, CONST D3DDDIARG_UNLOCK* pData)
|
---|
1404 | {
|
---|
1405 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1406 | AssertBreakpoint();
|
---|
1407 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1408 | return E_FAIL;
|
---|
1409 | }
|
---|
1410 | static HRESULT APIENTRY vboxWddmDDevLockAsync(HANDLE hDevice, D3DDDIARG_LOCKASYNC* pData)
|
---|
1411 | {
|
---|
1412 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1413 | AssertBreakpoint();
|
---|
1414 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1415 | return E_FAIL;
|
---|
1416 | }
|
---|
1417 | static HRESULT APIENTRY vboxWddmDDevUnlockAsync(HANDLE hDevice, CONST D3DDDIARG_UNLOCKASYNC* pData)
|
---|
1418 | {
|
---|
1419 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1420 | AssertBreakpoint();
|
---|
1421 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1422 | return E_FAIL;
|
---|
1423 | }
|
---|
1424 | static HRESULT APIENTRY vboxWddmDDevRename(HANDLE hDevice, CONST D3DDDIARG_RENAME* pData)
|
---|
1425 | {
|
---|
1426 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1427 | AssertBreakpoint();
|
---|
1428 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1429 | return E_FAIL;
|
---|
1430 | }
|
---|
1431 | static HRESULT APIENTRY vboxWddmDDevCreateResource(HANDLE hDevice, D3DDDIARG_CREATERESOURCE* pResource)
|
---|
1432 | {
|
---|
1433 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1434 | AssertBreakpoint();
|
---|
1435 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1436 | return E_FAIL;
|
---|
1437 | }
|
---|
1438 | static HRESULT APIENTRY vboxWddmDDevDestroyResource(HANDLE hDevice, HANDLE hResource)
|
---|
1439 | {
|
---|
1440 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1441 | AssertBreakpoint();
|
---|
1442 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1443 | return E_FAIL;
|
---|
1444 | }
|
---|
1445 | static HRESULT APIENTRY vboxWddmDDevSetDisplayMode(HANDLE hDevice, CONST D3DDDIARG_SETDISPLAYMODE* pData)
|
---|
1446 | {
|
---|
1447 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1448 | AssertBreakpoint();
|
---|
1449 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1450 | return E_FAIL;
|
---|
1451 | }
|
---|
1452 | static HRESULT APIENTRY vboxWddmDDevPresent(HANDLE hDevice, CONST D3DDDIARG_PRESENT* pData)
|
---|
1453 | {
|
---|
1454 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1455 | AssertBreakpoint();
|
---|
1456 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1457 | return E_FAIL;
|
---|
1458 | }
|
---|
1459 | static HRESULT APIENTRY vboxWddmDDevFlush(HANDLE hDevice)
|
---|
1460 | {
|
---|
1461 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1462 | AssertBreakpoint();
|
---|
1463 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1464 | return E_FAIL;
|
---|
1465 | }
|
---|
1466 | static HRESULT APIENTRY vboxWddmDDevCreateVertexShaderDecl(HANDLE hDevice, D3DDDIARG_CREATEVERTEXSHADERDECL* pData, CONST D3DDDIVERTEXELEMENT* pVertexElements)
|
---|
1467 | {
|
---|
1468 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1469 | AssertBreakpoint();
|
---|
1470 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1471 | return E_FAIL;
|
---|
1472 | }
|
---|
1473 | static HRESULT APIENTRY vboxWddmDDevSetVertexShaderDecl(HANDLE hDevice, HANDLE hShaderHandle)
|
---|
1474 | {
|
---|
1475 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1476 | AssertBreakpoint();
|
---|
1477 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1478 | return E_FAIL;
|
---|
1479 | }
|
---|
1480 | static HRESULT APIENTRY vboxWddmDDevDeleteVertexShaderDecl(HANDLE hDevice, HANDLE hShaderHandle)
|
---|
1481 | {
|
---|
1482 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1483 | AssertBreakpoint();
|
---|
1484 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1485 | return E_FAIL;
|
---|
1486 | }
|
---|
1487 | static HRESULT APIENTRY vboxWddmDDevCreateVertexShaderFunc(HANDLE hDevice, D3DDDIARG_CREATEVERTEXSHADERFUNC* pData, CONST UINT* pCode)
|
---|
1488 | {
|
---|
1489 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1490 | AssertBreakpoint();
|
---|
1491 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1492 | return E_FAIL;
|
---|
1493 | }
|
---|
1494 | static HRESULT APIENTRY vboxWddmDDevSetVertexShaderFunc(HANDLE hDevice, HANDLE hShaderHandle)
|
---|
1495 | {
|
---|
1496 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1497 | AssertBreakpoint();
|
---|
1498 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1499 | return E_FAIL;
|
---|
1500 | }
|
---|
1501 | static HRESULT APIENTRY vboxWddmDDevDeleteVertexShaderFunc(HANDLE hDevice, HANDLE hShaderHandle)
|
---|
1502 | {
|
---|
1503 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1504 | AssertBreakpoint();
|
---|
1505 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1506 | return E_FAIL;
|
---|
1507 | }
|
---|
1508 | static HRESULT APIENTRY vboxWddmDDevSetVertexShaderConstI(HANDLE hDevice, CONST D3DDDIARG_SETVERTEXSHADERCONSTI* pData, CONST INT* pRegisters)
|
---|
1509 | {
|
---|
1510 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1511 | AssertBreakpoint();
|
---|
1512 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1513 | return E_FAIL;
|
---|
1514 | }
|
---|
1515 | static HRESULT APIENTRY vboxWddmDDevSetVertexShaderConstB(HANDLE hDevice, CONST D3DDDIARG_SETVERTEXSHADERCONSTB* pData, CONST BOOL* pRegisters)
|
---|
1516 | {
|
---|
1517 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1518 | AssertBreakpoint();
|
---|
1519 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1520 | return E_FAIL;
|
---|
1521 | }
|
---|
1522 | static HRESULT APIENTRY vboxWddmDDevSetScissorRect(HANDLE hDevice, CONST RECT* pRect)
|
---|
1523 | {
|
---|
1524 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1525 | AssertBreakpoint();
|
---|
1526 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1527 | return E_FAIL;
|
---|
1528 | }
|
---|
1529 | static HRESULT APIENTRY vboxWddmDDevSetStreamSource(HANDLE hDevice, CONST D3DDDIARG_SETSTREAMSOURCE* pData)
|
---|
1530 | {
|
---|
1531 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1532 | AssertBreakpoint();
|
---|
1533 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1534 | return E_FAIL;
|
---|
1535 | }
|
---|
1536 | static HRESULT APIENTRY vboxWddmDDevSetStreamSourceFreq(HANDLE hDevice, CONST D3DDDIARG_SETSTREAMSOURCEFREQ* pData)
|
---|
1537 | {
|
---|
1538 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1539 | AssertBreakpoint();
|
---|
1540 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1541 | return E_FAIL;
|
---|
1542 | }
|
---|
1543 | static HRESULT APIENTRY vboxWddmDDevSetConvolutionKernelMono(HANDLE hDevice, CONST D3DDDIARG_SETCONVOLUTIONKERNELMONO* pData)
|
---|
1544 | {
|
---|
1545 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1546 | AssertBreakpoint();
|
---|
1547 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1548 | return E_FAIL;
|
---|
1549 | }
|
---|
1550 | static HRESULT APIENTRY vboxWddmDDevComposeRects(HANDLE hDevice, CONST D3DDDIARG_COMPOSERECTS* pData)
|
---|
1551 | {
|
---|
1552 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1553 | AssertBreakpoint();
|
---|
1554 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1555 | return E_FAIL;
|
---|
1556 | }
|
---|
1557 | static HRESULT APIENTRY vboxWddmDDevBlt(HANDLE hDevice, CONST D3DDDIARG_BLT* pData)
|
---|
1558 | {
|
---|
1559 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1560 | AssertBreakpoint();
|
---|
1561 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1562 | return E_FAIL;
|
---|
1563 | }
|
---|
1564 | static HRESULT APIENTRY vboxWddmDDevColorFill(HANDLE hDevice, CONST D3DDDIARG_COLORFILL* pData)
|
---|
1565 | {
|
---|
1566 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1567 | AssertBreakpoint();
|
---|
1568 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1569 | return E_FAIL;
|
---|
1570 | }
|
---|
1571 | static HRESULT APIENTRY vboxWddmDDevDepthFill(HANDLE hDevice, CONST D3DDDIARG_DEPTHFILL* pData)
|
---|
1572 | {
|
---|
1573 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1574 | AssertBreakpoint();
|
---|
1575 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1576 | return E_FAIL;
|
---|
1577 | }
|
---|
1578 | static HRESULT APIENTRY vboxWddmDDevCreateQuery(HANDLE hDevice, D3DDDIARG_CREATEQUERY* pData)
|
---|
1579 | {
|
---|
1580 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1581 | AssertBreakpoint();
|
---|
1582 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1583 | return E_FAIL;
|
---|
1584 | }
|
---|
1585 | static HRESULT APIENTRY vboxWddmDDevDestroyQuery(HANDLE hDevice, HANDLE hQuery)
|
---|
1586 | {
|
---|
1587 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1588 | AssertBreakpoint();
|
---|
1589 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1590 | return E_FAIL;
|
---|
1591 | }
|
---|
1592 | static HRESULT APIENTRY vboxWddmDDevIssueQuery(HANDLE hDevice, CONST D3DDDIARG_ISSUEQUERY* pData)
|
---|
1593 | {
|
---|
1594 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1595 | AssertBreakpoint();
|
---|
1596 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1597 | return E_FAIL;
|
---|
1598 | }
|
---|
1599 | static HRESULT APIENTRY vboxWddmDDevGetQueryData(HANDLE hDevice, CONST D3DDDIARG_GETQUERYDATA* pData)
|
---|
1600 | {
|
---|
1601 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1602 | AssertBreakpoint();
|
---|
1603 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1604 | return E_FAIL;
|
---|
1605 | }
|
---|
1606 | static HRESULT APIENTRY vboxWddmDDevSetRenderTarget(HANDLE hDevice, CONST D3DDDIARG_SETRENDERTARGET* pData)
|
---|
1607 | {
|
---|
1608 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1609 | AssertBreakpoint();
|
---|
1610 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1611 | return E_FAIL;
|
---|
1612 | }
|
---|
1613 | static HRESULT APIENTRY vboxWddmDDevSetDepthStencil(HANDLE hDevice, CONST D3DDDIARG_SETDEPTHSTENCIL* pData)
|
---|
1614 | {
|
---|
1615 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1616 | AssertBreakpoint();
|
---|
1617 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1618 | return E_FAIL;
|
---|
1619 | }
|
---|
1620 | static HRESULT APIENTRY vboxWddmDDevGenerateMipSubLevels(HANDLE hDevice, CONST D3DDDIARG_GENERATEMIPSUBLEVELS* pData)
|
---|
1621 | {
|
---|
1622 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1623 | AssertBreakpoint();
|
---|
1624 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1625 | return E_FAIL;
|
---|
1626 | }
|
---|
1627 | static HRESULT APIENTRY vboxWddmDDevSetPixelShaderConstI(HANDLE hDevice, CONST D3DDDIARG_SETPIXELSHADERCONSTI* pData, CONST INT* pRegisters)
|
---|
1628 | {
|
---|
1629 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1630 | AssertBreakpoint();
|
---|
1631 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1632 | return E_FAIL;
|
---|
1633 | }
|
---|
1634 | static HRESULT APIENTRY vboxWddmDDevSetPixelShaderConstB(HANDLE hDevice, CONST D3DDDIARG_SETPIXELSHADERCONSTB* pData, CONST BOOL* pRegisters)
|
---|
1635 | {
|
---|
1636 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1637 | AssertBreakpoint();
|
---|
1638 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1639 | return E_FAIL;
|
---|
1640 | }
|
---|
1641 | static HRESULT APIENTRY vboxWddmDDevCreatePixelShader(HANDLE hDevice, D3DDDIARG_CREATEPIXELSHADER* pData, CONST UINT* pCode)
|
---|
1642 | {
|
---|
1643 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1644 | AssertBreakpoint();
|
---|
1645 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1646 | return E_FAIL;
|
---|
1647 | }
|
---|
1648 | static HRESULT APIENTRY vboxWddmDDevDeletePixelShader(HANDLE hDevice, HANDLE hShaderHandle)
|
---|
1649 | {
|
---|
1650 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1651 | AssertBreakpoint();
|
---|
1652 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1653 | return E_FAIL;
|
---|
1654 | }
|
---|
1655 | static HRESULT APIENTRY vboxWddmDDevCreateDecodeDevice(HANDLE hDevice, D3DDDIARG_CREATEDECODEDEVICE* pData)
|
---|
1656 | {
|
---|
1657 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1658 | AssertBreakpoint();
|
---|
1659 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1660 | return E_FAIL;
|
---|
1661 | }
|
---|
1662 | static HRESULT APIENTRY vboxWddmDDevDestroyDecodeDevice(HANDLE hDevice, HANDLE hDecodeDevice)
|
---|
1663 | {
|
---|
1664 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1665 | AssertBreakpoint();
|
---|
1666 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1667 | return E_FAIL;
|
---|
1668 | }
|
---|
1669 | static HRESULT APIENTRY vboxWddmDDevSetDecodeRenderTarget(HANDLE hDevice, CONST D3DDDIARG_SETDECODERENDERTARGET* pData)
|
---|
1670 | {
|
---|
1671 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1672 | AssertBreakpoint();
|
---|
1673 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1674 | return E_FAIL;
|
---|
1675 | }
|
---|
1676 | static HRESULT APIENTRY vboxWddmDDevDecodeBeginFrame(HANDLE hDevice, D3DDDIARG_DECODEBEGINFRAME* pData)
|
---|
1677 | {
|
---|
1678 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1679 | AssertBreakpoint();
|
---|
1680 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1681 | return E_FAIL;
|
---|
1682 | }
|
---|
1683 | static HRESULT APIENTRY vboxWddmDDevDecodeEndFrame(HANDLE hDevice, D3DDDIARG_DECODEENDFRAME* pData)
|
---|
1684 | {
|
---|
1685 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1686 | AssertBreakpoint();
|
---|
1687 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1688 | return E_FAIL;
|
---|
1689 | }
|
---|
1690 | static HRESULT APIENTRY vboxWddmDDevDecodeExecute(HANDLE hDevice, CONST D3DDDIARG_DECODEEXECUTE* pData)
|
---|
1691 | {
|
---|
1692 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1693 | AssertBreakpoint();
|
---|
1694 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1695 | return E_FAIL;
|
---|
1696 | }
|
---|
1697 | static HRESULT APIENTRY vboxWddmDDevDecodeExtensionExecute(HANDLE hDevice, CONST D3DDDIARG_DECODEEXTENSIONEXECUTE* pData)
|
---|
1698 | {
|
---|
1699 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1700 | AssertBreakpoint();
|
---|
1701 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1702 | return E_FAIL;
|
---|
1703 | }
|
---|
1704 | static HRESULT APIENTRY vboxWddmDDevCreateVideoProcessDevice(HANDLE hDevice, D3DDDIARG_CREATEVIDEOPROCESSDEVICE* pData)
|
---|
1705 | {
|
---|
1706 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1707 | AssertBreakpoint();
|
---|
1708 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1709 | return E_FAIL;
|
---|
1710 | }
|
---|
1711 | static HRESULT APIENTRY vboxWddmDDevDestroyVideoProcessDevice(HANDLE hDevice, HANDLE hVideoProcessor)
|
---|
1712 | {
|
---|
1713 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1714 | AssertBreakpoint();
|
---|
1715 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1716 | return E_FAIL;
|
---|
1717 | }
|
---|
1718 | static HRESULT APIENTRY vboxWddmDDevVideoProcessBeginFrame(HANDLE hDevice, HANDLE hVideoProcess)
|
---|
1719 | {
|
---|
1720 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1721 | AssertBreakpoint();
|
---|
1722 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1723 | return E_FAIL;
|
---|
1724 | }
|
---|
1725 | static HRESULT APIENTRY vboxWddmDDevVideoProcessEndFrame(HANDLE hDevice, D3DDDIARG_VIDEOPROCESSENDFRAME* pData)
|
---|
1726 | {
|
---|
1727 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1728 | AssertBreakpoint();
|
---|
1729 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1730 | return E_FAIL;
|
---|
1731 | }
|
---|
1732 | static HRESULT APIENTRY vboxWddmDDevSetVideoProcessRenderTarget(HANDLE hDevice, CONST D3DDDIARG_SETVIDEOPROCESSRENDERTARGET* pData)
|
---|
1733 | {
|
---|
1734 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1735 | AssertBreakpoint();
|
---|
1736 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1737 | return E_FAIL;
|
---|
1738 | }
|
---|
1739 | static HRESULT APIENTRY vboxWddmDDevVideoProcessBlt(HANDLE hDevice, CONST D3DDDIARG_VIDEOPROCESSBLT* pData)
|
---|
1740 | {
|
---|
1741 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1742 | AssertBreakpoint();
|
---|
1743 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1744 | return E_FAIL;
|
---|
1745 | }
|
---|
1746 | static HRESULT APIENTRY vboxWddmDDevCreateExtensionDevice(HANDLE hDevice, D3DDDIARG_CREATEEXTENSIONDEVICE* pData)
|
---|
1747 | {
|
---|
1748 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1749 | AssertBreakpoint();
|
---|
1750 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1751 | return E_FAIL;
|
---|
1752 | }
|
---|
1753 | static HRESULT APIENTRY vboxWddmDDevDestroyExtensionDevice(HANDLE hDevice, HANDLE hExtension)
|
---|
1754 | {
|
---|
1755 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1756 | AssertBreakpoint();
|
---|
1757 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1758 | return E_FAIL;
|
---|
1759 | }
|
---|
1760 | static HRESULT APIENTRY vboxWddmDDevExtensionExecute(HANDLE hDevice, CONST D3DDDIARG_EXTENSIONEXECUTE* pData)
|
---|
1761 | {
|
---|
1762 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1763 | AssertBreakpoint();
|
---|
1764 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1765 | return E_FAIL;
|
---|
1766 | }
|
---|
1767 | static HRESULT APIENTRY vboxWddmDDevDestroyDevice(IN HANDLE hDevice)
|
---|
1768 | {
|
---|
1769 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1770 |
|
---|
1771 | PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)hDevice;
|
---|
1772 | if (pDevice->DefaultContext.ContextInfo.hContext)
|
---|
1773 | {
|
---|
1774 | D3DDDICB_DESTROYCONTEXT DestroyContext;
|
---|
1775 | DestroyContext.hContext = pDevice->DefaultContext.ContextInfo.hContext;
|
---|
1776 | HRESULT tmpHr = pDevice->RtCallbacks.pfnDestroyContextCb(pDevice->hDevice, &DestroyContext);
|
---|
1777 | Assert(tmpHr == S_OK);
|
---|
1778 | }
|
---|
1779 | RTMemFree(hDevice);
|
---|
1780 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1781 | return S_OK;
|
---|
1782 | }
|
---|
1783 | static HRESULT APIENTRY vboxWddmDDevCreateOverlay(HANDLE hDevice, D3DDDIARG_CREATEOVERLAY* pData)
|
---|
1784 | {
|
---|
1785 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1786 | AssertBreakpoint();
|
---|
1787 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1788 | return E_FAIL;
|
---|
1789 | }
|
---|
1790 | static HRESULT APIENTRY vboxWddmDDevUpdateOverlay(HANDLE hDevice, CONST D3DDDIARG_UPDATEOVERLAY* pData)
|
---|
1791 | {
|
---|
1792 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1793 | AssertBreakpoint();
|
---|
1794 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1795 | return E_FAIL;
|
---|
1796 | }
|
---|
1797 | static HRESULT APIENTRY vboxWddmDDevFlipOverlay(HANDLE hDevice, CONST D3DDDIARG_FLIPOVERLAY* pData)
|
---|
1798 | {
|
---|
1799 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1800 | AssertBreakpoint();
|
---|
1801 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1802 | return E_FAIL;
|
---|
1803 | }
|
---|
1804 | static HRESULT APIENTRY vboxWddmDDevGetOverlayColorControls(HANDLE hDevice, D3DDDIARG_GETOVERLAYCOLORCONTROLS* pData)
|
---|
1805 | {
|
---|
1806 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1807 | AssertBreakpoint();
|
---|
1808 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1809 | return E_FAIL;
|
---|
1810 | }
|
---|
1811 | static HRESULT APIENTRY vboxWddmDDevSetOverlayColorControls(HANDLE hDevice, CONST D3DDDIARG_SETOVERLAYCOLORCONTROLS* pData)
|
---|
1812 | {
|
---|
1813 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1814 | AssertBreakpoint();
|
---|
1815 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1816 | return E_FAIL;
|
---|
1817 | }
|
---|
1818 | static HRESULT APIENTRY vboxWddmDDevDestroyOverlay(HANDLE hDevice, CONST D3DDDIARG_DESTROYOVERLAY* pData)
|
---|
1819 | {
|
---|
1820 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1821 | AssertBreakpoint();
|
---|
1822 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1823 | return E_FAIL;
|
---|
1824 | }
|
---|
1825 | static HRESULT APIENTRY vboxWddmDDevQueryResourceResidency(HANDLE hDevice, CONST D3DDDIARG_QUERYRESOURCERESIDENCY* pData)
|
---|
1826 | {
|
---|
1827 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1828 | AssertBreakpoint();
|
---|
1829 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1830 | return E_FAIL;
|
---|
1831 | }
|
---|
1832 | static HRESULT APIENTRY vboxWddmDDevOpenResource(HANDLE hDevice, D3DDDIARG_OPENRESOURCE* pData)
|
---|
1833 | {
|
---|
1834 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1835 | AssertBreakpoint();
|
---|
1836 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1837 | return E_FAIL;
|
---|
1838 | }
|
---|
1839 | static HRESULT APIENTRY vboxWddmDDevGetCaptureAllocationHandle(HANDLE hDevice, D3DDDIARG_GETCAPTUREALLOCATIONHANDLE* pData)
|
---|
1840 | {
|
---|
1841 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1842 | AssertBreakpoint();
|
---|
1843 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1844 | return E_FAIL;
|
---|
1845 | }
|
---|
1846 |
|
---|
1847 | static HRESULT APIENTRY vboxWddmDDevCaptureToSysMem(HANDLE hDevice, CONST D3DDDIARG_CAPTURETOSYSMEM* pData)
|
---|
1848 | {
|
---|
1849 | vboxVDbgPrintF(("<== "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1850 | AssertBreakpoint();
|
---|
1851 | vboxVDbgPrintF(("==> "__FUNCTION__", hDevice(0x%p)\n", hDevice));
|
---|
1852 | return E_FAIL;
|
---|
1853 | }
|
---|
1854 |
|
---|
1855 | static HRESULT APIENTRY vboxWddmDispCreateDevice (IN HANDLE hAdapter, IN D3DDDIARG_CREATEDEVICE* pCreateData)
|
---|
1856 | {
|
---|
1857 | HRESULT hr = S_OK;
|
---|
1858 | vboxVDbgPrint(("==> "__FUNCTION__", hAdapter(0x%p), Interface(%d), Version(%d)\n", hAdapter, pCreateData->Interface, pCreateData->Version));
|
---|
1859 |
|
---|
1860 | // AssertBreakpoint();
|
---|
1861 |
|
---|
1862 | PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)RTMemAllocZ(sizeof (VBOXWDDMDISP_DEVICE));
|
---|
1863 | if (pDevice)
|
---|
1864 | {
|
---|
1865 | PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)hAdapter;
|
---|
1866 |
|
---|
1867 | pDevice->hDevice = pCreateData->hDevice;
|
---|
1868 | pDevice->pAdapter = pAdapter;
|
---|
1869 | pDevice->u32IfVersion = pCreateData->Interface;
|
---|
1870 | pDevice->uRtVersion = pCreateData->Version;
|
---|
1871 | pDevice->RtCallbacks = *pCreateData->pCallbacks;
|
---|
1872 | pDevice->pvCmdBuffer = pCreateData->pCommandBuffer;
|
---|
1873 | pDevice->cbCmdBuffer = pCreateData->CommandBufferSize;
|
---|
1874 | pDevice->fFlags = pCreateData->Flags;
|
---|
1875 |
|
---|
1876 | Assert(!pCreateData->AllocationListSize);
|
---|
1877 | Assert(!pCreateData->PatchLocationListSize);
|
---|
1878 |
|
---|
1879 | pCreateData->hDevice = pDevice;
|
---|
1880 |
|
---|
1881 | pCreateData->pDeviceFuncs->pfnSetRenderState = vboxWddmDDevSetRenderState;
|
---|
1882 | pCreateData->pDeviceFuncs->pfnUpdateWInfo = vboxWddmDDevUpdateWInfo;
|
---|
1883 | pCreateData->pDeviceFuncs->pfnValidateDevice = vboxWddmDDevValidateDevice;
|
---|
1884 | pCreateData->pDeviceFuncs->pfnSetTextureStageState = vboxWddmDDevSetTextureStageState;
|
---|
1885 | pCreateData->pDeviceFuncs->pfnSetTexture = vboxWddmDDevSetTexture;
|
---|
1886 | pCreateData->pDeviceFuncs->pfnSetPixelShader = vboxWddmDDevSetPixelShader;
|
---|
1887 | pCreateData->pDeviceFuncs->pfnSetPixelShaderConst = vboxWddmDDevSetPixelShaderConst;
|
---|
1888 | pCreateData->pDeviceFuncs->pfnSetStreamSourceUm = vboxWddmDDevSetStreamSourceUm;
|
---|
1889 | pCreateData->pDeviceFuncs->pfnSetIndices = vboxWddmDDevSetIndices;
|
---|
1890 | pCreateData->pDeviceFuncs->pfnSetIndicesUm = vboxWddmDDevSetIndicesUm;
|
---|
1891 | pCreateData->pDeviceFuncs->pfnDrawPrimitive = vboxWddmDDevDrawPrimitive;
|
---|
1892 | pCreateData->pDeviceFuncs->pfnDrawIndexedPrimitive = vboxWddmDDevDrawIndexedPrimitive;
|
---|
1893 | pCreateData->pDeviceFuncs->pfnDrawRectPatch = vboxWddmDDevDrawRectPatch;
|
---|
1894 | pCreateData->pDeviceFuncs->pfnDrawTriPatch = vboxWddmDDevDrawTriPatch;
|
---|
1895 | pCreateData->pDeviceFuncs->pfnDrawPrimitive2 = vboxWddmDDevDrawPrimitive2;
|
---|
1896 | pCreateData->pDeviceFuncs->pfnDrawIndexedPrimitive2 = vboxWddmDDevDrawIndexedPrimitive2;
|
---|
1897 | pCreateData->pDeviceFuncs->pfnVolBlt = vboxWddmDDevVolBlt;
|
---|
1898 | pCreateData->pDeviceFuncs->pfnBufBlt = vboxWddmDDevBufBlt;
|
---|
1899 | pCreateData->pDeviceFuncs->pfnTexBlt = vboxWddmDDevTexBlt;
|
---|
1900 | pCreateData->pDeviceFuncs->pfnStateSet = vboxWddmDDevStateSet;
|
---|
1901 | pCreateData->pDeviceFuncs->pfnSetPriority = vboxWddmDDevSetPriority;
|
---|
1902 | pCreateData->pDeviceFuncs->pfnClear = vboxWddmDDevClear;
|
---|
1903 | pCreateData->pDeviceFuncs->pfnUpdatePalette = vboxWddmDDevUpdatePalette;
|
---|
1904 | pCreateData->pDeviceFuncs->pfnSetPalette = vboxWddmDDevSetPalette;
|
---|
1905 | pCreateData->pDeviceFuncs->pfnSetVertexShaderConst = vboxWddmDDevSetVertexShaderConst;
|
---|
1906 | pCreateData->pDeviceFuncs->pfnMultiplyTransform = vboxWddmDDevMultiplyTransform;
|
---|
1907 | pCreateData->pDeviceFuncs->pfnSetTransform = vboxWddmDDevSetTransform;
|
---|
1908 | pCreateData->pDeviceFuncs->pfnSetViewport = vboxWddmDDevSetViewport;
|
---|
1909 | pCreateData->pDeviceFuncs->pfnSetZRange = vboxWddmDDevSetZRange;
|
---|
1910 | pCreateData->pDeviceFuncs->pfnSetMaterial = vboxWddmDDevSetMaterial;
|
---|
1911 | pCreateData->pDeviceFuncs->pfnSetLight = vboxWddmDDevSetLight;
|
---|
1912 | pCreateData->pDeviceFuncs->pfnCreateLight = vboxWddmDDevCreateLight;
|
---|
1913 | pCreateData->pDeviceFuncs->pfnDestroyLight = vboxWddmDDevDestroyLight;
|
---|
1914 | pCreateData->pDeviceFuncs->pfnSetClipPlane = vboxWddmDDevSetClipPlane;
|
---|
1915 | pCreateData->pDeviceFuncs->pfnGetInfo = vboxWddmDDevGetInfo;
|
---|
1916 | pCreateData->pDeviceFuncs->pfnLock = vboxWddmDDevLock;
|
---|
1917 | pCreateData->pDeviceFuncs->pfnUnlock = vboxWddmDDevUnlock;
|
---|
1918 | pCreateData->pDeviceFuncs->pfnCreateResource = vboxWddmDDevCreateResource;
|
---|
1919 | pCreateData->pDeviceFuncs->pfnDestroyResource = vboxWddmDDevDestroyResource;
|
---|
1920 | pCreateData->pDeviceFuncs->pfnSetDisplayMode = vboxWddmDDevSetDisplayMode;
|
---|
1921 | pCreateData->pDeviceFuncs->pfnPresent = vboxWddmDDevPresent;
|
---|
1922 | pCreateData->pDeviceFuncs->pfnFlush = vboxWddmDDevFlush;
|
---|
1923 | pCreateData->pDeviceFuncs->pfnCreateVertexShaderFunc = vboxWddmDDevCreateVertexShaderFunc;
|
---|
1924 | pCreateData->pDeviceFuncs->pfnDeleteVertexShaderFunc = vboxWddmDDevDeleteVertexShaderFunc;
|
---|
1925 | pCreateData->pDeviceFuncs->pfnSetVertexShaderFunc = vboxWddmDDevSetVertexShaderFunc;
|
---|
1926 | pCreateData->pDeviceFuncs->pfnCreateVertexShaderDecl = vboxWddmDDevCreateVertexShaderDecl;
|
---|
1927 | pCreateData->pDeviceFuncs->pfnDeleteVertexShaderDecl = vboxWddmDDevDeleteVertexShaderDecl;
|
---|
1928 | pCreateData->pDeviceFuncs->pfnSetVertexShaderDecl = vboxWddmDDevSetVertexShaderDecl;
|
---|
1929 | pCreateData->pDeviceFuncs->pfnSetVertexShaderConstI = vboxWddmDDevSetVertexShaderConstI;
|
---|
1930 | pCreateData->pDeviceFuncs->pfnSetVertexShaderConstB = vboxWddmDDevSetVertexShaderConstB;
|
---|
1931 | pCreateData->pDeviceFuncs->pfnSetScissorRect = vboxWddmDDevSetScissorRect;
|
---|
1932 | pCreateData->pDeviceFuncs->pfnSetStreamSource = vboxWddmDDevSetStreamSource;
|
---|
1933 | pCreateData->pDeviceFuncs->pfnSetStreamSourceFreq = vboxWddmDDevSetStreamSourceFreq;
|
---|
1934 | pCreateData->pDeviceFuncs->pfnSetConvolutionKernelMono = vboxWddmDDevSetConvolutionKernelMono;
|
---|
1935 | pCreateData->pDeviceFuncs->pfnComposeRects = vboxWddmDDevComposeRects;
|
---|
1936 | pCreateData->pDeviceFuncs->pfnBlt = vboxWddmDDevBlt;
|
---|
1937 | pCreateData->pDeviceFuncs->pfnColorFill = vboxWddmDDevColorFill;
|
---|
1938 | pCreateData->pDeviceFuncs->pfnDepthFill = vboxWddmDDevDepthFill;
|
---|
1939 | pCreateData->pDeviceFuncs->pfnCreateQuery = vboxWddmDDevCreateQuery;
|
---|
1940 | pCreateData->pDeviceFuncs->pfnDestroyQuery = vboxWddmDDevDestroyQuery;
|
---|
1941 | pCreateData->pDeviceFuncs->pfnIssueQuery = vboxWddmDDevIssueQuery;
|
---|
1942 | pCreateData->pDeviceFuncs->pfnGetQueryData = vboxWddmDDevGetQueryData;
|
---|
1943 | pCreateData->pDeviceFuncs->pfnSetRenderTarget = vboxWddmDDevSetRenderTarget;
|
---|
1944 | pCreateData->pDeviceFuncs->pfnSetDepthStencil = vboxWddmDDevSetDepthStencil;
|
---|
1945 | pCreateData->pDeviceFuncs->pfnGenerateMipSubLevels = vboxWddmDDevGenerateMipSubLevels;
|
---|
1946 | pCreateData->pDeviceFuncs->pfnSetPixelShaderConstI = vboxWddmDDevSetPixelShaderConstI;
|
---|
1947 | pCreateData->pDeviceFuncs->pfnSetPixelShaderConstB = vboxWddmDDevSetPixelShaderConstB;
|
---|
1948 | pCreateData->pDeviceFuncs->pfnCreatePixelShader = vboxWddmDDevCreatePixelShader;
|
---|
1949 | pCreateData->pDeviceFuncs->pfnDeletePixelShader = vboxWddmDDevDeletePixelShader;
|
---|
1950 | pCreateData->pDeviceFuncs->pfnCreateDecodeDevice = vboxWddmDDevCreateDecodeDevice;
|
---|
1951 | pCreateData->pDeviceFuncs->pfnDestroyDecodeDevice = vboxWddmDDevDestroyDecodeDevice;
|
---|
1952 | pCreateData->pDeviceFuncs->pfnSetDecodeRenderTarget = vboxWddmDDevSetDecodeRenderTarget;
|
---|
1953 | pCreateData->pDeviceFuncs->pfnDecodeBeginFrame = vboxWddmDDevDecodeBeginFrame;
|
---|
1954 | pCreateData->pDeviceFuncs->pfnDecodeEndFrame = vboxWddmDDevDecodeEndFrame;
|
---|
1955 | pCreateData->pDeviceFuncs->pfnDecodeExecute = vboxWddmDDevDecodeExecute;
|
---|
1956 | pCreateData->pDeviceFuncs->pfnDecodeExtensionExecute = vboxWddmDDevDecodeExtensionExecute;
|
---|
1957 | pCreateData->pDeviceFuncs->pfnCreateVideoProcessDevice = vboxWddmDDevCreateVideoProcessDevice;
|
---|
1958 | pCreateData->pDeviceFuncs->pfnDestroyVideoProcessDevice = vboxWddmDDevDestroyVideoProcessDevice;
|
---|
1959 | pCreateData->pDeviceFuncs->pfnVideoProcessBeginFrame = vboxWddmDDevVideoProcessBeginFrame;
|
---|
1960 | pCreateData->pDeviceFuncs->pfnVideoProcessEndFrame = vboxWddmDDevVideoProcessEndFrame;
|
---|
1961 | pCreateData->pDeviceFuncs->pfnSetVideoProcessRenderTarget = vboxWddmDDevSetVideoProcessRenderTarget;
|
---|
1962 | pCreateData->pDeviceFuncs->pfnVideoProcessBlt = vboxWddmDDevVideoProcessBlt;
|
---|
1963 | pCreateData->pDeviceFuncs->pfnCreateExtensionDevice = vboxWddmDDevCreateExtensionDevice;
|
---|
1964 | pCreateData->pDeviceFuncs->pfnDestroyExtensionDevice = vboxWddmDDevDestroyExtensionDevice;
|
---|
1965 | pCreateData->pDeviceFuncs->pfnExtensionExecute = vboxWddmDDevExtensionExecute;
|
---|
1966 | pCreateData->pDeviceFuncs->pfnCreateOverlay = vboxWddmDDevCreateOverlay;
|
---|
1967 | pCreateData->pDeviceFuncs->pfnUpdateOverlay = vboxWddmDDevUpdateOverlay;
|
---|
1968 | pCreateData->pDeviceFuncs->pfnFlipOverlay = vboxWddmDDevFlipOverlay;
|
---|
1969 | pCreateData->pDeviceFuncs->pfnGetOverlayColorControls = vboxWddmDDevGetOverlayColorControls;
|
---|
1970 | pCreateData->pDeviceFuncs->pfnSetOverlayColorControls = vboxWddmDDevSetOverlayColorControls;
|
---|
1971 | pCreateData->pDeviceFuncs->pfnDestroyOverlay = vboxWddmDDevDestroyOverlay;
|
---|
1972 | pCreateData->pDeviceFuncs->pfnDestroyDevice = vboxWddmDDevDestroyDevice;
|
---|
1973 | pCreateData->pDeviceFuncs->pfnQueryResourceResidency = vboxWddmDDevQueryResourceResidency;
|
---|
1974 | pCreateData->pDeviceFuncs->pfnOpenResource = vboxWddmDDevOpenResource;
|
---|
1975 | pCreateData->pDeviceFuncs->pfnGetCaptureAllocationHandle = vboxWddmDDevGetCaptureAllocationHandle;
|
---|
1976 | pCreateData->pDeviceFuncs->pfnCaptureToSysMem = vboxWddmDDevCaptureToSysMem;
|
---|
1977 | pCreateData->pDeviceFuncs->pfnLockAsync = NULL; //vboxWddmDDevLockAsync;
|
---|
1978 | pCreateData->pDeviceFuncs->pfnUnlockAsync = NULL; //vboxWddmDDevUnlockAsync;
|
---|
1979 | pCreateData->pDeviceFuncs->pfnRename = NULL; //vboxWddmDDevRename;
|
---|
1980 |
|
---|
1981 |
|
---|
1982 | do
|
---|
1983 | {
|
---|
1984 | Assert(!pCreateData->AllocationListSize
|
---|
1985 | && !pCreateData->PatchLocationListSize);
|
---|
1986 | if (!pCreateData->AllocationListSize
|
---|
1987 | && !pCreateData->PatchLocationListSize)
|
---|
1988 | {
|
---|
1989 | pDevice->DefaultContext.ContextInfo.NodeOrdinal = 0;
|
---|
1990 | pDevice->DefaultContext.ContextInfo.EngineAffinity = 0;
|
---|
1991 | pDevice->DefaultContext.ContextInfo.Flags.Value = 0;
|
---|
1992 | pDevice->DefaultContext.ContextInfo.pPrivateDriverData = NULL;
|
---|
1993 | pDevice->DefaultContext.ContextInfo.PrivateDriverDataSize = 0;
|
---|
1994 | pDevice->DefaultContext.ContextInfo.hContext = 0;
|
---|
1995 | pDevice->DefaultContext.ContextInfo.pCommandBuffer = NULL;
|
---|
1996 | pDevice->DefaultContext.ContextInfo.CommandBufferSize = 0;
|
---|
1997 | pDevice->DefaultContext.ContextInfo.pAllocationList = NULL;
|
---|
1998 | pDevice->DefaultContext.ContextInfo.AllocationListSize = 0;
|
---|
1999 | pDevice->DefaultContext.ContextInfo.pPatchLocationList = NULL;
|
---|
2000 | pDevice->DefaultContext.ContextInfo.PatchLocationListSize = 0;
|
---|
2001 |
|
---|
2002 | hr = pDevice->RtCallbacks.pfnCreateContextCb(pDevice->hDevice, &pDevice->DefaultContext.ContextInfo);
|
---|
2003 | Assert(hr == S_OK);
|
---|
2004 | if (hr == S_OK)
|
---|
2005 | {
|
---|
2006 | if (pDevice->u32IfVersion > 7)
|
---|
2007 | {
|
---|
2008 | /* D3D */
|
---|
2009 | if (pAdapter->pD3D9If)
|
---|
2010 | {
|
---|
2011 | /* */
|
---|
2012 | vboxVDbgPrint((__FUNCTION__": TODO: Implement D3D Device Creation\n"));
|
---|
2013 | break;
|
---|
2014 | }
|
---|
2015 | else
|
---|
2016 | {
|
---|
2017 | /* ballback */
|
---|
2018 | vboxVDbgPrint((__FUNCTION__": D3D Device Being Created, but D3D is unavailable\n"));
|
---|
2019 | break;
|
---|
2020 | }
|
---|
2021 | }
|
---|
2022 | else
|
---|
2023 | {
|
---|
2024 | /* DDraw */
|
---|
2025 | vboxVDbgPrint((__FUNCTION__": DirectDraw Device Created\n"));
|
---|
2026 | break;
|
---|
2027 | }
|
---|
2028 |
|
---|
2029 | D3DDDICB_DESTROYCONTEXT DestroyContext;
|
---|
2030 | DestroyContext.hContext = pDevice->DefaultContext.ContextInfo.hContext;
|
---|
2031 |
|
---|
2032 | HRESULT tmpHr = pDevice->RtCallbacks.pfnDestroyContextCb(pDevice->hDevice, &DestroyContext);
|
---|
2033 | Assert(tmpHr == S_OK);
|
---|
2034 | }
|
---|
2035 | else
|
---|
2036 | vboxVDbgPrintR((__FUNCTION__": pfnCreateContextCb failed, hr(%d)\n", hr));
|
---|
2037 | }
|
---|
2038 | else
|
---|
2039 | {
|
---|
2040 | vboxVDbgPrintR((__FUNCTION__": Not implemented: PatchLocationListSize(%d), AllocationListSize(%d)\n",
|
---|
2041 | pCreateData->PatchLocationListSize, pCreateData->AllocationListSize));
|
---|
2042 | //pCreateData->pAllocationList = ??
|
---|
2043 | hr = E_FAIL;
|
---|
2044 | }
|
---|
2045 |
|
---|
2046 | RTMemFree(pDevice);
|
---|
2047 | } while (0);
|
---|
2048 | }
|
---|
2049 | else
|
---|
2050 | {
|
---|
2051 | vboxVDbgPrintR((__FUNCTION__": RTMemAllocZ returned NULL\n"));
|
---|
2052 | hr = E_OUTOFMEMORY;
|
---|
2053 | }
|
---|
2054 |
|
---|
2055 | vboxVDbgPrint(("<== "__FUNCTION__", hAdapter(0x%p)\n", hAdapter));
|
---|
2056 |
|
---|
2057 | return hr;
|
---|
2058 | }
|
---|
2059 |
|
---|
2060 | static HRESULT APIENTRY vboxWddmDispCloseAdapter (IN HANDLE hAdapter)
|
---|
2061 | {
|
---|
2062 | vboxVDbgPrint(("==> "__FUNCTION__", hAdapter(0x%p)\n", hAdapter));
|
---|
2063 |
|
---|
2064 | // AssertBreakpoint();
|
---|
2065 |
|
---|
2066 | PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)hAdapter;
|
---|
2067 | if (pAdapter->pD3D9If)
|
---|
2068 | {
|
---|
2069 | HRESULT hr = pAdapter->pD3D9If->Release();
|
---|
2070 | Assert(hr == S_OK);
|
---|
2071 | VBoxDispD3DClose(&pAdapter->D3D);
|
---|
2072 | }
|
---|
2073 |
|
---|
2074 | vboxCapsFree(pAdapter);
|
---|
2075 |
|
---|
2076 | RTMemFree(pAdapter);
|
---|
2077 |
|
---|
2078 | vboxVDbgPrint(("<== "__FUNCTION__", hAdapter(0x%p)\n", hAdapter));
|
---|
2079 |
|
---|
2080 | return S_OK;
|
---|
2081 | }
|
---|
2082 |
|
---|
2083 | HRESULT APIENTRY OpenAdapter (__inout D3DDDIARG_OPENADAPTER* pOpenData)
|
---|
2084 | {
|
---|
2085 | vboxVDbgPrint(("==> "__FUNCTION__"\n"));
|
---|
2086 |
|
---|
2087 | VBOXWDDM_QI Query;
|
---|
2088 | D3DDDICB_QUERYADAPTERINFO DdiQuery;
|
---|
2089 | DdiQuery.PrivateDriverDataSize = sizeof(Query);
|
---|
2090 | DdiQuery.pPrivateDriverData = &Query;
|
---|
2091 | HRESULT hr = pOpenData->pAdapterCallbacks->pfnQueryAdapterInfoCb(pOpenData->hAdapter, &DdiQuery);
|
---|
2092 | Assert(hr == S_OK);
|
---|
2093 | if (hr != S_OK)
|
---|
2094 | {
|
---|
2095 | vboxVDbgPrintR((__FUNCTION__": pfnQueryAdapterInfoCb failed, hr (%d)\n", hr));
|
---|
2096 | return E_FAIL;
|
---|
2097 | }
|
---|
2098 |
|
---|
2099 | /* check the miniport version match display version */
|
---|
2100 | if (Query.u32Version != VBOXVIDEOIF_VERSION)
|
---|
2101 | {
|
---|
2102 | vboxVDbgPrintR((__FUNCTION__": miniport version mismatch, expected (%d), but was (%d)\n",
|
---|
2103 | VBOXVIDEOIF_VERSION,
|
---|
2104 | Query.u32Version));
|
---|
2105 | return E_FAIL;
|
---|
2106 | }
|
---|
2107 |
|
---|
2108 | #ifdef VBOX_WITH_VIDEOHWACCEL
|
---|
2109 | Assert(Query.cInfos >= 1);
|
---|
2110 | PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)RTMemAllocZ(RT_OFFSETOF(VBOXWDDMDISP_ADAPTER, aHeads[Query.cInfos]));
|
---|
2111 | #else
|
---|
2112 | PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)RTMemAllocZ(sizeof (VBOXWDDMDISP_ADAPTER));
|
---|
2113 | #endif
|
---|
2114 | Assert(pAdapter);
|
---|
2115 | if (pAdapter)
|
---|
2116 | {
|
---|
2117 | pAdapter->hAdapter = pOpenData->hAdapter;
|
---|
2118 | pAdapter->uIfVersion = pOpenData->Interface;
|
---|
2119 | pAdapter->uRtVersion= pOpenData->Version;
|
---|
2120 | pAdapter->RtCallbacks = *pOpenData->pAdapterCallbacks;
|
---|
2121 |
|
---|
2122 | pAdapter->cHeads = Query.cInfos;
|
---|
2123 |
|
---|
2124 |
|
---|
2125 | pOpenData->hAdapter = pAdapter;
|
---|
2126 | pOpenData->pAdapterFuncs->pfnGetCaps = vboxWddmDispGetCaps;
|
---|
2127 | pOpenData->pAdapterFuncs->pfnCreateDevice = vboxWddmDispCreateDevice;
|
---|
2128 | pOpenData->pAdapterFuncs->pfnCloseAdapter = vboxWddmDispCloseAdapter;
|
---|
2129 | pOpenData->DriverVersion = D3D_UMD_INTERFACE_VERSION;
|
---|
2130 | /*
|
---|
2131 | * here we detect whether we are called by the d3d or ddraw.
|
---|
2132 | * in the d3d case we init our d3d environment
|
---|
2133 | * in the ddraw case we init 2D acceleration
|
---|
2134 | * if interface version is > 7, this is D3D, treat it as so
|
---|
2135 | * otherwise treat it as ddraw
|
---|
2136 | * @todo: need a more clean way of doing this */
|
---|
2137 |
|
---|
2138 | if (pAdapter->uIfVersion > 7)
|
---|
2139 | {
|
---|
2140 | do
|
---|
2141 | {
|
---|
2142 | /* try enable the 3D */
|
---|
2143 | hr = VBoxDispD3DOpen(&pAdapter->D3D);
|
---|
2144 | Assert(hr == S_OK);
|
---|
2145 | if (hr == S_OK)
|
---|
2146 | {
|
---|
2147 | hr = pAdapter->D3D.pfnDirect3DCreate9Ex(D3D_SDK_VERSION, &pAdapter->pD3D9If);
|
---|
2148 | Assert(hr == S_OK);
|
---|
2149 | if (hr == S_OK)
|
---|
2150 | {
|
---|
2151 | vboxVDbgPrint((__FUNCTION__": SUCCESS 3D Enabled, pAdapter (0x%p)\n", pAdapter));
|
---|
2152 | break;
|
---|
2153 | }
|
---|
2154 | else
|
---|
2155 | vboxVDbgPrintR((__FUNCTION__": pfnDirect3DCreate9Ex failed, hr (%d)\n", hr));
|
---|
2156 | VBoxDispD3DClose(&pAdapter->D3D);
|
---|
2157 | }
|
---|
2158 | else
|
---|
2159 | vboxVDbgPrintR((__FUNCTION__": VBoxDispD3DOpen failed, hr (%d)\n", hr));
|
---|
2160 | } while (0);
|
---|
2161 | }
|
---|
2162 | #ifdef VBOX_WITH_VIDEOHWACCEL
|
---|
2163 | else
|
---|
2164 | {
|
---|
2165 | for (uint32_t i = 0; i < pAdapter->cHeads; ++i)
|
---|
2166 | {
|
---|
2167 | pAdapter->aHeads[i].Vhwa.Settings = Query.aInfos[i];
|
---|
2168 | }
|
---|
2169 | }
|
---|
2170 | #endif
|
---|
2171 |
|
---|
2172 | vboxCapsInit(pAdapter);
|
---|
2173 | hr = S_OK;
|
---|
2174 | // RTMemFree(pAdapter);
|
---|
2175 | }
|
---|
2176 | else
|
---|
2177 | {
|
---|
2178 | vboxVDbgPrintR((__FUNCTION__": RTMemAllocZ returned NULL\n"));
|
---|
2179 | hr = E_OUTOFMEMORY;
|
---|
2180 | }
|
---|
2181 |
|
---|
2182 | vboxVDbgPrint(("<== "__FUNCTION__", hr (%d)\n", hr));
|
---|
2183 |
|
---|
2184 | return hr;
|
---|
2185 | }
|
---|
2186 |
|
---|
2187 | #ifdef VBOXWDDMDISP_DEBUG
|
---|
2188 | VOID vboxVDbgDoPrint(LPCSTR szString, ...)
|
---|
2189 | {
|
---|
2190 | char szBuffer[1024] = {0};
|
---|
2191 | va_list pArgList;
|
---|
2192 | va_start(pArgList, szString);
|
---|
2193 | _vsnprintf(szBuffer, sizeof(szBuffer) / sizeof(szBuffer[0]), szString, pArgList);
|
---|
2194 | va_end(pArgList);
|
---|
2195 |
|
---|
2196 | OutputDebugStringA(szBuffer);
|
---|
2197 | }
|
---|
2198 | #endif
|
---|