Exposes RGBA 10 10 10 2 and 10 10 10 0 visuals and fbconfigs for rendering.
Signed-off-by: Mario Kleiner <mario.kleiner...@gmail.com> --- src/gallium/state_trackers/dri/dri_screen.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/gallium/state_trackers/dri/dri_screen.c b/src/gallium/state_trackers/dri/dri_screen.c index 91f50fe..04afe71 100644 --- a/src/gallium/state_trackers/dri/dri_screen.c +++ b/src/gallium/state_trackers/dri/dri_screen.c @@ -106,6 +106,8 @@ static const __DRIconfig ** dri_fill_in_modes(struct dri_screen *screen) { static const mesa_format mesa_formats[] = { + MESA_FORMAT_B10G10R10A2_UNORM, + MESA_FORMAT_B10G10R10X2_UNORM, MESA_FORMAT_B8G8R8A8_UNORM, MESA_FORMAT_B8G8R8X8_UNORM, MESA_FORMAT_B8G8R8A8_SRGB, @@ -134,6 +136,8 @@ dri_fill_in_modes(struct dri_screen *screen) MESA_FORMAT_R8G8B8X8_UNORM, }; static const enum pipe_format pipe_formats[] = { + PIPE_FORMAT_B10G10R10A2_UNORM, + PIPE_FORMAT_B10G10R10X2_UNORM, PIPE_FORMAT_BGRA8888_UNORM, PIPE_FORMAT_BGRX8888_UNORM, PIPE_FORMAT_BGRA8888_SRGB, @@ -219,7 +223,7 @@ dri_fill_in_modes(struct dri_screen *screen) if (dri_loader_get_cap(screen, DRI_LOADER_CAP_RGBA_ORDERING)) num_formats = ARRAY_SIZE(mesa_formats); else - num_formats = 5; + num_formats = ARRAY_SIZE(mesa_formats) - 2; /* all - RGBA_ORDERING formats */ /* Add configs. */ for (format = 0; format < num_formats; format++) { @@ -287,6 +291,15 @@ dri_fill_st_visual(struct st_visual *stvis, struct dri_screen *screen, /* Deduce the color format. */ switch (mode->redMask) { + case 0x3FF00000: + if (mode->alphaMask) { + assert(mode->alphaMask == 0xC0000000); + stvis->color_format = PIPE_FORMAT_B10G10R10A2_UNORM; + } else { + stvis->color_format = PIPE_FORMAT_B10G10R10X2_UNORM; + } + break; + case 0x00FF0000: if (mode->alphaMask) { assert(mode->alphaMask == 0xFF000000); -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev