Changeset 60588 in vbox
- Timestamp:
- Apr 20, 2016 9:49:24 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp
r60289 r60588 1954 1954 if (pTarget->Size.cy) 1955 1955 { 1956 uint32_t curScanLine ;1957 BOOL bVBlank ;1956 uint32_t curScanLine = 0; 1957 BOOL bVBlank = FALSE; 1958 1958 LARGE_INTEGER DevVSyncTime; 1959 1959 DevVSyncTime.QuadPart = ASMAtomicReadU64((volatile uint64_t*)&pDevExt->VSyncTime.QuadPart); … … 1964 1964 { 1965 1965 WARN(("vsync time is less than the one stored in device")); 1966 curScanLine = 0;1966 bVBlank = TRUE; 1967 1967 } 1968 1968 else 1969 1969 { 1970 1970 VSyncTime.QuadPart = VSyncTime.QuadPart - DevVSyncTime.QuadPart; 1971 /* time is in 100ns, */1972 curScanLine = (uint32_t)((pTarget->Size.cy * VSyncTime.QuadPart) / 166666LL); /* ASSUMES 60Hz*/1973 if (pDevExt->bVSyncTimerEnabled)1974 {1975 if (curScanLine >= pTarget->Size.cy)1976 curScanLine = 0;1977 }1971 /* Check whether we are in VBlank state or actively drawing a scan line 1972 * 10% of the 60Hz are dedicated to VBlank. 1973 */ 1974 LARGE_INTEGER VSyncPeriod; 1975 VSyncPeriod.QuadPart = VSyncTime.QuadPart % 166666LL; /* ASSUMES 60Hz*/ 1976 if (VSyncPeriod.QuadPart > 150000LL) 1977 bVBlank = TRUE; 1978 1978 else 1979 1979 { 1980 curScanLine %= pTarget->Size.cy; 1981 } 1982 } 1983 1984 bVBlank = (!curScanLine || curScanLine > pTarget->Size.cy); 1980 /* time is in 100ns, */ 1981 curScanLine = (uint32_t)((pTarget->Size.cy * VSyncPeriod.QuadPart) / 150000LL); 1982 if (pDevExt->bVSyncTimerEnabled) 1983 { 1984 if (curScanLine > pTarget->Size.cy) 1985 curScanLine = pTarget->Size.cy; 1986 } 1987 else 1988 curScanLine %= pTarget->Size.cy; 1989 } 1990 } 1991 1985 1992 pGetScanLine->ScanLine = curScanLine; 1986 1993 pGetScanLine->InVerticalBlank = bVBlank;
Note:
See TracChangeset
for help on using the changeset viewer.

