D3D 12 - Is there a reference device?

Started by
3 comments, last by Andy Glaister 8 years, 6 months ago

I can't seem to locate any information about this, but in the past Direct3D has had a reference device used to help find bugs in drivers and such.

In D3D 12 however, I can get the WARP adapter with no problem, but I can't seem to find any info about a reference device. In D3D 11 there was a reference device and a WARP device, so I assumed this would still be the case.

Is this still the case or am I just missing something?

Advertisement
Hi, the reference device is no longer available. As far I know the reference device has not been update since Direct3D 11.1 (and it still doesn't cover many new FL 11_1 nice features).
The WARP device is now the substitute of the reference device in Direct3D 12. You can also use it to emulate an heterogeneous multi-adapter system, it behaves and simulate pretty well a very (very) low-end iGPU. Note also the WARP adapter is a continuous improvement state, and some update may come via Windows Update (Graphics Tools optional package).
The software device is gone with Direct3D 12 too.

Finally, I guess you are encouraged to use the WARP device with Direct3D 11 API families too: it covers more optional features and provides a better performance. moreover, it should not provide any quality difference against the reference device, so there are no more reasons to prefer the reference device with Direct 3D 11.
"Recursion is the first step towards madness." - "Skegg?ld, Skálm?ld, Skildir ro Klofnir!"
Direct3D 12 quick reference: https://github.com/alessiot89/D3D12QuickRef/

Ah, I see.

Just wanted to be sure my code was covering all the bases.

Thanks!

Actually, I meant to ask this, but totally forgot...

In regard to the WARP adapter, when I try to enumerate the outputs, I get none back. Is this normal? I thought when setting a swap chain to full screen you were required to provide an output? Or can the WARP adapter do full screen mode?

When you have a GPU(s) enabled on a system, the last adapter you enumerate will be a 'render only' WARP device. This never has any outputs. You can still render to a window using this device as this doesn't require an output. If you disable your GPU in device manager, or you are running in a VM or HYPER-V, you will (typically) enumerate two adapters, the first is a WARP adapter that will appear to have an output and the second WARP device is the 'render only' device. Note, when WARP is your primary GPU, it also provides D3D9 and below emulation as well.

Yes, WARP is the replacement for Ref. Ref didn't support shared surfaces or kernel synchronization which is being used in a lot of components these days. WARP is *fully* conformant with the D3D specs, so can be relied upon to be a accurate reference. It's also much faster than the original reference rasterizer was, and it's implemented as a 'real device' in the system, so participates in kernel synchronization and supports shared surfaces (which is required for things like the desktop, IE etc...).

Andy

This topic is closed to new replies.

Advertisement