VirtualBox

Changeset 39150 in vbox


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
Files:
6 edited

Legend:

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

    r38331 r39150  
    6767    } while (0)
    6868
     69#ifdef VBOX_WDDM_MINIPORT
     70# define _WARN_LOGGER LogRel
     71#else
     72# define _WARN_LOGGER Log
     73#endif
     74
    6975#define WARN_NOBP(_a)                                                          \
    7076    do                                                                            \
    7177    {                                                                             \
    72         Log((VBOX_VIDEO_LOG_PREFIX_FMT"WARNING! ", VBOX_VIDEO_LOG_PREFIX_PARMS)); \
    73         Log(_a);                                                                  \
    74         Log((VBOX_VIDEO_LOG_SUFFIX_FMT VBOX_VIDEO_LOG_SUFFIX_PARMS));             \
     78        _WARN_LOGGER((VBOX_VIDEO_LOG_PREFIX_FMT"WARNING! ", VBOX_VIDEO_LOG_PREFIX_PARMS)); \
     79        _WARN_LOGGER(_a);                                                                  \
     80        _WARN_LOGGER((VBOX_VIDEO_LOG_SUFFIX_FMT VBOX_VIDEO_LOG_SUFFIX_PARMS));             \
    7581    } while (0)
    7682
     
    8086        WARN_NOBP(_a);                                                         \
    8187        BP_WARN();                                                             \
     88    } while (0)
     89
     90#define ASSERT_WARN(_a, _w) do {\
     91        if(!(_a)) { \
     92            WARN(_w); \
     93        }\
    8294    } while (0)
    8395
  • 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
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r38982 r39150  
    21132113        else
    21142114            Status = STATUS_INVALID_PARAMETER;
    2115         /* @todo: Implement Resource Data Handling */
    2116         LOGREL(("WARNING: Implement Resource Data Handling"));
    21172115    }
    21182116
     
    51245122                    vboxWddmPopulateDmaAllocInfo(&pBlt->Blt.DstAlloc, pDstAlloc, pDst);
    51255123
     5124                    ASSERT_WARN(!pSrcAlloc->fRcFlags.SharedResource, ("Shared Allocatoin used in Present!"));
     5125
    51265126                    pBlt->Blt.SrcRect = pPresent->SrcRect;
    51275127                    pBlt->Blt.DstRects.ContextRect = pPresent->DstRect;
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine/wined3d/surface.c

    r39130 r39150  
    43204320#ifdef VBOX_WITH_WDDM
    43214321    surface_shrc_lock(This);
    4322     surface_shrc_lock(Src);
     4322    if (Src) surface_shrc_lock(Src);
    43234323#endif
    43244324
     
    43494349
    43504350#ifdef VBOX_WITH_WDDM
    4351     if (IWineD3DSurfaceImpl_BltSys2Vram(This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx, Filter) == WINED3D_OK)
     4351    if (SrcSurface && IWineD3DSurfaceImpl_BltSys2Vram(This, DestRect, SrcSurface, SrcRect, Flags, DDBltFx, Filter) == WINED3D_OK)
    43524352    {
    43534353        hr = WINED3D_OK;
     
    43644364#ifdef VBOX_WITH_WDDM
    43654365    surface_shrc_unlock(This);
    4366     surface_shrc_unlock(Src);
     4366    if (Src) surface_shrc_unlock(Src);
    43674367#endif
    43684368    return hr;
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