[PATCH 1/5] wined3d: Merge the IWineD3DBaseShader implementations.

Henri Verbeet hverbeet at codeweavers.com
Wed Mar 30 13:49:23 CDT 2011


---
 dlls/wined3d/shader.c |  203 ++++--------------------------------------------
 1 files changed, 17 insertions(+), 186 deletions(-)

diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c
index bbd4622..b5a2d08 100644
--- a/dlls/wined3d/shader.c
+++ b/dlls/wined3d/shader.c
@@ -1641,7 +1641,8 @@ static HRESULT shader_set_function(IWineD3DBaseShaderImpl *shader, const DWORD *
     return WINED3D_OK;
 }
 
-static HRESULT STDMETHODCALLTYPE vertexshader_QueryInterface(IWineD3DBaseShader *iface, REFIID riid, void **object)
+static HRESULT STDMETHODCALLTYPE wined3d_shader_QueryInterface(IWineD3DBaseShader *iface,
+        REFIID riid, void **object)
 {
     TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
 
@@ -1660,7 +1661,7 @@ static HRESULT STDMETHODCALLTYPE vertexshader_QueryInterface(IWineD3DBaseShader
     return E_NOINTERFACE;
 }
 
-static ULONG STDMETHODCALLTYPE vertexshader_AddRef(IWineD3DBaseShader *iface)
+static ULONG STDMETHODCALLTYPE wined3d_shader_AddRef(IWineD3DBaseShader *iface)
 {
     IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)iface;
     ULONG refcount = InterlockedIncrement(&shader->baseShader.ref);
@@ -1671,7 +1672,7 @@ static ULONG STDMETHODCALLTYPE vertexshader_AddRef(IWineD3DBaseShader *iface)
 }
 
 /* Do not call while under the GL lock. */
-static ULONG STDMETHODCALLTYPE vertexshader_Release(IWineD3DBaseShader *iface)
+static ULONG STDMETHODCALLTYPE wined3d_shader_Release(IWineD3DBaseShader *iface)
 {
     IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)iface;
     ULONG refcount = InterlockedDecrement(&shader->baseShader.ref);
@@ -1688,21 +1689,21 @@ static ULONG STDMETHODCALLTYPE vertexshader_Release(IWineD3DBaseShader *iface)
     return refcount;
 }
 
-static void * STDMETHODCALLTYPE vertexshader_GetParent(IWineD3DBaseShader *iface)
+static void * STDMETHODCALLTYPE wined3d_shader_GetParent(IWineD3DBaseShader *iface)
 {
     TRACE("iface %p.\n", iface);
 
     return ((IWineD3DBaseShaderImpl *)iface)->baseShader.parent;
 }
 
-static HRESULT STDMETHODCALLTYPE vertexshader_GetFunction(IWineD3DBaseShader *iface, void *data, UINT *data_size)
+static HRESULT STDMETHODCALLTYPE wined3d_shader_GetFunction(IWineD3DBaseShader *iface, void *data, UINT *data_size)
 {
     TRACE("iface %p, data %p, data_size %p.\n", iface, data, data_size);
 
     return shader_get_function((IWineD3DBaseShaderImpl *)iface, data, data_size);
 }
 
-static HRESULT STDMETHODCALLTYPE vertexshader_SetLocalConstantsF(IWineD3DBaseShader *iface,
+static HRESULT STDMETHODCALLTYPE wined3d_shader_SetLocalConstantsF(IWineD3DBaseShader *iface,
         UINT start_idx, const float *src_data, UINT count)
 {
     TRACE("iface %p, start_idx %u, src_data %p, count %u.\n", iface, start_idx, src_data, count);
@@ -1711,17 +1712,14 @@ static HRESULT STDMETHODCALLTYPE vertexshader_SetLocalConstantsF(IWineD3DBaseSha
             start_idx, src_data, count);
 }
 
-static const IWineD3DBaseShaderVtbl IWineD3DVertexShader_Vtbl =
+static const IWineD3DBaseShaderVtbl wined3d_shader_vtbl =
 {
-    /* IUnknown methods */
-    vertexshader_QueryInterface,
-    vertexshader_AddRef,
-    vertexshader_Release,
-    /* IWineD3DBase methods */
-    vertexshader_GetParent,
-    /* IWineD3DBaseShader methods */
-    vertexshader_GetFunction,
-    vertexshader_SetLocalConstantsF,
+    wined3d_shader_QueryInterface,
+    wined3d_shader_AddRef,
+    wined3d_shader_Release,
+    wined3d_shader_GetParent,
+    wined3d_shader_GetFunction,
+    wined3d_shader_SetLocalConstantsF,
 };
 
 void find_vs_compile_args(const struct wined3d_state *state,
@@ -1849,7 +1847,7 @@ HRESULT vertexshader_init(IWineD3DBaseShaderImpl *shader, IWineD3DDeviceImpl *de
 
     if (!byte_code) return WINED3DERR_INVALIDCALL;
 
-    shader->lpVtbl = &IWineD3DVertexShader_Vtbl;
+    shader->lpVtbl = &wined3d_shader_vtbl;
     shader_init(&shader->baseShader, device, parent, parent_ops);
 
     hr = shader_set_function(shader, byte_code, output_signature, device->d3d_vshader_constantF);
@@ -1888,97 +1886,13 @@ HRESULT vertexshader_init(IWineD3DBaseShaderImpl *shader, IWineD3DDeviceImpl *de
     return WINED3D_OK;
 }
 
-static HRESULT STDMETHODCALLTYPE geometryshader_QueryInterface(IWineD3DBaseShader *iface,
-        REFIID riid, void **object)
-{
-    TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
-
-    if (IsEqualGUID(riid, &IID_IWineD3DBaseShader)
-            || IsEqualGUID(riid, &IID_IWineD3DBase)
-            || IsEqualGUID(riid, &IID_IUnknown))
-    {
-        IUnknown_AddRef(iface);
-        *object = iface;
-        return S_OK;
-    }
-
-    WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
-
-    *object = NULL;
-    return E_NOINTERFACE;
-}
-
-static ULONG STDMETHODCALLTYPE geometryshader_AddRef(IWineD3DBaseShader *iface)
-{
-    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)iface;
-    ULONG refcount = InterlockedIncrement(&shader->baseShader.ref);
-
-    TRACE("%p increasing refcount to %u.\n", shader, refcount);
-
-    return refcount;
-}
-
-/* Do not call while under the GL lock. */
-static ULONG STDMETHODCALLTYPE geometryshader_Release(IWineD3DBaseShader *iface)
-{
-    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)iface;
-    ULONG refcount = InterlockedDecrement(&shader->baseShader.ref);
-
-    TRACE("%p decreasing refcount to %u.\n", shader, refcount);
-
-    if (!refcount)
-    {
-        shader_cleanup(shader);
-        shader->baseShader.parent_ops->wined3d_object_destroyed(shader->baseShader.parent);
-        HeapFree(GetProcessHeap(), 0, shader);
-    }
-
-    return refcount;
-}
-
-static void * STDMETHODCALLTYPE geometryshader_GetParent(IWineD3DBaseShader *iface)
-{
-    TRACE("iface %p.\n", iface);
-
-    return ((IWineD3DBaseShaderImpl *)iface)->baseShader.parent;
-}
-
-static HRESULT STDMETHODCALLTYPE geometryshader_GetFunction(IWineD3DBaseShader *iface, void *data, UINT *data_size)
-{
-    TRACE("iface %p, data %p, data_size %p.\n", iface, data, data_size);
-
-    return shader_get_function((IWineD3DBaseShaderImpl *)iface, data, data_size);
-}
-
-static HRESULT STDMETHODCALLTYPE geometryshader_SetLocalConstantsF(IWineD3DBaseShader *iface,
-        UINT start_idx, const float *src_data, UINT count)
-{
-    TRACE("iface %p, start_idx %u, src_data %p, count %u.\n", iface, start_idx, src_data, count);
-
-    return shader_set_local_constants_float((IWineD3DBaseShaderImpl *)iface,
-            start_idx, src_data, count);
-}
-
-static const IWineD3DBaseShaderVtbl wined3d_geometryshader_vtbl =
-{
-    /* IUnknown methods */
-    geometryshader_QueryInterface,
-    geometryshader_AddRef,
-    geometryshader_Release,
-    /* IWineD3DBase methods */
-    geometryshader_GetParent,
-    /* IWineD3DBaseShader methods */
-    geometryshader_GetFunction,
-    geometryshader_SetLocalConstantsF,
-};
-
 HRESULT geometryshader_init(IWineD3DBaseShaderImpl *shader, IWineD3DDeviceImpl *device,
         const DWORD *byte_code, const struct wined3d_shader_signature *output_signature,
         void *parent, const struct wined3d_parent_ops *parent_ops)
 {
     HRESULT hr;
 
-    shader->lpVtbl = &wined3d_geometryshader_vtbl;
+    shader->lpVtbl = &wined3d_shader_vtbl;
     shader_init(&shader->baseShader, device, parent, parent_ops);
 
     hr = shader_set_function(shader, byte_code, output_signature, 0);
@@ -1994,89 +1908,6 @@ HRESULT geometryshader_init(IWineD3DBaseShaderImpl *shader, IWineD3DDeviceImpl *
     return WINED3D_OK;
 }
 
-static HRESULT STDMETHODCALLTYPE pixelshader_QueryInterface(IWineD3DBaseShader *iface, REFIID riid, void **object)
-{
-    TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
-
-    if (IsEqualGUID(riid, &IID_IWineD3DBaseShader)
-            || IsEqualGUID(riid, &IID_IWineD3DBase)
-            || IsEqualGUID(riid, &IID_IUnknown))
-    {
-        IUnknown_AddRef(iface);
-        *object = iface;
-        return S_OK;
-    }
-
-    WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
-
-    *object = NULL;
-    return E_NOINTERFACE;
-}
-
-static ULONG STDMETHODCALLTYPE pixelshader_AddRef(IWineD3DBaseShader *iface)
-{
-    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)iface;
-    ULONG refcount = InterlockedIncrement(&shader->baseShader.ref);
-
-    TRACE("%p increasing refcount to %u.\n", shader, refcount);
-
-    return refcount;
-}
-
-/* Do not call while under the GL lock. */
-static ULONG STDMETHODCALLTYPE pixelshader_Release(IWineD3DBaseShader *iface)
-{
-    IWineD3DBaseShaderImpl *shader = (IWineD3DBaseShaderImpl *)iface;
-    ULONG refcount = InterlockedDecrement(&shader->baseShader.ref);
-
-    TRACE("%p decreasing refcount to %u.\n", shader, refcount);
-
-    if (!refcount)
-    {
-        shader_cleanup(shader);
-        shader->baseShader.parent_ops->wined3d_object_destroyed(shader->baseShader.parent);
-        HeapFree(GetProcessHeap(), 0, shader);
-    }
-
-    return refcount;
-}
-
-static void * STDMETHODCALLTYPE pixelshader_GetParent(IWineD3DBaseShader *iface)
-{
-    TRACE("iface %p.\n", iface);
-
-    return ((IWineD3DBaseShaderImpl *)iface)->baseShader.parent;
-}
-
-static HRESULT STDMETHODCALLTYPE pixelshader_GetFunction(IWineD3DBaseShader *iface, void *data, UINT *data_size)
-{
-    TRACE("iface %p, data %p, data_size %p.\n", iface, data, data_size);
-
-    return shader_get_function((IWineD3DBaseShaderImpl *)iface, data, data_size);
-}
-
-static HRESULT STDMETHODCALLTYPE pixelshader_SetLocalConstantsF(IWineD3DBaseShader *iface,
-        UINT start_idx, const float *src_data, UINT count)
-{
-    TRACE("iface %p, start_idx %u, src_data %p, count %u.\n", iface, start_idx, src_data, count);
-
-    return shader_set_local_constants_float((IWineD3DBaseShaderImpl *)iface,
-            start_idx, src_data, count);
-}
-
-static const IWineD3DBaseShaderVtbl IWineD3DPixelShader_Vtbl =
-{
-    /* IUnknown methods */
-    pixelshader_QueryInterface,
-    pixelshader_AddRef,
-    pixelshader_Release,
-    /* IWineD3DBase methods */
-    pixelshader_GetParent,
-    /* IWineD3DBaseShader methods */
-    pixelshader_GetFunction,
-    pixelshader_SetLocalConstantsF,
-};
-
 void find_ps_compile_args(const struct wined3d_state *state,
         IWineD3DBaseShaderImpl *shader, struct ps_compile_args *args)
 {
@@ -2271,7 +2102,7 @@ HRESULT pixelshader_init(IWineD3DBaseShaderImpl *shader, IWineD3DDeviceImpl *dev
 
     if (!byte_code) return WINED3DERR_INVALIDCALL;
 
-    shader->lpVtbl = &IWineD3DPixelShader_Vtbl;
+    shader->lpVtbl = &wined3d_shader_vtbl;
     shader_init(&shader->baseShader, device, parent, parent_ops);
 
     hr = shader_set_function(shader, byte_code, output_signature, device->d3d_pshader_constantF);
-- 
1.7.3.4




More information about the wine-patches mailing list