doitsujin / dxvk

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

[d3d9] Bound By Flame - issues when started in fullscreen #1617

Closed WinterSnowfall closed 4 years ago

WinterSnowfall commented 4 years ago

I have the distinct feeling this is a game bug, but maybe you guys have seen this sort of thing before and can advise... so it's more of a question.

As the title says, the game does not seem to use DXVK when started in fullscreen. The d3d9.dll gets loaded and everything, I see the usual DXVK stuff in the logs (see below), but then the DXVK UI is not there when the intro videos play and the main menu is rendered.

Using windowed mode makes everything behave as expected. Starting in fullscreen but then switching to windowed mode and then back to fullscreen also gets the game to keep using DXVK even in fullscreen (it starts getting used with the switch to windowed mode). There's no option for windowed fullscreen, otherwise this would've been a non-issue.

I've captured a trace, but it plays back nicely using DXVK of course and I'm not sure if it's relevant to the problem. I can share it if you think it can help, or can capture a new one during the switch, or whatever you need.

Could it be the game's using some weird DirectDraw fallback mode when started in fullscreen or some other stupid thing of the sort? How can I debug this further?

Thanks for your time!

Software information

Bound By Flame, GOG version.

System information

Apitrace file(s)

TBD

Log files

doitsujin commented 4 years ago

There is no such issue, a game cannot just "ignore" DXVK unless your setup is broken, and fullscreen or not has nothing to do with it.

What exactly is even the problem that leads you to belive that DXVK doesn't get used?

WinterSnowfall commented 4 years ago

I wouldn't believe it myself if I didn't see it happening...

There's no DXVK UI for one... but it shows up immediately after switching to windowed mode. Plus the fact that the frame rate is considerably low when the game starts in fullscreen and suddenly improves when the UI shows up in windowed mode.

I have considered issues with my setup, but this is the only game which does this sort of thing and I have over 100 games happily running with DXVK in the same prefix. I even tested it in a new prefix and it does the same thing.

Ok, it seems my testing was half-assed... sorry about that. After enabling the full UI, not just the FPS indicator, I can see that:

I guess an api trace is in order after all. I'll post one shortly.

WinterSnowfall commented 4 years ago

Sorry for wasting your time, I figured out what was happening in the end.

The game will, for some reason, use the lowest refresh rate the monitor is capable of at the set fullscreen resolution when it starts (mind you, this only happens with DXVK). Mine happens to support 30Hz @ 1080p, though X doesn't particularly seem to like that setting, making me think it was some form of black magic at work. Forcing the game to use 60Hz from the start makes the problem go away.

I'll have to remove all 30Hz modes with xrandr one of these days...