protonscr

[d3d9] Much lower performance in Halo PC when run purely with DXVK compared to running dgVoodoo2+DXVK on the same system

dxvkopen performanced3d9
doitsujin/dxvk#1675 · opened 2020-06-26 by Aerocatia · updated 2025-06-04 · 20 comments · github
AAerocatia 2020-06-26 github

Halo PC (2003) runs about ~50% slower on DXVK alone compared with using the d3d9 wrapper dgVoodoo2 to translate the game to d3d11, and then DXVK to translate that d3d11 to Vulkan. (also applies to the demo)

There must be a major bottleneck in the d3d9 code as using two wrappers and going through another API should not be faster than only one translation.

Software information

Halo PC, max settings with unlocked framerate.
Chimera mod to fix a whole bunch of game issues, this has no effect on the performance difference.

System information

  • GPU: AMD RX 580
  • Driver:Mesa/radv 20.1.2
  • Wine version: wine-staging 5.11
  • DXVK version: v1.7-2e37825

Log files

-- no log as there is nothing to log --

AAerocatia 2020-06-26 github

Still applies to c4f37d3981e027fcb8d759a92293d6ddbc80fdc3

Ddoitsujin maintainer 2020-06-26 github

Are you CPU-bound or GPU-bound? What settings? Apitrace?

-- no log as there is nothing to log --

wtf?

Mmisyltoad 2020-06-26 github

Please provide an apitrace.

AAerocatia 2020-06-26 github

This game has issues with apitrace. It can only be traced if you use the fall back fixed function video mode, one that hides this issue somewhat. This video mode is also completely broken.

I know that's extremely unhelpful but the only reliable way to reproduce this game is to run the demo version.

AAerocatia 2020-12-03 github

This is still an issue.
According to the DXVK HUD, pure DXVK does not max out the GPU.

Pure DXVK:
image
DXVK with dgVoodoo2 d3d9>d3d11 translation stacked on top:
image

KK0bin maintainer 2020-12-03 github

Please provide an apitrace so someone actually has the ability to look into this.

AAerocatia 2020-12-03 github

Unfortunately apitrace does not work properly with this game.

AAerocatia 2020-12-03 github

Here is a working trace. This was made on Windows with an nvidia GPU however. Hopefully this helps.
http://vaporeon.io/hosted/halo/misc/halo_trace.7z

Mmisyltoad 2020-12-04 github

Game doesn't even work with dgvoodoo here:

image

I also can't repro any performance issues. I get like 1000+ fps everywhere in this game.

Mmisyltoad 2020-12-04 github

Out of curiosity, can you tell me how this one performs on your end?

d3d9.zip

AAerocatia 2020-12-05 github

This build seems to perform worse than the 1.7.3 release.

image

As for dgvoodoo, my Halo install is using the 1.10 update with the chimera mod, I have not tried it in any other configuration.

Mmisyltoad 2020-12-05 github

I'll try with that mod.

AAerocatia 2020-12-05 github

This dgVoodoo.conf is also known to work.

EDIT: you also need d3dx9_43 either way.

BBlisto91 2022-08-06 github

@Vaporeon Friendly ping. Could i get you to retest this with latest dxvk? :slightly_smiling_face:

BBlisto91 2023-01-19 github

Not sure why I've pinged Vaporeon here 🤔

@Aerocatia Are you able to retest this?

AAerocatia 2023-01-19 github

Yeah I did a cheeky username switcharoo.
I will retest this very soon, I have the correct Linux setup again to do this.

AAerocatia 2023-02-01 github

I have retested this on the exact same hardware however using whatever the current Mesa on Arch is and the latest release of DXVK.

Performance is the same, wine3d is performing much faster than DXVK on this setup.
I can't get dgVoodoo to work on WINE anymore, but retesting both on Windows shows dgVoodoo is running much faster.

DXVK d3d9 seems to be held up by something.

BBlisto91 2023-02-01 github

Dang. Well thank you very much for the retest 👍

KK0bin maintainer 2023-05-23 github

I tried the game and performance matches what I get on Windows. Both run at 800-1200 fps at 4k max settings.

AAerocatia 2024-03-25 github

So I have noticed a game setting directly related to this issue.
It is related to the setting DisableBuffering (described as "Forces a video card to render each scene - used to prevent mouse lag")

This setting is more of less free on native d3d9 drivers, however it completely murders performance on DXVK, especially on AMD.
I forgot I had this setting on when making the original report.

This may possibly be related to https://github.com/doitsujin/dxvk/issues/3906

Upstream links