[2/6] d3dx9: Introduce a helper function for setting float shader constants.

Józef Kucia joseph.kucia at gmail.com
Tue Aug 14 04:42:31 CDT 2012


---
 dlls/d3dx9_36/shader.c |   27 +++++++++++++--------------
 1 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 0e6b071..6ae0b37 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -672,6 +672,15 @@ static inline D3DXHANDLE handle_from_constant_index(UINT index)
     return (D3DXHANDLE)(DWORD_PTR)(index + 1);
 }
 
+static inline void set_float_shader_constant(struct ID3DXConstantTableImpl *table, IDirect3DDevice9 *device,
+                                             UINT register_index, const FLOAT *data, UINT count)
+{
+    if (is_vertex_shader(table->desc.Version))
+        IDirect3DDevice9_SetVertexShaderConstantF(device, register_index, data, count);
+    else
+        IDirect3DDevice9_SetPixelShaderConstantF(device, register_index, data, count);
+}
+
 /*** IUnknown methods ***/
 static HRESULT WINAPI ID3DXConstantTableImpl_QueryInterface(ID3DXConstantTable *iface, REFIID riid, void **out)
 {
@@ -882,10 +891,7 @@ static HRESULT set_float_array(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 devi
                         FIXME("Unhandled type passed to set_float_array\n");
                         return D3DERR_INVALIDCALL;
                 }
-                if (is_vertex_shader(This->desc.Version))
-                    IDirect3DDevice9_SetVertexShaderConstantF(device, desc.RegisterIndex + i, row, 1);
-                else
-                    IDirect3DDevice9_SetPixelShaderConstantF(device, desc.RegisterIndex + i, row, 1);
+                set_float_shader_constant(This, device, desc.RegisterIndex + i, row, 1);
             }
             break;
         default:
@@ -1004,12 +1010,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray(ID3DXConstantTable *
     switch (desc.RegisterSet)
     {
         case D3DXRS_FLOAT4:
-            if (is_vertex_shader(This->desc.Version))
-                IDirect3DDevice9_SetVertexShaderConstantF(device, desc.RegisterIndex, (float *)vector,
-                        min(desc.RegisterCount, count));
-            else
-                IDirect3DDevice9_SetPixelShaderConstantF(device, desc.RegisterIndex, (float *)vector,
-                        min(desc.RegisterCount, count));
+            set_float_shader_constant(This, device, desc.RegisterIndex, (float *)vector,
+                    min(desc.RegisterCount, count));
             break;
         default:
             FIXME("Handle other register sets\n");
@@ -1060,10 +1062,7 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixArray(ID3DXConstantTable *
                 else
                     D3DXMatrixTranspose(&temp, &matrix[i]);
 
-                if (is_vertex_shader(This->desc.Version))
-                    IDirect3DDevice9_SetVertexShaderConstantF(device, desc.RegisterIndex + i * 4, &temp.u.s._11, 4);
-                else
-                    IDirect3DDevice9_SetPixelShaderConstantF(device, desc.RegisterIndex + i * 4, &temp.u.s._11, 4);
+                set_float_shader_constant(This, device, desc.RegisterIndex + i * 4, &temp.u.s._11, 4);
             }
             break;
         default:
-- 
1.7.8.6




More information about the wine-patches mailing list