Changeset 42499 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Wine
- Timestamp:
- Aug 1, 2012 10:26:43 AM (13 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Wine
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/d3d9_private.h
r40388 r42499 192 192 193 193 HRESULT device_init(IDirect3DDevice9Impl *device, IWineD3D *wined3d, UINT adapter, D3DDEVTYPE device_type, 194 HWND focus_window, DWORD flags, D3DPRESENT_PARAMETERS *parameters) DECLSPEC_HIDDEN; 194 HWND focus_window, DWORD flags 195 #ifdef VBOX_WITH_WDDM 196 , VBOXWINEEX_D3DPRESENT_PARAMETERS *parameters 197 #else 198 , D3DPRESENT_PARAMETERS *parameters 199 #endif 200 ) DECLSPEC_HIDDEN; 195 201 196 202 /* IDirect3DDevice9: */ -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/device.c
r40388 r42499 3153 3153 }; 3154 3154 3155 #ifdef VBOX_WITH_WDDM 3156 # define PP_BASE(_p) (&(_p)->Base) 3157 #else 3158 # define PP_BASE(_p) (_p) 3159 #endif 3155 3160 HRESULT device_init(IDirect3DDevice9Impl *device, IWineD3D *wined3d, UINT adapter, D3DDEVTYPE device_type, 3156 HWND focus_window, DWORD flags, D3DPRESENT_PARAMETERS *parameters) 3161 HWND focus_window, DWORD flags 3162 #ifdef VBOX_WITH_WDDM 3163 , VBOXWINEEX_D3DPRESENT_PARAMETERS *parameters 3164 #else 3165 , D3DPRESENT_PARAMETERS *parameters 3166 #endif 3167 ) 3157 3168 { 3158 3169 WINED3DPRESENT_PARAMETERS *wined3d_parameters; … … 3209 3220 for (i = 0; i < count; ++i) 3210 3221 { 3211 wined3d_parameters[i].BackBufferWidth = parameters[i].BackBufferWidth;3212 wined3d_parameters[i].BackBufferHeight = parameters[i].BackBufferHeight;3213 wined3d_parameters[i].BackBufferFormat = wined3dformat_from_d3dformat( parameters[i].BackBufferFormat);3214 wined3d_parameters[i].BackBufferCount = parameters[i].BackBufferCount;3215 wined3d_parameters[i].MultiSampleType = parameters[i].MultiSampleType;3216 wined3d_parameters[i].MultiSampleQuality = parameters[i].MultiSampleQuality;3217 wined3d_parameters[i].SwapEffect = parameters[i].SwapEffect;3218 wined3d_parameters[i].hDeviceWindow = parameters[i].hDeviceWindow;3219 wined3d_parameters[i].Windowed = parameters[i].Windowed;3220 wined3d_parameters[i].EnableAutoDepthStencil = parameters[i].EnableAutoDepthStencil;3222 wined3d_parameters[i].BackBufferWidth = PP_BASE(¶meters[i])->BackBufferWidth; 3223 wined3d_parameters[i].BackBufferHeight =PP_BASE(¶meters[i])->BackBufferHeight; 3224 wined3d_parameters[i].BackBufferFormat = wined3dformat_from_d3dformat(PP_BASE(¶meters[i])->BackBufferFormat); 3225 wined3d_parameters[i].BackBufferCount = PP_BASE(¶meters[i])->BackBufferCount; 3226 wined3d_parameters[i].MultiSampleType =PP_BASE(¶meters[i])->MultiSampleType; 3227 wined3d_parameters[i].MultiSampleQuality =PP_BASE(¶meters[i])->MultiSampleQuality; 3228 wined3d_parameters[i].SwapEffect =PP_BASE(¶meters[i])->SwapEffect; 3229 wined3d_parameters[i].hDeviceWindow =PP_BASE(¶meters[i])->hDeviceWindow; 3230 wined3d_parameters[i].Windowed =PP_BASE(¶meters[i])->Windowed; 3231 wined3d_parameters[i].EnableAutoDepthStencil =PP_BASE(¶meters[i])->EnableAutoDepthStencil; 3221 3232 wined3d_parameters[i].AutoDepthStencilFormat = 3222 wined3dformat_from_d3dformat( parameters[i].AutoDepthStencilFormat);3223 wined3d_parameters[i].Flags = parameters[i].Flags;3224 wined3d_parameters[i].FullScreen_RefreshRateInHz = parameters[i].FullScreen_RefreshRateInHz;3225 wined3d_parameters[i].PresentationInterval = parameters[i].PresentationInterval;3233 wined3dformat_from_d3dformat(PP_BASE(¶meters[i])->AutoDepthStencilFormat); 3234 wined3d_parameters[i].Flags =PP_BASE(¶meters[i])->Flags; 3235 wined3d_parameters[i].FullScreen_RefreshRateInHz =PP_BASE(¶meters[i])->FullScreen_RefreshRateInHz; 3236 wined3d_parameters[i].PresentationInterval =PP_BASE(¶meters[i])->PresentationInterval; 3226 3237 wined3d_parameters[i].AutoRestoreDisplayMode = TRUE; 3238 #ifdef VBOX_WITH_WDDM 3239 wined3d_parameters[i].pHgsmi = parameters[i].pHgsmi; 3240 #endif 3227 3241 } 3228 3242 … … 3244 3258 for (i = 0; i < count; ++i) 3245 3259 { 3246 parameters[i].BackBufferWidth = wined3d_parameters[i].BackBufferWidth;3247 parameters[i].BackBufferHeight = wined3d_parameters[i].BackBufferHeight;3248 parameters[i].BackBufferFormat = d3dformat_from_wined3dformat(wined3d_parameters[i].BackBufferFormat);3249 parameters[i].BackBufferCount = wined3d_parameters[i].BackBufferCount;3250 parameters[i].MultiSampleType = wined3d_parameters[i].MultiSampleType;3251 parameters[i].MultiSampleQuality = wined3d_parameters[i].MultiSampleQuality;3252 parameters[i].SwapEffect = wined3d_parameters[i].SwapEffect;3253 parameters[i].hDeviceWindow = wined3d_parameters[i].hDeviceWindow;3254 parameters[i].Windowed = wined3d_parameters[i].Windowed;3255 parameters[i].EnableAutoDepthStencil = wined3d_parameters[i].EnableAutoDepthStencil;3256 parameters[i].AutoDepthStencilFormat =3260 PP_BASE(¶meters[i])->BackBufferWidth = wined3d_parameters[i].BackBufferWidth; 3261 PP_BASE(¶meters[i])->BackBufferHeight = wined3d_parameters[i].BackBufferHeight; 3262 PP_BASE(¶meters[i])->BackBufferFormat = d3dformat_from_wined3dformat(wined3d_parameters[i].BackBufferFormat); 3263 PP_BASE(¶meters[i])->BackBufferCount = wined3d_parameters[i].BackBufferCount; 3264 PP_BASE(¶meters[i])->MultiSampleType = wined3d_parameters[i].MultiSampleType; 3265 PP_BASE(¶meters[i])->MultiSampleQuality = wined3d_parameters[i].MultiSampleQuality; 3266 PP_BASE(¶meters[i])->SwapEffect = wined3d_parameters[i].SwapEffect; 3267 PP_BASE(¶meters[i])->hDeviceWindow = wined3d_parameters[i].hDeviceWindow; 3268 PP_BASE(¶meters[i])->Windowed = wined3d_parameters[i].Windowed; 3269 PP_BASE(¶meters[i])->EnableAutoDepthStencil = wined3d_parameters[i].EnableAutoDepthStencil; 3270 PP_BASE(¶meters[i])->AutoDepthStencilFormat = 3257 3271 d3dformat_from_wined3dformat(wined3d_parameters[i].AutoDepthStencilFormat); 3258 parameters[i].Flags = wined3d_parameters[i].Flags;3259 parameters[i].FullScreen_RefreshRateInHz = wined3d_parameters[i].FullScreen_RefreshRateInHz;3260 parameters[i].PresentationInterval = wined3d_parameters[i].PresentationInterval;3272 PP_BASE(¶meters[i])->Flags = wined3d_parameters[i].Flags; 3273 PP_BASE(¶meters[i])->FullScreen_RefreshRateInHz = wined3d_parameters[i].FullScreen_RefreshRateInHz; 3274 PP_BASE(¶meters[i])->PresentationInterval = wined3d_parameters[i].PresentationInterval; 3261 3275 } 3262 3276 HeapFree(GetProcessHeap(), 0, wined3d_parameters); -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/d3d9/directx.c
r40389 r42499 523 523 } 524 524 525 hr = device_init(object, This->WineD3D, adapter, device_type, focus_window, flags, parameters); 525 hr = device_init(object, This->WineD3D, adapter, device_type, focus_window, flags, 526 #ifdef VBOX_WITH_WDDM 527 (VBOXWINEEX_D3DPRESENT_PARAMETERS *) 528 #endif 529 parameters); 526 530 if (FAILED(hr)) 527 531 { -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/VBoxWineEx.h
r40388 r42499 84 84 VBOXWINEEX_DECL(HRESULT) VBoxWineExD3DSwapchain9Present(IDirect3DSwapChain9 *iface, 85 85 IDirect3DSurface9 *surf); /* use the given surface as a frontbuffer content source */ 86 87 typedef struct VBOXWINEEX_D3DPRESENT_PARAMETERS 88 { 89 D3DPRESENT_PARAMETERS Base; 90 struct VBOXUHGSMI *pHgsmi; 91 } VBOXWINEEX_D3DPRESENT_PARAMETERS, *PVBOXWINEEX_D3DPRESENT_PARAMETERS; 86 92 #ifdef __cplusplus 87 93 } -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/vbox/libWineStub/include/wine/wined3d.h
r42285 r42499 2262 2262 UINT PresentationInterval; 2263 2263 BOOL AutoRestoreDisplayMode; 2264 #ifdef VBOX_WITH_WDDM 2265 struct VBOXUHGSMI *pHgsmi; 2266 #endif 2264 2267 } WINED3DPRESENT_PARAMETERS; 2265 2268 typedef struct _WINED3DSURFACE_DESC { -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/context.c
r42285 r42499 1532 1532 *****************************************************************************/ 1533 1533 struct wined3d_context *context_create(IWineD3DSwapChainImpl *swapchain, IWineD3DSurfaceImpl *target, 1534 const struct wined3d_format_desc *ds_format_desc) 1534 const struct wined3d_format_desc *ds_format_desc 1535 #ifdef VBOX_WITH_WDDM 1536 , struct VBOXUHGSMI *pHgsmi 1537 #endif 1538 ) 1535 1539 { 1536 1540 IWineD3DDeviceImpl *device = swapchain->device; … … 1549 1553 TRACE("swapchain %p, target %p, window %p.\n", swapchain, target, swapchain->win_handle); 1550 1554 1555 #ifdef VBOX_WITH_WDDM 1556 if (!pHgsmi) 1557 { 1558 ERR("HGSMI should be specified!"); 1559 return NULL; 1560 } 1561 #endif 1562 1551 1563 ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*ret)); 1552 1564 if (!ret) … … 1644 1656 } 1645 1657 1646 ctx = pwglCreateContext(hdc); 1658 ctx = pVBoxCreateContext(hdc 1659 #ifdef VBOX_WITH_WDDM 1660 , pHgsmi 1661 #else 1662 , NULL 1663 #endif 1664 ); 1647 1665 if (device->numContexts) 1648 1666 { … … 1955 1973 { 1956 1974 Assert(!device->NumberOfSwapChains); 1957 context = context_create(swapchain, target, ds_format_desc); 1975 context = context_create(swapchain, target, ds_format_desc 1976 #ifdef VBOX_WITH_WDDM 1977 , device->pHgsmi 1978 #endif 1979 ); 1958 1980 } 1959 1981 else -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/device.c
r42408 r42499 1605 1605 if(!This->adapter->opengl) return WINED3DERR_INVALIDCALL; 1606 1606 1607 #ifdef VBOX_WITH_WDDM 1608 if (!pPresentationParameters->pHgsmi) 1609 { 1610 ERR("hgsmi not specified!"); 1611 return WINED3DERR_INVALIDCALL; 1612 } 1613 This->pHgsmi = pPresentationParameters->pHgsmi; 1614 #endif 1607 1615 TRACE("(%p) : Creating stateblock\n", This); 1608 1616 /* Creating the startup stateBlock - Note Special Case: 0 => Don't fill in yet! */ … … 6456 6464 IWineD3DSurfaceImpl *target; 6457 6465 6466 #ifdef VBOX_WITH_WDDM 6467 ERR("Should not be here!"); 6468 #endif 6469 6458 6470 #ifndef VBOX_WITH_WDDM 6459 6471 /* Recreate the primary swapchain's context */ … … 6467 6479 6468 6480 target = (IWineD3DSurfaceImpl *)(swapchain->backBuffer ? swapchain->backBuffer[0] : swapchain->frontBuffer); 6469 if (!(context = context_create(swapchain, target, swapchain->ds_format))) 6481 if (!(context = context_create(swapchain, target, swapchain->ds_format 6482 #ifdef VBOX_WITH_WDDM 6483 , This->pHgsmi 6484 #endif 6485 ))) 6470 6486 { 6471 6487 WARN("Failed to create context.\n"); -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/directx.c
r42285 r42499 36 36 #include <stdio.h> 37 37 #include "wined3d_private.h" 38 39 #ifdef VBOX_WITH_WDDM 40 # include <VBox/VBoxCrHgsmi.h> 41 #endif 38 42 39 43 WINE_DEFAULT_DEBUG_CHANNEL(d3d); … … 254 258 } 255 259 256 static BOOL WineD3D_CreateFakeGLContext(struct wined3d_fake_gl_ctx *ctx )260 static BOOL WineD3D_CreateFakeGLContext(struct wined3d_fake_gl_ctx *ctx, struct VBOXUHGSMI *pHgsmi) 257 261 { 258 262 PIXELFORMATDESCRIPTOR pfd; … … 300 304 301 305 /* Create a GL context. */ 302 ctx->gl_ctx = p wglCreateContext(ctx->dc);306 ctx->gl_ctx = pVBoxCreateContext(ctx->dc, pHgsmi); 303 307 if (!ctx->gl_ctx) 304 308 { … … 5309 5313 BOOL ret; 5310 5314 int ps_selected_mode, vs_selected_mode; 5315 struct VBOXUHGSMI *pHgsmi = NULL; 5311 5316 5312 5317 /* No need to hold any lock. The calling library makes sure only one thread calls … … 5355 5360 #define USE_WGL_FUNC(pfn) p##pfn = (void*)GetProcAddress(mod_gl, #pfn); 5356 5361 WGL_FUNCS_GEN; 5362 VBOX_FUNCS_GEN; 5357 5363 #undef USE_WGL_FUNC 5358 5364 … … 5380 5386 glDisableWINE = glDisable; 5381 5387 5388 #ifdef VBOX_WITH_WDDM 5389 pHgsmi = VBoxCrHgsmiCreate(); 5390 if (!pHgsmi) 5391 { 5392 ERR("VBoxCrHgsmiCreate failed"); 5393 goto nogl_adapter; 5394 } 5395 #endif 5396 5382 5397 /* For now only one default adapter */ 5383 5398 { … … 5406 5421 adapter->luid.HighPart, adapter->luid.LowPart); 5407 5422 5408 if (!WineD3D_CreateFakeGLContext(&fake_gl_ctx ))5423 if (!WineD3D_CreateFakeGLContext(&fake_gl_ctx, pHgsmi)) 5409 5424 { 5410 5425 ERR("Failed to get a gl context for default adapter\n"); … … 5595 5610 TRACE("%u adapters successfully initialized\n", This->adapter_count); 5596 5611 5612 #ifdef VBOX_WITH_WDDM 5613 VBoxCrHgsmiDestroy(pHgsmi); 5614 pHgsmi = NULL; 5615 #endif 5616 5597 5617 return TRUE; 5598 5618 … … 5615 5635 #endif 5616 5636 initPixelFormatsNoGL(&This->adapters[0].gl_info); 5637 5638 #ifdef VBOX_WITH_WDDM 5639 if (pHgsmi) 5640 { 5641 VBoxCrHgsmiDestroy(pHgsmi); 5642 pHgsmi = NULL; 5643 } 5644 #endif 5617 5645 5618 5646 This->adapter_count = 1; -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/swapchain.c
r39869 r42499 1233 1233 TRACE("Creating a new context for swapchain %p, thread %d\n", This, GetCurrentThreadId()); 1234 1234 1235 if (!(ctx = context_create(This, (IWineD3DSurfaceImpl *)This->frontBuffer, This->ds_format))) 1235 #ifdef VBOX_WITH_WDDM 1236 ERR("Should not be here"); 1237 #endif 1238 1239 if (!(ctx = context_create(This, (IWineD3DSurfaceImpl *)This->frontBuffer, This->ds_format 1240 #ifdef VBOX_WITH_WDDM 1241 , This->device->pHgsmi 1242 #endif 1243 ))) 1236 1244 { 1237 1245 ERR("Failed to create a new context for the swapchain\n"); -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/vboxext.c
r42408 r42499 18 18 #include "wined3d_private.h" 19 19 #include "vboxext.h" 20 #ifdef VBOX_WITH_WDDM 21 #include <VBox/VBoxCrHgsmi.h> 22 #include <iprt/err.h> 23 #endif 20 24 21 25 WINE_DEFAULT_DEBUG_CHANNEL(d3d_vbox); … … 282 286 { 283 287 HRESULT hr = S_OK; 288 #ifdef VBOX_WITH_WDDM 289 int rc = VBoxCrHgsmiInit(); 290 if (!RT_SUCCESS(rc)) 291 { 292 ERR("VBoxCrHgsmiInit failed rc %d", rc); 293 return E_FAIL; 294 } 295 #endif 284 296 memset(&g_VBoxExtGlobal, 0, sizeof (g_VBoxExtGlobal)); 285 297 hr = VBoxExtWorkerCreate(&g_VBoxExtGlobal.Worker); 298 if (SUCCEEDED(hr)) 299 return S_OK; 300 301 /* failure branch */ 302 #ifdef VBOX_WITH_WDDM 303 VBoxCrHgsmiTerm(); 304 #endif 286 305 return hr; 287 306 } … … 305 324 return hr; 306 325 } 326 327 #ifdef VBOX_WITH_WDDM 328 VBoxCrHgsmiTerm(); 329 #endif 330 307 331 return S_OK; 308 332 } -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_gl.h
r41929 r42499 1374 1374 1375 1375 /* WGL functions */ 1376 HGLRC (WINAPI *pwglCreateContext)(HDC) DECLSPEC_HIDDEN;1377 1376 BOOL (WINAPI *pwglDeleteContext)(HGLRC) DECLSPEC_HIDDEN; 1378 1377 HGLRC (WINAPI *pwglGetCurrentContext)(void) DECLSPEC_HIDDEN; … … 1382 1381 BOOL (WINAPI *pwglSwapLayerBuffers)(HDC, UINT) DECLSPEC_HIDDEN; 1383 1382 BOOL (WINAPI *pwglShareLists)(HGLRC, HGLRC) DECLSPEC_HIDDEN; 1383 1384 HGLRC (WINAPI *pVBoxCreateContext)(HDC, struct VBOXUHGSMI*) DECLSPEC_HIDDEN; 1384 1385 1385 1386 #define GL_FUNCS_GEN \ … … 1721 1722 1722 1723 #define WGL_FUNCS_GEN \ 1723 USE_WGL_FUNC(wglCreateContext) \1724 1724 USE_WGL_FUNC(wglDeleteContext) \ 1725 1725 USE_WGL_FUNC(wglGetCurrentContext) \ … … 1729 1729 USE_WGL_FUNC(wglShareLists) \ 1730 1730 USE_WGL_FUNC(wglSwapLayerBuffers) 1731 1732 #define VBOX_FUNCS_GEN \ 1733 USE_WGL_FUNC(VBoxCreateContext) 1731 1734 1732 1735 /* OpenGL extensions. */ -
trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/wined3d_private.h
r42408 r42499 1283 1283 GLenum fbo_target, DWORD idx, IWineD3DSurfaceImpl *surface) DECLSPEC_HIDDEN; 1284 1284 struct wined3d_context *context_create(IWineD3DSwapChainImpl *swapchain, IWineD3DSurfaceImpl *target, 1285 const struct wined3d_format_desc *ds_format_desc) DECLSPEC_HIDDEN; 1285 const struct wined3d_format_desc *ds_format_desc 1286 #ifdef VBOX_WITH_WDDM 1287 , struct VBOXUHGSMI *pHgsmi 1288 #endif 1289 ) DECLSPEC_HIDDEN; 1286 1290 struct IWineD3DDeviceImpl *context_get_device(const struct wined3d_context *context); DECLSPEC_HIDDEN; 1287 1291 #ifdef VBOX_WITH_WDDM … … 1800 1804 struct wined3d_context **contexts; 1801 1805 UINT numContexts; 1806 1807 #ifdef VBOX_WITH_WDDM 1808 struct VBOXUHGSMI *pHgsmi; 1809 #endif 1802 1810 1803 1811 #ifdef VBOX_WINE_WITH_SHADER_CACHE
Note:
See TracChangeset
for help on using the changeset viewer.