protonscr

[d3d9] Uprising 2 - slowdowns on tutorial/mission prompts

dxvkclosed
doitsujin/dxvk#1447 · opened 2020-02-14 by WinterSnowfall · updated 2020-03-21 · 3 comments · github
WWinterSnowfall 2020-02-14 github

Ehm, yes, this IS a Glide game. But before you shoot the messenger and put a "won't fix" label on the bug report, hear me out :).

Long story short, GOG packages nGlide for almost all the older Glide-compatible games they offer and it usually proves stable and works remarkably well with Wine, and, as I recently found out, with DXVK too. It's a terribly inefficient way to approach things, I know, but while there are glide to opengl wrappers out there, they are usually too janky to use except with maybe a bunch of games.

The issue with the game is that the framerate dips into the 20s whenever a tutorial/mission prompt is rendered at the bottom-center of the screen, which does not happen at all with WineD3D.

First tutorial mission with nGlide + DXVK
First tutorial mission with nGlide + WineD3D

While there's no framerate counter with WineD3D, I tried to be as twitchy as possible with the controls in the recording, so you can see there are no major frame drops. It certainly doesn't feel less smooth with WineD3D when the prompts are shown, while with DXVK it seems to go into slow motion.

I've submitted this report off of my iGPU, because it's what I usually use to play these older Glide games, but I tried the GTX 1070 as well and it's all the same.

Software information

Uprising 2 (GOG version, using nGlide)

System information

  • GPU: Intel(R) HD Graphics 630 (Kaby Lake GT2)
  • Driver: Mesa 19.2.8
  • Wine version: 5.1 Staging
  • DXVK version: v1.5.4-34-g7d3ec74

Apitrace file(s)

Uprising 2.trace.tar.xz

Log files

Ddoitsujin maintainer 2020-02-14 github

This happens because the game locks the same texture before every single draw call, while expecting previous contents to be preserved. This seems really dumb and causes a GPU synchronization.

I don't know if this can be worked around without a large-scale rewrite, and without hurting performance in other games.

WWinterSnowfall 2020-02-15 github

This happens because the game locks the same texture before every single draw call, while expecting previous contents to be preserved.

Ouch...

I don't know if this can be worked around without a large-scale rewrite, and without hurting performance in other games.

No worries. I was hoping it would be an easy fix, but it is what it is. So far I haven't seen this happening in any other game, with nGlide or otherwise, ironically not even in the first Uprising game. I'll keep this bug report in mind should I even run across something similar, but you can put that "won't fix" label now with my blessing :).

WWinterSnowfall 2020-03-21 github

I've tested it on Windows with nGlide and the frame drop is actually noticeable as well.

Enabling ESYNC in Wine makes it more bearable (it's playable at least), but it's clearly the game doing stupid things, not a problem with DXVK or anything which should be worked around as such. nGlide has added direct support for Vulkan as well, which is not working in Wine for now, but once it does I expect things to behave a bit better anyway. But I digress.

Closing this, as I've been barking up the wrong tree.

Nothing extracted yet.