Paul Gofman : d3dx9: Factor out set_constants_device() function.

Alexandre Julliard julliard at winehq.org
Tue Aug 29 14:48:25 CDT 2017


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

Author: Paul Gofman <gofmanp at gmail.com>
Date:   Thu Aug 10 13:02:50 2017 +0300

d3dx9: Factor out set_constants_device() function.

Signed-off-by: Paul Gofman <gofmanp at gmail.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3dx9_36/preshader.c | 84 +++++++++++++++++++++++------------------------
 1 file changed, 42 insertions(+), 42 deletions(-)

diff --git a/dlls/d3dx9_36/preshader.c b/dlls/d3dx9_36/preshader.c
index 29846a0..f38f875 100644
--- a/dlls/d3dx9_36/preshader.c
+++ b/dlls/d3dx9_36/preshader.c
@@ -1419,6 +1419,47 @@ static void regstore_set_data(struct d3dx_regstore *rs, unsigned int table,
     regstore_set_modified(rs, table, offset, count);
 }
 
+static HRESULT set_constants_device(ID3DXEffectStateManager *manager, struct IDirect3DDevice9 *device,
+        D3DXPARAMETER_TYPE type, enum pres_reg_tables table, void *ptr,
+        unsigned int start, unsigned int count)
+{
+    if (type == D3DXPT_VERTEXSHADER)
+    {
+        switch(table)
+        {
+            case PRES_REGTAB_OCONST:
+                return SET_D3D_STATE_(manager, device, SetVertexShaderConstantF, start, ptr, count);
+            case PRES_REGTAB_OICONST:
+                return SET_D3D_STATE_(manager, device, SetVertexShaderConstantI, start, ptr, count);
+            case PRES_REGTAB_OBCONST:
+                return SET_D3D_STATE_(manager, device, SetVertexShaderConstantB, start, ptr, count);
+            default:
+                FIXME("Unexpected register table %u.\n", table);
+                return D3DERR_INVALIDCALL;
+        }
+    }
+    else if (type == D3DXPT_PIXELSHADER)
+    {
+        switch(table)
+        {
+            case PRES_REGTAB_OCONST:
+                return SET_D3D_STATE_(manager, device, SetPixelShaderConstantF, start, ptr, count);
+            case PRES_REGTAB_OICONST:
+                return SET_D3D_STATE_(manager, device, SetPixelShaderConstantI, start, ptr, count);
+            case PRES_REGTAB_OBCONST:
+                return SET_D3D_STATE_(manager, device, SetPixelShaderConstantB, start, ptr, count);
+            default:
+                FIXME("Unexpected register table %u.\n", table);
+                return D3DERR_INVALIDCALL;
+        }
+    }
+    else
+    {
+        FIXME("Unexpected parameter type %u.\n", type);
+        return D3DERR_INVALIDCALL;
+    }
+}
+
 static void set_constants(struct d3dx_regstore *rs, struct d3dx_const_tab *const_tab,
         ULONG64 new_update_version)
 {
@@ -1686,49 +1727,8 @@ static HRESULT set_shader_constants_device(ID3DXEffectStateManager *manager, str
         TRACE("Setting %u constants at %u.\n", count, start);
         ptr = (BYTE *)rs->tables[table] + get_offset_reg(table, start)
                 * table_info[table].component_size;
-        if (type == D3DXPT_VERTEXSHADER)
-        {
-            switch(table)
-            {
-                case PRES_REGTAB_OCONST:
-                    hr = SET_D3D_STATE_(manager, device, SetVertexShaderConstantF, start, (const float *)ptr, count);
-                    break;
-                case PRES_REGTAB_OICONST:
-                    hr = SET_D3D_STATE_(manager, device, SetVertexShaderConstantI, start, (const int *)ptr, count);
-                    break;
-                case PRES_REGTAB_OBCONST:
-                    hr = SET_D3D_STATE_(manager, device, SetVertexShaderConstantB, start, (const BOOL *)ptr, count);
-                    break;
-                default:
-                    FIXME("Unexpected register table %u.\n", table);
-                    return D3DERR_INVALIDCALL;
-            }
-        }
-        else if (type == D3DXPT_PIXELSHADER)
-        {
-            switch(table)
-            {
-                case PRES_REGTAB_OCONST:
-                    hr = SET_D3D_STATE_(manager, device, SetPixelShaderConstantF, start, (const float *)ptr, count);
-                    break;
-                case PRES_REGTAB_OICONST:
-                    hr = SET_D3D_STATE_(manager, device, SetPixelShaderConstantI, start, (const int *)ptr, count);
-                    break;
-                case PRES_REGTAB_OBCONST:
-                    hr = SET_D3D_STATE_(manager, device, SetPixelShaderConstantB, start, (const BOOL *)ptr, count);
-                    break;
-                default:
-                    FIXME("Unexpected register table %u.\n", table);
-                    return D3DERR_INVALIDCALL;
-            }
-        }
-        else
-        {
-            FIXME("Unexpected parameter type %u.\n", type);
-            return D3DERR_INVALIDCALL;
-        }
 
-        if (FAILED(hr))
+        if (FAILED(hr = set_constants_device(manager, device, type, table, ptr, start, count)))
         {
             ERR("Setting constants failed, type %u, table %u, hr %#x.\n", type, table, hr);
             result = hr;




More information about the wine-cvs mailing list