38 lines
1.7 KiB
Diff
38 lines
1.7 KiB
Diff
|
diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c
|
||
|
index 2e9ce01147a..15dde5152b8 100644
|
||
|
--- a/src/gallium/frontends/dri/dri_screen.c
|
||
|
+++ b/src/gallium/frontends/dri/dri_screen.c
|
||
|
@@ -386,21 +386,16 @@ dri_fill_in_modes(struct dri_screen *screen)
|
||
|
uint8_t msaa_modes[MSAA_VISUAL_MAX_SAMPLES];
|
||
|
|
||
|
/* Expose only BGRA ordering if the loader doesn't support RGBA ordering. */
|
||
|
- if (!allow_rgba_ordering) {
|
||
|
- unsigned sh_ax = util_format_get_component_shift(pipe_formats[f], UTIL_FORMAT_COLORSPACE_RGB, 3);
|
||
|
- unsigned sh_b = util_format_get_component_shift(pipe_formats[f], UTIL_FORMAT_COLORSPACE_RGB, 2);
|
||
|
-#if UTIL_ARCH_BIG_ENDIAN
|
||
|
- unsigned sz_b = util_format_get_component_bits(pipe_formats[f], UTIL_FORMAT_COLORSPACE_RGB, 2);
|
||
|
-
|
||
|
- if (sz_b + sh_b == sh_ax)
|
||
|
- continue;
|
||
|
-#else
|
||
|
- unsigned sz_ax = util_format_get_component_bits(pipe_formats[f], UTIL_FORMAT_COLORSPACE_RGB, 3);
|
||
|
-
|
||
|
- if (sz_ax + sh_ax == sh_b)
|
||
|
- continue;
|
||
|
-#endif
|
||
|
- }
|
||
|
+ 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))
|
||
|
+ continue;
|
||
|
|
||
|
if (!allow_rgb10 &&
|
||
|
util_format_get_component_bits(pipe_formats[f],
|
||
|
|