VirtualBox

Ignore:
Timestamp:
Sep 3, 2020 5:45:50 PM (4 years ago)
Author:
vboxsync
Message:

WDDM: fix for VBoxVGA adapter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPLegacy.cpp

    r85121 r86027  
    649649    PVBOXWDDM_ALLOCATION pDstAlloc = pBlt->Blt.DstAlloc.pAlloc;
    650650//    PVBOXWDDM_ALLOCATION pSrcAlloc = pBlt->Blt.SrcAlloc.pAlloc;
    651     BOOLEAN fVRAMUpdated = FALSE;
    652651    {
    653652        /* the allocations contain a real data in VRAM, do blitting */
    654653        vboxVdmaGgDmaBlt(pDevExt, &pBlt->Blt);
    655         fVRAMUpdated = TRUE;
    656 
    657         VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId];
    658         Assert(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS);
    659         Assert(pSource->pPrimaryAllocation == pDstAlloc);
    660         vboxVdmaBltDirtyRectsUpdate(pDevExt, pSource, pBlt->Blt.DstRects.UpdateRects.cRects, pBlt->Blt.DstRects.UpdateRects.aRects);
     654
     655        if (pDstAlloc->bAssigned && pDstAlloc->bVisible)
     656        {
     657            /* Only for visible framebuffer allocations. */
     658            VBOXWDDM_SOURCE *pSource = &pDevExt->aSources[pDstAlloc->AllocData.SurfDesc.VidPnSourceId];
     659            /* Assert but otherwise ignore wrong allocations. */
     660            AssertReturn(pDstAlloc->AllocData.SurfDesc.VidPnSourceId < VBOX_VIDEO_MAX_SCREENS, STATUS_SUCCESS);
     661            AssertReturn(pSource->pPrimaryAllocation == pDstAlloc, STATUS_SUCCESS);
     662            vboxVdmaBltDirtyRectsUpdate(pDevExt, pSource, pBlt->Blt.DstRects.UpdateRects.cRects, pBlt->Blt.DstRects.UpdateRects.aRects);
     663        }
    661664    }
    662665    return Status;
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