@@ -142,8 +142,7 @@ static BOOLEAN IsSameMode(PVIDEO_MODE_INFORMATION pModeInfo, CURRENT_MODE* pCurr
142142 return result;
143143
144144 if (pModeInfo->VisScreenWidth == pCurrentMode->DispInfo .Width &&
145- pModeInfo->VisScreenHeight == pCurrentMode->DispInfo .Height &&
146- pModeInfo->ScreenStride == pCurrentMode->DispInfo .Pitch )
145+ pModeInfo->VisScreenHeight == pCurrentMode->DispInfo .Height )
147146 result = TRUE ;
148147
149148 return result;
@@ -586,7 +585,8 @@ NTSTATUS VioGpuAdapterLite::ExecutePresentDisplayZeroCopy(
586585 _In_ LONG SrcPitch,
587586 _In_ UINT SrcWidth,
588587 _In_ UINT SrcHeight,
589- _In_ UINT ScreenNum)
588+ _In_ UINT ScreenNum,
589+ _In_ UINT Stride)
590590{
591591 PAGED_CODE ();
592592 TRACING ();
@@ -605,6 +605,7 @@ NTSTATUS VioGpuAdapterLite::ExecutePresentDisplayZeroCopy(
605605 tempCurrentMode.DispInfo .TargetId = ScreenNum;
606606 tempCurrentMode.DispInfo .ColorFormat = D3DDDIFMT_X8R8G8B8;
607607 tempCurrentMode.FrameBuffer .Ptr = SrcAddr;
608+ tempCurrentMode.Stride = Stride;
608609
609610 status = SetCurrentModeExt (&tempCurrentMode);
610611
@@ -844,14 +845,12 @@ void ScreenInfo::SetVideoModeInfo(UINT Idx, PGPU_DISP_MODE_EXT pModeInfo)
844845 PAGED_CODE ();
845846 TRACING ();
846847 PVIDEO_MODE_INFORMATION pMode = NULL ;
847- UINT bytes_pp = (VGPU_BPP + 7 ) / 8 ;
848848
849849 pMode = &m_ModeInfo[Idx];
850850 pMode->Length = sizeof (VIDEO_MODE_INFORMATION);
851851 pMode->ModeIndex = Idx;
852852 pMode->VisScreenWidth = pModeInfo->XResolution ;
853853 pMode->VisScreenHeight = pModeInfo->YResolution ;
854- pMode->ScreenStride = (pModeInfo->XResolution * bytes_pp + 3 ) & ~0x3 ;
855854}
856855
857856void ScreenInfo::SetCustomDisplay (_In_ USHORT xres, _In_ USHORT yres)
@@ -1178,7 +1177,7 @@ void VioGpuAdapterLite::CreateFrameBufferObj(PVIDEO_MODE_INFORMATION pModeInfo,
11781177 DBGPRINT (" %d: %d, (%d x %d)\n " , m_Id, pCurrentMode->DispInfo .TargetId ,
11791178 pModeInfo->VisScreenWidth , pModeInfo->VisScreenHeight );
11801179 ASSERT (m_screen[pCurrentMode->DispInfo .TargetId ].m_pFrameBuf == NULL );
1181- size = pModeInfo-> ScreenStride * pModeInfo->VisScreenHeight ;
1180+ size = pCurrentMode-> DispInfo . Pitch * pModeInfo->VisScreenHeight ;
11821181 format = ColorFormat (pCurrentMode->DispInfo .ColorFormat );
11831182 DBGPRINT (" (%d -> %d)\n " , pCurrentMode->DispInfo .ColorFormat , format);
11841183 resid = m_Idr.GetId ();
@@ -1204,11 +1203,11 @@ void VioGpuAdapterLite::CreateFrameBufferObj(PVIDEO_MODE_INFORMATION pModeInfo,
12041203 return ;
12051204 }
12061205
1207- GpuObjectAttach (resid, obj, pModeInfo->VisScreenWidth , pModeInfo->VisScreenHeight );
1206+ GpuObjectAttach (resid, obj, pModeInfo->VisScreenWidth , pModeInfo->VisScreenHeight ,pCurrentMode-> Stride );
12081207
12091208 if (m_bBlobSupported)
12101209 {
1211- m_CtrlQueue.SetScanoutBlob (pCurrentMode->DispInfo .TargetId , resid, pModeInfo->VisScreenWidth , pModeInfo->VisScreenHeight , format, 0 , 0 );
1210+ m_CtrlQueue.SetScanoutBlob (pCurrentMode->DispInfo .TargetId , resid, pModeInfo->VisScreenWidth , pModeInfo->VisScreenHeight , format, 0 , 0 ,pCurrentMode-> Stride );
12121211 }
12131212 else
12141213 {
@@ -1278,7 +1277,8 @@ BOOLEAN VioGpuAdapterLite::CreateCursor(_In_ CONST DXGKARG_SETPOINTERSHAPE* pSet
12781277 delete obj;
12791278 return FALSE ;
12801279 }
1281- if (!GpuObjectAttach (resid, obj, POINTER_SIZE, POINTER_SIZE))
1280+ // TODO: Stride is set to zero as cursor does not use.
1281+ if (!GpuObjectAttach (resid, obj, POINTER_SIZE, POINTER_SIZE,0 ))
12821282 {
12831283 VioGpuDbgBreak ();
12841284 ERR (" Failed to attach gpu object\n " );
@@ -1345,7 +1345,7 @@ void VioGpuAdapterLite::DestroyCursor()
13451345 }
13461346}
13471347
1348- BOOLEAN VioGpuAdapterLite::GpuObjectAttach (UINT res_id, VioGpuObj* obj, ULONGLONG width, ULONGLONG height)
1348+ BOOLEAN VioGpuAdapterLite::GpuObjectAttach (UINT res_id, VioGpuObj* obj, ULONGLONG width, ULONGLONG height , ULONGLONG stride )
13491349{
13501350 PAGED_CODE ();
13511351 TRACING ();
@@ -1372,7 +1372,7 @@ BOOLEAN VioGpuAdapterLite::GpuObjectAttach(UINT res_id, VioGpuObj* obj, ULONGLON
13721372 }
13731373
13741374 if (m_bBlobSupported) {
1375- m_CtrlQueue.CreateResourceBlob (res_id, ents, sgl->NumberOfElements , width, height);
1375+ m_CtrlQueue.CreateResourceBlob (res_id, ents, sgl->NumberOfElements , width, height, stride );
13761376 }
13771377 else {
13781378 m_CtrlQueue.AttachBacking (res_id, ents, sgl->NumberOfElements );
0 commit comments