VirtualBox

Ignore:
Timestamp:
Aug 30, 2011 9:28:15 AM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
73733
Message:

wddm/3d: reuse window for wine swapchains representing one and the same 3d swapchain, bugfixes

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/common/wddm/VBoxMPIf.h

    r38112 r38565  
    321321    {
    322322        VBOXDISP_UMHANDLE hSwapchainUm;
    323         uint64_t u64Alignment;
     323        uint64_t hWnd;
     324        uint64_t u64Value;
    324325    };
    325326    VBOXVIDEOCM_CMD_RECTS Cmd;
    326327} VBOXVIDEOCM_CMD_RECTS_INTERNAL, *PVBOXVIDEOCM_CMD_RECTS_INTERNAL;
     328
     329typedef struct VBOXVIDEOCM_CMD_RECTS_HDR
     330{
     331    VBOXVIDEOCM_CMD_HDR Hdr;
     332    VBOXVIDEOCM_CMD_RECTS_INTERNAL Data;
     333} VBOXVIDEOCM_CMD_RECTS_HDR, *PVBOXVIDEOCM_CMD_RECTS_HDR;
    327334
    328335#define VBOXVIDEOCM_CMD_RECTS_INTERNAL_SIZE4CRECTS(_cRects) (RT_OFFSETOF(VBOXVIDEOCM_CMD_RECTS_INTERNAL, Cmd.RectsInfo.aRects[(_cRects)]))
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispCm.cpp

    r37626 r38565  
    225225}
    226226
     227HRESULT vboxDispCmCmdSessionInterruptWait(PVBOXDISPCM_SESSION pSession)
     228{
     229    SetEvent(pSession->hEvent);
     230    return S_OK;
     231}
     232
    227233HRESULT vboxDispCmSessionCmdGet(PVBOXDISPCM_SESSION pSession, PVBOXDISPIFESCAPE_GETVBOXVIDEOCMCMD pCmd, uint32_t cbCmd, DWORD dwMilliseconds)
    228234{
     
    275281}
    276282
     283HRESULT vboxDispCmCmdInterruptWait()
     284{
     285    return vboxDispCmCmdSessionInterruptWait(&g_pVBoxCmMgr.Session);
     286}
     287
    277288void vboxDispCmLog(LPCSTR pszMsg)
    278289{
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispCm.h

    r36867 r38565  
    3131HRESULT vboxDispCmCmdGet(PVBOXDISPIFESCAPE_GETVBOXVIDEOCMCMD pCmd, uint32_t cbCmd, DWORD dwMilliseconds);
    3232
     33HRESULT vboxDispCmCmdInterruptWait();
     34
    3335void vboxDispCmLog(LPCSTR pszMsg);
    3436
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp

    r38363 r38565  
    23982398                    }
    23992399                }
     2400
     2401                /* re-use swapchain window
     2402                 * this will invalidate the previusly used swapchain */
     2403                Params.hDeviceWindow = pSwapchain->hWnd;
    24002404
    24012405                hr = pDevice->pDevice9If->CreateAdditionalSwapChain(&Params, &pNewIf);
     
    59195923                VBOXVDBG_BREAK_SHARED(pSrcRc);
    59205924                VBOXVDBG_BREAK_SHARED(pDstRc);
    5921                 VBOXVDBG_DUMP_BLT_ENTER(pSrcAlloc, pSrcSurfIf, &pData->SrcRect, pDstAlloc, pDstSurfIf, &pData->DstRect);
     5925                if (   pSrcAlloc->SurfDesc.width == 658 && pSrcAlloc->SurfDesc.height == 493
     5926                    && pData->SrcRect.left == 0 && pData->SrcRect.top == 0
     5927                    && pData->SrcRect.right == 658 && pData->SrcRect.bottom == 493
     5928                    && pDstAlloc->SurfDesc.width == 756 && pDstAlloc->SurfDesc.height == 493
     5929                    && pData->DstRect.left == 0 && pData->DstRect.top == 0
     5930                    && pData->DstRect.right == 658 && pData->DstRect.bottom == 493)
     5931                {
     5932                    VBOXVDBG_DUMP_BLT_ENTER(pSrcAlloc, pSrcSurfIf, &pData->SrcRect, pDstAlloc, pDstSurfIf, &pData->DstRect);
     5933                }
    59225934
    59235935                /* we support only Point & Linear, we ignore [Begin|Continue|End]PresentToDwm */
     
    59305942                Assert(hr == S_OK);
    59315943
    5932                 VBOXVDBG_DUMP_BLT_LEAVE(pSrcAlloc, pSrcSurfIf, &pData->SrcRect, pDstAlloc, pDstSurfIf, &pData->DstRect);
     5944                if (   pSrcAlloc->SurfDesc.width == 658 && pSrcAlloc->SurfDesc.height == 493
     5945                    && pData->SrcRect.left == 0 && pData->SrcRect.top == 0
     5946                    && pData->SrcRect.right == 658 && pData->SrcRect.bottom == 493
     5947                    && pDstAlloc->SurfDesc.width == 756 && pDstAlloc->SurfDesc.height == 493
     5948                    && pData->DstRect.left == 0 && pData->DstRect.top == 0
     5949                    && pData->DstRect.right == 658 && pData->DstRect.bottom == 493)
     5950                {
     5951                    VBOXVDBG_DUMP_BLT_LEAVE(pSrcAlloc, pSrcSurfIf, &pData->SrcRect, pDstAlloc, pDstSurfIf, &pData->DstRect);
     5952                }
    59335953
    59345954                pSrcSurfIf->Release();
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPVidPn.cpp

    r37490 r38565  
    15321532{
    15331533    PVBOXVIDPNCOFUNCMODALITY pCbContext = (PVBOXVIDPNCOFUNCMODALITY)pContext;
    1534     D3DKMDT_VIDPN_PRESENT_PATH AdjustedPath = {};
     1534    D3DKMDT_VIDPN_PRESENT_PATH AdjustedPath = {0};
    15351535    NTSTATUS Status = STATUS_SUCCESS;
    15361536    bool bUpdatePath = false;
     
    17711771        paItems[i].enmState = VBOXVIDPNPATHITEM_STATE_NOT_EXISTS;
    17721772    }
    1773     VBOXVIDPNGETPATHSINFO CbContext = {};
     1773    VBOXVIDPNGETPATHSINFO CbContext = {0};
    17741774    CbContext.Status = STATUS_SUCCESS;
    17751775    CbContext.fBreakOnDisabled = fBreakOnDisabled;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r38405 r38565  
    517517{
    518518    NTSTATUS Status = STATUS_SUCCESS;
    519     bool bChanged[VBOX_VIDEO_MAX_SCREENS] = {};
     519    bool bChanged[VBOX_VIDEO_MAX_SCREENS] = {0};
    520520    int i;
    521521
Note: See TracChangeset for help on using the changeset viewer.

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