=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: d3dx9: Implement ID3DXConstantTable:: SetBoolArray.

Alexandre Julliard julliard at winehq.org
Thu Aug 16 15:26:14 CDT 2012


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

Author: Józef Kucia <joseph.kucia at gmail.com>
Date:   Thu Aug 16 17:21:18 2012 +0200

d3dx9: Implement ID3DXConstantTable::SetBoolArray.

---

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

diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 350b83a..800622c 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -953,9 +953,9 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetBoolArray(ID3DXConstantTable *if
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
-    FIXME("(%p)->(%p, %p, %p, %d): stub\n", This, device, constant, b, count);
+    TRACE("(%p)->(%p, %p, %p, %d)\n", This, device, constant, b, count);
 
-    return E_NOTIMPL;
+    return set_scalar_array(iface, device, constant, b, count, D3DXPT_BOOL);
 }
 
 static HRESULT WINAPI ID3DXConstantTableImpl_SetInt(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device, D3DXHANDLE constant, INT n)
diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c
index bdccb96..91001be 100644
--- a/dlls/d3dx9_36/tests/shader.c
+++ b/dlls/d3dx9_36/tests/shader.c
@@ -621,6 +621,7 @@ static void test_setting_arrays_table(IDirect3DDevice9 *device)
     static const D3DXVECTOR4 fvecarray[2] = {
         {0.745f, 0.997f, 0.353f, 0.237f},
         {0.060f, 0.455f, 0.333f, 0.983f}};
+    static BOOL barray[4] = {FALSE, 100, TRUE, TRUE};
 
     ID3DXConstantTable *ctable;
 
@@ -672,6 +673,9 @@ static void test_setting_arrays_table(IDirect3DDevice9 *device)
     res = ID3DXConstantTable_SetMatrixArray(ctable, device, "fmtxarray", fmtxarray, 2);
     ok(res == D3D_OK, "ID3DXConstantTable_SetMatrixArray failed: got 0x%08x\n", res);
 
+    res = ID3DXConstantTable_SetBoolArray(ctable, device, "barray", barray, 2);
+    ok(res == D3D_OK, "ID3DXConstantTable_SetBoolArray failed: got 0x%08x\n", res);
+
     /* Read back constants */
     IDirect3DDevice9_GetVertexShaderConstantF(device, 8, out, 4);
     ok(out[0] == farray[0] && out[4] == farray[1] && out[8] == farray[2] && out[12] == farray[3],
@@ -686,6 +690,13 @@ static void test_setting_arrays_table(IDirect3DDevice9 *device)
             fvecarray[0].x, fvecarray[0].y, fvecarray[0].z, fvecarray[0].w, fvecarray[1].x, fvecarray[1].y,
             fvecarray[1].z, fvecarray[1].w);
 
+    IDirect3DDevice9_GetVertexShaderConstantF(device, 14, out, 2);
+    ok(out[0] == 0.0f && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f
+            && out[4] == 1.0f && out[5] == 0.0f && out[6] == 0.0f && out[7] == 0.0f,
+            "The variable barray was not set correctly, out={%f, %f %f, %f; %f, %f, %f, %f}, should be {%f, %f, %f, %f; %f, %f, %f, %f}\n",
+            out[0], out[1], out[2], out[3], out[4], out[5], out[6], out[7],
+            0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f);
+
     IDirect3DDevice9_GetVertexShaderConstantF(device, 0, out, 8);
     /* Just check a few elements in each matrix to make sure fmtxarray was set row-major */
     ok(out[0] == S(U(fmtxarray[0]))._11 && out[1] == S(U(fmtxarray[0]))._12 && out[2] == S(U(fmtxarray[0]))._13 && out[3] == S(U(fmtxarray[0]))._14,




More information about the wine-cvs mailing list