doitsujin / dxvk

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

[D3D9] Cannot select proper resolutions using dxvk with GTA IV #1831

Closed recklessnl closed 4 months ago

recklessnl commented 3 years ago

Software information

GTA IV Complete Edition, up to date as of today, running on Windows 10 Professional.

System information

Log files

dxvk.conf:

dxgi.maxFrameLatency = 1
d3d9.maxFrameLatency = 1
d3d9.maxAvailableMemory = 16384

The problem

I cannot select the correct native resolution when using dxvk. The native resolution is 4k (3840x2160) and 120hz. The game allows me to select a max resolution of 1600x1200 at 100hz for some reason, not allowing me to go any higher in resolution nor refresh rate. See logs for more info. Resolution and refresh rate selection works fine when running it without dxvk (meaning I can select 4k@120hz). Any ideas on how to fix this?

doitsujin commented 3 years ago

We get available display modes from win32 APIs; doesn't really sound like a DXVK bug. Does this work properly in other games?

Edit: We do actually set the correct display mode at some point (info: Setting display mode: 3840x2160@0), game then decides to revert to something else for some reason.

recklessnl commented 3 years ago

Thanks for the reply @doitsujin — I haven't tested any other games on Windows 10 yet with dxvk.

When I open GTA IV without dxvk (running it normally), I can set the correct resolution just fine (3840x2160@120) so it must have something to do with dxvk + GTA IV.

Any ideas of things I could try to get it set to the right resolution and refresh rate? The game currently won't allow anything higher than 1600x1200@100hz when I run it with dxvk.

recklessnl commented 3 years ago

@doitsujin Anything I can try to fix this?

ViNi-Arco commented 3 years ago

Beauty Reck ?! Try this: Steam Launch Options: -norestrictions -width 3840 -height 2160 %command% No Steam Launch Options: -norestrictions -width 3840 -height 2160

MrEWhite commented 3 years ago

Beauty Reck ?! Try this: Steam Launch Options: -norestrictions -width 3840 -height 2160 %command% No Steam Launch Options: -norestrictions -width 3840 -height 2160

This works, but it's still obviously broken. In game it caps out for me without using launch options at 1360x768 @ 144 Hz, where my native is 2560x1440 @ 165 Hz and my only DSR resolution is 5120x2880 @ 165 Hz. Resolutions above 1360x768 @ 144 Hz appear fine without DXVK. Screenshot (218)

I’m running Windows 10 as well with a RTX 3090.

Joshua-Ashton commented 3 years ago

I still cannot replicate this :(

I wonder if for some reason on your setup, WineD3D exposes less modes and DXVK more modes and the game has a fixed size list that we're reaching here.

I'll try adding a hack to remove some modes that the game probably shouldn't be using.

In the meantime, you can try using something like: d3d9.forceAspectRatio = 16:9

Kristijan1001 commented 3 years ago

d3d9.forceAspectRatio = 16:9

i have the sasme issue, that command looks like it fixes it as a temp fix. Also if u dont mind i ask, How do i use MSAA on GTA IV what is the command i should input , also is there way to make reshade work with it . Thank you.

DaRkL3AD3R commented 3 years ago

I reported this bug ages ago, back in the D9VK Github. It's a monitor issue. For some odd reason, some displays will flood the API with erroneous duplicates of the same resolution x refresh rate listing straight down the line save for native resolution. I speculate it has something to do with the way monitor EDIDs contain the timing information for G-Sync and ULMB/strobing modes so the driver can read these modes and understand what options are available. When I disconnect my G-Sync monitor and switch to a 60hz regular display, I can select any resolution I want because every resolution only gets 1 listing per refresh rate.

Here's my original issue report about this: https://github.com/Joshua-Ashton/d9vk/issues/341

You'll note that when I closed the thread I mentioned how I replicated the issue in an OpenGL emulator. The program in question was SNES9x set to OpenGL mode. It's strange that certain programs generate the list of resolutions incorrectly and others don't. But from what I can gather, this might not be fixable at all from the DXVK perspective. It's more DXVK is exposing a flaw somewhere else in the OS and driver code.

Joshua-Ashton commented 3 years ago

Can you test with this? It would be interesting to see if this affects the problem for you.

dxvk-format-exposure.tar.gz

DaRkL3AD3R commented 3 years ago

Sadly no dice.

Kainey commented 3 years ago

Same issue with a 3440x1440 120Hz monitor, is it still unfixed ?

FIocker commented 3 years ago

Same issue on a 3090. Trying for 5120x1440

Displays a ton of different resolutions without DXVK but with it I can't go beyond 1152x864 (120hz)

vanhalendlrband commented 2 years ago

LG 4K same issue. Unsure if this can be fixed. Cant go past 1400x900 or something close to that i can’t remember it’s something by x900

easily can set resolution in 1920x1080 with d3d9 but not dxvk

interestingly it worked great in GTA IV just not the EFLC content

Joshua-Ashton commented 2 years ago

Pretty sure this is just because we expose more modes than Windows and the game has a fixed size. Not super sure what to do here. I guess we could just not expose some modes or not expose ones that aren't the target refresh or something for this game.

recklessnl commented 2 years ago

@Joshua-Ashton But without dxvk you can run the game at native 4k...

vanhalendlrband commented 2 years ago

Yes thats the same for me as well, without DXVK it runs up to 4k native as well just not great of course. Would be nice if it was DXVK then it would run amazing at 4k

Get Outlook for iOShttps://aka.ms/o0ukef


From: recklessnl @.> Sent: Friday, January 28, 2022 6:38:05 PM To: doitsujin/dxvk @.> Cc: vanhalendlrband @.>; Comment @.> Subject: Re: [doitsujin/dxvk] [D3D9] Cannot select proper resolutions using dxvk with GTA IV (#1831)

@Joshua-Ashtonhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FJoshua-Ashton&data=04%7C01%7C%7C6880d7fcfcee4ac76e4c08d9e2d06192%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637790206906217956%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=KonAxSrg7gRzcFKCZixawvLq3t1TMzXMGU6BNKI9rCc%3D&reserved=0 But without dxvk you can run the game at native 4k...

— Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdoitsujin%2Fdxvk%2Fissues%2F1831%23issuecomment-1024813652&data=04%7C01%7C%7C6880d7fcfcee4ac76e4c08d9e2d06192%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637790206906217956%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=7BzNsnOHwOdrNtEKVui%2Fn80aS52fmo%2BTdD5pRT6QQ%2BI%3D&reserved=0, or unsubscribehttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAHAO2A3AP5ZDGUWOE2VQ3G3UYNHI3ANCNFSM4UABXBXA&data=04%7C01%7C%7C6880d7fcfcee4ac76e4c08d9e2d06192%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637790206906217956%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=at389wPQ6YOnBACoOKju8%2Bg4wy6dVDcKgj7s6jdhPIQ%3D&reserved=0. Triage notifications on the go with GitHub Mobile for iOShttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fapps.apple.com%2Fapp%2Fapple-store%2Fid1477376905%3Fct%3Dnotification-email%26mt%3D8%26pt%3D524675&data=04%7C01%7C%7C6880d7fcfcee4ac76e4c08d9e2d06192%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637790206906217956%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=WwYEtBELOTBgZFrJyn8lL7oUp%2BPQodYyKIOmRWekZb8%3D&reserved=0 or Androidhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.github.android%26referrer%3Dutm_campaign%253Dnotification-email%2526utm_medium%253Demail%2526utm_source%253Dgithub&data=04%7C01%7C%7C6880d7fcfcee4ac76e4c08d9e2d06192%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637790206906217956%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=%2FdTMSJNkaxuTTrj1vkKiXgHNtRFBnwH6qMnQxBhtUc8%3D&reserved=0. You are receiving this because you commented.Message ID: @.***>

ancalimonungol commented 2 years ago

I have the same issue using a 1440p 144hz gsync monitor and RTX2070S

KiralyCraft commented 2 years ago

In my case, I was stuck at 25 Hz for some reason (as well as limited res options), connected to an LG OLED 4K (HDR enabled). By passing the launch arguments: -width X -height Y -refreshrate Z as well as -availablevidmem T, I was able to get 4K 60 going smoothly.

Much to my surprise, and not diving too much into details, I'm running 2 x 970 in SLI - It looks like SLI support was also gone with DXVK, whereas without it it scales beautifully and gives decent performance.

HDR seems to have been broken too, but I can't confirm just yet, will do some more tests soon.

Uncasted commented 2 years ago

In my case, I was stuck at 25 Hz for some reason (as well as limited res options), connected to an LG OLED 4K (HDR enabled). By passing the launch arguments: -width X -height Y -refreshrate Z as well as -availablevidmem T, I was able to get 4K 60 going smoothly.

Thanks! This fixed it for me, I wasn't aware there was a refresh rate option and was stuck at 1080p 50hz. I encourage everyone else to try this too.

Something interesting that I found too is that if I alt-tab when the game is initially loading (i.e. Rockstar logo intro) the game would switch back to 800x600, alt-tabbing after that is fine though so if it happens to anyone just be patient.

Karpadre commented 1 year ago

I feel like this issue could have been resolved in the meantime by an updated dxvk or nvidia driver release as i suffered from it a year ago and luckily cant get it to occur anymore. 2560x1440 @ 144hz Monitor with active Gsync, using a display port cable
what i did just to be safe for anyone:

copied the 32bit versions of d3d9.dll and dxgi.dll into the main folder

dxvk.conf content: dxgi.maxFrameLatency = 1 d3d9.maxFrameLatency = 1

commandline.txt content: -rglLanguage=en-US -availablevidmem=8000

slightly off topic after that i followed http://ant-sh.blogspot.com/2021/01/antialiasing-with-dxvk-and-gta-iv.html to get smoother edges thats it

K0bin commented 1 year ago

The driver has no impact on this and I don't think the DXVK code that impacts this has been touched either.

DaRkL3AD3R commented 1 year ago

Just an update. I recently dropped a 4090 into my PC and this issue no longer occurs. It's either an update to DXVK that resolved this or the newer graphics card did. Everything software side is the same regarding driver and monitor configuration. Only potential changes are the new GPU or a DXVK update. I'm going to try a much older build of DXVK and see if I can re-replicate the issue or not. If not, then I think it's safe to say this is GPU specific.

Blisto91 commented 1 year ago

It's probably not anything on the dxvk side that has changed behavior in regards to this

DaRkL3AD3R commented 1 year ago

It was the graphics card. I rolled back to DXVK 1.9.2 from Sept 2021, and the issue was still fixed. What's strange is, I tested a newer graphics card than my old one in the past, 1080 Ti vs 2080, and the same problem was present on the 2080 for me but not for my friend. He didn't have the multiple refresh rate reports like I did. But now upgrading my 1080 Ti to a 4090 resolved the issue. It's just bizarre.

I think it's safe to say either way this is not a DXVK issue and this topic can be closed. I had the same 3x listing issue in an emulator too which implies it's not a strictly DXVK thing but rather how the program polls the device on certain APIs.

To anyone still suffering this problem, a bandaid solution is to use Custom Resolution Utility to strip the EDID of all refresh rates besides your maximum and that should clean up the list enough to allow you to select your desired resolution. Otherwise, maybe eventually when you upgrade your GPU you'll find the problem solves itself.

Blisto91 commented 1 year ago

No it's fine to keep the issue open imo. dxvk can be weird in this regard sometimes, even on linux depending on your setup (monitors and such). Tho there it is alot of the time masked by various wine versions and what not. Not sure.

EPtoMEnt commented 1 year ago

For me, what worked is disconnecting second monitor while playing GTA IV with DXVK. Then, all resolutions appear properly as they should. Main monitor is 1440p@144Hz (without Gsync/Freesync enabled) and second is 1080p@60Hz.

Gloaf69 commented 1 year ago

I just wanted to add my experience and I'm still having issues. I used the downgrader after making sure game was stable from downgrade I installed DXVK. Game ran great for like 10 hours and It was very nice overall. I was having issues with how grey everything looked but that's a GTA 4 issue not a DXVK one so I decided to try a ENB. After installing the ENB and getting in-game I didn't like how the colors looked so I used my backup copy of GTA 4 and reinstalled DXVK. Now I cannot select higher than 1440x1080. I have read through this entire thread and searched many more threads. I have tried different monitors and a third backup copy of GTA now for some reason I'm getting that issue only when DXVK is installed every other time I can select 4k.

Gloaf69 commented 1 year ago

To anyone still suffering this problem, a bandaid solution is to use Custom Resolution Utility to strip the EDID of all refresh rates besides your maximum and that should clean up the list enough to allow you to select your desired resolution. Otherwise, maybe eventually when you upgrade your GPU you'll find the problem solves itself.

May I ask how you use the Custom Resolution Utility to do this I have downloaded it and tried to do it but I made my monitor stop working.

ArdaCsknn commented 1 year ago

Same issue with a 4090 and I switched from 1080ti too. Forcing game arguments to launch in specified resolution. Default game detects resolutions without a problem. GTAIV_d3d9.log

Screenshot 2023-06-23 224742
K0bin commented 1 year ago

Probably a Windows-only issue. The game also tries to use NvAPI which cannot work on Windows.

ArdaCsknn commented 1 year ago

"d3d9.forceAspectRatio = 16:9" This fix actually works without a problem and it wasn't a temporary fix. I don't know why the other guy said it like that. It also detects DSR resolutions too. No arguments needed.

image
r3538987 commented 1 year ago

d3d9.forceAspectRatio = 16:9

THIS. Fixed for me being stuck on low resolutions, despite limits and resolution for game was increased in commandline.txt.

DG0011-01 commented 1 year ago

d3d9.forceAspectRatio = 16:9

THIS. Fixed for me being stuck on low resolutions, despite limits and resolution for game was increased in commandline.txt.

where do I put this?

r3538987 commented 1 year ago

where do I put this?

Once DLL copied to game folder, next to it create file named dxvk.conf and insert this parameter there. PCGamingWiki also suggests few more lines, but in this case those are irrelevant.

For me in game settings I get 2GBs of memory available, but so far no problems observed with that.

zmn28hgbn59kcmlpio8unfh7fdre523esd28q9a commented 1 year ago

where do I put this?

Once DLL copied to game folder, next to it create file named dxvk.conf and insert this parameter there. PCGamingWiki also suggests few more lines, but in this case those are irrelevant.

For me in game settings I get 2GBs of memory available, but so far no problems observed with that.

thanks for the info, now I can properly use dxvk d3d9.dll at max supported resolution and refresh rate on Windows 10.

zmn28hgbn59kcmlpio8unfh7fdre523esd28q9a commented 1 year ago

also I want to point out this is not dxvk issue, this is Windows issue. I have tested dxvk on diffierent systems with same games, I also asked friends to do same test, for the same game max res was different on each system even using same graphics driver version.

the only way to fix this mess on windows is by forcing the asepct ratio, and then adjusting the res to max from within the game.

thank you for making dxvk.

edit: all tests were carried using dxvk 2.1

PsxMicha commented 10 months ago

this problem still exists.. I tried with 3 different Monitors and one TV. only 1360x768 available.

d3d9.forceAspectRatio = 16:9 doesn't fix this for me

r3538987 commented 10 months ago

this problem still exists.. I tried with 3 different Monitors and one TV. only 1360x768 available. d3d9.forceAspectRatio = 16:9 doesn't fix this for me

Does DXVK itself work at all? Had you made config file? I have these in file, but that's ones from PCGAMINGWIKI. Probably not necessary.

d3d9.presentInterval = 1
d3d9.numBackBuffers = 3
d3d9.forceAspectRatio = 16:9
d3d9.maxAvailableMemory = 3072
PsxMicha commented 10 months ago

nevermind.. I am a moron.. instead of dxvk.conf I named the config file dxkv.conf -.-

sjain882 commented 8 months ago

Just here to add my experience - had the same issue, where I couldn't use the in-game UI to select resolutions, on GTA IV 1.0.7.0:


With some new ZolikaPatch versions (v7.65 - which also made the rest of the game unstable), this commandline (in Steam launch options and commandline.txt in the game dir) worked well:

-novblank -noprecache -noswapdelay -availablevidmem 10.0 -usedirectinput -w 3840 -h 2160 -refreshrate 144

In that situation, the game UI looked like this:

Click to show images ![20231219185700_1](https://github.com/doitsujin/dxvk/assets/43217178/2fe72821-b8c7-4764-a6dd-bd9590231df2) ![GTAIV_GTAIV_2023-12-19_17-03-28](https://github.com/doitsujin/dxvk/assets/43217178/6878e12e-42de-4088-98e9-7dfe625d4ec1)

But oddly, with an older ZolikaPatch version (v6.9.4), the commandline workaround just would refuse to work, regardless of whether I set BorderlessWindowed to 1 or 0 in the ZolikaPatch.ini.

This discrepancy was 100% consistent across lots of testing.

I eventually discovered this issue, and added d3d9.forceAspectRatio = 16:9 to my dxvk.conf.

Only then was I able to solve this issue... but I still had to use the (now fixed) in-game options, as the commandline workaround was still having no effect!

This is the first instance I've seen here where commandline arguments didn't work, so I thought I'd report in.

As a side note, the commandline above means I have a locked 60fps everywhere with zero stutters and texture loss after 8+ hours of gameplay, on a fully stock GTA IV (asset wise), with DXVK, using these graphics settings (ignore resolution):

Click to show images ![PlayGTAIV_GTAIV_2023-12-19_19-15-10](https://github.com/doitsujin/dxvk/assets/43217178/b4591836-6be6-419a-94f9-08984bd9a4f6)

The attached ZolikaPatch versions and their corresponding ZolikaMenu versions (since there seems to be a dependency between the two) are attached incase they help show/solve symptoms for anyone else:

New (makes my game unstable sadly):

Old (works fine for me on 1.0.7.0:

Blisto91 commented 7 months ago

Can you guys give it a try with latest dxvk master. Can be downloaded from here https://github.com/doitsujin/dxvk/actions/runs/7586479700

MrEWhite commented 7 months ago

Can you guys give it a try with latest dxvk master. Can be downloaded from here https://github.com/doitsujin/dxvk/actions/runs/7586479700

That fixes this!

wojtasskorcz commented 6 months ago

Can you guys give it a try with latest dxvk master. Can be downloaded from here https://github.com/doitsujin/dxvk/actions/runs/7586479700

That fixes this!

Confirmed. Version 2.3 was causing very low resolution and manually setting -width and -height in commandline.txt caused the game to crash. This master version works great! I can run with all max settings (+8x AA in nvidia control panel) in 3440x1440 with ~60fps, coming up to the max 144fps in some scenes.

My setup: