[WINED3D 3/7] Merge D3DMATRIX types into one type in WINED3D namespace.

Ivan Gyurdiev ivg231 at gmail.com
Thu Oct 12 01:21:39 CDT 2006


-------------- next part --------------
---
 dlls/d3d8/device.c               |    9 ++++++---
 dlls/d3d9/device.c               |   12 +++++++++---
 dlls/ddraw/device.c              |    9 ++++++---
 dlls/ddraw/executebuffer.c       |    8 +++++---
 dlls/wined3d/device.c            |   20 ++++++++++----------
 dlls/wined3d/stateblock.c        |    6 +++---
 dlls/wined3d/utils.c             |    4 ++--
 dlls/wined3d/wined3d_private.h   |    4 ++--
 include/wine/wined3d_interface.h |    6 +++---
 include/wine/wined3d_types.h     |   12 ++++++++++++
 10 files changed, 58 insertions(+), 32 deletions(-)

diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index a2312e6..150abde 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -678,21 +678,24 @@ static HRESULT WINAPI IDirect3DDevice8Im
     IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
     TRACE("(%p) Relay\n" , This);
 
-    return IWineD3DDevice_SetTransform(This->WineD3DDevice, State, lpMatrix);
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_SetTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) lpMatrix);
 }
 
 static HRESULT WINAPI IDirect3DDevice8Impl_GetTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) {
     IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
     TRACE("(%p) Relay\n" , This);
 
-    return IWineD3DDevice_GetTransform(This->WineD3DDevice, State, pMatrix);
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_GetTransform(This->WineD3DDevice, State, (WINED3DMATRIX*) pMatrix);
 }
 
 static HRESULT WINAPI IDirect3DDevice8Impl_MultiplyTransform(LPDIRECT3DDEVICE8 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) {
     IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
     TRACE("(%p) Relay\n" , This);
 
-    return IWineD3DDevice_MultiplyTransform(This->WineD3DDevice, State, pMatrix);
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_MultiplyTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) pMatrix);
 }
 
 static HRESULT WINAPI IDirect3DDevice8Impl_SetViewport(LPDIRECT3DDEVICE8 iface, CONST D3DVIEWPORT8* pViewport) {
diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c
index 7bec1e9..ff5eada 100644
--- a/dlls/d3d9/device.c
+++ b/dlls/d3d9/device.c
@@ -464,19 +464,25 @@ static HRESULT  WINAPI  IDirect3DDevice9
 static HRESULT  WINAPI  IDirect3DDevice9Impl_SetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* lpMatrix) {
     IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
     TRACE("(%p) Relay\n" , This);
-    return IWineD3DDevice_SetTransform(This->WineD3DDevice, State, lpMatrix);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_SetTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) lpMatrix);
 }
 
 static HRESULT  WINAPI  IDirect3DDevice9Impl_GetTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) {
     IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
     TRACE("(%p) Relay\n" , This);
-    return IWineD3DDevice_GetTransform(This->WineD3DDevice, State, pMatrix);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_GetTransform(This->WineD3DDevice, State, (WINED3DMATRIX*) pMatrix);
 }
 
 static HRESULT  WINAPI  IDirect3DDevice9Impl_MultiplyTransform(LPDIRECT3DDEVICE9 iface, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) {
     IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
     TRACE("(%p) Relay\n" , This);
-    return IWineD3DDevice_MultiplyTransform(This->WineD3DDevice, State, pMatrix);
+
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_MultiplyTransform(This->WineD3DDevice, State, (CONST WINED3DMATRIX*) pMatrix);
 }
 
 static HRESULT  WINAPI  IDirect3DDevice9Impl_SetViewport(LPDIRECT3DDEVICE9 iface, CONST D3DVIEWPORT9* pViewport) {
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index c276a2e..78ed293 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -2589,9 +2589,10 @@ IDirect3DDeviceImpl_7_SetTransform(IDire
        Unhandled: D3DTRANSFORMSTATE_WORLD3
      */
 
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
     return IWineD3DDevice_SetTransform(This->wineD3DDevice,
                                        type,
-                                       Matrix);
+                                       (WINED3DMATRIX*) Matrix);
 }
 
 static HRESULT WINAPI
@@ -2660,7 +2661,8 @@ IDirect3DDeviceImpl_7_GetTransform(IDire
        Unhandled: D3DTRANSFORMSTATE_WORLD3
      */
 
-    return IWineD3DDevice_GetTransform(This->wineD3DDevice, type, Matrix);
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+    return IWineD3DDevice_GetTransform(This->wineD3DDevice, type, (WINED3DMATRIX*) Matrix);
 }
 
 static HRESULT WINAPI
@@ -2726,9 +2728,10 @@ IDirect3DDeviceImpl_7_MultiplyTransform(
        Unhandled: D3DTRANSFORMSTATE_WORLD3
      */
 
+    /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
     return IWineD3DDevice_MultiplyTransform(This->wineD3DDevice,
                                             TransformStateType,
-                                            D3DMatrix);
+                                            (WINED3DMATRIX*) D3DMatrix);
 }
 
 static HRESULT WINAPI
diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c
index 306575b..2b9d097 100644
--- a/dlls/ddraw/executebuffer.c
+++ b/dlls/ddraw/executebuffer.c
@@ -325,17 +325,19 @@ IDirect3DExecuteBufferImpl_Execute(IDire
                 TRACE("PROCESSVERTICES  (%d)\n", count);
 
                 /* Get the transform and world matrix */
+                /* Note: D3DMATRIX is compatible with WINED3DMATRIX */
+
                 IWineD3DDevice_GetTransform(lpDevice->wineD3DDevice,
                                             D3DTRANSFORMSTATE_VIEW,
-                                            &view_mat);
+                                            (WINED3DMATRIX*) &view_mat);
 
                 IWineD3DDevice_GetTransform(lpDevice->wineD3DDevice,
                                             D3DTRANSFORMSTATE_PROJECTION,
-                                            &proj_mat);
+                                            (WINED3DMATRIX*) &proj_mat);
 
                 IWineD3DDevice_GetTransform(lpDevice->wineD3DDevice,
                                             D3DTRANSFORMSTATE_WORLD,
-                                            &world_mat);
+                                            (WINED3DMATRIX*) &world_mat);
 
 		for (i = 0; i < count; i++) {
 		    LPD3DPROCESSVERTICES ci = (LPD3DPROCESSVERTICES) instr;
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 288e7a3..6de22f7 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2506,7 +2506,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
 /*****
  * Get / Set & Multiply Transform
  *****/
-static HRESULT  WINAPI  IWineD3DDeviceImpl_SetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE d3dts, CONST D3DMATRIX* lpmatrix) {
+static HRESULT  WINAPI  IWineD3DDeviceImpl_SetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE d3dts, CONST WINED3DMATRIX* lpmatrix) {
     IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
 
     /* Most of this routine, comments included copied from ddraw tree initially: */
@@ -2517,7 +2517,7 @@ static HRESULT  WINAPI  IWineD3DDeviceIm
         TRACE("Recording... not performing anything\n");
         This->updateStateBlock->changed.transform[d3dts] = TRUE;
         This->updateStateBlock->set.transform[d3dts]     = TRUE;
-        memcpy(&This->updateStateBlock->transforms[d3dts], lpmatrix, sizeof(D3DMATRIX));
+        memcpy(&This->updateStateBlock->transforms[d3dts], lpmatrix, sizeof(WINED3DMATRIX));
         return WINED3D_OK;
     }
 
@@ -2529,7 +2529,7 @@ static HRESULT  WINAPI  IWineD3DDeviceIm
      *
      * From here on we assume that the new matrix is different, wherever it matters.
      */
-    if (!memcmp(&This->stateBlock->transforms[d3dts].u.m[0][0], lpmatrix, sizeof(D3DMATRIX))) {
+    if (!memcmp(&This->stateBlock->transforms[d3dts].u.m[0][0], lpmatrix, sizeof(WINED3DMATRIX))) {
         TRACE("The app is setting the same matrix over again\n");
         return WINED3D_OK;
     } else {
@@ -2610,16 +2610,16 @@ static HRESULT  WINAPI  IWineD3DDeviceIm
     return WINED3D_OK;
 
 }
-static HRESULT WINAPI IWineD3DDeviceImpl_GetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix) {
+static HRESULT WINAPI IWineD3DDeviceImpl_GetTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE State, WINED3DMATRIX* pMatrix) {
     IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
     TRACE("(%p) : for Transform State %s\n", This, debug_d3dtstype(State));
-    memcpy(pMatrix, &This->stateBlock->transforms[State], sizeof(D3DMATRIX));
+    memcpy(pMatrix, &This->stateBlock->transforms[State], sizeof(WINED3DMATRIX));
     return WINED3D_OK;
 }
 
-static HRESULT WINAPI IWineD3DDeviceImpl_MultiplyTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix) {
-    D3DMATRIX *mat = NULL;
-    D3DMATRIX temp;
+static HRESULT WINAPI IWineD3DDeviceImpl_MultiplyTransform(IWineD3DDevice *iface, WINED3DTRANSFORMSTATETYPE State, CONST WINED3DMATRIX* pMatrix) {
+    WINED3DMATRIX *mat = NULL;
+    WINED3DMATRIX temp;
 
     /* Note: Using 'updateStateBlock' rather than 'stateblock' in the code
      * below means it will be recorded in a state block change, but it
@@ -2636,7 +2636,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
         FIXME("Unhandled transform state!!\n");
     }
 
-    multiply_matrix(&temp, mat, (D3DMATRIX *) pMatrix);
+    multiply_matrix(&temp, mat, (WINED3DMATRIX *) pMatrix);
 
     /* Apply change via set transform - will reapply to eg. lights this way */
     return IWineD3DDeviceImpl_SetTransform(iface, State, &temp);
@@ -5084,7 +5084,7 @@ process_vertices_strided(IWineD3DDeviceI
     unsigned int i;
     DWORD DestFVF = dest->fvf;
     WINED3DVIEWPORT vp;
-    D3DMATRIX mat, proj_mat, view_mat, world_mat;
+    WINED3DMATRIX mat, proj_mat, view_mat, world_mat;
     BOOL doClip;
     int numTextures;
 
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index cd6c58b..c86c490 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -182,7 +182,7 @@ void stateblock_copy(
     memcpy(Dest->streamSource, This->streamSource, sizeof(IWineD3DVertexBuffer*) * MAX_STREAMS);
     memcpy(Dest->streamFreq,   This->streamFreq,   sizeof(UINT) * MAX_STREAMS);
     memcpy(Dest->streamFlags,  This->streamFlags,  sizeof(UINT) * MAX_STREAMS);
-    memcpy(Dest->transforms,   This->transforms,   sizeof(D3DMATRIX) * (HIGHEST_TRANSFORMSTATE + 1));
+    memcpy(Dest->transforms,   This->transforms,   sizeof(WINED3DMATRIX) * (HIGHEST_TRANSFORMSTATE + 1));
     memcpy(Dest->clipplane,    This->clipplane,    sizeof(double) * MAX_CLIPPLANES * 4);
     memcpy(Dest->renderState,  This->renderState,  sizeof(DWORD) * (WINEHIGHEST_RENDER_STATE + 1));
     memcpy(Dest->textures,     This->textures,     sizeof(IWineD3DBaseTexture*) * MAX_SAMPLERS);
@@ -487,9 +487,9 @@ static HRESULT  WINAPI IWineD3DStateBloc
         for (i = 1; i <= HIGHEST_TRANSFORMSTATE; i++) {
             if (This->set.transform[i] && memcmp(&targetStateBlock->transforms[i],
                                     &This->transforms[i],
-                                    sizeof(D3DMATRIX)) != 0) {
+                                    sizeof(WINED3DMATRIX)) != 0) {
                 TRACE("Updating transform %d\n", i);
-                memcpy(&This->transforms[i], &targetStateBlock->transforms[i], sizeof(D3DMATRIX));
+                memcpy(&This->transforms[i], &targetStateBlock->transforms[i], sizeof(WINED3DMATRIX));
             }
         }
 
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 12fbbb2..ce3bebc 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -2450,8 +2450,8 @@ WINED3DFORMAT pixelformat_for_depth(DWOR
     }
 }
 
-void multiply_matrix(D3DMATRIX *dest, D3DMATRIX *src1, D3DMATRIX *src2) {
-    D3DMATRIX temp;
+void multiply_matrix(WINED3DMATRIX *dest, WINED3DMATRIX *src1, WINED3DMATRIX *src2) {
+    WINED3DMATRIX temp;
 
     /* Now do the multiplication 'by hand'.
        I know that all this could be optimised, but this will be done later :-) */
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 4bc8863..b013382 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1111,7 +1111,7 @@ struct IWineD3DStateBlockImpl
     UINT                      baseVertexIndex; /* Note: only used for d3d8 */
 
     /* Transform */
-    D3DMATRIX                 transforms[HIGHEST_TRANSFORMSTATE + 1];
+    WINED3DMATRIX             transforms[HIGHEST_TRANSFORMSTATE + 1];
 
     /* Lights */
     PLIGHTINFOEL             *lights; /* NOTE: active GL lights must be front of the chain */
@@ -1269,7 +1269,7 @@ void   set_texture_matrix(const float *s
 int D3DFmtMakeGlCfg(WINED3DFORMAT BackBufferFormat, WINED3DFORMAT StencilBufferFormat, int *attribs, int* nAttribs, BOOL alternate);
 
 /* Math utils */
-void multiply_matrix(D3DMATRIX *dest, D3DMATRIX *src1, D3DMATRIX *src2);
+void multiply_matrix(WINED3DMATRIX *dest, WINED3DMATRIX *src1, WINED3DMATRIX *src2);
 
 /*****************************************************************************
  * To enable calling of inherited functions, requires prototypes 
diff --git a/include/wine/wined3d_interface.h b/include/wine/wined3d_interface.h
index 8f6a3fd..01a9d74 100644
--- a/include/wine/wined3d_interface.h
+++ b/include/wine/wined3d_interface.h
@@ -425,8 +425,8 @@ DECLARE_INTERFACE_(IWineD3DDevice,IWineD
     STDMETHOD(GetTexture)(THIS_ DWORD Stage, struct IWineD3DBaseTexture** ppTexture) PURE;
     STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, WINED3DTEXTURESTAGESTATETYPE Type,DWORD Value) PURE;
     STDMETHOD(GetTextureStageState)(THIS_ DWORD Stage, WINED3DTEXTURESTAGESTATETYPE Type,DWORD *pValue) PURE;
-    STDMETHOD(SetTransform)(THIS_ WINED3DTRANSFORMSTATETYPE  State, CONST D3DMATRIX * pMatrix) PURE;
-    STDMETHOD(GetTransform)(THIS_ WINED3DTRANSFORMSTATETYPE  State, D3DMATRIX * pMatrix) PURE;
+    STDMETHOD(SetTransform)(THIS_ WINED3DTRANSFORMSTATETYPE  State, CONST WINED3DMATRIX * pMatrix) PURE;
+    STDMETHOD(GetTransform)(THIS_ WINED3DTRANSFORMSTATETYPE  State, WINED3DMATRIX * pMatrix) PURE;
     STDMETHOD(SetVertexDeclaration)(THIS_ struct IWineD3DVertexDeclaration* pDecl) PURE;
     STDMETHOD(GetVertexDeclaration)(THIS_ struct IWineD3DVertexDeclaration** ppDecl) PURE;
     STDMETHOD(SetVertexShader)(THIS_ struct IWineD3DVertexShader* pShader) PURE;
@@ -439,7 +439,7 @@ DECLARE_INTERFACE_(IWineD3DDevice,IWineD
     STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT StartRegister, float*       pConstantData, UINT Vector4fCount) PURE;
     STDMETHOD(SetViewport)(THIS_ CONST WINED3DVIEWPORT * pViewport) PURE;
     STDMETHOD(GetViewport)(THIS_ WINED3DVIEWPORT * pViewport) PURE;
-    STDMETHOD(MultiplyTransform)(THIS_ WINED3DTRANSFORMSTATETYPE  State, CONST D3DMATRIX * pMatrix) PURE;
+    STDMETHOD(MultiplyTransform)(THIS_ WINED3DTRANSFORMSTATETYPE  State, CONST WINED3DMATRIX * pMatrix) PURE;
     STDMETHOD(ValidateDevice)(THIS_ DWORD* pNumPasses) PURE;
     STDMETHOD(ProcessVertices)(THIS_ UINT SrcStartIndex, UINT DestIndex, UINT VertexCount, struct IWineD3DVertexBuffer* pDestBuffer, struct IWineD3DVertexBuffer* pVertexDecl, DWORD Flags) PURE;
     STDMETHOD(BeginStateBlock)(THIS) PURE;
diff --git a/include/wine/wined3d_types.h b/include/wine/wined3d_types.h
index 90bdcf9..ccd588f 100644
--- a/include/wine/wined3d_types.h
+++ b/include/wine/wined3d_types.h
@@ -52,6 +52,18 @@ typedef struct _WINED3DVECTOR {
     float z;
 } WINED3DVECTOR;
 
+typedef struct _WINED3DMATRIX {
+    union {
+        struct {
+            float        _11, _12, _13, _14;
+            float        _21, _22, _23, _24;
+            float        _31, _32, _33, _34;
+            float        _41, _42, _43, _44;
+        } DUMMYSTRUCTNAME;
+        float m[4][4];
+    } DUMMYUNIONNAME;
+} WINED3DMATRIX;
+
 typedef struct _WINED3DLIGHT {
     WINED3DLIGHTTYPE    Type;
     WINED3DCOLORVALUE   Diffuse;
-- 
1.4.2.1



More information about the wine-patches mailing list