From: Sameeh Jubran <sameeh@xxxxxxxxxx> As documented in MSDN, "DxgkDdiPresentDisplayOnly" should copy each "move rectangle" from a given source point in the source buffer to the destination. The current implementation dosen't take into account the shift of the given source point at all. This patch fixies the issue. Signed-off-by: Sameeh Jubran <sameeh@xxxxxxxxxx> Signed-off-by: Dmitry Fleytman <dmitry@xxxxxxxxxx> --- qxldod/QxlDod.cpp | 17 ++++++++++++----- qxldod/QxlDod.h | 3 ++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/qxldod/QxlDod.cpp b/qxldod/QxlDod.cpp index 0ec00fe..4c3835c 100755 --- a/qxldod/QxlDod.cpp +++ b/qxldod/QxlDod.cpp @@ -3748,20 +3748,26 @@ QxlDevice::ExecutePresentDisplayOnly( BltBits(&DstBltInfo, &SrcBltInfo, 1, - pDestRect); + pDestRect, + pSourcePoint); } // Copy all the dirty rects from source image to video frame buffer. for (UINT i = 0; i < ctx->NumDirtyRects; i++) { RECT* pDirtyRect = &ctx->DirtyRect[i]; + POINT sourcePoint; + sourcePoint.x = pDirtyRect->left; + sourcePoint.y = pDirtyRect->top; + DbgPrint(TRACE_LEVEL_INFORMATION, ("--- %d pDirtyRect->bottom = %ld, pDirtyRect->left = %ld, pDirtyRect->right = %ld, pDirtyRect->top = %ld\n", i, pDirtyRect->bottom, pDirtyRect->left, pDirtyRect->right, pDirtyRect->top)); BltBits(&DstBltInfo, &SrcBltInfo, 1, - pDirtyRect); + pDirtyRect, + &sourcePoint); } // Unmap unmap and unlock the pages. @@ -4189,7 +4195,8 @@ VOID QxlDevice::BltBits ( BLT_INFO* pDst, CONST BLT_INFO* pSrc, UINT NumRects, - _In_reads_(NumRects) CONST RECT *pRects) + _In_reads_(NumRects) CONST RECT *pRects, + POINT* pSourcePoint) { PAGED_CODE(); QXLDrawable *drawable; @@ -4254,8 +4261,8 @@ VOID QxlDevice::BltBits ( internal->image.bitmap.stride = line_size; UINT8* src = (UINT8*)pSrc->pBits+ - (pRect->top) * pSrc->Pitch + - (pRect->left * 4); + (pSourcePoint->y) * pSrc->Pitch + + (pSourcePoint->x * 4); UINT8* src_end = src - pSrc->Pitch; src += pSrc->Pitch * (height - 1); UINT8* dest = chunk->data; diff --git a/qxldod/QxlDod.h b/qxldod/QxlDod.h index 0757648..5caa43c 100755 --- a/qxldod/QxlDod.h +++ b/qxldod/QxlDod.h @@ -487,7 +487,8 @@ protected: VOID BltBits (BLT_INFO* pDst, CONST BLT_INFO* pSrc, UINT NumRects, - _In_reads_(NumRects) CONST RECT *pRects); + _In_reads_(NumRects) CONST RECT *pRects, + POINT* pSourcePoint); QXLDrawable *Drawable(UINT8 type, CONST RECT *area, CONST RECT *clip, -- 1.8.3.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel