Stefan Dösinger : wined3d: Define the surface alignment in the header.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Oct 6 06:27:53 CDT 2006


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Thu Oct  5 21:36:19 2006 +0200

wined3d: Define the surface alignment in the header.

---

 dlls/wined3d/device.c          |   10 +++++-----
 dlls/wined3d/surface.c         |    2 +-
 dlls/wined3d/wined3d_private.h |    3 +++
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 82c8044..3ad28f8 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1016,7 +1016,7 @@ static HRESULT  WINAPI IWineD3DDeviceImp
        Size = ((max(pow2Width,4) * tableEntry->bpp) * max(pow2Height,4));
     } else {
        /* The pitch is a multiple of 4 bytes */
-       Size = ((pow2Width * tableEntry->bpp) + 3) & ~3;
+       Size = ((pow2Width * tableEntry->bpp) + SURFACE_ALIGNMENT - 1) & ~(SURFACE_ALIGNMENT - 1);
        Size *= pow2Height;
     }
 
@@ -1866,10 +1866,10 @@ #endif
         }
 
         /* Set the surface alignment. This never changes, so we are safe to set it once per context*/
-        glPixelStorei(GL_PACK_ALIGNMENT, 4);
-        checkGLcall("glPixelStorei(GL_PACK_ALIGNMENT, 4);");
-        glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
-        checkGLcall("glPixelStorei(GL_UNPACK_ALIGNMENT, 4);");
+        glPixelStorei(GL_PACK_ALIGNMENT, SURFACE_ALIGNMENT);
+        checkGLcall("glPixelStorei(GL_PACK_ALIGNMENT, SURFACE_ALIGNMENT);");
+        glPixelStorei(GL_UNPACK_ALIGNMENT, SURFACE_ALIGNMENT);
+        checkGLcall("glPixelStorei(GL_UNPACK_ALIGNMENT, SURFACE_ALIGNMENT);");
 
         LEAVE_GL();
 
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index be10b37..f78d651 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3021,7 +3021,7 @@ DWORD WINAPI IWineD3DSurfaceImpl_GetPitc
             ret = This->bytesPerPixel * This->pow2Width;
         }
         /* Surfaces are 32 bit aligned */
-        ret = (ret + 3) & ~3;
+        ret = (ret + SURFACE_ALIGNMENT - 1) & ~(SURFACE_ALIGNMENT - 1);
     }
     TRACE("(%p) Returning %d\n", This, ret);
     return ret;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index c9fb365..208ffa4 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -996,6 +996,9 @@ #define SFLAG_DONOTFREE  (SFLAG_OVERSIZE
 
 BOOL CalculateTexRect(IWineD3DSurfaceImpl *This, RECT *Rect, float glTexCoord[4]);
 
+/* Alignment of the pitch */
+#define SURFACE_ALIGNMENT 4
+
 /*****************************************************************************
  * IWineD3DVertexDeclaration implementation structure
  */




More information about the wine-cvs mailing list