Changeset 32281 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Display
- Timestamp:
- Sep 7, 2010 12:02:49 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 65609
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp
r32185 r32281 1602 1602 break; 1603 1603 case D3DDDICAPS_GETD3DQUERYCOUNT: 1604 #if 01604 #if 1 1605 1605 *((uint32_t*)pData->pData) = VBOX_QUERYTYPE_COUNT(); 1606 1606 #else … … 1609 1609 break; 1610 1610 case D3DDDICAPS_GETD3DQUERYDATA: 1611 #if 01611 #if 1 1612 1612 Assert(pData->DataSize == VBOX_QUERYTYPE_COUNT() * sizeof (D3DDDIQUERYTYPE)); 1613 1613 memcpy(pData->pData, gVBoxQueryTypes, VBOX_QUERYTYPE_COUNT() * sizeof (D3DDDIQUERYTYPE)); … … 3358 3358 } 3359 3359 3360 static HRESULT vboxWddmD3DDeviceCreate(PVBOXWDDMDISP_DEVICE pDevice, UINT iScreen, PVBOXWDDMDISP_RESOURCE pRc, D3DPRESENT_PARAMETERS * pParams, BOOL bLockable) 3361 { 3362 UINT cSurfs = pParams->BackBufferCount + 1; 3363 Assert(pRc->cAllocations = cSurfs); 3364 IDirect3DDevice9 *pPrimaryDevice = pDevice->aScreens[pDevice->iPrimaryScreen].pDevice9If; 3365 PVBOXWDDMDISP_SCREEN pScreen = &pDevice->aScreens[iScreen]; 3366 PVBOXWDDMDISP_ADAPTER pAdapter = pDevice->pAdapter; 3367 HRESULT hr; 3368 HWND hWnd = NULL; 3369 Assert(!pScreen->pDevice9If); 3370 Assert(!pScreen->hWnd); 3371 hr = VBoxDispWndCreate(pAdapter, pParams->BackBufferWidth, pParams->BackBufferHeight, &hWnd); 3372 Assert(hr == S_OK); 3373 if (hr == S_OK) 3374 { 3375 pScreen->hWnd = hWnd; 3376 3377 DWORD fFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; 3378 if (pDevice->fFlags.AllowMultithreading) 3379 fFlags |= D3DCREATE_MULTITHREADED; 3380 3381 IDirect3DDevice9 *pDevice9If = NULL; 3382 pParams->hDeviceWindow = hWnd; 3383 /* @todo: it seems there should be a way to detect this correctly since 3384 * our vboxWddmDDevSetDisplayMode will be called in case we are using full-screen */ 3385 pParams->Windowed = TRUE; 3386 // params.EnableAutoDepthStencil = FALSE; 3387 // params.AutoDepthStencilFormat = D3DFMT_UNKNOWN; 3388 // params.Flags; 3389 // params.FullScreen_RefreshRateInHz; 3390 // params.FullScreen_PresentationInterval; 3391 hr = pAdapter->pD3D9If->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, fFlags, pParams, &pDevice9If); 3392 Assert(hr == S_OK); 3393 if (hr == S_OK) 3394 { 3395 pScreen->pDevice9If = pDevice9If; 3396 pScreen->pRenderTargetRc = pRc; 3397 ++pDevice->cScreens; 3398 3399 for (UINT i = 0; i < cSurfs; ++i) 3400 { 3401 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i]; 3402 pAllocation->enmD3DIfType = VBOXDISP_D3DIFTYPE_SURFACE; 3403 } 3404 3405 if (pPrimaryDevice) 3406 { 3407 for (UINT i = 0; i < cSurfs; ++i) 3408 { 3409 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i]; 3410 IDirect3DSurface9 *pRt; 3411 IDirect3DSurface9 *pSecondaryOpenedRt; 3412 HANDLE hSharedHandle = NULL; 3413 hr = pPrimaryDevice->CreateRenderTarget( 3414 pParams->BackBufferWidth, pParams->BackBufferHeight, 3415 pParams->BackBufferFormat, 3416 pParams->MultiSampleType, 3417 pParams->MultiSampleQuality, 3418 TRUE, /*BOOL Lockable*/ 3419 &pRt, 3420 &hSharedHandle); 3421 Assert(hr == S_OK); 3422 if (hr == S_OK) 3423 { 3424 Assert(hSharedHandle != NULL); 3425 /* open render target for primary device */ 3426 hr = pDevice9If->CreateRenderTarget( 3427 pParams->BackBufferWidth, pParams->BackBufferHeight, 3428 pParams->BackBufferFormat, 3429 pParams->MultiSampleType, 3430 pParams->MultiSampleQuality, 3431 TRUE, /*BOOL Lockable*/ 3432 &pSecondaryOpenedRt, 3433 &hSharedHandle); 3434 Assert(hr == S_OK); 3435 if (hr == S_OK) 3436 { 3437 pAllocation->pD3DIf = pRt; 3438 pAllocation->pSecondaryOpenedD3DIf = pSecondaryOpenedRt; 3439 pAllocation->hSharedHandle = hSharedHandle; 3440 continue; 3441 } 3442 pRt->Release(); 3443 } 3444 3445 for (UINT j = 0; j < i; ++j) 3446 { 3447 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[j]; 3448 pAlloc->pD3DIf->Release(); 3449 pAlloc->pSecondaryOpenedD3DIf->Release(); 3450 } 3451 3452 break; 3453 } 3454 } 3455 else 3456 { 3457 pDevice->iPrimaryScreen = iScreen; 3458 hr = vboxWddmRenderTargetUpdate(pDevice, pRc, 0); 3459 Assert(hr == S_OK); 3460 } 3461 3462 if (hr == S_OK) 3463 { 3464 for (UINT i = 0; i < cSurfs; ++i) 3465 { 3466 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i]; 3467 pAllocation->enmD3DIfType = VBOXDISP_D3DIFTYPE_SURFACE; 3468 hr = vboxWddmSurfSynchMem(pRc, pAllocation); 3469 Assert(hr == S_OK); 3470 if (hr != S_OK) 3471 { 3472 break; 3473 } 3474 } 3475 3476 #ifndef VBOXWDDM_WITH_VISIBLE_FB 3477 if (!pPrimaryDevice) 3478 { 3479 if (hr == S_OK) 3480 { 3481 IDirect3DSurface9* pD3D9Surf; 3482 hr = pDevice9If->CreateRenderTarget( 3483 pParams->BackBufferWidth, pParams->BackBufferHeight, 3484 pParams->BackBufferFormat, 3485 pParams->MultiSampleType, 3486 pParams->MultiSampleQuality, 3487 bLockable, 3488 &pD3D9Surf, 3489 NULL /* HANDLE* pSharedHandle */ 3490 ); 3491 Assert(hr == S_OK); 3492 if (hr == S_OK) 3493 { 3494 pDevice->pRenderTargetFbCopy = pD3D9Surf; 3495 } 3496 } 3497 } 3498 #endif 3499 3500 if (hr != S_OK) 3501 { 3502 for (UINT i = 0; i < cSurfs; ++i) 3503 { 3504 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i]; 3505 pAllocation->pD3DIf->Release(); 3506 } 3507 } 3508 } 3509 3510 if (hr != S_OK) 3511 { 3512 pDevice9If->Release(); 3513 --pDevice->cScreens; 3514 Assert(pDevice->cScreens < UINT32_MAX/2); 3515 } 3516 } 3517 3518 if (hr != S_OK) 3519 { 3520 HRESULT tmpHr = VBoxDispWndDestroy(pAdapter, pScreen->hWnd); 3521 Assert(tmpHr == S_OK); 3522 } 3523 } 3524 3525 return hr; 3526 } 3527 3528 static HRESULT APIENTRY vboxWddmDDevDestroyResource(HANDLE hDevice, HANDLE hResource); 3529 3530 static HRESULT vboxWddmD3DDeviceUpdate(PVBOXWDDMDISP_DEVICE pDevice, UINT iScreen, PVBOXWDDMDISP_RESOURCE pRc, D3DPRESENT_PARAMETERS * pParams, BOOL bLockable) 3531 { 3532 UINT cSurfs = pParams->BackBufferCount + 1; 3533 Assert(pRc->cAllocations = cSurfs); 3534 Assert(iScreen == pDevice->iPrimaryScreen); 3535 PVBOXWDDMDISP_SCREEN pScreen = &pDevice->aScreens[iScreen]; 3536 PVBOXWDDMDISP_RESOURCE pCurRc = pScreen->pRenderTargetRc; 3537 IDirect3DDevice9Ex *pNewDevice; 3538 HRESULT hr = pDevice->pAdapter->D3D.pfnVBoxWineExD3DDev9Update((IDirect3DDevice9Ex*)pScreen->pDevice9If, pParams, &pNewDevice); 3539 Assert(hr == S_OK); 3540 if (hr == S_OK) 3541 { 3542 pScreen->pDevice9If->Release(); 3543 pScreen->pDevice9If = pNewDevice; 3544 pScreen->pRenderTargetRc = pRc; 3545 3546 for (UINT i = 0; i < cSurfs; ++i) 3547 { 3548 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i]; 3549 pAllocation->enmD3DIfType = VBOXDISP_D3DIFTYPE_SURFACE; 3550 } 3551 3552 #ifndef VBOXWDDM_WITH_VISIBLE_FB 3553 if (pDevice->pRenderTargetFbCopy) 3554 { 3555 pDevice->pRenderTargetFbCopy->Release(); 3556 } 3557 IDirect3DSurface9* pD3D9Surf; 3558 hr = pNewDevice->CreateRenderTarget( 3559 pParams->BackBufferWidth, pParams->BackBufferHeight, 3560 pParams->BackBufferFormat, 3561 pParams->MultiSampleType, 3562 pParams->MultiSampleQuality, 3563 bLockable, 3564 &pD3D9Surf, 3565 NULL /* HANDLE* pSharedHandle */ 3566 ); 3567 Assert(hr == S_OK); 3568 if (hr == S_OK) 3569 { 3570 pDevice->pRenderTargetFbCopy = pD3D9Surf; 3571 } 3572 #endif 3573 if (hr == S_OK) 3574 { 3575 hr = vboxWddmRenderTargetUpdate(pDevice, pRc, 0); 3576 Assert(hr == S_OK); 3577 if (hr == S_OK) 3578 { 3579 for (UINT i = 0; i < cSurfs; ++i) 3580 { 3581 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i]; 3582 pAllocation->enmD3DIfType = VBOXDISP_D3DIFTYPE_SURFACE; 3583 hr = vboxWddmSurfSynchMem(pRc, pAllocation); 3584 Assert(hr == S_OK); 3585 if (hr != S_OK) 3586 { 3587 break; 3588 } 3589 } 3590 } 3591 } 3592 } 3593 3594 3595 if (!pCurRc->hResource) 3596 { 3597 HRESULT tmpHr = vboxWddmDDevDestroyResource(pDevice, pCurRc); 3598 Assert(tmpHr == S_OK); 3599 } 3600 3601 return hr; 3602 } 3603 3360 3604 static HRESULT APIENTRY vboxWddmDDevCreateResource(HANDLE hDevice, D3DDDIARG_CREATERESOURCE* pResource) 3361 3605 { … … 3647 3891 bIssueCreateResource = true; 3648 3892 Assert(pResource->SurfCount); 3649 IDirect3DDevice9 *pPrimaryDevice = pDevice->aScreens[pDevice->iPrimaryScreen].pDevice9If; 3650 if (!pPrimaryDevice || pResource->Flags.Primary) 3651 { 3652 PVBOXWDDMDISP_SCREEN pScreen = &pDevice->aScreens[pResource->VidPnSourceId]; 3653 Assert(!pScreen->pDevice9If); 3654 Assert(!pScreen->hWnd); 3655 hr = VBoxDispWndCreate(pAdapter, pResource->pSurfList[0].Width, pResource->pSurfList[0].Height, &hWnd); 3656 Assert(hr == S_OK); 3657 if (hr == S_OK) 3893 PVBOXWDDMDISP_SCREEN pScreen = &pDevice->aScreens[pDevice->iPrimaryScreen]; 3894 IDirect3DDevice9 *pPrimaryDevice = pScreen->pDevice9If; 3895 if (!pPrimaryDevice || !pScreen->pRenderTargetRc->hResource || pResource->Flags.Primary) 3896 { 3897 D3DPRESENT_PARAMETERS params; 3898 memset(¶ms, 0, sizeof (params)); 3899 params.BackBufferWidth = pResource->pSurfList[0].Width; 3900 params.BackBufferHeight = pResource->pSurfList[0].Height; 3901 params.BackBufferFormat = vboxDDI2D3DFormat(pResource->Format); 3902 Assert(pResource->SurfCount); 3903 params.BackBufferCount = !pPrimaryDevice ? pResource->SurfCount - 1 : 0; 3904 params.MultiSampleType = vboxDDI2D3DMultiSampleType(pResource->MultisampleType); 3905 if (pResource->Flags.DiscardRenderTarget) 3906 params.SwapEffect = D3DSWAPEFFECT_DISCARD; 3907 // params.hDeviceWindow = hWnd; 3908 /* @todo: it seems there should be a way to detect this correctly since 3909 * our vboxWddmDDevSetDisplayMode will be called in case we are using full-screen */ 3910 params.Windowed = TRUE; 3911 // params.EnableAutoDepthStencil = FALSE; 3912 // params.AutoDepthStencilFormat = D3DFMT_UNKNOWN; 3913 // params.Flags; 3914 // params.FullScreen_RefreshRateInHz; 3915 // params.FullScreen_PresentationInterval; 3916 3917 if (!pPrimaryDevice || pResource->Flags.Primary) 3658 3918 { 3659 pScreen->hWnd = hWnd; 3660 3661 DWORD fFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING; 3662 if (pDevice->fFlags.AllowMultithreading) 3663 fFlags |= D3DCREATE_MULTITHREADED; 3664 3665 IDirect3DDevice9 *pDevice9If = NULL; 3666 D3DPRESENT_PARAMETERS params; 3667 memset(¶ms, 0, sizeof (params)); 3668 params.BackBufferWidth = pResource->pSurfList[0].Width; 3669 params.BackBufferHeight = pResource->pSurfList[0].Height; 3670 params.BackBufferFormat = vboxDDI2D3DFormat(pResource->Format); 3671 Assert(pResource->SurfCount); 3672 params.BackBufferCount = !pPrimaryDevice ? pResource->SurfCount - 1 : 0; 3673 params.MultiSampleType = vboxDDI2D3DMultiSampleType(pResource->MultisampleType); 3674 if (pResource->Flags.DiscardRenderTarget) 3675 params.SwapEffect = D3DSWAPEFFECT_DISCARD; 3676 params.hDeviceWindow = hWnd; 3677 /* @todo: it seems there should be a way to detect this correctly since 3678 * our vboxWddmDDevSetDisplayMode will be called in case we are using full-screen */ 3679 params.Windowed = TRUE; 3680 // params.EnableAutoDepthStencil = FALSE; 3681 // params.AutoDepthStencilFormat = D3DFMT_UNKNOWN; 3682 // params.Flags; 3683 // params.FullScreen_RefreshRateInHz; 3684 // params.FullScreen_PresentationInterval; 3685 hr = pAdapter->pD3D9If->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, fFlags, ¶ms, &pDevice9If); 3919 hr = vboxWddmD3DDeviceCreate(pDevice, pResource->VidPnSourceId, pRc, ¶ms, !pResource->Flags.NotLockable /*BOOL bLockable*/); 3686 3920 Assert(hr == S_OK); 3687 if (hr == S_OK)3688 {3689 pScreen->pDevice9If = pDevice9If;3690 pScreen->pRenderTargetRc = pRc;3691 ++pDevice->cScreens;3692 3693 for (UINT i = 0; i < pResource->SurfCount; ++i)3694 {3695 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];3696 pAllocation->enmD3DIfType = VBOXDISP_D3DIFTYPE_SURFACE;3697 }3698 3699 if (pPrimaryDevice)3700 {3701 for (UINT i = 0; i < pResource->SurfCount; ++i)3702 {3703 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];3704 IDirect3DSurface9 *pRt;3705 IDirect3DSurface9 *pSecondaryOpenedRt;3706 HANDLE hSharedHandle = NULL;3707 hr = pPrimaryDevice->CreateRenderTarget(3708 pResource->pSurfList[i].Width,3709 pResource->pSurfList[i].Height,3710 vboxDDI2D3DFormat(pResource->Format),3711 vboxDDI2D3DMultiSampleType(pResource->MultisampleType),3712 0, /*DWORD MultisampleQuality*/3713 TRUE, /*BOOL Lockable*/3714 &pRt,3715 &hSharedHandle);3716 Assert(hr == S_OK);3717 if (hr == S_OK)3718 {3719 Assert(hSharedHandle != NULL);3720 /* open render target for primary device */3721 hr = pDevice9If->CreateRenderTarget(3722 pResource->pSurfList[i].Width,3723 pResource->pSurfList[i].Height,3724 vboxDDI2D3DFormat(pResource->Format),3725 vboxDDI2D3DMultiSampleType(pResource->MultisampleType),3726 0, /*DWORD MultisampleQuality*/3727 TRUE, /*BOOL Lockable*/3728 &pSecondaryOpenedRt,3729 &hSharedHandle);3730 Assert(hr == S_OK);3731 if (hr == S_OK)3732 {3733 pAllocation->pD3DIf = pRt;3734 pAllocation->pSecondaryOpenedD3DIf = pSecondaryOpenedRt;3735 pAllocation->hSharedHandle = hSharedHandle;3736 continue;3737 }3738 pRt->Release();3739 }3740 3741 for (UINT j = 0; j < i; ++j)3742 {3743 PVBOXWDDMDISP_ALLOCATION pAlloc = &pRc->aAllocations[j];3744 pAlloc->pD3DIf->Release();3745 pAlloc->pSecondaryOpenedD3DIf->Release();3746 }3747 3748 break;3749 }3750 }3751 else3752 {3753 pDevice->iPrimaryScreen = pResource->VidPnSourceId;3754 }3755 3756 if (hr == S_OK)3757 {3758 hr = vboxWddmRenderTargetUpdate(pDevice, pRc, 0);3759 Assert(hr == S_OK);3760 if (hr == S_OK)3761 {3762 for (UINT i = 0; i < pResource->SurfCount; ++i)3763 {3764 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];3765 pAllocation->enmD3DIfType = VBOXDISP_D3DIFTYPE_SURFACE;3766 hr = vboxWddmSurfSynchMem(pRc, pAllocation);3767 Assert(hr == S_OK);3768 if (hr != S_OK)3769 {3770 break;3771 }3772 }3773 3774 #ifndef VBOXWDDM_WITH_VISIBLE_FB3775 if (!pPrimaryDevice)3776 {3777 if (hr == S_OK)3778 {3779 IDirect3DSurface9* pD3D9Surf;3780 hr = pDevice9If->CreateRenderTarget(pRc->aAllocations[0].SurfDesc.width,3781 pRc->aAllocations[0].SurfDesc.height,3782 vboxDDI2D3DFormat(pResource->Format),3783 vboxDDI2D3DMultiSampleType(pResource->MultisampleType),3784 pResource->MultisampleQuality,3785 !pResource->Flags.NotLockable /* BOOL Lockable */,3786 &pD3D9Surf,3787 NULL /* HANDLE* pSharedHandle */3788 );3789 Assert(hr == S_OK);3790 if (hr == S_OK)3791 {3792 pDevice->pRenderTargetFbCopy = pD3D9Surf;3793 }3794 }3795 }3796 #endif3797 3798 if (hr != S_OK)3799 {3800 for (UINT i = 0; i < pResource->SurfCount; ++i)3801 {3802 PVBOXWDDMDISP_ALLOCATION pAllocation = &pRc->aAllocations[i];3803 pAllocation->pD3DIf->Release();3804 }3805 }3806 }3807 }3808 3809 if (hr != S_OK)3810 {3811 pDevice9If->Release();3812 --pDevice->cScreens;3813 Assert(pDevice->cScreens < UINT32_MAX/2);3814 }3815 }3816 3817 if (hr != S_OK)3818 {3819 HRESULT tmpHr = VBoxDispWndDestroy(pAdapter, pScreen->hWnd);3820 Assert(tmpHr == S_OK);3821 }3822 3921 } 3823 3824 3922 else 3923 { 3924 Assert(0); 3925 hr = vboxWddmD3DDeviceUpdate(pDevice, pResource->VidPnSourceId, pRc, ¶ms, !pResource->Flags.NotLockable /*BOOL bLockable*/); 3926 Assert(hr == S_OK); 3927 } 3825 3928 } 3826 3929 else … … 5841 5944 Assert(hr == S_OK); 5842 5945 if (hr == S_OK) 5946 { 5947 #ifdef VBOXDISP_EARLYCREATEDEVICE 5948 PVBOXWDDMDISP_RESOURCE pRc = vboxResourceAlloc(2); 5949 Assert(pRc); 5950 if (pRc) 5951 { 5952 D3DPRESENT_PARAMETERS params; 5953 memset(¶ms, 0, sizeof (params)); 5954 params.BackBufferWidth = 0x500; 5955 params.BackBufferHeight = 0x400; 5956 params.BackBufferFormat = D3DFMT_A8R8G8B8; 5957 params.BackBufferCount = 1; 5958 params.MultiSampleType = D3DMULTISAMPLE_NONE; 5959 params.SwapEffect = D3DSWAPEFFECT_DISCARD; 5960 // params.hDeviceWindow = hWnd; 5961 /* @todo: it seems there should be a way to detect this correctly since 5962 * our vboxWddmDDevSetDisplayMode will be called in case we are using full-screen */ 5963 params.Windowed = TRUE; 5964 // params.EnableAutoDepthStencil = FALSE; 5965 // params.AutoDepthStencilFormat = D3DFMT_UNKNOWN; 5966 // params.Flags; 5967 // params.FullScreen_RefreshRateInHz; 5968 // params.FullScreen_PresentationInterval; 5969 5970 hr = vboxWddmD3DDeviceCreate(pDevice, 0, pRc, ¶ms, TRUE /*BOOL bLockable*/); 5971 Assert(hr == S_OK); 5972 if (hr == S_OK) 5973 break; 5974 vboxResourceFree(pRc); 5975 } 5976 else 5977 { 5978 hr = E_OUTOFMEMORY; 5979 } 5980 #else 5843 5981 break; 5982 #endif 5983 5984 HRESULT tmpHr = vboxDispCmCtxDestroy(pDevice, &pDevice->DefaultContext); 5985 Assert(tmpHr == S_OK); 5986 } 5844 5987 } 5845 5988 else -
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.h
r32107 r32281 95 95 IDirect3DDevice9 *pDevice9If; 96 96 struct VBOXWDDMDISP_RESOURCE *pRenderTargetRc; 97 struct VBOXWDDMDISP_RESOURCE *pDstSharedRc;97 // struct VBOXWDDMDISP_RESOURCE *pDstSharedRc; 98 98 uint32_t iRenderTargetFrontBuf; 99 99 HWND hWnd; -
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3DCmn.h
r30916 r32281 40 40 # define VBOXWDDMDISP_DEBUG_DUMPSURFDATA 41 41 #endif 42 43 //#define VBOXDISP_EARLYCREATEDEVICE 42 44 43 45 #if 0 -
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3DIf.cpp
r32241 r32281 43 43 if (pD3D->pfnVBoxWineExD3DDev9Flush) 44 44 { 45 return S_OK; 45 pD3D->pfnVBoxWineExD3DDev9Update = (PFNVBOXWINEEXD3DDEV9_UPDATE)GetProcAddress(pD3D->hD3DLib, "VBoxWineExD3DDev9Update"); 46 Assert(pD3D->pfnVBoxWineExD3DDev9Update); 47 if (pD3D->pfnVBoxWineExD3DDev9Update) 48 { 49 return S_OK; 50 } 46 51 } 47 52 } -
trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3DIf.h
r31868 r32281 37 37 PFNVBOXWINEEXD3DDEV9_FLUSH pfnVBoxWineExD3DDev9Flush; 38 38 39 PFNVBOXWINEEXD3DDEV9_UPDATE pfnVBoxWineExD3DDev9Update; 40 41 39 42 /* module handle */ 40 43 HMODULE hD3DLib;
Note:
See TracChangeset
for help on using the changeset viewer.