st/dri: Add support for BGR[A/X]1010102 formats.
Exposes RGBA 10 10 10 2 and 10 10 10 0 visuals and fbconfigs for rendering. Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Signed-off-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
committed by
Marek Olšák
parent
ef99597d95
commit
e5ff036c67
@@ -108,6 +108,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,
|
||||
@@ -136,6 +138,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,
|
||||
@@ -221,7 +225,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 = ARRAY_SIZE(mesa_formats) - 2;
|
||||
num_formats = ARRAY_SIZE(mesa_formats) - 2; /* all - RGBA_ORDERING formats */
|
||||
|
||||
/* Add configs. */
|
||||
for (format = 0; format < num_formats; format++) {
|
||||
@@ -289,6 +293,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);
|
||||
|
||||
Reference in New Issue
Block a user