VOGONS


Microsoft D3D9on12

Topic actions

First post, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

Just reporting here for Dege, discovered today from news about Intel dGPUs and missing D3D9 native support.

https://github.com/microsoft/D3D9On12

Reply 1 of 32, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-08-16, 21:03:

Just reporting here for Dege, discovered today from news about Intel dGPUs and missing D3D9 native support.

https://github.com/microsoft/D3D9On12

If I recall correctly, this has started earlier, probably from the 11th Gen or 12th Gen integrated Iris Graphics

previously known as Discrete_BOB_058

Reply 3 of 32, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-08-17, 15:15:

HD 750 (11th/12th gen) iGPU has no problem with D3D9 native support.

Apart from specific game/engine issues, of course

See here

Re: Enabling D3D9On12 for DirectX 1-9

previously known as Discrete_BOB_058

Reply 5 of 32, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

Just reporting some results of d39on12 vs dgVoodoo2 vs native driver

Unreal 227k 64 bit (patch will be published soon) d3d9 renderer with maximum quality possible @2560x1440
Original NaliCastle flyby timedemo!

Radeon RX 570 with RS 22.8.1

*Native: 765 FPS
*D3D9on12: 505 FPS
*dgVoodoo2 (D3D12 FL 12): 740 FPS 😀

-------------------------------------------

Last edited by lowenz on 2022-08-17, 21:58. Edited 1 time in total.

Reply 6 of 32, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-08-17, 21:57:
Just reporting some results of d39on12 vs dgVoodoo2 vs native driver […]
Show full quote

Just reporting some results of d39on12 vs dgVoodoo2 vs native driver

Unreal 227k 64 bit (patch will be published soon) d3d9 renderer with maximum quality possible @2560x1440 - Radeon RX 570 with RS 22.8.1
Original NaliCastle flyby timedemo!

Native: 765 FPS
D3D9on12: 505 FPS
dgVoodoo2 (D3D12 FL 12): 740 FPS 😀

Narzoul mentioned about enabling D3D9ON12 with a shim. i should find and enable it to see how that turns out so as to see how d3d9 apps work. Question being if it's an ACT shim?

previously known as Discrete_BOB_058

Reply 7 of 32, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igdumdim64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Using d3d9on12 the driver is another one.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igd10iumd64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Reply 8 of 32, by BEEN_Nath_58

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-08-17, 22:07:
I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver. […]
Show full quote

I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igdumdim64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Using d3d9on12 the driver is another one.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igd10iumd64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

I have been a little off the PC HW side, but isn't UHD 770 that Narzoul mentioned, on the 12th Gen i5s?

The d3d9on12 driver you mentioned is not d3d9on12.dll so I am pretty confused.

Anyways I found the shim...

Update: History Channel CW makes the shim not display MSI Afterburner statistics, while Burnout Paradise shows it to be using D3D9 still. What's the best way to log what driver is being used?

Attachments

previously known as Discrete_BOB_058

Reply 9 of 32, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie

It's pretty the same at hw level, but the driver can make differences between 11th and 12th gen iGPU.
In some news I see that 11th iGPUs get the native d3d9 driver installed.

I've simply used the dll provided by narzoul to trick the system.

Reply 10 of 32, by rml_br

User metadata
Rank Newbie
Rank
Newbie

Hi, first post. First, fhanks a lot Dgvoodoo for this type of work. I tested it some time ago with my older notebook (intel i5 5200u) and make games like NFS Underground and Diablo2 to work with best settings.

I came here to post about the Intel dropping support for dx9, but someone already posted that..

This is the official statement:
https://www.intel.com/content/www/us/en/suppo … 8/graphics.html

Intel 11th gen still has native support for DX9, but Intel 12th gen will rely on Microsoft DX9On12, and when i read that the first thing that i think was about the dgVoodoo's work!

I bought a new notebook, with the Intel i5 1135G7 and Intel Xe 80EU version, running with hybrid dual channel (8GB + 16GB DDR4 3200), and have made some benchmarks on old games and tools, like 3DMark 05 and most recents:

3DMark 2005 Default 29885
3DMark 2005 Extreme - 17913
3DMark 2006 Default - 23093
3DMark 2006 Extreme - 11968

My first work was to compare it with the Nvidia GT1030 that i have (intel i3 3220, 12GB RAM), but i have to organize the results to make a better conclusion.

For example 3560 on Fire Strike, that for a iGPU seems like a good result, considering 2320 on GT1030.

But at some legacy benchmarks like Street Fighter 4, Resident Evil 5 and others, the GT1030 cames first with better results.

3DMark 2005 Default - 20629
3DMark 2005 Extreme - 20202
3DMark 2006 Default - 16309
3DMark 2006 Extreme - 12950

Seems like that this could be the reason to focus on newer benchmarks (Ice Storm, Cloud Gate the GT1030 > Intel Xe; Newer benchmarks Intel Xe > GT1030).

I just come to say that if i can help with something or even with someone to benchmark or compare, i will gladly help!

Reply 12 of 32, by Dege

User metadata
Rank l33t
Rank
l33t

Not Intel is the first going this way. I have a Surface Pro X and the Qualcomm Adreno GPU in it has only a D3D11+12 driver, D3D8/9 runs on D3D8on12 and D3D9on12.

Anyway, I tested some stuffs on it with dgVoodoo and it worked sort of fine rendering-wise (sometimes noise-like blocks here and there with the D3D12 driver and a crash with TruForm through D3D11 for example) and worked great performance-wise regarding that dgVoodoo itself was run through the x86 emulation layer.
The best would be to compile an x86 CHPE version for those ARM systems but I think it's a MS-only knowledge how to do that, but I digressed.

I think this all deserves a separate topic.

Reply 13 of 32, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
robertmo wrote on 2022-08-19, 18:49:

intel graphics was always useless, but now it's even more 😉
luckily intel sells the F cpus without the feature 😉

They have a very good video decoding offloading (DXVA) features and multiple monitor handling capabilities.
D3D12 driver is good enough to run dgVoodoo2. Vulkan support is in a good shape and OpenGL too.

Problems (dedicated compatibility/optimization profiles) are present for D3D9 and D3D11.

Reply 14 of 32, by robertmo

User metadata
Rank l33t++
Rank
l33t++
lowenz wrote on 2022-08-21, 07:55:

D3D12 driver is good enough to run dgVoodoo2.
Problems (dedicated compatibility/optimization profiles) are present for D3D9 and D3D11.

Pył in qemu using dgvoodoo2 (dx12) - 9 fps
Pył in qemu using dgvoodoo2 (dx11) - 70 fps
😉

Reply 15 of 32, by Aemony

User metadata
Rank Newbie
Rank
Newbie
lowenz wrote on 2022-08-17, 22:07:
I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver. […]
Show full quote

I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igdumdim64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Using d3d9on12 the driver is another one.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igd10iumd64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Can you use DirectX Caps Viewer or GPU-Z to confirm whether the 11th gen iGPU actually exposes a native D3D9 device? I have heard from another user on 11th gen that their CPU does not in fact expose one, despite Intel’s statement on the contrary.

Reply 16 of 32, by Dege

User metadata
Rank l33t
Rank
l33t
lowenz wrote on 2022-08-21, 07:55:
They have a very good video decoding offloading (DXVA) features and multiple monitor handling capabilities. D3D12 driver is good […]
Show full quote
robertmo wrote on 2022-08-19, 18:49:

intel graphics was always useless, but now it's even more 😉
luckily intel sells the F cpus without the feature 😉

They have a very good video decoding offloading (DXVA) features and multiple monitor handling capabilities.
D3D12 driver is good enough to run dgVoodoo2. Vulkan support is in a good shape and OpenGL too.

Problems (dedicated compatibility/optimization profiles) are present for D3D9 and D3D11.

Question is, if they have an OGL driver then why no native D3D9? OGL, which is bloated, needs a GLSL compiler, etc, is much more complicated than D3D9.

robertmo wrote on 2022-08-21, 08:46:
Pył in qemu using dgvoodoo2 (dx12) - 9 fps Pył in qemu using dgvoodoo2 (dx11) - 70 fps ;) […]
Show full quote
lowenz wrote on 2022-08-21, 07:55:

D3D12 driver is good enough to run dgVoodoo2.
Problems (dedicated compatibility/optimization profiles) are present for D3D9 and D3D11.

Pył in qemu using dgvoodoo2 (dx12) - 9 fps
Pył in qemu using dgvoodoo2 (dx11) - 70 fps
😉

How can that be? I get much more FPS in DosBox.

Reply 17 of 32, by Dege

User metadata
Rank l33t
Rank
l33t
Aemony wrote on 2022-08-21, 08:48:
lowenz wrote on 2022-08-17, 22:07:
I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver. […]
Show full quote

I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igdumdim64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Using d3d9on12 the driver is another one.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igd10iumd64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Can you use DirectX Caps Viewer or GPU-Z to confirm whether the 11th gen iGPU actually exposes a native D3D9 device? I have heard from another user on 11th gen that their CPU does not in fact expose one, despite Intel’s statement on the contrary.

Isn't D3D9on12 "just" a backend? So, the frontend device can only be native if I get it right. The cap bits is an interesting question though.

Reply 18 of 32, by Aemony

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2022-08-21, 10:23:
Aemony wrote on 2022-08-21, 08:48:
lowenz wrote on 2022-08-17, 22:07:
I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver. […]
Show full quote

I can confirm that the 11th gen Intel GPU loads the *NATIVE* d3d9 driver.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igdumdim64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Using d3d9on12 the driver is another one.

Log: Bound to D3D9Drv.dll
Log: Initializing D3D9Drv...
Log: D3D adapter driver : igd10iumd64.dll
Log: D3D adapter description : Intel(R) UHD Graphics 750
Log: D3D adapter id : 0x8086:0x4C8A

Can you use DirectX Caps Viewer or GPU-Z to confirm whether the 11th gen iGPU actually exposes a native D3D9 device? I have heard from another user on 11th gen that their CPU does not in fact expose one, despite Intel’s statement on the contrary.

Isn't D3D9on12 "just" a backend? So, the frontend device can only be native if I get it right. The cap bits is an interesting question though.

D3D9on12 takes the place that a regular vendor specific D3D9 driver otherwise would take if the device drivers lacks such a native driver. Tools that would report the capabilities of the native driver/hardware instead does not find a D3D9 device to report on, and will turn up empty.

Note here in DirectX Caps Viewer how the 12900K's Intel UHD Graphics 770 appears as an available DXGI device, but is missing a Direct3D9 device:

dxcapsviewer_12900k.png
Filename
dxcapsviewer_12900k.png
File size
18.61 KiB
Views
1898 views
File license
Public domain

And here in GPU-Z when we're expressively looking at the Intel UHD Graphics 770's DirectX 9 feature set the tool reports that the adapter was not found:

gpu-z_12900k.png
Filename
gpu-z_12900k.png
File size
10.31 KiB
Views
1898 views
File license
Public domain

Of course most of this translation/mapping is completely transparent to the games, and they'll continue to issue D3D9 API calls as always while the D3D9on12 driver in the back maps the calls to D3D12 API calls that is then sent to the native D3D12 driver.

Not sure how relevant it is, but apparently nowadays D3D9on12 handles all D3D9 versions before 10, including DirectDraw. Just learned that the other day from the DirectX team on their Discord server.

Last edited by Aemony on 2022-08-21, 10:40. Edited 1 time in total.

Reply 19 of 32, by lowenz

User metadata
Rank Oldbie
Rank
Oldbie
Dege wrote on 2022-08-21, 10:20:

Question is, if they have an OGL driver then why no native D3D9? OGL, which is bloated, needs a GLSL compiler, etc, is much more complicated than D3D9.

No important OpenGL games to support apart Minecraft :p
It's the game compatibility hell that Intel can't handle (dedicated teams to test 20 years old games). I can see it very well just in BioShock 2 remaster (d3d11).....rendering is fubar 😁