mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 10:30:08 +01:00
st/dri: Check format properties from format helpers
When populating DRI configs, driconf allows us to exclude 10bpc/RGBA/float configs. Rather than having a hardcoded set of formats which satisfy those properties, just check the actual format definitions. Signed-off-by: Daniel Stone <daniels@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27709>
This commit is contained in:
parent
4025845137
commit
ad0edea53a
1 changed files with 16 additions and 15 deletions
|
|
@ -386,26 +386,27 @@ dri_fill_in_modes(struct dri_screen *screen)
|
|||
|
||||
/* Expose only BGRA ordering if the loader doesn't support RGBA ordering. */
|
||||
if (!allow_rgba_ordering &&
|
||||
(pipe_formats[f] == PIPE_FORMAT_RGBA8888_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_RGBX8888_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_RGBA8888_SRGB ||
|
||||
pipe_formats[f] == PIPE_FORMAT_RGBX8888_SRGB ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R5G5B5A1_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R5G5B5X1_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R4G4B4A4_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R4G4B4X4_UNORM))
|
||||
util_format_get_component_shift(pipe_formats[f],
|
||||
UTIL_FORMAT_COLORSPACE_RGB, 0)
|
||||
#if UTIL_ARCH_BIG_ENDIAN
|
||||
>
|
||||
#else
|
||||
<
|
||||
#endif
|
||||
util_format_get_component_shift(pipe_formats[f],
|
||||
UTIL_FORMAT_COLORSPACE_RGB, 2))
|
||||
continue;
|
||||
|
||||
if (!allow_rgb10 &&
|
||||
(pipe_formats[f] == PIPE_FORMAT_B10G10R10A2_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_B10G10R10X2_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R10G10B10A2_UNORM ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R10G10B10X2_UNORM))
|
||||
util_format_get_component_bits(pipe_formats[f],
|
||||
UTIL_FORMAT_COLORSPACE_RGB, 0) == 10 &&
|
||||
util_format_get_component_bits(pipe_formats[f],
|
||||
UTIL_FORMAT_COLORSPACE_RGB, 1) == 10 &&
|
||||
util_format_get_component_bits(pipe_formats[f],
|
||||
UTIL_FORMAT_COLORSPACE_RGB, 2) == 10)
|
||||
continue;
|
||||
|
||||
if (!allow_fp16 &&
|
||||
(pipe_formats[f] == PIPE_FORMAT_R16G16B16A16_FLOAT ||
|
||||
pipe_formats[f] == PIPE_FORMAT_R16G16B16X16_FLOAT))
|
||||
if (!allow_fp16 && util_format_is_float(pipe_formats[f]))
|
||||
continue;
|
||||
|
||||
if (!p_screen->is_format_supported(p_screen, pipe_formats[f],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue