config: tweak.surface-bit-depth: add support for 16f surfaces

This adds supports for 16F surfaces (i.e. 16-bit floating point). We
haven't been able to support this until now, since there were no
corresponding pixman image type. Now there is.

Use the new 16f surfaces by default, when gamma-correct-blending=yes.
This commit is contained in:
Daniel Eklöf 2025-05-01 09:37:47 +02:00
parent 7354b94f73
commit 8faea42d9e
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
9 changed files with 88 additions and 25 deletions

View file

@ -2809,12 +2809,21 @@ parse_section_tweak(struct context *ctx)
else if (streq(key, "surface-bit-depth")) {
_Static_assert(sizeof(conf->tweak.surface_bit_depth) == sizeof(int),
"enum is not 32-bit");
"enum is not 32-bit");
/* TODO: check which version PIXMAN_rgba_float16 ended up in;
guessing 0.47.0, but PR is currently stuck at 0.44.3 */
#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0, 44, 3)
return value_to_enum(
ctx,
(const char *[]){"auto", "8-bit", "10-bit", "16f-bit", NULL},
(int *)&conf->tweak.surface_bit_depth);
#else
return value_to_enum(
ctx,
(const char *[]){"auto", "8-bit", "10-bit", NULL},
(int *)&conf->tweak.surface_bit_depth);
#endif
}
else {