VOGONS


dgVoodoo 2.7.x and related WIP versions

Topic actions

  • This topic is locked. You cannot reply or edit posts.

Reply 341 of 474, by eddman

User metadata
Rank Member
Rank
Member

Would it be possible to implement a feature to display a logo or text next to "dgvoodoo" in-game, showing the type of the API conversion, like "d3d8to12", "d3d6to11", etc?

It's easy to tell if a game uses d3d8 or 9, since they are wrapped through separate dll files, but for d3d7 and older, that cannot be done because they all work through the DDraw.dll file.

Reply 342 of 474, by Dege

User metadata
Rank l33t
Rank
l33t

I have a new WIP. This version isn't about new features but a lot of changes under the hood (some long overdue things I wanted to do):

=========================
WIP77:
=========================

Changes compared to v2.72:

- Optimizations in D3D sw vertex processing calcs
- Optimizations in D3D state blocks
- Fixing a D3D9 shader incompatibility (Mass Effect)
- Fixing a shader validator bug (Garfield - Lasagna World Tour)
- Fixing a D3D12 API driving bug
- Fixing a bug in Glide D3D12 backend (Ultimate Race Pro)
- Fixing a regression bug in D3D frontend (Crush)
- Fixing another bug in D3D frontend
- Gamma ramps now automatically works with D3D12 (with underlying optimizations)
* Color profile is always inherited because of calibration standards on
modern systems
* Option General\InheritColorProfileInFullScreenMode is only taken into
account when a D3D11 output API is explicitly selected (compatibility
mode for old hw)
- Fixing a bump mapping bug in FF shaders (Matrox G400 demo)
- Replacing the HLSL compiler in Glide ps shaders with an own code generator
* So now dgVoodoo does not need the external D3DCompiler at all
- Fixing an encountered Glide bug (texture chroma range)
- Some debug layer fixings for Glide3 Napalm

http://dege.fw.hu/temp/dgVoodooWIP77.zip
http://dege.fw.hu/temp/dgVoodooWIP77_dbg.zip

I release this WIP mainly because of Glide. Pixel shader generating is completely reworked and replaced with a new implementation to get rid of the need of the external D3D shader compiler.
This task proved to be more complicated than I thought, and I did a lot of testing but didn't tested against my complete Glide test base.
So, bugs to be fixed can be easily found.

Also, this release does not contain fixes for recently/meanwhile reported problems (like the enumerated refresh rates in D3D). I'm going to have a look at them though.

Reply 346 of 474, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

Black Screen with the music played (it's the menu screen - disabling it in the config file causes a direct crash to desktop of the demo) :p

dgVoodoo2 working 'cause I see the RTSS overlay with "D3D12" API, but black screen nonetheless!
And forced windowed mode not working (fullscreen no matter the dgVoodoo2 configuration).

Reply 347 of 474, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
Dege wrote on 2021-01-29, 21:12:

WIP77
Changes compared to v2.72:
- Fixing a bug in Glide D3D12 backend (Ultimate Race Pro)

Hi, I am not sure if this is the same issue that I reported in other thread on texture corruption. WIP77 still exhibits the same texture corruption both on DOSBox and QEMU x64 builds.

Reply 349 of 474, by Dege

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2021-01-30, 12:01:

Black Screen with the music played (it's the menu screen - disabling it in the config file causes a direct crash to desktop of the demo) :p

dgVoodoo2 working 'cause I see the RTSS overlay with "D3D12" API, but black screen nonetheless!
And forced windowed mode not working (fullscreen no matter the dgVoodoo2 configuration).

It's very accidental if this demo runs or not. AFAIR it has memory-overwrite bug so it must depend on how the memory allocator allocates the memory chunks on a particular device.
For example, on one of my dekstop machines it runs in XP mode, on another it always crashes before the menu and on my tablet it runs perfectly out of the box.

Reply 351 of 474, by Dege

User metadata
Rank l33t
Rank
l33t

Yes, it's expected. D3D11 and 12 have a common root in DXGI that's responsible for creating swapchains, enumerating display modes, etc.
It must be the same problem as MrEWhite has too.

MrEWhite wrote on 2021-01-05, 20:38:
Dege wrote on 2020-12-30, 11:29:
MrEWhite wrote on 2020-12-17, 00:01:

This still occurs with 2.72.

I guess what the problem is, but could you attach a dgv debug log for enumerated/non-enumerated cases plz?

[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf. [18488] [dgVoodoo] INFO: INI fil […]
Show full quote

[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) is created. Number of display outputs (on which devices can be created): 1
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) Device 0: Name: "NVIDIA GeForce RTX 3090", Description: "\\.\DISPLAY1", Monitor rect: (0, 0, 2560, 1440), system primary monitor
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) Virtual video card is 'dgVoodoo Virtual 3D Accelerated' with 1024MB onboard memory.
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) is released.
[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Direct3D9 (0DEE8290) is created. Number of display outputs (on which devices can be created): 1
[18488] [dgVoodoo] INFO: Direct3D9 (0DEE8290) Device 0: Name: "NVIDIA GeForce RTX 3090", Description: "\\.\DISPLAY1", Monitor rect: (0, 0, 2560, 1440), system primary monitor
[18488] [dgVoodoo] INFO: Direct3D9 (0DEE8290) Virtual video card is 'dgVoodoo Virtual 3D Accelerated' with 1024MB onboard memory.
[18488] [dgVoodoo] ERROR: Direct3D9 (0DEE8290): Validation of D3D9 swapchain presentation parameters failed. Reason: display mode "1024x768, 60Hz" is required but there is no mode with this or lower refreshrate is supported by output device: 0, DeviceType : D3DDEVTYPE_HAL
[18488] [dgVoodoo] ERROR: Direct3DDevice9 (192C0048)::Init: Cannot create device implicit swapchain.
[18488] [dgVoodoo] ERROR: Direct3D9 (0DEE8290)::CreateDevice: Initializing Direct3DDevice9 (192C0048) failed.

@MrEWhite: could you plz tell me what refresh rates dgVoodooCPL enumerates for 1024x768 for you?

Reply 352 of 474, by MrEWhite

User metadata
Rank Oldbie
Rank
Oldbie
Dege wrote on 2021-02-14, 16:31:
Yes, it's expected. D3D11 and 12 have a common root in DXGI that's responsible for creating swapchains, enumerating display mode […]
Show full quote

Yes, it's expected. D3D11 and 12 have a common root in DXGI that's responsible for creating swapchains, enumerating display modes, etc.
It must be the same problem as MrEWhite has too.

MrEWhite wrote on 2021-01-05, 20:38:
Dege wrote on 2020-12-30, 11:29:

I guess what the problem is, but could you attach a dgv debug log for enumerated/non-enumerated cases plz?

[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf. [18488] [dgVoodoo] INFO: INI fil […]
Show full quote

[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) is created. Number of display outputs (on which devices can be created): 1
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) Device 0: Name: "NVIDIA GeForce RTX 3090", Description: "\\.\DISPLAY1", Monitor rect: (0, 0, 2560, 1440), system primary monitor
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) Virtual video card is 'dgVoodoo Virtual 3D Accelerated' with 1024MB onboard memory.
[18488] [dgVoodoo] INFO: Direct3D9 (02F610D0) is released.
[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Reading config from file F:\Games\Aspyr\Guitar Hero III\dgVoodoo.conf.
[18488] [dgVoodoo] INFO: INI file based version of config file is successfully read.
[18488] [dgVoodoo] INFO: Direct3D9 (0DEE8290) is created. Number of display outputs (on which devices can be created): 1
[18488] [dgVoodoo] INFO: Direct3D9 (0DEE8290) Device 0: Name: "NVIDIA GeForce RTX 3090", Description: "\\.\DISPLAY1", Monitor rect: (0, 0, 2560, 1440), system primary monitor
[18488] [dgVoodoo] INFO: Direct3D9 (0DEE8290) Virtual video card is 'dgVoodoo Virtual 3D Accelerated' with 1024MB onboard memory.
[18488] [dgVoodoo] ERROR: Direct3D9 (0DEE8290): Validation of D3D9 swapchain presentation parameters failed. Reason: display mode "1024x768, 60Hz" is required but there is no mode with this or lower refreshrate is supported by output device: 0, DeviceType : D3DDEVTYPE_HAL
[18488] [dgVoodoo] ERROR: Direct3DDevice9 (192C0048)::Init: Cannot create device implicit swapchain.
[18488] [dgVoodoo] ERROR: Direct3D9 (0DEE8290)::CreateDevice: Initializing Direct3DDevice9 (192C0048) failed.

@MrEWhite: could you plz tell me what refresh rates dgVoodooCPL enumerates for 1024x768 for you?

23, 59, 84, 99, 119, 143, 165.

Reply 353 of 474, by Dege

User metadata
Rank l33t
Rank
l33t

Ok, I changed the criterions a little bit for finding a display mode for the incoming refresh rate parameter:

  • Forced refresh rate through dgVoodoo: the display modes are enumerated with the forced value to the application so it can check if it's acceptable, let the user choose or give an error message, etc. But, when initializing DD/D3D, practically any incoming refresh rate value is accepted and replaced by the forced one
  • Unforced refresh rate: the same as it was (incoming value must match an internal one for a given resolution), except that now it's allowed to match an (internal one + 1) too, to avoid problems coming from truncated/rounded rational values.

Reply 356 of 474, by Dege

User metadata
Rank l33t
Rank
l33t
Glurak wrote on 2021-02-18, 21:07:

The Game Restricted Area has still Color and a little performance issue 🙁

Ok, I fixed the color problem, but the game scene seems to be rendered properly only if the game window is not resized (misplaced lightmaps otherwise), so it can only be played at unforced resolution and unspecified scaling mode.
Performance problem: restart your computer to reset the internal system timer and it'll be smooth.

I release a new WIP:

=========================
WIP78:
=========================

- Fixing a cube texture resolution scaling bug (Colin McRae Rally 3)
- Fixing a vs.1.x code generator bug (Splinter Cell 2)
- Fixing D3D9 vs.3.x pointsize output (Fable 3)
- Some minor D3D9 optimizations
- Minor comparison sampling fix for D3D8/9 (Test Drive Unlimited 2)
- Enabling control tabbing + fixing tab-order for the CPL
- Minor modification for Glide GrSstWinOpen to accept (and convert) more invalid buffercount combinations
- Introducing option GeneralExt\FullscreenAttributes with attribute 'Fake' to enable fake fullscreen rendering
- Fixing a D3D colorkeying bug (Restricted Area)

- Changing the criterions for accepting incoming refresh rate values in DX:

  • Enumerate refrate enabled: any value accepted but replaced with the forced one
  • Enumerate refrate disabled: incoming value must match one or (one+1) (to workaround the problem of truncated/rounded rationals) from the internal list

http://dege.fw.hu/temp/dgVoodooWIP78.zip
http://dege.fw.hu/temp/dgVoodooWIP78_dbg.zip

Reply 358 of 474, by VoidsShadow

User metadata
Rank Newbie
Rank
Newbie
lowenz wrote on 2021-02-21, 23:08:

Thanks Dege!

Can I ask a favour? Reading there "fake fullscreen" .....can you explain me (us) ALL the different type of "fullscreen" mode existing today and how they compare 1) to one another 2) to classic fullscreen of WinXP era?

Xp-era Fullscreen is Exclusive Fullscreen. The app takes full control of the display.
Fake fullscreen is essentially a window that covers the whole screen (Borderless Fullscreen Window) and inherits Windows' Desktop Window Manager traits (enforced double-buffer V-Sync, Aero Theme processing, et cetera). Display settings are managed by Windows' DWM/Aero and system settings.

unknown.png

Reply 359 of 474, by VoidsShadow

User metadata
Rank Newbie
Rank
Newbie

WIP78 Release build's x86 d3d9.dll does nothing. No window/rendering changes take effect and the dgVoodoo logo is not present. The debug binary works as expected with the same ini configuration.