Re: Nvidia Reflex
Posted: 12 Sep 2020, 10:12
I sometimes have this issue, it seems that using the borderless windowed autohotkey script fixes it for me though.diakou wrote: ↑11 Sep 2020, 12:48Do you know what to do about games that have no exclusive fullscreen mode, but when you kill DWM the game lags horrendously? It's most likely due to DWM's v-sync application keeping the game smooth and consistent, but when I mean "horrendously" I don't mean tearing, I mean FPS jumping between 30-50-55 in a 60fps locked game.1000WATT wrote: ↑10 Sep 2020, 19:03This is an example . exclusive fullscreen. https://youtu.be/xuJryS7bMHo
This is 100% DWM composed. ... Old Windows 10. FrameView shows ~ 0.30. https://youtu.be/EJ1hgy9HFLw
The game I play is called Brawlhalla, but turning off DWM on windows 8 or 7 makes the game go absolutely crazy, this sucks because the game has no way of going into exclusive fullscreen and the latency penalty is massive. It's reduced a ton by using a 240hz or 360hz monitor due to how DWM lag works, but it's still not good enough in my opinion. I think the only way is probably using g-sync or freesync methods. (if you could, it's a free game on steam to download, 400mb, try with DWM and DWM off and you'll see what I mean by extreme lag) it also only has copy with gpu gdi available until you shut off DWM, then it's legacy copy to front buffer.
Like, normally when I play quake 1 in windowed without dwm, the frametime and fps jump like mad, but using the script it fixes it, though I use scanline sync.
Here's the script if interested to try, run as admin as sometimes it doesn't work well without admin priviliges:
press F12 when you're focusing on the game window; you can still alt-tab easily.
Code: Select all
#SingleInstance force
;;; Known issues:
;;;
;;; - Weird results for windows with custom decorations such as
;;; Chrome, or programs with a Ribbon interface.
;;; - Emacs will be maximized behind instead of in front of
;;; the taskbar. Workaround: WinHide ahk_class Shell_TrayWnd
ToggleFakeFullscreen()
{
CoordMode Screen, Window
static WINDOW_STYLE_UNDECORATED := -0xC40000
static savedInfo := Object() ;; Associative array!
WinGet, id, ID, A
if( savedInfo[id] )
{
inf := savedInfo[id]
WinSet, Style, % inf["style"], ahk_id %id%
WinMove, ahk_id %id%,, % inf["x"], % inf["y"], % inf["width"], % inf["height"]
savedInfo[id] := ""
}
else
{
savedInfo[id] := inf := Object()
WinGet, ltmp, Style, A
inf["style"] := ltmp
WinGetPos, ltmpX, ltmpY, ltmpWidth, ltmpHeight, ahk_id %id%
inf["x"] := ltmpX
inf["y"] := ltmpY
inf["width"] := ltmpWidth
inf["height"] := ltmpHeight
WinSet, Style, %WINDOW_STYLE_UNDECORATED%, ahk_id %id%
mon := GetMonitorActiveWindow()
SysGet, mon, Monitor, %mon%
WinMove, A,, %monLeft%, %monTop%, % monRight-monLeft, % monBottom-monTop
}
}
GetMonitorAtPos(x,y)
{
;; Monitor number at position x,y or -1 if x,y outside monitors.
SysGet monitorCount, MonitorCount
i := 0
while(i < monitorCount)
{
SysGet area, Monitor, %i%
if ( areaLeft <= x && x <= areaRight && areaTop <= y && y <= areaBottom )
{
return i
}
i := i+1
}
return -1
}
GetMonitorActiveWindow()
{
;; Get Monitor number at the center position of the Active window.
WinGetPos x,y,width,height, A
return GetMonitorAtPos(x+width/2, y+height/2)
}
F12::ToggleFakeFullscreen()