[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