On 1/22/20 15:16, Stefan Dösinger wrote:
utils.c, check_fbo_compat() and the internalformat_query2 equivalents:
if (gl_info->supported[EXT_TEXTURE_SRGB_DECODE]) format->internal = format->srgb_internal;
That's because EXT_texture_sRGB_decode can only switch sRGB off for sRGB textures, it can't switch it on for RGB textures. So we create all as sRGB and switch it off until the app enables it.
We have a fallback codepath in case EXT_TEXTURE_SRGB_DECODE is not available. We'd have to enable this fallback codepath for 16 bit formats, otherwise all 16 bit RGB textures will have the 32 bit conversion penalty even for apps that don't use sRGB.
Oh yeah, thanks. So maybe I introduce that fallback code path for 16 bit SRGB formats then? Or fixup the colour in GLSL (this looks more messy to me at the first glance, not sure it worth adding an extra shader setting for that at the first place and also it will further complicate SRGB handling logic)? Or ignore that bug for now as there is anyway a workaround possible by faking AMD card through registry?