winsys/gdi: Handle R8G8B8 formats

R8G8B8 is often used by d3d11 applications.

Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Reviewed-by: Feng Jiang <jiangfeng@kylinos.cn>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27333>
This commit is contained in:
Max R
2024-01-29 12:49:17 +03:00
committed by Marge Bot
parent 01636ee700
commit be4b1c2639
@@ -82,6 +82,8 @@ gdi_sw_is_displaytarget_format_supported( struct sw_winsys *ws,
case PIPE_FORMAT_B5G5R5A1_UNORM:
case PIPE_FORMAT_B4G4R4A4_UNORM:
case PIPE_FORMAT_R10G10B10A2_UNORM:
case PIPE_FORMAT_R8G8B8X8_UNORM:
case PIPE_FORMAT_R8G8B8A8_UNORM:
return true;
/* TODO: Support other formats possible with BMPs, as described in
@@ -181,6 +183,11 @@ gdi_sw_displaytarget_create(struct sw_winsys *winsys,
gdt->bmi.bV5RedMask = 0x000003FF;
gdt->bmi.bV5GreenMask = 0x000FFC00;
gdt->bmi.bV5BlueMask = 0x3FF00000;
} else if (format == PIPE_FORMAT_R8G8B8X8_UNORM || format == PIPE_FORMAT_R8G8B8A8_UNORM) {
gdt->bmi.bV5Compression = BI_BITFIELDS;
gdt->bmi.bV5RedMask = 0x0000ff;
gdt->bmi.bV5GreenMask = 0x00ff00;
gdt->bmi.bV5BlueMask = 0xff0000;
}
*stride = gdt->stride;