VOGONS


dgVoodoo 2.6.x and related WIP versions

Topic actions

Reply 201 of 230, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
legion_pheonix wrote on 2020-05-11, 06:09:
Dege wrote on 2020-04-17, 18:50:

I released a minor update (2.63.2)

Please add support for Manhunt 2.

Manhunt 2 works fine:

Manhunt2 2020-05-11 08-41-18-29.jpg
Filename
Manhunt2 2020-05-11 08-41-18-29.jpg
File size
249.49 KiB
Views
432 views
File license
Fair use/fair dealing exception

You need to be specific about what your problem is.

Reply 202 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
funkerwolf wrote on 2020-05-10, 05:55:

Сan I ask a stupid question? Are any processor instructions used to speed up wrapping? well, at least the same avx for modern machines ... because directly games often give more FPS than through the same dgvoodoo2.

If you're speaking about DX9, well, performance doesn't depend on specialized cpu instructions. It's about the cost of the Draw* calls + threading.
DX11 itself is background threaded (at least with nVidia and AMD drivers, not with my Intel), meaning that most of the API rendering calls including Draw's are executed on a background thread, to avoid "blocking" the rendering thread and distribute work more efficiently amongst cpu cores.
dgVoodoo DX11 backend however has an additional overhead on Draw calls on the rendering thread.
It could be refactored into a double-threaded impl, but I won't do that, too much work and I'm not sure it's worth it just because of DX9 (and I'm beginning to dislike DX11 anyway, because of the well known AMD problem).
Emu of MS pre-DX9 API's should be fine, as they are single threaded and games written for them typically don't issue many Draw-calls.

DX12 backend is fully background-threaded, I got nice profiling results on the rendering threads when I did measurements on some games.
There are other (strange) problems there however which aren't resolved yet (and some parts/details of the implementation are still a "copy" from the DX11 backend).
Such a phenomenon for example is when I don't get the same (or higher) FPS than with DX11 (without vsync of course) because the DX12 thread is "waiting" in the frame present calls (but what the * for??), so the cpu is just crawling lazily, at half power. There are other things that make life difficult, like the fact that DX10+ don't have support for triangle fan primitive type. So, when a DX9 call says it wants to draw triangle fans from hw vertex/index buffers then dgVoodoo has to sweat about how to workaround that as fast as possible.

Ok, I digressed. Reaching the same performance as a native over-optimized "direct-to-the-chip" nVidia driver implementation has is very hard.

funkerwolf wrote on 2020-05-10, 05:55:

And do you have plans for wrapping not only directx on graphics output, but also for sound with activation of the same eax from cerative?

No, I don't. It's sure a nice topic though.

Reply 203 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
Glurak wrote on 2020-05-04, 21:13:

Command & Conquer Red Alert 2 Doesnt work anymore with the new version. Back in the day with 2.4 i think i had zero problems ( except the main menu didnt scale at all)
Now with 2.6.x the game just crash after one sec.

You had zero problems with 2.4 on Win10?
I've just tried this game (Yuri's Revenge, I don't know what versions/mods this game has) with 2.63.2 and (almost) everything worked fine (default dgVoodoo cfg with 'Stretched, keep ar' scaling mode).
I had to run the executables (RA2MD) in Win98 mode with Admin rights and the main menu + ingame screen scaled properly.
The mouse doesn't show up after entering the menu screen but a left+right click conjures up the cursor after all.
The "only" issue is that the game screen refreshing stalls after a while but the game is running in the background (I don't yet know why, the 'Timed primary screen refreshing' (or sg like that) built-in compatibility option is applied to this game, which is similar like dgVoodoo's batched primary update).
2.4 just crashed after a second.

Reply 205 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie

An incremental WIP containing some bugfixes for 2.63.2:

=========================
WIP72:
=========================

Changes compared to v2.63.2:

- Bug causing crash is fixed in D3D (Hot Wheel Micro Racers)
- Fixing a bug in the DXBC generator (Psychonauts)
- Fixing a bug in the DX11 backend causing corrupted textures (RIM - Battle Planets low texture quality)
- Fixing a bug in D3D9 frontend (Hydro Thunder MAT3 crash)
- Fixing an old limitation in dgVoodoo internals (crash with Atomic FE)

http://dege.fw.hu/temp/dgVoodooWIP72.zip
http://dege.fw.hu/temp/dgVoodooWIP72_dbg.zip

Reply 206 of 230, by Discrete_BOB_058

User metadata
Rank Member
Rank
Member
Dege wrote on 2020-05-16, 17:15:
An incremental WIP containing some bugfixes for 2.63.2: […]
Show full quote

An incremental WIP containing some bugfixes for 2.63.2:

=========================
WIP72:
=========================

Changes compared to v2.63.2:

- Bug causing crash is fixed in D3D (Hot Wheel Micro Racers)
- Fixing a bug in the DXBC generator (Psychonauts)
- Fixing a bug in the DX11 backend causing corrupted textures (RIM - Battle Planets low texture quality)
- Fixing a bug in D3D9 frontend (Hydro Thunder MAT3 crash)
- Fixing an old limitation in dgVoodoo internals (crash with Atomic FE)

http://dege.fw.hu/temp/dgVoodooWIP72.zip
http://dege.fw.hu/temp/dgVoodooWIP72_dbg.zip

I wanted to report that no version of dgVoodoo runs a DX2 game, The Need for Speed Special Edition. The game just works with the default DDraw.dll. I PMed you but you didnt reply.

Here is the log:

Attachments

YouTube Channel:
DEADHistory Walkthroughs

PC SPECS:-
CPU: AMD Ryzen 5 1600
GPU: ZOTAC NVIDIA GeForce GTX 1050Ti OC Edition
RAM: 8GB*2 Corsair Vengeance LPX DDR4 2400MHz
Motherboard: Gigabyte Aorus B450M
PSU: Corsair VX550
Sound Card: Realtek ALC892

Reply 207 of 230, by Deffnator

User metadata
Rank Newbie
Rank
Newbie

Tanktics has rainbow issues with all devices and gdi hook
zQCLfJq.png

Also, dege, its possible to create a WinG games hook for Shadow of the Horned Rat.
the game itself recognizes the WinG.dll and WinG32.dll and i tested it by renaming the ddraw.dll but it still calls for the WinG Profiles.

Reply 209 of 230, by Deffnator

User metadata
Rank Newbie
Rank
Newbie
xcomcmdr wrote on 2020-05-18, 17:43:

Shadow of the Horned Rat works well with DOSBox + Windows 3.1, if you're willing to go that route.

The GoG version works well too, but they never bothered in fix the aspect ratio of the game in full resolution.
the game is 640x480 but it clips on top and bottom.

that and the early release of chaos gate, and even final liberation were shoddy jobs

Reply 210 of 230, by ZellSF

User metadata
Rank Oldbie
Rank
Oldbie
Deffnator wrote on 2020-05-18, 17:01:
Tanktics has rainbow issues with all devices and gdi hook https://i.imgur.com/zQCLfJq.png […]
Show full quote

Tanktics has rainbow issues with all devices and gdi hook
zQCLfJq.png

I don't get this, I get proper colors. I did get another display problem, but focus/video problems made it too annoying to try to capture. I prefer DxWnd for this game anyway.

Reply 211 of 230, by Vaporeon

User metadata
Rank Newbie
Rank
Newbie

Hey Dege, if you are writing a DX12 backend have you considered writing a Vulkan backend too? This would work on Windows 7 and also means you don't have to stack wrappers if this is used on Linux with wine. Going through two wrappers kills performance, but ironically dgVoodoo2 going through DXVK is much faster than using DXVK alone or any other Linux d3d9 wrapper. In the game "Halo" the frame rate of the game was doubled by adding dgVoodoo2 to the chain. If you forced 8x MSAA it ran the same as without dvVoodoo2 making it more or less free. Well done.

It would be interesting to see how fast this thing is on Linux when not held back by other wrappers.

Reply 212 of 230, by funkerwolf

User metadata
Rank Newbie
Rank
Newbie

Hi Dege, please do not waste time on the problems of the people above, yet you solve and cope with cheers with the problems of games, so do not get involved in the red-eyed, I wish you success and health! Develop further the dx12 direction, and do not bother for a bunch of people like others, well, if they like the cotton sound and other non-comforts, these are their problems.

Reply 213 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
Vaporeon wrote on 2020-05-19, 13:03:

Hey Dege, if you are writing a DX12 backend have you considered writing a Vulkan backend too? This would work on Windows 7 and also means you don't have to stack wrappers if this is used on Linux with wine. Going through two wrappers kills performance, but ironically dgVoodoo2 going through DXVK is much faster than using DXVK alone or any other Linux d3d9 wrapper. In the game "Halo" the frame rate of the game was doubled by adding dgVoodoo2 to the chain. If you forced 8x MSAA it ran the same as without dvVoodoo2 making it more or less free. Well done.

It would be interesting to see how fast this thing is on Linux when not held back by other wrappers.

That sounds really weird…
Anyway, I'm not planning Vulkan at all. 😐
That'd take another 4-5 months of continuous work (the amount I put into DX12 so far), or probably much more, as I'm not trained in Vulkan at all and I'm also not familiar with SPIR-V, its API "extensions" and other usual Khronos-like stuffs. Not to mention the way of debugging it.
Even DirectX - DX12 is in beta state, Glide is still in development, I think still there is a lot to do/polish for DX12 to make it mature.

Reply 214 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
Discrete_BOB_058 wrote on 2020-05-17, 04:52:

I wanted to report that no version of dgVoodoo runs a DX2 game, The Need for Speed Special Edition. The game just works with the default DDraw.dll. I PMed you but you didnt reply.

Here is the log:

Uhm, sorry. I'm not good at private messages, and I'm visiting the forum relatively rarely these days. I'll check it out along with other games.
Btw, in your log there is an error message saying that initialization of the DDI (the dx11 backend itself) has failed (which is weird), so it seems it's not a problem of the game but dgvoodoo itself. Do other games work for you with dgVoodoo?

Deffnator wrote on 2020-05-18, 17:01:
Tanktics has rainbow issues with all devices and gdi hook https://i.imgur.com/zQCLfJq.png […]
Show full quote

Tanktics has rainbow issues with all devices and gdi hook
zQCLfJq.png

Also, dege, its possible to create a WinG games hook for Shadow of the Horned Rat.
the game itself recognizes the WinG.dll and WinG32.dll and i tested it by renaming the ddraw.dll but it still calls for the WinG Profiles.

You can't rename ddraw to wing. They are completely different API's. I wonder why WinG games have problems because WinG today is just a wrapper layer on top of standard GDI which still works as expected on Win10.
(If I know it right, WinG was a thing before 'DIB section', the API providing low-level bitmap manipulation appeared in GDI. WinG seems to have the dibsection functionality itself which later got integrated into standard GDI. Win3.1/95 times.)
dgVoodoo can only hook GDI if it's used in conjution with one of the DX dll's.

Last edited by Dege on 2020-05-19, 20:59. Edited 2 times in total.

Reply 215 of 230, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

dgVoodoo 2 with d3d12 wrapping will be the most used d3d12 application in the gaming world, finally we'll got a real benchmark for that API 😁 (way better than any actual d3d12 game developed until today)

Reply 216 of 230, by legion_pheonix

User metadata
Rank Newbie
Rank
Newbie

Prince of Persia the Forgotten Sands starts fine, but anti-aliasing doesn't work. More precisely, the game does not start if you enable anti-aliasing in dgvoodoo2. I noticed that if you run GameSettings.exe and try to set anti-aliasing there, then there simply is no way to choose the anti-aliasing level, only in the off state.
That is, if you start the game and settings without dgvoodoo2, then anti-aliasing is displayed.

Reply 218 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
lowenz wrote on 2020-05-19, 20:48:

dgVoodoo 2 with d3d12 wrapping will be the most used d3d12 application in the gaming world, finally we'll got a real benchmark for that API 😁 (way better than any actual d3d12 game developed until today)

At least, I hope I can iron out all the problems so I get satisfied with the DX12 backend... 😀

djc5166 wrote on 2020-05-20, 00:07:

So WIP71 Has DX12 backend and WIP72 doesn't? Or all further WIPs have DX12 support?

They are compiled from different source branches.
WIP71 is from the 'main' branch, WIP72 is from the '2_6x'. I'll maintain 2_6x with bugfixes (that are ported into main too) until no "stable" (tested) version is released from main.
Main is versioned as 2.7 now, I'll open a new topic for 2.7.x and related wips later.

Reply 219 of 230, by Dege

User metadata
Rank Oldbie
Rank
Oldbie
legion_pheonix wrote on 2020-05-19, 22:00:

Prince of Persia the Forgotten Sands starts fine, but anti-aliasing doesn't work. More precisely, the game does not start if you enable anti-aliasing in dgvoodoo2. I noticed that if you run GameSettings.exe and try to set anti-aliasing there, then there simply is no way to choose the anti-aliasing level, only in the off state.
That is, if you start the game and settings without dgvoodoo2, then anti-aliasing is displayed.

They are there. But if you set MSAA through dgVoodoo to anything other than 'app driven' then dgVoodoo exposes no MSAA capabilities to the game and any attempt from the game to create msaa'ed textures/surfaces will fail.