Yes we know that, thats why we have a 10bit HDR swap chain or 10bit/16bit intermediate buffers. BUT RetroArch has NEVER offered anything other than an 8bit swap chain in SDR. When you put float frame buffer in preset or use the #pragma format in the last pass RetroArch ignores it and you write to an 8bit buffer.
What are you basing this off of? You’ve only been able to see a difference when youve switched on HDR and used a 10bit format in RetroArch.
Not in SDR they can’t - I bet that the Nvidia/Intel/AMD driver doesn’t even allow you to have r709 colour space with a 10bit swap chain. It may be in the spec but the reality is usually very different - I’d have to write a test to prove that but the fact no game has ever supported this points to it.
Here’s the math even with Windows 11 Auto Colour Management on (a internal scRGB DWM compositor) for 100 and 99 pixel values:
(100 / 255) * 1023 = 401.1 (rounded to 401 in 10bit - .1 is used to trigger temporal dither)
(99 / 255) * 1023 = 397.1 (rounded to 397 in 10bit - .1 is used to trigger temporal dither)
Same relative gap and the DMW/GPU output hardware’s temporal dithering (based on the decimal point) will cancel out so the dither doesn’t help either. The only time this will help is when you have Windows compositing stuff i.e Steam overlays etc BUT even then in the vast majority of cases it wont affect the image in the slightest. In the 99.9% of cases you’re just wasting electricity.
Yes it is the last pass BUT its not 10bit its 8bit - it completely ignores you asking for a 10bit buffer in D3D11, D3D12 and Vulkan RetroArch drivers - and always has done. Same goes for float_framebuffer in the preset and 16bit float format request in the shader with #pragma format.


















































