VirtualBox

Ignore:
Timestamp:
May 15, 2014 7:22:39 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
93729
Message:

wddm: enable complex topology for CmdVbva

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp

    r51260 r51269  
    52745274}
    52755275
    5276 static void crVBoxServerCrCmdBltPrimaryUpdate(const VBVAINFOSCREEN *pScreen, uint32_t cRects, const RTRECT *pRects)
    5277 {
    5278     if (!cRects)
    5279         return;
    5280 
    5281     uint32_t u32PrimaryID = pScreen->u32ViewIndex;
     5276static void crPMgrPrimaryUpdateScreen(HCR_FRAMEBUFFER hFb, uint32_t idScreen, uint32_t cRects, const RTRECT *pRects)
     5277{
     5278    const VBVAINFOSCREEN *pScreen = CrFbGetScreenInfo(hFb);
     5279
    52825280    bool fDirtyEmpty = true;
    52835281    RTRECT dirtyRect;
    5284     cr_server.CrCmdClientInfo.pfnCltScrUpdateBegin(cr_server.CrCmdClientInfo.hCltScr, u32PrimaryID);
     5282    cr_server.CrCmdClientInfo.pfnCltScrUpdateBegin(cr_server.CrCmdClientInfo.hCltScr, idScreen);
    52855283
    52865284    VBVACMDHDR hdr;
     
    52925290        hdr.h = hdr.y + pRects[i].yBottom;
    52935291
    5294         cr_server.CrCmdClientInfo.pfnCltScrUpdateProcess(cr_server.CrCmdClientInfo.hCltScr, u32PrimaryID, &hdr, sizeof (hdr));
     5292        cr_server.CrCmdClientInfo.pfnCltScrUpdateProcess(cr_server.CrCmdClientInfo.hCltScr, idScreen, &hdr, sizeof (hdr));
    52955293
    52965294        if (fDirtyEmpty)
     
    53305328    if (dirtyRect.xRight - dirtyRect.xLeft)
    53315329    {
    5332         cr_server.CrCmdClientInfo.pfnCltScrUpdateEnd(cr_server.CrCmdClientInfo.hCltScr, u32PrimaryID, pScreen->i32OriginX + dirtyRect.xLeft, pScreen->i32OriginY + dirtyRect.yTop,
     5330        cr_server.CrCmdClientInfo.pfnCltScrUpdateEnd(cr_server.CrCmdClientInfo.hCltScr, idScreen, pScreen->i32OriginX + dirtyRect.xLeft, pScreen->i32OriginY + dirtyRect.yTop,
    53335331                                           dirtyRect.xRight - dirtyRect.xLeft, dirtyRect.yBottom - dirtyRect.yTop);
    53345332    }
    53355333    else
    53365334    {
    5337         cr_server.CrCmdClientInfo.pfnCltScrUpdateEnd(cr_server.CrCmdClientInfo.hCltScr, u32PrimaryID, 0, 0, 0, 0);
     5335        cr_server.CrCmdClientInfo.pfnCltScrUpdateEnd(cr_server.CrCmdClientInfo.hCltScr, idScreen, 0, 0, 0, 0);
     5336    }
     5337
     5338}
     5339
     5340static void crPMgrPrimaryUpdate(HCR_FRAMEBUFFER hFb, uint32_t cRects, const RTRECT *pRects)
     5341{
     5342    if (!cRects)
     5343        return;
     5344
     5345    const VBVAINFOSCREEN *pScreen = CrFbGetScreenInfo(hFb);
     5346
     5347    uint32_t idFb = pScreen->u32ViewIndex;
     5348    CR_FB_INFO *pFbInfo = &g_CrPresenter.aFbInfos[idFb];
     5349
     5350    for (int i = ASMBitFirstSet(pFbInfo->aTargetMap, cr_server.screenCount);
     5351            i >= 0;
     5352            i = ASMBitNextSet(pFbInfo->aTargetMap, cr_server.screenCount, i))
     5353    {
     5354        crPMgrPrimaryUpdateScreen(hFb, i, cRects, pRects);
    53385355    }
    53395356}
     
    54455462    }
    54465463
    5447     crVBoxServerCrCmdBltPrimaryUpdate(CrFbGetScreenInfo(hFb), cRects, pRects);
     5464    crPMgrPrimaryUpdate(hFb, cRects, pRects);
    54485465
    54495466    return 0;
     
    55965613        }
    55975614
    5598         crVBoxServerCrCmdBltPrimaryUpdate(pScreen, cRects, pRects);
     5615        crPMgrPrimaryUpdate(hDstFb, cRects, pRects);
    55995616
    56005617        return 0;
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