intel/isl: Fix map between sRGB and linear formats

Some SRGB formats don't get the expected linear counterparts in
isl_format_srgb_to_linear() in the generated isl_format_layout.c.

The replace() of string in python returns the unchanged input
string when no replacement occurred, so the first rule
('_SRGB', '') returns the original SRGB format name that passes
the following check unintendedly.

Another quirk is needed for a pair of formats not following
the patterns of other formats.

Signed-off-by: Zhang, Jianxun <jianxun.zhang@intel.com>
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22247>
This commit is contained in:
Zhang, Jianxun 2023-03-31 20:35:13 -07:00 committed by Marge Bot
parent 1404c180e9
commit 7f84eee3c6

View file

@ -253,12 +253,14 @@ def get_srgb_to_linear_map(formats):
('_SRGB', ''),
('SRGB', 'RGB'),
('U8SRGB', 'FLT16'),
# Quirk: ETC2_EAC_SRGB8_A8 -> ETC2_EAC_RGBA8
('SRGB8_A8', 'RGBA8'),
]
found = False
for rep in replacements:
rgb_name = fmt.name.replace(rep[0], rep[1])
if rgb_name in names:
if rgb_name in names and rgb_name != fmt.name:
found = True
yield fmt.name, rgb_name
break