VOGONS


First post, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

Hello, it's my first post but I've been using dgvoodoo for plenty of games and I used it since version 2.54.

Game in question is called Sacrifice(RTS with plenty of units on screen at times). In past I played it on radeon rx570. I started using dgvoodoo when I realized it doubled it's performance on DX11 with increasing the resolution at the same time. And doubled performance is not that big deal but it allowed me to maintain 60 FPS most of the time regardless of what's happening on the screen in multiplayer sessions. I had to stick to 2.54 until 2.7 was released due to the AMD bug in dgvoodoo. 2.7 almost quadrupled the vanilla performance with its DX12 and on FHD with maxed out dgvoodoo settings. I even made a map later that I would refer to as a benchmark and I would receive such results:
-vanilla 800x600 8 FPS
-vanilla 800x600 dgvoodoo 2.54 DX11 FHD maxed AF and AA 17 FPS
-vanilla 800x600 dgvoodoo 2.7 DX12 FHD maxed AF and AA 25 FPS(and sometimes I could even hit 30 FPS)

I replaced my old GPU for RTX 3070. I did the same test yesterday on NVIDIA and while vanilla 800x600 would let me hit 21 FPS, with dgvoodoo performance would be halved and I would get only 11 FPS. It was big surprise for me as up to this point it was always only way up 😁

Is there anything I can do by messing up with settings to enjoy same benefits(or any benefits)with performance as I had on AMD?

Also while I am here I would like to thank dege for making this piece of software, and the frame limiter added in one of the previous versions because the mentioned game does suffer from bugs when FPS is over 60.

Here I share a speedrun that I made some time ago on AMD which wouldn't be possible without dgvoodoo(framerate would always be lower, much lower): https://youtu.be/27299kpaUMM
Speedrun cannot be taken seriously, aka for any sort competition, due to FPS game breaking bugs.

Reply 2 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

Hi! It sounds weird. Both DX11 and 12 gives that bad performance? Aren't you accidentally running it through the D3D11 MS WARP software rasterizer? 😀
Or maybe, didn't you install the DX11/12 debug layer from Win SDK and enable it for the game folder and forget about that?
Do you have a log from the _dbg dgV version?

Reply 3 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

I mean, these low FPS values I was getting on my benchmark map that is about to kill the engine, and I used it to easily see the difference between specific settings to see how much it affects performance due to FPS sticking to one value at somewhat static gameplay and not being rollercoaster of FPS(like in video above 😁).
This is screenshot from a "regular" gameplay I made today, playing with AI for this specific purpose to show my "issue". It can hit 30s whenever I look at the bigger group of units, on screenshot it's mostly AI armies, because I am almost dead already with few units remaining.

41 fps.png
Filename
41 fps.png
File size
413.52 KiB
Views
1884 views
File license
CC-BY-4.0

I am just wondering if it's possible to actually get some improvement from dgvoodoo on NVIDIA for that specific game(like I was getting on AMD), because for now it looks like it cuts performance in half kinda(I didn't test it yet in "normal" environment because I need to limit FPS to 60 and I always used dgvoodoo for it).
Here is 2020 NVIDIA vs 2017 AMD both with dgvoodoo on that "benchmark" map.
NVIDIA with unforced resolution

Nvidia.png
Filename
Nvidia.png
File size
604.07 KiB
Views
1884 views
File license
CC-BY-4.0

AMD with forced FHD 2-3 years ago when 2.7 WIP version was released

AMD.png
Filename
AMD.png
File size
340.37 KiB
Views
1884 views
File license
CC-BY-4.0

Game is using directdraw/DirectX 3D7. It looks like Nvidia does better job than does the AMD(I don't compare raw power of them at this point because both of them don't catch the sweat when running this game so I don't think it does matter), but dgvoodoo does work for those two completely different. I probably still could run some tests for both GPUs if that would be needed, but I would need time to get it all done. And instructions.

Reply 4 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

I have built my old PC back, and with kinda fresh system and newest dgvoodoo version rx570 hits whooping 32 FPS.

sacrifice amd.png
Filename
sacrifice amd.png
File size
1.97 MiB
Views
1836 views
File license
CC-BY-4.0

That's about 3 times better than NVIDIA with dgvoodoo. And 50% better than NVIDIA without dgvoodoo. And I know that main purpose of wrappers is to increase compatibility and reduce crashes, I am not complaining. It's just generous question why does raw NVIDIA beat AMD without wrapper and gets rekt when wrapper is used? And in this game I don't have compatibility issues, it's more about FPS to maintain solid 60FPS while playing normally. Because 40 FPS it's still playable, or even 30 but when you keep rotating your camera you have that 30-60 FPS ride on and on 😁

Reply 5 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

Ok, I see. So, the game is exactly the same, dgVoodoo version and config file is the same, except the underlying hardware? And both of DX11/12 gives worse performance on the better hw (I'm comparing dgVoodoo perf to itself)?
TBH, there isn't much to do different for AMD and NV, this game does not do any graphics call that could make it demanding.
What about CPU/GPU usage with the benchmark levels?

Reply 6 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

Let me clarify it real quick.
First PC I have for couple months now is R7 5800X + RTX3070. It has GOG release of the game. I get 20-22 FPS on that benchmark(I actually decided to install widescreen patch to see if it affects performance but it doesn't).
Second PC I have has R5 3600 + RX570 8GB(I didn't sell it because it's not worth much compared to how much it costed and I would prefer give it to someone in my family), it got now fresh windows installed. DX9 end-user runtime. Radeon drivers and newest dgvoodoo. It's highest FPS I would achieve ever but I am not sure if it's because system is clean or it's because dgvoodoo newest release or some lucky day. The game version is from CD, but in past it didn't matter what instance of game I was running. I could install gog version now because I downloaded the installer(on first pc it was installed through gog galaxy).

Yes, on NVIDIA performance with dgvoodoo present is always worse than without it(and it's the same FPS on benchmark map regardless of settings within dgvoodoo, whenever I use DX11, DX12, force different resolution, antialiasing and anisotropic filtering). And I heard people who didn't have compatibility issues that they also would be saying similar thing for years. I kinda didn't believe them, but I couldn't test it(otherwise I would write here few years ago). My biggest concern is why it would be actually worse than it is without dgvoodoo?

I was actually thinking about doing another speedrun and I installed the game, got newest dgvoodoo and got surprised 😁

There are also issues with compatibility that some people expierience and some people got it working with dgvoodoo so it's better than nothing.

If you want I can give you link for gog download, for my benchmark map(I already .zip it and attached it to this post)and you can see how it goes for you. If you have NVIDIA, and you won't run into compatibility issues then you most likely would be able to see it too.

As for CPU/GPU usage, I uploaded one screenshot above with MSI Afterburner OSD basic setup. When game is running without dgvoodoo then MSI OSD doesn't show up. So I can't tell how much load is on CPU. I probably also should add all cores in that case so I could see if one is getting overloaded.

cpu usage.png
Filename
cpu usage.png
File size
638.38 KiB
Views
1784 views
File license
CC-BY-4.0

Attachments

Reply 7 of 38, by Shing

User metadata
Rank Newbie
Rank
Newbie

Well, i wonder how do these games work on newest series like RTX3000. For example Intel Arc doesn't even have native DirectX 9 support. So if nVidia is using an in-built wrapper and/or they emulate old stuff better, then they get good performance results and dgVoodoo just adds a layer on top of it which only reduces performance. But i don't have enough knowledge on this topic

Reply 8 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

Okay so I run some tests on AMD again. This is vanilla.

vanilla amd.png
Filename
vanilla amd.png
File size
600.56 KiB
Views
1753 views
File license
CC-BY-4.0

And this is with MSI Afterburner and dgvoodoo(I forgot FPS counters but it was 32 still)

cpu usage amd.png
Filename
cpu usage amd.png
File size
1.96 MiB
Views
1753 views
File license
CC-BY-4.0

Core 1 and Core 3 are nonstop under load. Temperature might be high, stock cooler... and I didn't even check what's temperature on idle.

Now for the nvidia build, under load are cores 7+8 and 11+12 where only one appears to be "heavily" loaded from each pair, it feels the same for non dgvoodoo run(I looked at graph in MSI afterburner once I quit the game). So in general there is difference on how the both CPUs work however I don't think it is exactly what causes the issue, and I know there is only one way to find out, that I would like to avoid:(

There is another difference, that's not happening in any other circumstances, but only when running nvidia+dgvoodoo combo. Game by default has Very High level of detail. I bumped it to insane on very first launch. Now if I reduce it to lower presets it does weirdly reset amount of polys increase framerate and get into somewhat loop, while normally it should lower the amount of polys from 900000 to lets say 800000, etc. https://youtu.be/jimc8NE0raM The level of detail, that I was changing in that video is something like rendering distance, as unit is further away from you it gets downgraded and you can only affect the radius.

Reply 9 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

Just a quick answer for now: Ok, thanks, I could have a look into it, I mean, the benchmark level and the extensive description. I just can't promise it for the next few days, probably only the next week.

Last edited by Dege on 2023-07-27, 18:46. Edited 1 time in total.

Reply 10 of 38, by Dege

User metadata
Rank l33t
Rank
l33t
Shing wrote on 2023-07-26, 20:12:

Well, i wonder how do these games work on newest series like RTX3000. For example Intel Arc doesn't even have native DirectX 9 support. So if nVidia is using an in-built wrapper and/or they emulate old stuff better, then they get good performance results and dgVoodoo just adds a layer on top of it which only reduces performance. But i don't have enough knowledge on this topic

Intel Arc has native DX9 support by now. And also, dgV is not adding a layer to any non-native stuff, because DX11/12 is also native.
But, on the other side, DX7 might run on D3D9on12 by default with a 3070, I don't know.

Reply 11 of 38, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
Dege wrote on 2023-07-27, 18:45:
Shing wrote on 2023-07-26, 20:12:

Well, i wonder how do these games work on newest series like RTX3000. For example Intel Arc doesn't even have native DirectX 9 support. So if nVidia is using an in-built wrapper and/or they emulate old stuff better, then they get good performance results and dgVoodoo just adds a layer on top of it which only reduces performance. But i don't have enough knowledge on this topic

Intel Arc has native DX9 support by now. And also, dgV is not adding a layer to any non-native stuff, because DX11/12 is also native.
But, on the other side, DX7 might run on D3D9on12 by default with a 3070, I don't know.

When testing MechWarrior 2 on D3D9On12 it had major graphical issues. An user here on Vogons ran the game without graphical glitches on a RTX 4090 on my thread, both when using D3D HAL and HEL.

I assume Nvidia haven't abandoned the main driver yet. Also I never saw compatibility problem for very old games that are exclusive to such GPUs.

previously known as Discrete_BOB_058

Reply 12 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2023-07-27, 18:43:

Just a quick answer for now: Ok, thanks, I could have a look into it, I mean, the benchmark level and the extensive description. I just can't promise it for the next few days, probably only the next week.

No worries, I am not in rush or anything 😀
I uploaded the map in the other post, you will need to put it in maps folder unzipped. Then you can launch the game and it should be available in multiplayer, very last on the list. Use these settings

settings.png
Filename
settings.png
File size
921.17 KiB
Views
1669 views
File license
CC-BY-4.0

Antialiasing on nvidia can be enabled when not running dgvoodoo(at least in my case), and it's always unavailable when using amd. "Detail level: Insane" is what I compare framerates at. However for that nvidia case it's worth to check the others like very high or high, just because of that weird polys counter resets and unstable FPS(you can change them in game once map is loaded so not a big deal)
To see inbuilt FPS counter press F8, you can press it twice to see amount of polys too.
MSI Afterburner on-screen-display doesn't work for the non-dgvoodoo launch, so I assume it's still DX7 and not some alternate wrapper running by default, otherwise I think it would show up whenever it would be DX9/12/OGL/VK

Reply 13 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

I finally had some time and did some tests. With your suggested settings on Win10, NV GTX 1060, 6+ years old CPU

dgVoodoo:

Detail level: "insane", "very high": 29fps

Sacrifice-2023-08-02-20-52-14.png

Detail level: "high": 35fps
Detail level: "normal" and all below: 60fps

D3D9on12:

Detail level: "insane", "very high": 27fps

Sacrifice-2023-08-02-20-49-19.png

Detail level: "high": 31fps
Detail level: "normal": 48fps
Detail level: "medium": 55fps
Detail level: "low" and below: 60+fps (my display was in true 800x600 with 75Hz refresh rate)

Native:

It seems to be pure software rendering for me because I got 2-3 fps from the beginning, I couldn't wait for entering the scene itself.

Interestingly if MSI Afterburner was active then D3D9on12 got disabled for some reason, I got the same slow native rendering with "DD" output type. So, I had no idea other than trying the old Fraps to measure FPS with D3D9on12 (and it worked).

Reply 14 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

For inbuilt FPS counter you can press F8. Pressing it twice does show polys count.
So what I should do?
My results are as follows:
Native: "Insane" 800x600 20-22 FPS (MSI Afterburner doesn't work)
dgvoodoo: "Insane" 800x600 DX12 10 FPS
D3D9onD12: "Insane" 800x600 6FPS (I used ForceD3D9on12 and never used it before so I am not sure if I did everything right)
Your results are similar to my AMD card. Btw, solid texture bug is still there on the latest version on RX570 with AMD blacklist checkbox enabled on DX11.
I tried version with debug layer, it crashes the game before the tiny pop up with driver selection shows up.

Edit. One of the other players has tried the "ForceD3D9on12" and also got 6 FPS(but again I am not sure if we used it properly and didn't miss something), with just dgvoodoo .dlls dropped into game folder and without any config done (DX11 I guess) he managed to get 19 FPS (where for me it's 11 regardless of it being DX11 or 12) and "native" was 25FPS, but he used 2560x1440 resolution in game because he had widescreen mod installed(normally you can't pick 16:9 resolutions within game menu) and he used that resolution for pretty much every test(comparing to ours 800x600). He has RTX4070Ti.

Looks it's not Nvidia thing I assumed before, it's just RTX thing, but why that happens? I would play with some settings in nvidia control panel, I even tried, but whatever I would change it does nothing.

Reply 15 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

The game should be profiled to see where the most time is spent. What dll, what functions, etc...
Maybe, do you have some profiling skills? I think it could be done with Visual Studio 2022 Community Edition.

Reply 16 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

I do not have any profiling skills, but I tried it anyway.

I managed to get some results without using any wrappers such as forced3d9on12 or dgvoodoo(with wrappers after closing the game it would be loading and fail to return any results).
Application timeline is probably what would be useful, but it's unavailable and I didn't manage to get it working at all. I also dropped into game folder a widescreen_fix d3dim700.dll, and it's still there after deleting it. Before it would be ddraw.dll(which isn't normally in the game folder)that would be intensive, performance is the same regardless of that.

profiler2.png
Filename
profiler2.png
File size
18.56 KiB
Views
1367 views
File license
Fair use/fair dealing exception
profiler.png
Filename
profiler.png
File size
57.68 KiB
Views
1367 views
File license
Fair use/fair dealing exception

Quote from a guy who is working on new engine for this ancient game:

not sure what are all the things d3dim700.dll is doing, but it probably includes drawing stuff to screen
not sure if it includes computing animation poses
new engine computes animation poses on the GPU, orig does it on the CPU I think

I think all that info is useless and does not explain why would dgvoodoo halve the performance from 20 to 10 FPS for RTX(well for 4070TI it wasn't that bad besides runnings on DX11 default settings 25 -> 19), eventually it's really the CPU and not GPU, the one I been using in the past was Ryzen 5 3600 and I got increase from dgvoodoo on it, now both me and the other guy use Ryzen 7, 5800X and 3800X to be more specific and maybe they behave more or less the same... I don't know 🙁

Reply 17 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

Ok, thanks, so you can do profiling!
What I thought of, is I could give you a dgv version along with the needed .pdb files, so the internal symbol names would be visible. Also, you can enable loading symbols for system dll's in Visual Studio:
menu Tools\Options and then on the Debugging tab enable 'Microsoft Symbol Servers'. That'll probably load symbols for all of the system modules the game is using, at startup, so it can take a while.

But in such a scenario only the game code would appear as 'external code' in the profiling. And, on the timeline you can select a range arbitrarily, so if the slow part is taking place, say, 20 sec after launching the game, you can select the range of 20-22 sec for example and see the call-tree for that interval. I could also have a look at it if you can share the .diagsession file with me. The only problem is you shouldn't upload it here because of the size.

I've just profiled this game with dgV and it worked.

Reply 18 of 38, by Darkstorm

User metadata
Rank Newbie
Rank
Newbie

I deleted completely the dgvoodoo .dlls and .conf files, dropped .dlls from debug layer version and it worked (for DX11, probably it would work for normal version too), then I got the app to change the settings and create config file, and if I change it to DX12 it doesn't work. After closing the game it looks the same, but instead of the "timelines" it displays this: "microsoft visual studio encountered an error during your diagnostics session" 🙁

This is from launch with .dlls from dgvoodoo with debug layer, without any settings applied so DX11, you can clearly see the FPS drop at some point and it stays like this until alt+f4
https://www.dropbox.com/scl/fi/90hyc4w7a87u95 … jyfo61pwy8&dl=0

I forgot, to enable those symbols for that launch, but... I tried it again and I don't see a difference "Unable to find symbol file, change symbol file locations to specify the correct search paths." and "Skipping reanalysis after failing to find symbols for any selected modules." in the "output" section.

Okay, I think I kinda get it now, I tried without dgvoodoo and there is a difference now. This is non-dgvoodoo launch(20FPS)
https://www.dropbox.com/scl/fi/dm2wpnr2skaamh … hdt04gg13g&dl=0

I noticed yet another thing, I tried again on AMD, it's CPU intensive, and CPU(Ryzen 5 3600) goes from 40 degrees Celsius on idle to 60 pretty fast(stock cooler). This doesn't happen on Nvidia, and CPU(Ryzen 7 5800X) goes from 40 degrees Celsius on idle to max 43(not a stock cooler, but it would react to temp spike). So it looks like I am really stupid and I thought it was Nvidia this whole time. There is only one thing I should try and it's CPU swap..., to make sure it's not Nvidia...

Reply 19 of 38, by Dege

User metadata
Rank l33t
Rank
l33t

Could you plz repeat the profiling with the files I sent you in PM? The GPU usage is not needed, you can uncheck it at the beginning of the profiling. Also, do it with DX11 output, the solid color problem should not come with this version.

I did a profiling on my machine and compared the results to yours (dgVoodoo) and I cannot see too big difference. So, why does it run at a lower fps for you? I don't understand it.
But anyway, let's see the new profiling with the symbol names just to make sure.

(Altough even D3D9on12 is only 6 fps for you, which is much lower than expected. It must be a problem independent on dgVoodoo. Maybe the game is running single threaded for you, or sg like that?)

Edit: do a profiling both with DX11 and 12 plz.