D3D12 warp driver on windows 7

Started by
8 comments, last by Alessio1989 8 years, 6 months ago

Hello.

By some reason I'd like to use dx12 on windows 7. I thought I can just use warp driver dll - after all it's just a software implementation (which proves why it works on win10 with wddm less than 2.0). With Dependency Walker I checked which libs I need. I grab this libs on win10. But this is not enough - it seems that libs require another libs and it's hard to tell which. So maybe somebody already managed how to do this? Or maybe I'm totally wrong and it's impossible to achieve?

Advertisement

I do not think you can do this. You still need WDDM 2.0 and related DirectX Graphics kernel bits to run a WARP12 adapter device. Probably some of the bits you need requires or are part of Windows 10 kernel.

"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

But I'm able to run warp on integrated Intel gpu with wddm 1.3 (on win10).

But I'm able to run warp on integrated Intel gpu with wddm 1.3 (on win10).

WDDM is not just the display driver interface, it also involve the compositor (the DWM). Windows 10 comes with a new compositor and a new presentation model. I am also pretty sure you need the correlated DXGI and DXG kernel bits installed. There is also the new resident memory model which is not supported under Windows 7/8/8.1.

Do you have any particular - non subjective - reason to not use Windows 10? (ie: technical issues or whatever..)

"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

But I'm able to run warp on integrated Intel gpu with wddm 1.3 (on win10).

Considering this, you MIGHT be able to hack a lot until you get it to run on a WDDM 1.3 capable OS.
But even then, WDDM 1.3 shipped with Windows 8.1
Windows 7 supports up to WDDM 1.1

The only way to get it to run on Win 7 is to heavily reverse engineer the DLLs and hack a lot, until you end up writing your own pseudo OS layer, like Wine does on Linux. Definitely not something quick or trivial.

This won't work.

The d3d10warp.dll and even the optional d3d12warp.dll that are shipped with Windows 10 builds have tight ties to OS components that only exist in Windows 8.1 onwards. We also removed 'old DDI table support' from these drivers to minimize our testing and old code that is not longer used. This means the only DDI tables that these Win 10 binaries expose are a WDDM 1.3 table (Win 8.1) and a WDDM 2.0 table (Win 10), neither will be recognized by the runtime in Windows 7. You can take either of these binaries and run them on Win8.1 (after renaming d3d12warp.dll to d3d10warp.dll) - But that still won't give you D3D12 on anything other than Windows 10, there is a *lot* more to D3D12 in the kernel / runtime / OS.

Thank you guys. I believe you and leave that crazy idea.


Do you have any particular - non subjective - reason to not use Windows 10? (ie: technical issues or whatever..)

On my work I have only Win7 but in my free time wanted to try/test something.

Well, you can still use a VM and create a WARP device, obviously the performance will be atrocious if you want create anything that is not a triangle or a single cube, but it should be enough to learn the very basics of the API.
"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

Well, you can still use a VM and create a WARP device, obviously the performance will be atrocious if you want create anything that is not a triangle or a single cube, but it should be enough to learn the very basics of the API.

WARP isn't that bad. Give the VM enough CPUs and it should run pretty well. I've written entire small test apps before with WARP left on by accident and not realised until I was almost done.

Adam Miles - Principal Software Development Engineer - Microsoft Xbox Advanced Technology Group

Well, you can still use a VM and create a WARP device, obviously the performance will be atrocious if you want create anything that is not a triangle or a single cube, but it should be enough to learn the very basics of the API.

WARP isn't that bad. Give the VM enough CPUs and it should run pretty well. I've written entire small test apps before with WARP left on by accident and not realised until I was almost done.

I remember I was able to run the multi-threading samples at ~1FPS on a i5 Ivy Bridge laptop using HyperVisor on Windows 8.1 last Spring (and it was not even the RTM).
Yes, that is not so bad at all to learning the very base of the API. Without a VM in the middle I guess WARP12 runs pretty well on a mid-range recent CPU, it is also suitable to try heterogeneous multi-adapter coding.
"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

This topic is closed to new replies.

Advertisement