Module: wine Branch: master Commit: 632d2fca6e27b4498002f98c88add9559e3abed9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=632d2fca6e27b4498002f98c88...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Oct 1 09:18:56 2014 +0200
wined3d: Fix the pitch handling in the no-palette WINED3D_CT_P8 case.
---
dlls/wined3d/surface.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 272b5de..6672525 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -3161,6 +3161,7 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI UINT outpitch, enum wined3d_conversion_type conversion_type, struct wined3d_surface *surface) { const BYTE *source; + unsigned int x, y; BYTE *dest;
TRACE("src %p, dst %p, pitch %u, width %u, height %u, outpitch %u, conversion_type %#x, surface %p.\n", @@ -3171,7 +3172,6 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI case WINED3D_CT_P8: if (surface->container->swapchain && surface->container->swapchain->palette) { - unsigned int x, y; const struct wined3d_palette *palette = surface->container->swapchain->palette; for (y = 0; y < height; y++) { @@ -3199,9 +3199,11 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI * starting and we don't want the screen to flash in an ugly * color. */ FIXME("P8 surface loaded without a palette.\n"); - memset(dst, 0, height * outpitch); + for (y = 0; y < height; ++y) + { + memset(&dst[outpitch * y], 0, width * 4); + } } - break;
case WINED3D_CT_CK_B5G6R5: @@ -3216,7 +3218,6 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI Note2: Nvidia documents say that their driver does not support alpha + color keying on the same surface and disables color keying in such a case */ - unsigned int x, y; const WORD *Source; WORD *Dest;
@@ -3239,7 +3240,6 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI case WINED3D_CT_CK_B5G5R5X1: { /* Converting X1R5G5B5 format to R5G5B5A1 to emulate color-keying. */ - unsigned int x, y; const WORD *Source; WORD *Dest; TRACE("Color keyed 5551\n"); @@ -3260,9 +3260,7 @@ 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. */ - unsigned int x, y; for (y = 0; y < height; y++) { source = src + pitch * y; @@ -3277,13 +3275,10 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI dest += 4; } } - } - break; + break;
case WINED3D_CT_CK_B8G8R8X8: - { /* Converting X8R8G8B8 format to R8G8B8A8 with color-keying. */ - unsigned int x, y; for (y = 0; y < height; y++) { source = src + pitch * y; @@ -3298,12 +3293,9 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI dest += 4; } } - } - break; + break;
case WINED3D_CT_CK_B8G8R8A8: - { - unsigned int x, y; for (y = 0; y < height; ++y) { source = src + pitch * y; @@ -3318,8 +3310,7 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI dest += 4; } } - } - break; + break;
default: ERR("Unsupported conversion type %#x.\n", conversion_type);