VOGONS


Fake fullscreen issues

Topic actions

First post, by Ichisich

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2026-04-03, 16:30:
I looked into the code responsible for handling fake and real fullscreen screen modes in dgVoodoo, and I did some fixes (but not […]
Show full quote

I looked into the code responsible for handling fake and real fullscreen screen modes in dgVoodoo, and I did some fixes (but not many testings, I did it in a kind of rush):

  • Now fake fullscreen fully resembles the behaviour of real fullscreen.
    Except that fake fullscreen cannot handle "Centered", "Stretched" scaling modes, those are mapped to "Unspecified". But unspecified now does resolution changing when needed, as with real fullscreen.
    So, the difference between real/fake is
    - fake rendering window does not get kicked out of fullscreen state when it is obscured by other windows
    - fake fullscreen can get into "not responding" state if a game is not responding because of a long loading stage and isn't pumping the message queue
  • It might fix the annoying window-resize problem, when the fullscreen window becomes small in the corner of the screen

Would it be possible to implement a [Ignore refreshrate] setting in the fullscreen mode attributes section?
Now, with the changes in 2.87.1, many old games default the display to low arbitrary refreshrates.

Reply 1 of 9, by Dege

User metadata
Rank l33t
Rank
l33t
Ichisich wrote on 2026-04-18, 16:48:
Dege wrote on 2026-04-03, 16:30:
I looked into the code responsible for handling fake and real fullscreen screen modes in dgVoodoo, and I did some fixes (but not […]
Show full quote

I looked into the code responsible for handling fake and real fullscreen screen modes in dgVoodoo, and I did some fixes (but not many testings, I did it in a kind of rush):

  • Now fake fullscreen fully resembles the behaviour of real fullscreen.
    Except that fake fullscreen cannot handle "Centered", "Stretched" scaling modes, those are mapped to "Unspecified". But unspecified now does resolution changing when needed, as with real fullscreen.
    So, the difference between real/fake is
    - fake rendering window does not get kicked out of fullscreen state when it is obscured by other windows
    - fake fullscreen can get into "not responding" state if a game is not responding because of a long loading stage and isn't pumping the message queue
  • It might fix the annoying window-resize problem, when the fullscreen window becomes small in the corner of the screen

Would it be possible to implement a [Ignore refreshrate] setting in the fullscreen mode attributes section?
Now, with the changes in 2.87.1, many old games default the display to low arbitrary refreshrates.

Only the fake fullscreen path has been changed, and now it takes refresh rates into account just like regular fullscreen.
You can force a high refresh rate through dgVoodoo, preventing the game from choosing anything else.
But, indeed, instead of defining a specific numerical value, it'd be cool to have a refresh rate option "desktop" to force the current desktop refresh rate whatever it is.
(I guess your desktop is displayed at some high refresh rate like 120/240Hz but the game picks up a low refresh rate like 60Hz.)

Reply 2 of 9, by Macron

User metadata
Rank Newbie
Rank
Newbie
Ichisich wrote on 2026-04-18, 16:48:

Now, with the changes in 2.87.1, many old games default the display to low arbitrary refreshrates.

With "B5 into the fire" alpha game I also noticed some resolution problems. With 2.87 when I started the game with incorrect display settings in game config, it set default to 640x480, then I pressed F12 to choose optimal resolution, selected it, and the new resolution has been applied within few seconds. With 2.87.1 after selecting new resolution, display reacts as if it was changed, but in fact it remains 640x480 until closing and full restart of the game.

Reply 3 of 9, by Dege

User metadata
Rank l33t
Rank
l33t

But I guess all this happens with Fake fullscreen enabled, because only fake fullscreen behaviour has changed in 2.87.1.
If you set the scaling mode to "stretched, keep aspect ratio" then it should work as before. Aside from the refresh rate thing because it is also set now, like in real fullscreen.

Reply 4 of 9, by Macron

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2026-05-05, 21:30:

If you set the scaling mode to "stretched, keep aspect ratio" then it should work as before.

Now works better. But it always uses the desktop resolution as maximum possible. For example, if the desktop is "1024 x 768", and in game you set "1280 x 1024", the real resolution would be "1024 x 768", even after game restart.

Reply 5 of 9, by Dege

User metadata
Rank l33t
Rank
l33t
Macron wrote on 2026-05-06, 08:11:
Dege wrote on 2026-05-05, 21:30:

If you set the scaling mode to "stretched, keep aspect ratio" then it should work as before.

Now works better. But it always uses the desktop resolution as maximum possible. For example, if the desktop is "1024 x 768", and in game you set "1280 x 1024", the real resolution would be "1024 x 768", even after game restart.

If your desktop is 1024x768 (either being set to be that at OS level or forced through GeneralExt\DesktopResolution) then dgvoodoo will downscale the 1280 x 1024 image to 1024 x 768.
The point of scaling mode 'Stretched, keep AR' is to leave the desktop resolution as is (or change it to GeneralExt\DesktopResolution if defined) and then upscale/downscale the output image to that resolution.

Reply 6 of 9, by 2mg

User metadata
Rank Member
Rank
Member
Dege wrote on 2026-05-05, 21:30:

But I guess all this happens with Fake fullscreen enabled, because only fake fullscreen behaviour has changed in 2.87.1.
If you set the scaling mode to "stretched, keep aspect ratio" then it should work as before. Aside from the refresh rate thing because it is also set now, like in real fullscreen.

So I did some testing.

Montezuma's Return 1.29w (max 800x600, can't be overriden via dgVoodoo nor a mod/patch).
RTX 2080ti, 240Hz G-sync monitor, Win10.
*game speed is tied to FPS, I haven't properly tested timings, but it seems max 120fps works ok

The VGA mode (DirectX) fullscreen pretty much works as expected:
- monitor doesn't change resolution nor refresh rate (with Stretched, keep Aspect Ratio)
- it honors Vsync (tho only from dgVooodoo, not it's own setup) to display refresh rate
- if honors FPS limit, with or without V-sync
- it honors fullscreen scaling modes
- it works with G-sync
- no need for Fake Fullscreen as alt+tab is instantaneous, tho I tested it and saw no difference from regular Fullscreen
*Fake Fullscreen disables G-sync (Output API = best available one, usually MSI Afterburner shows DX11 being used with or without Fake Fullscreen)

The 3DFX mode (Glide) fullscreen works like this:
- it sets the monitor to 60Hz
- above happens no matter if if force 800x600, 240 or 1920x1080, 240 or GeneralExt desktop to 1920x1080, 240 or any of those combinations together
- enabling V-sync in dgVoodoo locks the FPS to 60hz regardless of any other setting
- only difference with Fake Fullscreen is that alt+tab is a bit faster because the monitor is running in 1920x1080@60hz
- with Fake Fullscreen when alt+tab puts the game in background, with regular Fullscreen it will put the game into windowed mode for some reason?
- the above doesn't change if I enable "Enable inactive app state" (shouldn't regular Fullscreen alt+tab close the game as the popup info implies?)
- FPS limit (no Vsync) "works" in a sense that you are rendering frames above 60hz which looks meh, since the panel is at smeary 60hz
- above usually works if (no V-sync) unlocked FPS >>> Hz because tearing becomes invisible, but this game shouldn't run above 120fps, so you get visible tearlines along with 60hz smeary display
- I haven't tested GeneralExt Presentation modes if I can somehow break from 60hz mode
- it honors fullscreen scaling modes
*Fake Fullscreen specifically disables G-sync

Workaround (specifically for 3DFX) - run Windowed mode with GeneralExt Borderless + Fullescreen size enabled, and limit to max 120fps, V-sync optional
*Windowed mode also disables G-sync

Question - why does Fake Fullscreen and Windowed mode disable G-Sync?
- I have it enabled for windowed programs too, it's not even picked up by G-sync.
- I have the G-sync indicator and if it works it's green "G-Sync" text in the corner, if it's not it's gray "Normal" text, but none are present here.
- DX12 API doesn't work with this game, so I can't test that, so consider that everything was done with Best possible API, which is DX11, which has G-Sync in regular Fullscreen
- I tried using Lossless Scaling without any upscaling or framegen just to get G-sync, but the FPS is choppy (please see dgVoodoo + Lossless Scaling (upscale only) )

Reply 7 of 9, by y2k se

User metadata
Rank Member
Rank
Member

I don't know what fake full-screen is in this content, but in general if a game uses window borderless display mode, it will be treated as a fullscreen (exclusive) mode for GSYNC purposes. The windowed GSYNC mode was a hack for some Windows 10 apps that no longer really works.

My experience is with a couple DX11 titles (iRacing, American Truck Simulator).

Tualatin Pentium III-S 1.4, ASUS TUSL2-C, 512MB RAM, GeForce 4 Ti 4200, Voodoo2, SB Live!, 3Com 3C905C, 80GB IDE HDD, Dell 2001FP
P233MMX, Intel LT430TX, 64MB RAM, Sierra Screamin' 3D, Voodoo2, AWE64 Gold, 3Com 3C905B, 40GB IDE HDD, Viewsonic A75f

Reply 8 of 9, by 2mg

User metadata
Rank Member
Rank
Member
y2k se wrote on Today, 15:50:

I don't know what fake full-screen is in this content, but in general if a game uses window borderless display mode, it will be treated as a fullscreen (exclusive) mode for GSYNC purposes. The windowed GSYNC mode was a hack for some Windows 10 apps that no longer really works.

My experience is with a couple DX11 titles (iRacing, American Truck Simulator).

There is "Fullscreen mode attributes" in GeneralExt with "Fake" option, popup states "Forces fake fullscreen with a screen sized borderless window".
It's relevant to this discussion.

G-Sync indeed is spotty when it comes to windowed apps, but dgVoodoo isn't hooked when you run anything else than proper Fullscreen.
You'd expect Fake Fullscreen to get hooked but it isn't, same for Window mode with Borderless + Fullscreen size flags.
In fact, I've seen some windowed apps that are hooked with G-sync but it's not enabled on them - this usually has the indicator "Normal" in top right corner, and this also isn't happening with dgVoodoo.

I know G-Sync is slightly off-topic here, but I've posted this finding for just in case.
So is my mentioning of Lossless Scaling (afaik Special K can too, and very maybe RTSS if you inject Reflex), since you can use it to only enable G-Sync on stuff that doesn't have it, but in dgVoodoo FPS becomes choppy and unstable.

Gotta figure out why Fake Fullscreen forces game's own FPS and it can't be overriden.

Reply 9 of 9, by y2k se

User metadata
Rank Member
Rank
Member
2mg wrote on Today, 17:19:
There is "Fullscreen mode attributes" in GeneralExt with "Fake" option, popup states "Forces fake fullscreen with a screen sized […]
Show full quote
y2k se wrote on Today, 15:50:

I don't know what fake full-screen is in this content, but in general if a game uses window borderless display mode, it will be treated as a fullscreen (exclusive) mode for GSYNC purposes. The windowed GSYNC mode was a hack for some Windows 10 apps that no longer really works.

My experience is with a couple DX11 titles (iRacing, American Truck Simulator).

There is "Fullscreen mode attributes" in GeneralExt with "Fake" option, popup states "Forces fake fullscreen with a screen sized borderless window".
It's relevant to this discussion.

G-Sync indeed is spotty when it comes to windowed apps, but dgVoodoo isn't hooked when you run anything else than proper Fullscreen.
You'd expect Fake Fullscreen to get hooked but it isn't, same for Window mode with Borderless + Fullscreen size flags.
In fact, I've seen some windowed apps that are hooked with G-sync but it's not enabled on them - this usually has the indicator "Normal" in top right corner, and this also isn't happening with dgVoodoo.

I know G-Sync is slightly off-topic here, but I've posted this finding for just in case.
So is my mentioning of Lossless Scaling (afaik Special K can too, and very maybe RTSS if you inject Reflex), since you can use it to only enable G-Sync on stuff that doesn't have it, but in dgVoodoo FPS becomes choppy and unstable.

Gotta figure out why Fake Fullscreen forces game's own FPS and it can't be overriden.

I'm not sure what else to add. I run iRacing on three screens with Surround, GSYNC and Reflex enabled using windowed borderless mode and get proper GSYNC behavior on all three screens. I get the same with ATS/ETS2 except that uses the Ultra Low Latency setting in NVCP since they don't support Reflex.

Tualatin Pentium III-S 1.4, ASUS TUSL2-C, 512MB RAM, GeForce 4 Ti 4200, Voodoo2, SB Live!, 3Com 3C905C, 80GB IDE HDD, Dell 2001FP
P233MMX, Intel LT430TX, 64MB RAM, Sierra Screamin' 3D, Voodoo2, AWE64 Gold, 3Com 3C905B, 40GB IDE HDD, Viewsonic A75f