=?UTF-8?Q?Rico=20Sch=C3=BCller=20?=: d3dx9: Move transpose matrix into set_matrix().

Alexandre Julliard julliard at winehq.org
Fri Sep 14 10:54:21 CDT 2012


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

Author: Rico Schüller <kgbricola at web.de>
Date:   Fri Sep 14 10:56:20 2012 +0200

d3dx9: Move transpose matrix into set_matrix().

---

 dlls/d3dx9_36/effect.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index a063358..0a70128 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -886,7 +886,7 @@ static void get_matrix(struct d3dx_parameter *param, D3DXMATRIX *matrix)
     }
 }
 
-static void set_matrix(struct d3dx_parameter *param, CONST D3DXMATRIX *matrix)
+static void set_matrix(struct d3dx_parameter *param, const D3DXMATRIX *matrix, BOOL transpose)
 {
     UINT i, k;
 
@@ -894,7 +894,8 @@ static void set_matrix(struct d3dx_parameter *param, CONST D3DXMATRIX *matrix)
     {
         for (k = 0; k < param->columns; ++k)
         {
-            set_number((FLOAT *)param->data + i * param->columns + k, param->type, &matrix->u.m[i][k], D3DXPT_FLOAT);
+            set_number((FLOAT *)param->data + i * param->columns + k, param->type,
+                    transpose ? &matrix->u.m[k][i] : &matrix->u.m[i][k], D3DXPT_FLOAT);
         }
     }
 }
@@ -2178,7 +2179,7 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrix(ID3DXBaseEffect *iface, D3DX
         switch (param->class)
         {
             case D3DXPC_MATRIX_ROWS:
-                set_matrix(param, matrix);
+                set_matrix(param, matrix, FALSE);
                 return D3D_OK;
 
             case D3DXPC_SCALAR:
@@ -2250,7 +2251,7 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixArray(ID3DXBaseEffect *iface,
             case D3DXPC_MATRIX_ROWS:
                 for (i = 0; i < count; ++i)
                 {
-                    set_matrix(get_parameter_struct(param->member_handles[i]), &matrix[i]);
+                    set_matrix(get_parameter_struct(param->member_handles[i]), &matrix[i], FALSE);
                 }
                 return D3D_OK;
 
@@ -2328,7 +2329,7 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixPointerArray(ID3DXBaseEffect
             case D3DXPC_MATRIX_ROWS:
                 for (i = 0; i < count; ++i)
                 {
-                    set_matrix(get_parameter_struct(param->member_handles[i]), matrix[i]);
+                    set_matrix(get_parameter_struct(param->member_handles[i]), matrix[i], FALSE);
                 }
                 return D3D_OK;
 
@@ -2392,7 +2393,6 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixTranspose(ID3DXBaseEffect *if
 {
     struct ID3DXBaseEffectImpl *This = impl_from_ID3DXBaseEffect(iface);
     struct d3dx_parameter *param = get_valid_parameter(This, parameter);
-    D3DXMATRIX m;
 
     TRACE("iface %p, parameter %p, matrix %p\n", This, parameter, matrix);
 
@@ -2403,7 +2403,7 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixTranspose(ID3DXBaseEffect *if
         switch (param->class)
         {
             case D3DXPC_MATRIX_ROWS:
-                set_matrix(param, D3DXMatrixTranspose(&m, matrix));
+                set_matrix(param, matrix, TRUE);
                 return D3D_OK;
 
             case D3DXPC_SCALAR:
@@ -2466,7 +2466,6 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixTransposeArray(ID3DXBaseEffec
 {
     struct ID3DXBaseEffectImpl *This = impl_from_ID3DXBaseEffect(iface);
     struct d3dx_parameter *param = get_valid_parameter(This, parameter);
-    D3DXMATRIX m;
 
     TRACE("iface %p, parameter %p, matrix %p, count %u\n", This, parameter, matrix, count);
 
@@ -2481,7 +2480,7 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixTransposeArray(ID3DXBaseEffec
             case D3DXPC_MATRIX_ROWS:
                 for (i = 0; i < count; ++i)
                 {
-                    set_matrix(get_parameter_struct(param->member_handles[i]), D3DXMatrixTranspose(&m, &matrix[i]));
+                    set_matrix(get_parameter_struct(param->member_handles[i]), &matrix[i], TRUE);
                 }
                 return D3D_OK;
 
@@ -2550,7 +2549,6 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixTransposePointerArray(ID3DXBa
 {
     struct ID3DXBaseEffectImpl *This = impl_from_ID3DXBaseEffect(iface);
     struct d3dx_parameter *param = get_valid_parameter(This, parameter);
-    D3DXMATRIX m;
 
     TRACE("iface %p, parameter %p, matrix %p, count %u\n", This, parameter, matrix, count);
 
@@ -2563,7 +2561,7 @@ static HRESULT WINAPI ID3DXBaseEffectImpl_SetMatrixTransposePointerArray(ID3DXBa
             case D3DXPC_MATRIX_ROWS:
                 for (i = 0; i < count; ++i)
                 {
-                    set_matrix(get_parameter_struct(param->member_handles[i]), D3DXMatrixTranspose(&m, matrix[i]));
+                    set_matrix(get_parameter_struct(param->member_handles[i]), matrix[i], TRUE);
                 }
                 return D3D_OK;
 




More information about the wine-cvs mailing list