emoose / VideoRenderer

RTX HDR modded into MPC-VideoRenderer.
GNU General Public License v3.0
1.28k stars 67 forks source link

Disable D3D11 Native automatically when needed #25

Closed clsid2 closed 9 months ago

clsid2 commented 9 months ago

You can do that by not exposing ID3D11DecoderConfiguration interface in CVideoRendererInputPin::NonDelegatingQueryInterface().

I would advice to first add an option for RTXAutoHDR in the settings GUI, so Native mode only gets disabled when really needed. Based on MediaType info you have at that point you should also be able to determine cases where AutoHDR won't get used, such as video already being 10-bit (HDR), again to avoid disabling it unnecessarily.

This way users don't need to mess with LAV Filters settings, and copyback mode is only forced when RTXAutoHDR option is enabled.

You should also add m_VendorId == PCIV_NVIDIA check in your code when determining if AutoHDR should be used. That to avoid unneeded re-init on unsupported systems.

Edit: When Native mode is active, the decoder calls CVideoRendererInputPin::ActivateD3D11Decoding() which in turn calls CDX11VideoProcessor::SetDevice(). Maybe that helps you in figuring out why AutoHDR doesn't work with Native mode.

emoose commented 9 months ago

Ah looks like in 1.2 D3D11 Native is actually working now, but going back to 1.1 does break it, was a bit confused since the diff between 1.1 & 1.2 didn't really seem like it'd fix it, but seems it's probably the new 8-bit checks around bHdrPassthrough:

https://github.com/emoose/VideoRenderer/blob/d593202a471e697a48d73e50f380d0a9828f116f/Source/DX11VideoProcessor.cpp#L1744-L1746

For me Native is passing something with params.CDepth == 16, 1.1 would have set bHdrPassthrough for that but in 1.2 it gets left as false now instead, guess if bHdrPassthrough was set for it then it'd end up with some color space that RTXHDR doesn't like.

Appreciate the help btw, I'd tried looking into disabling Native when you mentioned it before but I'm a bit out of my depth with DirectShow, I'll look into adding an NV check shortly too.