VirtualBox

Ignore:
Timestamp:
Jan 29, 2016 9:07:19 AM (9 years ago)
Author:
vboxsync
Message:

WDDM: bugref:8228: display-only driver does not need vsync.

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm
Files:
2 edited

Legend:

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

    r52631 r59518  
    128128    pVsi->ActiveSize.cx = pResolution->cx;
    129129    pVsi->ActiveSize.cy = pResolution->cy;
    130     pVsi->VSyncFreq.Numerator = VSync * 1000;
    131     pVsi->VSyncFreq.Denominator = 1000;
    132     pVsi->TotalSize.cx = pVsi->ActiveSize.cx;// + VBOXVDPN_C_DISPLAY_HBLANK_SIZE;
    133     pVsi->TotalSize.cy = pVsi->ActiveSize.cy;// + VBOXVDPN_C_DISPLAY_VBLANK_SIZE;
    134     pVsi->PixelRate = pVsi->TotalSize.cx * pVsi->TotalSize.cy * VSync;
    135     pVsi->HSyncFreq.Numerator = (UINT)((pVsi->PixelRate / pVsi->TotalSize.cy) * 1000);
    136     pVsi->HSyncFreq.Denominator = 1000;
     130    pVsi->TotalSize = pVsi->ActiveSize;
     131    if (VBOXWDDM_IS_DISPLAYONLY())
     132    {
     133        /* VSYNC is not implemented in display-only mode (#8228).
     134         * In this case Windows checks that frequencies are not specified.
     135         */
     136        pVsi->VSyncFreq.Numerator = D3DKMDT_FREQUENCY_NOTSPECIFIED;
     137        pVsi->VSyncFreq.Denominator = D3DKMDT_FREQUENCY_NOTSPECIFIED;
     138        pVsi->PixelRate = D3DKMDT_FREQUENCY_NOTSPECIFIED;
     139        pVsi->HSyncFreq.Numerator = D3DKMDT_FREQUENCY_NOTSPECIFIED;
     140        pVsi->HSyncFreq.Denominator = D3DKMDT_FREQUENCY_NOTSPECIFIED;
     141    }
     142    else
     143    {
     144        pVsi->VSyncFreq.Numerator = VSync * 1000;
     145        pVsi->VSyncFreq.Denominator = 1000;
     146        pVsi->PixelRate = pVsi->TotalSize.cx * pVsi->TotalSize.cy * VSync;
     147        pVsi->HSyncFreq.Numerator = (UINT)((pVsi->PixelRate / pVsi->TotalSize.cy) * 1000);
     148        pVsi->HSyncFreq.Denominator = 1000;
     149    }
    137150    pVsi->ScanLineOrdering = D3DDDI_VSSLO_PROGRESSIVE;
    138151
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp

    r59177 r59518  
    73017301    DriverInitializationData.DxgkDdiUpdateActiveVidPnPresentPath = DxgkDdiUpdateActiveVidPnPresentPath;
    73027302    DriverInitializationData.DxgkDdiRecommendMonitorModes = DxgkDdiRecommendMonitorModes;
    7303     DriverInitializationData.DxgkDdiGetScanLine = DxgkDdiGetScanLine;
    73047303    DriverInitializationData.DxgkDdiQueryVidPnHWCapability = DxgkDdiQueryVidPnHWCapability;
    73057304    DriverInitializationData.DxgkDdiPresentDisplayOnly = DxgkDdiPresentDisplayOnly;
     
    73087307    DriverInitializationData.DxgkDdiSystemDisplayWrite = DxgkDdiSystemDisplayWrite;
    73097308//    DriverInitializationData.DxgkDdiGetChildContainerId = DxgkDdiGetChildContainerId;
    7310     DriverInitializationData.DxgkDdiControlInterrupt = DxgkDdiControlInterrupt;
    73117309//    DriverInitializationData.DxgkDdiSetPowerComponentFState = DxgkDdiSetPowerComponentFState;
    73127310//    DriverInitializationData.DxgkDdiPowerRuntimeControlRequest = DxgkDdiPowerRuntimeControlRequest;
    73137311//    DriverInitializationData.DxgkDdiNotifySurpriseRemoval = DxgkDdiNotifySurpriseRemoval;
     7312
     7313    /* Display-only driver is not required to report VSYNC.
     7314     * The Microsoft KMDOD driver sample does not implement DxgkDdiControlInterrupt and DxgkDdiGetScanLine.
     7315     * The functions must be either both implemented or none implemented.
     7316     * Windows 10 10586 guests had problems with VSYNC in display-only driver (#8228).
     7317     * Therefore the driver does not implement DxgkDdiControlInterrupt and DxgkDdiGetScanLine.
     7318     */
    73147319
    73157320    NTSTATUS Status = DxgkInitializeDisplayOnlyDriver(pDriverObject,
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