=?UTF-8?Q?Rico=20Sch=C3=BCller=20?=: d3dx9: Handle D3DXPC_VECTOR in set_matrix_array().

Alexandre Julliard julliard at winehq.org
Tue Aug 28 14:44:41 CDT 2012


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

Author: Rico Schüller <kgbricola at web.de>
Date:   Tue Aug 28 13:43:04 2012 +0200

d3dx9: Handle D3DXPC_VECTOR in set_matrix_array().

---

 dlls/d3dx9_36/shader.c       |    5 ++++-
 dlls/d3dx9_36/tests/shader.c |    2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 832ba40..fa72cfc 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -1177,6 +1177,7 @@ static HRESULT set_matrix_array(ID3DXConstantTable *iface, IDirect3DDevice9 *dev
 
     if (desc->Class == D3DXPC_MATRIX_ROWS
         || desc->Class == D3DXPC_MATRIX_COLUMNS
+        || desc->Class == D3DXPC_VECTOR
         || desc->Class == D3DXPC_SCALAR)
     {
         if (desc->Class == class) row_offset = 4;
@@ -1184,6 +1185,8 @@ static HRESULT set_matrix_array(ID3DXConstantTable *iface, IDirect3DDevice9 *dev
 
         if (class == D3DXPC_MATRIX_ROWS)
         {
+            if (desc->Class == D3DXPC_VECTOR) return D3D_OK;
+
             num_rows = min(desc->Rows, rows);
             num_columns = min(desc->Columns, columns);
         }
@@ -1198,7 +1201,7 @@ static HRESULT set_matrix_array(ID3DXConstantTable *iface, IDirect3DDevice9 *dev
     else
     {
         FIXME("Unhandled variable class %s\n", debug_d3dxparameter_class(desc->Class));
-        return D3D_OK;
+        return E_NOTIMPL;
     }
 
     switch (desc->RegisterSet)
diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c
index cd69a34..2792327 100644
--- a/dlls/d3dx9_36/tests/shader.c
+++ b/dlls/d3dx9_36/tests/shader.c
@@ -707,7 +707,7 @@ static void test_setting_basic_table(IDirect3DDevice9 *device)
     ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixTranspose failed on variable f4: 0x%08x\n", res);
 
     IDirect3DDevice9_GetVertexShaderConstantF(device, 7, out, 1);
-    todo_wine ok(out[0] == S(U(mvp))._11 && out[1] == S(U(mvp))._21 && out[2] == S(U(mvp))._31 && out[3] == S(U(mvp))._41,
+    ok(out[0] == S(U(mvp))._11 && out[1] == S(U(mvp))._21 && out[2] == S(U(mvp))._31 && out[3] == S(U(mvp))._41,
             "The variable f4 was not set correctly by ID3DXConstantTable_SetMatrixTranspose, "
             "got {%f, %f, %f, %f}, should be {%f, %f, %f, %f}\n",
             out[0], out[1], out[2], out[3],




More information about the wine-cvs mailing list