doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
12.84k stars 827 forks source link

DXVK treats fullscreen borderless and fullscreen the same under Windows #3331

Closed Jacoby1218 closed 1 year ago

Jacoby1218 commented 1 year ago

DXVK has no issues with windowed borderless mode, but fullscreen borderless is incorrectly treated as if it's fullscreen in DXVK. I have read the windows page and understand this might have been done to avoid issues with exclusive fullscreen, but this behavior is very annoying to deal with because you get a blackscreen when you switch from game to screen and vice versa.

If you use Windows, please check the following page: https://github.com/doitsujin/dxvk/wiki/Windows

Software information

Any games that use fullscreen borderless mode

System information

Apitrace file(s)

N/A For instructions on how to use apitrace, see: https://github.com/doitsujin/dxvk/wiki/Using-Apitrace

Log files

N/A

Joshua-Ashton commented 1 year ago

This is a driver implementation detail as Intel implement it using legacy full screen exclusive rather than the modern DXGI flip path (at least this is how it was explained to me)

Nothing we can do as Intel don't expose VK_EXT_fullscreen_exclusive which, honestly, is a bit of a meme crutch ext for a lazy implementation.

mirh commented 1 year ago

To be extremely fair FSE is the actual legit "no strings attached fullscreen", while the other (while certainly legit, "functionally" equivalent and overall preferable) is more of a long-winded complex workaround to play nice with the DWM. And of course borderless fullscreen is treated the same, when for the longest time there was no other way to clue the driver about the mode you wanted (and even today I guess you should still support legacy programs?). Also, it seems like at least Arc cards do support the new extension. The diagnosis is nonetheless correct.

Anyhow I believe you could possibly tamper the automatic exclusive fullscreen promotion by tinkering with the window styles (or at least this used to work once upon a time with opengl): https://www.catch22.net/projects/winspy/

Annihil commented 11 months ago

It is also the case with windows and an nvidia dgpu (for example on wow 3.3.5a dx9). How can it work fine with dx9 but not vulkan? Any way to force windowed borderless in dxvk (even hardcoding it in the source code directly and recompiling would be fine by me).

mirh commented 11 months ago

Directx games are handled by windows Nvidia has the DISABLE_FULLSCREEN_OPT bit in OGL_DX_PRESENT_DEBUG to toggle whatever behavior you want. Or another alternative could be enabling DXGI presentation for vulkan and opengl

Annihil commented 11 months ago

Thanks for the reply @mirh I tried all of your suggestions Screenshot 2023-10-02 195336 Screenshot 2023-10-02 195404 Screenshot 2023-10-02 195518 Yet the game is still running in exclusive fullscreen, not windowed borderless fullscreen :/ Any idea what am I doing wrong here?

By the way my game is d3d9 not opengl

Ah and I see it's a known issue already

vlad54rus commented 11 months ago

@mirh

DISABLE_FULLSCREEN_OPT

Doesn't seem to do anything on my side either.

@Annihil Set present method back to Auto and instead try setting Buffer-flipping mode = 0x00000001 OGL_FORCE_BLIT_ON

Annihil commented 11 months ago

@vlad54rus worked, ifly man

For anyone also interested: image

mirh commented 11 months ago

Did you try d3d9.enableDialogMode = True? Also, could you check if dxvk older than 2.0 makes any difference?

Annihil commented 11 months ago

Did you try d3d9.enableDialogMode = True?

That works too, idk how I didn't see that option, thanks

mirh commented 11 months ago

https://github.com/doitsujin/dxvk/commit/dc13f4831829d6b444306dbc38fa892d3f4e7d45 https://github.com/Joshua-Ashton/dxvk/commit/38ce7a0781202c86c9f955b316d95ad5d4d05fcd https://github.com/Joshua-Ashton/dxvk/commit/92fb6b7d15d329482e9d4ad1f116e0abad7be8cc https://github.com/Joshua-Ashton/dxvk/commit/bb941cf8bf6c7c542fe63cea7d8a1109e414ce49 I see now how this is an absolute hellhole between window styles, vulkan extensions (at least in d3d9ex games? which WoW > 3.3.0 is) and of course the ever present driver magic. EDIT: g-sync too?

Annihil commented 10 months ago

@mirh yes in my case I have g-sync on as well that's right

mirh commented 10 months ago

Do you have non-standard scaling factors too? If yes this might be similar to https://github.com/RPCS3/rpcs3/issues/14180

Annihil commented 10 months ago

@mirh I have a 4k 27" display so running at 150% scaling, is that a non-standard factor thought?

Jacoby1218 commented 9 months ago

ok updating this: this is now causing severe issues in Cities Skylines II: game is unplayable because every time it freezes it causes the display to go black for 5-10seconds before returning.