VirtualBox

Ignore:
Timestamp:
Oct 31, 2011 1:37:06 PM (13 years ago)
Author:
vboxsync
Message:

wddm: avoid unnecessary window creation (caused img flickering for MacOS guest), etc.

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.cpp

    r39130 r39150  
    30973097static HRESULT vboxWddmSwapchainPresent(PVBOXWDDMDISP_DEVICE pDevice, PVBOXWDDMDISP_ALLOCATION pBbAlloc)
    30983098{
     3099    /* we currently *assume* that presenting shared resource is only possible when 3d app is rendering with composited desktop on,
     3100     * no need to do anything else since dwm will present everything for us */
     3101    if (pBbAlloc->hSharedHandle)
     3102    {
     3103        VBOXVDBG_ASSERT_IS_DWM(FALSE);
     3104        return S_OK;
     3105    }
     3106
    30993107    BOOL bNeedPresent;
    31003108    PVBOXWDDMDISP_SWAPCHAIN pSwapchain = vboxWddmSwapchainFindCreate(pDevice, pBbAlloc, &bNeedPresent);
     
    53045312                if (SUCCEEDED(hr))
    53055313                {
    5306                     if (pResource->Pool != D3DDDIPOOL_SYSTEMMEM)
    5307                     {
    5308                         vboxWddmMemsetRc(pRc, 0);
    5309                     }
    5310                     else
     5314                    if (pResource->Pool == D3DDDIPOOL_SYSTEMMEM)
    53115315                    {
    53125316                        vboxWddmSurfSynchMem(pRc);
     
    53475351                if (SUCCEEDED(hr))
    53485352                {
    5349                     if (pResource->Pool != D3DDDIPOOL_SYSTEMMEM)
    5350                     {
    5351                         vboxWddmMemsetRc(pRc, 0);
    5352                     }
    5353                     else
     5353                    if (pResource->Pool == D3DDDIPOOL_SYSTEMMEM)
    53545354                    {
    53555355                        vboxWddmSurfSynchMem(pRc);
     
    53925392                if (SUCCEEDED(hr))
    53935393                {
    5394                     if (pResource->Pool != D3DDDIPOOL_SYSTEMMEM)
    5395                     {
    5396                         vboxWddmMemsetRc(pRc, 0);
    5397                     }
    5398                     else
     5394                    if (pResource->Pool == D3DDDIPOOL_SYSTEMMEM)
    53995395                    {
    54005396                        vboxWddmSurfSynchMem(pRc);
     
    55685564                if (SUCCEEDED(hr))
    55695565                {
    5570                     if (pResource->Pool != D3DDDIPOOL_SYSTEMMEM)
    5571                     {
    5572                         vboxWddmMemsetRc(pRc, 0);
    5573                     }
    5574                     else
     5566                    if (pResource->Pool == D3DDDIPOOL_SYSTEMMEM)
    55755567                    {
    55765568                        vboxWddmSurfSynchMem(pRc);
     
    56395631                    if (SUCCEEDED(hr))
    56405632                    {
    5641                         if (pResource->Pool != D3DDDIPOOL_SYSTEMMEM)
    5642                         {
    5643                             vboxWddmMemsetRc(pRc, 0);
    5644                         }
    5645                         else
     5633                        if (pResource->Pool == D3DDDIPOOL_SYSTEMMEM)
    56465634                        {
    56475635                            Assert(0);
     
    59555943    Assert(pRc->RcDesc.fFlags.Primary);
    59565944    Assert(pAlloc->hAllocation);
    5957 //    PVBOXWDDMDISP_SCREEN pScreen = &pDevice->aScreens[pRc->RcDesc.VidPnSourceId];
    5958 //    Assert(pScreen->hWnd);
    5959 //    Assert(pScreen->pDevice9If);
    59605945    D3DDDICB_SETDISPLAYMODE DdiDm = {0};
    59615946    DdiDm.hPrimaryAllocation = pAlloc->hAllocation;
    5962 //    DdiDm.PrivateDriverFormatAttribute = 0;
    5963 //    Assert(pScreen->pRenderTargetRc == pRc);
    5964 //    Assert(pScreen->iRenderTargetFrontBuf == pData->SubResourceIndex);
    59655947
    59665948    {
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispD3D.h

    r39130 r39150  
    164164    VBOXWDDMDISP_RENDERTGT aRTs[VBOXWDDMDISP_MAX_SWAPCHAIN_SIZE];
    165165} VBOXWDDMDISP_SWAPCHAIN, *PVBOXWDDMDISP_SWAPCHAIN;
    166 
    167 
    168 //typedef struct VBOXWDDMDISP_SCREEN
    169 //{
    170 //    RTLISTNODE SwapchainList;
    171 //    IDirect3DDevice9 *pDevice9If;
    172 ////    struct VBOXWDDMDISP_RESOURCE *pDstSharedRc;
    173 //    uint32_t iRenderTargetFrontBuf;
    174 //    HWND hWnd;
    175 //} VBOXWDDMDISP_SCREEN, *PVBOXWDDMDISP_SCREEN;
    176166
    177167typedef struct VBOXWDDMDISP_DEVICE
     
    205195    /* no lock is needed for this since we're guaranteed the per-device calls are not reentrant */
    206196    RTLISTNODE DirtyAllocList;
     197
    207198    UINT cRTs;
    208199    struct VBOXWDDMDISP_ALLOCATION * apRTs[1];
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/VBoxDispDbg.h

    r39130 r39150  
    201201#define VBOXVDBG_CHECK_EXE(_pszName) (vboxVDbgDoCheckExe(_pszName))
    202202#define VBOXVDBG_IS_DWM() (!!(g_VBoxVDbgFIsDwm >=0 ? g_VBoxVDbgFIsDwm : (g_VBoxVDbgFIsDwm = VBOXVDBG_CHECK_EXE("dwm.exe"))))
     203
     204#define VBOXVDBG_ASSERT_IS_DWM(_bDwm) do { \
     205        Assert((!VBOXVDBG_IS_DWM()) == (!(_bDwm))); \
     206    } while (0)
    203207
    204208#define VBOXVDBG_IS_DUMP_ALLOWED(_type) ( \
     
    503507#define VBOXVDBG_CHECK_BLT(_opBlt, _pSrcAlloc, _pSrcSurf, _pSrcRect, _pDstAlloc, _pDstSurf, _pDstRect) do { } while (0)
    504508#define VBOXVDBG_CHECK_TEXBLT(_opTexBlt, _pSrcRc, _pSrcRect, _pDstRc, _pDstPoint) do { } while (0)
     509#define VBOXVDBG_ASSERT_IS_DWM(_bDwm) do {} while (0)
    505510#endif
    506511
Note: See TracChangeset for help on using the changeset viewer.

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