Module: wine Branch: master Commit: 1e5b45cb0da007bfc72b2ef153cffb1a25fcdfca URL: https://gitlab.winehq.org/wine/wine/-/commit/1e5b45cb0da007bfc72b2ef153cffb1...
Author: Rémi Bernon rbernon@codeweavers.com Date: Thu Jun 6 08:59:06 2024 +0200
winex11: Wrap more window surface formats with NtGdiDdDDICreateDCFromMemory.
---
dlls/winex11.drv/bitblt.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/bitblt.c b/dlls/winex11.drv/bitblt.c index 8a001606420..d7d5c93ea64 100644 --- a/dlls/winex11.drv/bitblt.c +++ b/dlls/winex11.drv/bitblt.c @@ -1887,10 +1887,22 @@ static UINT get_dib_d3dddifmt( const BITMAPINFO *info ) if (info->bmiHeader.biCompression == BI_BITFIELDS) { DWORD *colors = (DWORD *)info->bmiColors; - if (info->bmiHeader.biBitCount != 16) return D3DDDIFMT_UNKNOWN; - if (colors[0] == 0x0000f800 && colors[1] == 0x000007e0 && colors[2] == 0x0000001f) return D3DDDIFMT_R5G6B5; - if (colors[0] == 0x00007c00 && colors[1] == 0x000003e0 && colors[2] == 0x0000001f) return D3DDDIFMT_A1R5G5B5; - if (colors[0] == 0x00000f00 && colors[1] == 0x000000f0 && colors[2] == 0x0000000f) return D3DDDIFMT_A4R4G4B4; + + if (info->bmiHeader.biBitCount == 16) + { + if (colors[0] == 0x0000f800 && colors[1] == 0x000007e0 && colors[2] == 0x0000001f) return D3DDDIFMT_R5G6B5; + if (colors[0] == 0x00007c00 && colors[1] == 0x000003e0 && colors[2] == 0x0000001f) return D3DDDIFMT_A1R5G5B5; + if (colors[0] == 0x00000f00 && colors[1] == 0x000000f0 && colors[2] == 0x0000000f) return D3DDDIFMT_A4R4G4B4; + } + else if (info->bmiHeader.biBitCount == 24) + { + if (colors[0] == 0x00ff0000 && colors[1] == 0x0000ff00 && colors[2] == 0x000000ff) return D3DDDIFMT_R8G8B8; + } + else if (info->bmiHeader.biBitCount == 32) + { + if (colors[0] == 0x00ff0000 && colors[1] == 0x0000ff00 && colors[2] == 0x000000ff) return D3DDDIFMT_X8R8G8B8; + } + return D3DDDIFMT_UNKNOWN; }