From 53ce2a240b0f69f1a301121753d91e3bb61ab422 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B3zef=20Kucia?= Date: Thu, 16 Aug 2012 17:21:22 +0200 Subject: [PATCH] d3dx9: Fix ID3DXConstantTable::SetVector. --- dlls/d3dx9_36/shader.c | 25 ++----------------------- dlls/d3dx9_36/tests/shader.c | 3 ++- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c index 4dee6413bd8..900459e34a4 100644 --- a/dlls/d3dx9_36/shader.c +++ b/dlls/d3dx9_36/shader.c @@ -1158,38 +1158,17 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetVector(ID3DXConstantTable *iface TRACE("(%p)->(%p, %p, %p)\n", This, device, constant, vector); - return ID3DXConstantTable_SetVectorArray(iface, device, constant, vector, 1); + return set_vector_array(iface, device, constant, vector, 1, D3DXPT_FLOAT); } static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device, D3DXHANDLE constant, CONST D3DXVECTOR4 *vector, UINT count) { struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface); - D3DXCONSTANT_DESC desc; - HRESULT hr; - UINT desc_count = 1; TRACE("(%p)->(%p, %p, %p, %d)\n", This, device, constant, vector, count); - hr = ID3DXConstantTable_GetConstantDesc(iface, constant, &desc, &desc_count); - if (FAILED(hr)) - { - TRACE("ID3DXConstantTable_GetConstantDesc failed: %08x\n", hr); - return D3DERR_INVALIDCALL; - } - - switch (desc.RegisterSet) - { - case D3DXRS_FLOAT4: - set_float_shader_constant(This, device, desc.RegisterIndex, (float *)vector, - min(desc.RegisterCount, count)); - break; - default: - FIXME("Handle other register sets\n"); - return E_NOTIMPL; - } - - return D3D_OK; + return set_vector_array(iface, device, constant, vector, count, D3DXPT_FLOAT); } static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrix(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device, diff --git a/dlls/d3dx9_36/tests/shader.c b/dlls/d3dx9_36/tests/shader.c index a371642ce62..18636d9f07f 100644 --- a/dlls/d3dx9_36/tests/shader.c +++ b/dlls/d3dx9_36/tests/shader.c @@ -632,7 +632,8 @@ static void test_setting_basic_table(IDirect3DDevice9 *device) ok(res == D3D_OK, "ID3DXConstantTable_SetVector failed on variable f: 0x%08x\n", res); IDirect3DDevice9_GetVertexShaderConstantF(device, 6, out, 1); - ok(out[0] == f4.x, "The variable f was not set correctly by ID3DXConstantTable_SetVector, got %f, should be %f\n", + ok(out[0] == f4.x && out[1] == 0.0f && out[2] == 0.0f && out[3] == 0.0f, + "The variable f was not set correctly by ID3DXConstantTable_SetVector, got %f, should be %f\n", out[0], f4.x); refcnt = ID3DXConstantTable_Release(ctable); -- 2.11.4.GIT