VirtualBox

Ignore:
Timestamp:
Nov 22, 2016 4:53:28 PM (8 years ago)
Author:
vboxsync
Message:

WDDM: bugref:8668: Fixed incorrect filling of DMA buffers in DxgkDdiPresentLegacy

File:
1 edited

Legend:

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

    r64085 r64736  
    65996599        Assert(pPresent->SubRectCnt > pPresent->MultipassOffset);
    66006600        UINT cbRects = (pPresent->SubRectCnt - pPresent->MultipassOffset) * sizeof (RECT);
    6601         pPresent->pDmaBufferPrivateData = (uint8_t*)pPresent->pDmaBufferPrivateData + cbHead + cbRects;
    66026601        pPresent->pDmaBuffer = ((uint8_t*)pPresent->pDmaBuffer) + VBOXWDDM_DUMMY_DMABUFFER_SIZE;
    66036602        Assert(pPresent->DmaSize >= VBOXWDDM_DUMMY_DMABUFFER_SIZE);
     
    66086607        {
    66096608            cbCmd -= cbRects;
    6610             memcpy(&pBlt->Blt.DstRects.UpdateRects.aRects[pPresent->MultipassOffset], &pPresent->pDstSubRects[pPresent->MultipassOffset], cbRects);
     6609            memcpy(&pBlt->Blt.DstRects.UpdateRects.aRects[0], &pPresent->pDstSubRects[pPresent->MultipassOffset], cbRects);
    66116610            pBlt->Blt.DstRects.UpdateRects.cRects += cbRects/sizeof (RECT);
     6611
     6612            pPresent->pDmaBufferPrivateData = (uint8_t*)pPresent->pDmaBufferPrivateData + cbHead + cbRects;
    66126613        }
    66136614        else
     
    66156616            UINT cbFitingRects = (cbCmd/sizeof (RECT)) * sizeof (RECT);
    66166617            Assert(cbFitingRects);
    6617             memcpy(&pBlt->Blt.DstRects.UpdateRects.aRects[pPresent->MultipassOffset], &pPresent->pDstSubRects[pPresent->MultipassOffset], cbFitingRects);
     6618            memcpy(&pBlt->Blt.DstRects.UpdateRects.aRects[0], &pPresent->pDstSubRects[pPresent->MultipassOffset], cbFitingRects);
    66186619            cbCmd -= cbFitingRects;
    66196620            pPresent->MultipassOffset += cbFitingRects/sizeof (RECT);
    66206621            pBlt->Blt.DstRects.UpdateRects.cRects += cbFitingRects/sizeof (RECT);
    66216622            Assert(pPresent->SubRectCnt > pPresent->MultipassOffset);
     6623
     6624            pPresent->pDmaBufferPrivateData = (uint8_t*)pPresent->pDmaBufferPrivateData + cbHead + cbFitingRects;
    66226625            Status = STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER;
    66236626        }
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