> > Prepare all the procedures needed for VSync feature but > do not turn it on yet. Manual uncomment still required to > enable it. > Advanced users may enable VSync feature and report functional > problem with it. The driver is expected to pass all the formal > tests under HLK 1607 with device rev.3 and rev.4 but with > device rev.4 on setups with high load or long round-trip delay > video system may detect timeout during rendering operation > and disable the driver with error 43. > > Signed-off-by: Yuri Benditovich <yuri.benditovich@xxxxxxxxxx> > --- > qxldod/driver.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > qxldod/driver.h | 15 +++++++++++++++ > 2 files changed, 67 insertions(+) > > diff --git a/qxldod/driver.cpp b/qxldod/driver.cpp > index dc84aa8..5bd57b4 100755 > --- a/qxldod/driver.cpp > +++ b/qxldod/driver.cpp > @@ -32,6 +32,19 @@ DriverEntry( > > DbgPrint(TRACE_LEVEL_FATAL, ("---> KMDOD build on on %s %s\n", __DATE__, > __TIME__)); > > + RTL_OSVERSIONINFOW versionInfo; > + versionInfo.dwOSVersionInfoSize = sizeof(versionInfo); > + > + > + RtlGetVersion(&versionInfo); > + if (versionInfo.dwBuildNumber >= 14393 || versionInfo.dwBuildNumber <= > 9600) Can you put a comment in the code on why we need to exclude 9600 - 14393 range? A bug? > + { > + //g_bSupportVSync = TRUE; I would add also a comment before this line why this is commented out. > + } > + DbgPrint(TRACE_LEVEL_WARNING, ("VSync support %sabled for %d.%d.%d\n", > + g_bSupportVSync ? "en" : "dis", > + versionInfo.dwMajorVersion, versionInfo.dwMinorVersion, > versionInfo.dwBuildNumber)); > + > // Initialize DDI function pointers and dxgkrnl > KMDDOD_INITIALIZATION_DATA InitialData = {0}; > > @@ -67,6 +80,11 @@ DriverEntry( > InitialData.DxgkDdiStopDeviceAndReleasePostDisplayOwnership = > DodStopDeviceAndReleasePostDisplayOwnership; > InitialData.DxgkDdiSystemDisplayEnable = > DodSystemDisplayEnable; > InitialData.DxgkDdiSystemDisplayWrite = DodSystemDisplayWrite; > + if (g_bSupportVSync) > + { > + InitialData.DxgkDdiControlInterrupt = DodControlInterrupt; > + InitialData.DxgkDdiGetScanLine = DodGetScanLine; > + } > > NTSTATUS Status = DxgkInitializeDisplayOnlyDriver(pDriverObject, > pRegistryPath, &InitialData); > if (!NT_SUCCESS(Status)) > @@ -559,6 +577,40 @@ DodQueryVidPnHWCapability( > return pQxl->QueryVidPnHWCapability(pVidPnHWCaps); > } > > +NTSTATUS > +APIENTRY > +DodControlInterrupt( > + IN_CONST_HANDLE hAdapter, > + IN_CONST_DXGK_INTERRUPT_TYPE InterruptType, > + IN_BOOLEAN EnableInterrupt > +) > +{ > + PAGED_CODE(); > + QxlDod* pQxl = reinterpret_cast<QxlDod*>(hAdapter); > + if (InterruptType == DXGK_INTERRUPT_DISPLAYONLY_VSYNC) > + { > + pQxl->EnableVsync(EnableInterrupt); > + return STATUS_SUCCESS; > + } > + return STATUS_NOT_IMPLEMENTED; > +} > + > +NTSTATUS > +APIENTRY > +DodGetScanLine( > + IN_CONST_HANDLE hAdapter, > + INOUT_PDXGKARG_GETSCANLINE pGetScanLine > +) > +{ > + PAGED_CODE(); > + // Currently we do not see any practical use case when this procedure is > called > + // IDirectDraw has an interface for querying scan line > + // Leave it not implemented like remote desktop does > + // until we recognize use case for more intelligent implementation > + DbgPrint(TRACE_LEVEL_ERROR, ("<---> %s\n", __FUNCTION__)); > + return STATUS_NOT_IMPLEMENTED; > +} > + > //END: Paged Code > #pragma code_seg(pop) > > diff --git a/qxldod/driver.h b/qxldod/driver.h > index 97b9415..2dcbda4 100755 > --- a/qxldod/driver.h > +++ b/qxldod/driver.h > @@ -217,6 +217,21 @@ DodSystemDisplayWrite( > _In_ UINT PositionX, > _In_ UINT PositionY); > > +NTSTATUS > +APIENTRY > +DodControlInterrupt( > + IN_CONST_HANDLE hAdapter, > + IN_CONST_DXGK_INTERRUPT_TYPE InterruptType, > + IN_BOOLEAN EnableInterrupt > +); > + > +NTSTATUS > +APIENTRY > +DodGetScanLine( > + IN_CONST_HANDLE hAdapter, > + INOUT_PDXGKARG_GETSCANLINE pGetScanLine > +); > + > #if DBG > > extern int nDebugLevel; Otherwise Acked-by: Frediano Ziglio <fziglio@xxxxxxxxxx> Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel