View Full Version : Is there anything to gain using 10 or 12 bpc for 8 bpc sources? 🤔
Milincho
19th December 2023, 02:27
Do Video Players and/or Video Renderers on PC do color conversion from 8 bpc sources like non-HDR Blurays to 10 or 12 bpc when the output display mode is in 10 or 12 bpc?
Is there anything to gain at all by using 10 or 12 bpc 'Output color depth' in Nvidia CP:
https://i.postimg.cc/1Xd8MVKc/image.png
for video playback of a 8 bpc source like a 3D Bluray?
Asmodian
19th December 2023, 03:14
Do Video Players and/or Video Renderers on PC do color conversion from 8 bpc sources like non-HDR Blurays to 10 or 12 bpc when the output display mode is in 10 or 12 bpc?
madVR will dither to 10 bit if set to output 10 bit. I have not seen anything that will output higher than 10 bit.
Is there anything to gain at all by using 10 or 12 bpc 'Output color depth' in Nvidia CP for video playback of a 8 bpc source like a 3D Bluray?
Bluray is 8 bit YCbCr data, but to view video data it must be converted to RGB and this conversion results in >8 bit data. Video renderers like madVR that dither from their internal 32 or 16 bit data to 10 bit preserve more information than dithering to 8 bit does. Whether or not this difference is important is debatable, quality dithering is already very good at 8 bit, but there is a real mathematical difference.
Your display chain must also preserve the RGB data and dithering properly, e.g. without an internal conversion to 4:2:2 YCbCr like many TVs do. 8 bit while preserving the dithering with RGB or 4:4:4 YCbCr is much better than 10 bit YCbCr 4:2:2.
Milincho
19th December 2023, 04:43
madVR will dither to 10 bit if set to output 10 bit. I have not seen anything that will output higher than 10 bit.
What about MPC Video Renderer? am I getting the best possible output with these settings?
https://i.postimg.cc/8zvjT51s/image.png
Or PotPlayer's Direct3D 11 Video Renderer?
https://i.postimg.cc/Ss66Rdk2/image.png
Are these proper settings to take advantage of 10/12 bpc or should I do something different?
I ditched madVR because it was always dropping frames when using it with DmitriRender and HAGS enabled (which I need for DLSS3 FG, otherwise I would turn that shit off).
I tried also MPC Video Renderer and it seemed good with blurays, but then I found out it was also dropping frames with 1080p SDR content like 'The Office' episodes...
So I ended up with PotPlayer's Built-in Direct3D 11 Video Renderer, which according to the Video Renderer stats and PotPlayer info is not dropping any frames. Or maybe it's not counting them properly and they are so few I don't notice them... :confused:
Milincho
20th December 2023, 06:54
Sorry, I think this 1080p SDR source is a better example:
MPC Video Renderer:
https://i.postimg.cc/7ZQNf4Qp/image.png
PotPlayer's Built-in Direct3D 11 Video Renderer:
https://i.postimg.cc/qvgsfYMQ/image.png
must be converted to RGB and this conversion results in >8 bit data. Video renderers like madVR that dither from their internal 32 or 16 bit data to 10 bit preserve more information than dithering to 8 bit does.
Are these display chains correctly set up to properly take advantage of 10 and 12 bpc? :confused:
FranceBB
20th December 2023, 13:31
Sorry, I think this 1080p SDR source is a better example
It doesn't matter if it's HDR or SDR, what's important is the bit depth and the one right there is encoded with x265 in 10bit planar not 8bit planar.
Are these display chains correctly set up to properly take advantage of 10 and 12 bpc? :confused:
bpc != bitdepth (I'm not sure why NVIDIA is naming it this way :( )
Nonetheless, yes, it's "fine" :)
In your example you have:
10bit YUV source -> 10bit RGB conversion -> 12bit RGB output
I'm not sure whether the conversions / filtering occurs in the 10bit domain or not. I guess someone more experienced than me on this should reply, but if (and it's a big "if") I read it correctly, it says "Internal Format" next to 10bit RGB so I'm very worried about it doing:
10bit YUV source -> 16bit filtering -> 10bit RGB dithering -> 12bit RGB output
for whatever reason.
In which case it would be better to have "Internal Format" to 12bit RGB directly (same as output).
But again, my knowledge of these chains is very limited, so take this with a pinch of salt and wait for someone more experienced than me on MadVR and D3D11 to reply.
Asmodian
20th December 2023, 18:51
What about MPC Video Renderer?
Sorry, I don't know for anything but madVR.
However, it looks like everything is running properly for 10 bit but not 12 bit. Part of the chain lives in the display and if it is a TV or projector it could be doing a lot of stuff very badly. Even a monitor might not be handling the 10 bit information properly. Very few displays handle 12 bit well. I would stick with 10 bit output; it is more likely to preserve any final dithering all the way to the pixels.
Gradient test patterns are best:
gradient-perceptual-colored-v2.1_24fps.mkv (http://www.mediafire.com/file/4dia3lixs0n9xyo/gradient-perceptual-colored-v2.1_24fps.mkv)
gradient-perceptual-v2.1_24fps.mkv (http://www.mediafire.com/file/z1f4ahg3784lfwz/gradient-perceptual-v2.1_24fps.mkv)
huhn
20th December 2023, 19:44
It doesn't matter if it's HDR or SDR, what's important is the bit depth and the one right there is encoded with x265 in 10bit planar not 8bit planar.
irrelevant for presentation buffer. source bit is irrelevant if it is ycbcr.
I'm not sure whether the conversions / filtering occurs in the 10bit domain or not. I guess someone more experienced than me on this should reply, but if (and it's a big "if") I read it correctly, it says "Internal Format" next to 10bit RGB so I'm very worried about it doing:
you "need" 16 here or more than the presentation buffer to get remotely accurate results.
10bit YUV source -> 16bit filtering -> 10bit RGB dithering -> 12bit RGB output
would be the best case scenario here.
the problem is the GPU driver 10 to 12 bit conversation. padding is inaccurate.
for whatever reason.
In which case it would be better to have "Internal Format" to 12bit RGB directly (same as output).
does not exist at least the last time i checked only 10 and 16 (linear light can be ignored for dx11 vulkan 16 bit could be useful if it is known if the GPU driver does proper to 12 bit).
and you want the presentation buffer to be 12 not the internal one that should be yet again be 16 or 32 bit.
in short ycbcr to RGB is "unlimited" bit deep so you want this dithered at the end to the presentation buffer.
the difference between 8 bit presentation and 10 bit presentation is just the noise floor if dithering is used.
FranceBB
20th December 2023, 21:36
Gotcha! Makes sense. Thanks huhn for clearing this out. :)
Milincho
21st December 2023, 08:13
So... would it be any better using 16 or 32 floating point as Surface?
https://i.postimg.cc/L6ZZL6pp/image.png
This is how the chain looks with 32F:
https://i.postimg.cc/y843P41S/image.png
Is this supposed to be better or am I overcomplicating things for no reason?
huhn
22nd December 2023, 04:37
if dithering is used yes. as long as that 10 bit "mixer" is in there not worth much.
rule 6 what ever i'm out.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.