, the latest madVR version v0.92.3 now has madTPG HDR support:
All the madTPG HDR changes are brand new, so I can't guarantee everything to be totally bug free yet, but I hope it will work well for you. If you have any problems or questions, just let me know. You'll find the new APIs in the "madVR\developers\interfaces" folder, as usual.
I've added APIs which allow you to enable/disable HDR mode, choose the SMPTE 2086 metadata you want to be sent to the display, and also APIs to create HDR 3dluts compatible with madVR. There are 2 different 3dluts supported:
a) You can create a PQ -> PQ 3dlut, which receives PQ data on the input and also outputs PQ data. You would use this to calibrate an HDR display. During video playback with such an HDR 3dlut, the TV still receives PQ data and is switched into HDR mode.
b) Alternatively you can create a PQ -> Gamma 3dlut, which receives PQ data on the input but outputs gamma data. You could use this type of 3dlut to drive a display in SDR mode, while playing HDR content. In this situation your 3dlut would need to have tone + gamut mapping built in, obviously.
Just to be safe, let me sum up the current status of Windows HDR API support:
1) Starting with Windows 10 Creator's Update, Windows offers official APIs for HDR. However, the APIs do not include the ability for madTPG to dynamically switch into or out of HDR mode. Instead the end user has to activate/deactivate the "HDR and Avanced Color" switch in the OS display control panel to switch the TV into (and out of) HDR mode. Basically Microsoft believes that dynamic HDR switching is useless. They think end users will want to always run their TVs in either SDR mode or HDR mode. Personally, I think that's a very stupid decision by Microsoft. Consequently I hate the Windows 10 HDR API with a vengeance. But it is what it is.
So, when using the Windows 10 HDR functionality, in order to profile/calibrate a display for SDR, you have to make sure that the OS option "HDR and Advanced Color" is turned off. And for HDR profiling/calibration you have to manually turn that option on. As a result the TV will immediately switch into or out of HDR mode.
madVR supports the Windows 10 HDR functionality. So if you activate the OS "HDR and Advanced Color" option, madTPG will detect that and automatically show the new madTPG "HDR" button to be pressed, and you can't unpress it. In this situation madTPG does report the SMPTE 2086 metadata of your choice to the OS. However, recently a user tested the HTPC output in this configuration and found that the OS didn't properly pass the desired metadata through to the display. So there's a chance that the display might receive some sort of generic metadata instead.
2) Fortunately Nvidia offers a private HDR API, which IMHO is *MUCH* better. So if you have an Nvidia GPU in your HTPC, you can rejoice and forget all about 1). In order to allow madTPG to use the private Nvidia HDR API, please make sure you have the Windows 10 "HDR and Advanced Color" option turned *OFF*. Now in madTPG you can press (or unpress) the "HDR" button to dynamically switch the display into (or out of) HDR mode. And a user also confirmed that the metadata of your choosing is properly sent to the display.
3) AMD also offers a private HDR API, which is somewhat similar to the Nvidia API. So if you have an AMD GPU in your HTPC, we can also forget about 1). In order to allow madTPG to use the private AMD HDR API, please make sure you have the Windows 10 "HDR and Advanced Color" option turned *OFF*. Now in madTPG you can press (or unpress) the "HDR" button to activate madTPG HDR mode. Unfortunately the AMD HDR API is a bit more fragile than the Nvidia HDR API. Basically with AMD, the display only switches into HDR mode when you switch madTPG into fullscreen view. Furthermore, you have to activate the option "use D3D11 presentation" in madVR, and you have to change the display properties to "10bit" in the madVR display setup, because the AMD driver only allows HDR with a D3D11 10bit fullscreen window. It's a bit annoying, but not a big problem.
4) Intel unfortunately doesn't offer any HDR support atm at all, not even through the official Microsoft HDR API. That means any PC using an Intel GPU currently can't do HDR. That probably also applies to laptop with shared Intel+Nvidia/AMD GPUs, like e.g. Nvidia Optimus laptops, because with such laptops I think the HDMI port is always controlled by the Intel GPU. So you either need a PC with a dedicated Nvidia or AMD GPU, or a laptop with an AMD mainboard + CPU.
The private Nvidia and AMD APIs work on Windows 7, Windows 8.1 and Windows 10. So you don't have to use Windows 10, if your PC has a dedicated Nvidia or AMD GPU.
HDR is currently only supported by Pascal + Volta Nvidia chips, and by Polaris + Vega AMD chips. Older Nvidia+AMD chips don't seem to support HDR.