[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