=?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