Henri Verbeet : wined3d: Convert to WINED3DFMT_B8G8R8A8_UNORM for WINED3D_CT_CK_B8G8R8.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Oct 1 14:34:31 CDT 2014


Module: wine
Branch: master
Commit: 7579a96ac1bb91db154ae3b4cadfc6f232a35856
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7579a96ac1bb91db154ae3b4cadfc6f232a35856

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Wed Oct  1 09:18:59 2014 +0200

wined3d: Convert to WINED3DFMT_B8G8R8A8_UNORM for WINED3D_CT_CK_B8G8R8.

---

 dlls/wined3d/surface.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 2ee3db1..73b872f 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1606,7 +1606,7 @@ static void d3dfmt_get_conv(const struct wined3d_texture *texture, BOOL need_alp
     {
         {WINED3DFMT_B5G6R5_UNORM,   WINED3D_CT_CK_B5G6R5,   GL_RGB5_A1, GL_BGRA,    GL_UNSIGNED_SHORT_1_5_5_5_REV,  2},
         {WINED3DFMT_B5G5R5X1_UNORM, WINED3D_CT_CK_B5G5R5X1, GL_RGB5_A1, GL_BGRA,    GL_UNSIGNED_SHORT_1_5_5_5_REV,  2},
-        {WINED3DFMT_B8G8R8_UNORM,   WINED3D_CT_CK_B8G8R8,   GL_RGBA8,   GL_RGBA,    GL_UNSIGNED_INT_8_8_8_8,        4},
+        {WINED3DFMT_B8G8R8_UNORM,   WINED3D_CT_CK_B8G8R8,   GL_RGBA8,   GL_BGRA,    GL_UNSIGNED_INT_8_8_8_8_REV,    4},
         {WINED3DFMT_B8G8R8X8_UNORM, WINED3D_CT_CK_B8G8R8X8, GL_RGBA8,   GL_RGBA,    GL_UNSIGNED_INT_8_8_8_8,        4},
         {WINED3DFMT_B8G8R8A8_UNORM, WINED3D_CT_CK_B8G8R8A8, GL_RGBA8,   GL_BGRA,    GL_UNSIGNED_INT_8_8_8_8_REV,    4},
     };
@@ -3247,17 +3247,16 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI
         break;
 
         case WINED3D_CT_CK_B8G8R8:
-            /* Converting R8G8B8 format to R8G8B8A8 with color-keying. */
-            for (y = 0; y < height; y++)
+            for (y = 0; y < height; ++y)
             {
                 source = src + pitch * y;
                 dest = dst + outpitch * y;
-                for (x = 0; x < width; x++) {
-                    DWORD color = ((DWORD)source[0] << 16) + ((DWORD)source[1] << 8) + (DWORD)source[2] ;
-                    DWORD dstcolor = color << 8;
+                for (x = 0; x < width; ++x)
+                {
+                    DWORD color = ((DWORD)source[2] << 16) | ((DWORD)source[1] << 8) | (DWORD)source[0];
                     if (!color_in_range(&surface->container->src_blt_color_key, color))
-                        dstcolor |= 0xff;
-                    *(DWORD*)dest = dstcolor;
+                        color |= 0xff000000;
+                    *(DWORD *)dest = color;
                     source += 3;
                     dest += 4;
                 }




More information about the wine-cvs mailing list