H. Verbeet : wined3d: Create an IWineD3DBaseShader class.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Mar 29 06:21:11 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 1e1a708e8ab5827deb5dd6ea5bfeb195e7482f11
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=1e1a708e8ab5827deb5dd6ea5bfeb195e7482f11

Author: H. Verbeet <hverbeet at gmail.com>
Date:   Tue Mar 28 21:10:51 2006 +0200

wined3d: Create an IWineD3DBaseShader class.

---

 dlls/wined3d/pixelshader.c       |   10 +++++---
 dlls/wined3d/vertexshader.c      |    9 +++++--
 include/wine/wined3d_interface.h |   50 +++++++++++++++++++++++++++++++++-----
 3 files changed, 55 insertions(+), 14 deletions(-)

diff --git a/dlls/wined3d/pixelshader.c b/dlls/wined3d/pixelshader.c
index 89fe4b9..05ca70e 100644
--- a/dlls/wined3d/pixelshader.c
+++ b/dlls/wined3d/pixelshader.c
@@ -52,6 +52,7 @@ HRESULT WINAPI IWineD3DPixelShaderImpl_Q
     TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
     if (IsEqualGUID(riid, &IID_IUnknown)
         || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DBaseShader)
         || IsEqualGUID(riid, &IID_IWineD3DPixelShader)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
@@ -1825,10 +1826,11 @@ const IWineD3DPixelShaderVtbl IWineD3DPi
     IWineD3DPixelShaderImpl_QueryInterface,
     IWineD3DPixelShaderImpl_AddRef,
     IWineD3DPixelShaderImpl_Release,
-    /*** IWineD3DPixelShader methods ***/
+    /*** IWineD3DBase methods ***/
     IWineD3DPixelShaderImpl_GetParent,
+    /*** IWineD3DBaseShader methods ***/
+    IWineD3DPixelShaderImpl_SetFunction,
+    /*** IWineD3DPixelShader methods ***/
     IWineD3DPixelShaderImpl_GetDevice,
-    IWineD3DPixelShaderImpl_GetFunction,
-    /* not part of d3d */
-    IWineD3DPixelShaderImpl_SetFunction
+    IWineD3DPixelShaderImpl_GetFunction
 };
diff --git a/dlls/wined3d/vertexshader.c b/dlls/wined3d/vertexshader.c
index 0fd74e3..24059d0 100644
--- a/dlls/wined3d/vertexshader.c
+++ b/dlls/wined3d/vertexshader.c
@@ -2035,6 +2035,7 @@ HRESULT WINAPI IWineD3DVertexShaderImpl_
     TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
     if (IsEqualGUID(riid, &IID_IUnknown) 
         || IsEqualGUID(riid, &IID_IWineD3DBase)
+        || IsEqualGUID(riid, &IID_IWineD3DBaseShader)
         || IsEqualGUID(riid, &IID_IWineD3DVertexShader)) {
         IUnknown_AddRef(iface);
         *ppobj = This;
@@ -2214,9 +2215,11 @@ const IWineD3DVertexShaderVtbl IWineD3DV
     IWineD3DVertexShaderImpl_QueryInterface,
     IWineD3DVertexShaderImpl_AddRef,
     IWineD3DVertexShaderImpl_Release,
-    /*** IWineD3DVertexShader methods ***/
+    /*** IWineD3DBase methods ***/
     IWineD3DVertexShaderImpl_GetParent,
+    /*** IWineD3DBaseShader methods ***/
+    IWineD3DVertexShaderImpl_SetFunction,
+    /*** IWineD3DVertexShader methods ***/
     IWineD3DVertexShaderImpl_GetDevice,
-    IWineD3DVertexShaderImpl_GetFunction,
-    IWineD3DVertexShaderImpl_SetFunction
+    IWineD3DVertexShaderImpl_GetFunction
 };
diff --git a/include/wine/wined3d_interface.h b/include/wine/wined3d_interface.h
index 2921da5..de0eee5 100644
--- a/include/wine/wined3d_interface.h
+++ b/include/wine/wined3d_interface.h
@@ -56,6 +56,7 @@ struct IWineD3DStateBlock;
 struct IWineD3DSurface;
 struct IWineD3DVolume;
 struct IWineD3DVertexDeclaration;
+struct IWineD3DBaseShader;
 struct IWineD3DVertexShader;
 struct IWineD3DPixelShader;
 struct IWineD3DQuery;
@@ -120,6 +121,10 @@ DEFINE_GUID(IID_IWineD3DVolumeTexture, 
 DEFINE_GUID(IID_IWineD3DVertexDeclaration, 
 0x7cd55be6, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f);
 
+/* {EAC93065-A4DF-446F-86A1-9EF2BCA40A3C} */
+DEFINE_GUID(IID_IWineD3DBaseShader,
+0xeac93065, 0xa4df, 0x446f, 0x86, 0xa1, 0x9e, 0xf2, 0xbc, 0xa4, 0x0a, 0x3c);
+
 /* {7F7A2B60-6F30-11d9-C687-00046142C14F} */
 DEFINE_GUID(IID_IWineD3DVertexShader, 
 0x7f7a2b60, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f);
@@ -1317,10 +1322,38 @@ DECLARE_INTERFACE_(IWineD3DSwapChain,IWi
 #endif
 
 /*****************************************************************************
+ * IWineD3DBaseShader interface
+ */
+#define INTERFACE IWineD3DBaseShader
+DECLARE_INTERFACE_(IWineD3DBaseShader,IWineD3DBase)
+{
+    /*** IUnknown methods ***/
+    STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    /*** IWineD3DBase methods ***/
+    STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
+    /*** IWineD3DBaseShader methods ***/
+    STDMETHOD(SetFunction)(THIS_ CONST DWORD *pFunction) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IWineD3DBaseShader_QueryInterface(p,a,b)     (p)->lpVtbl->QueryInterface(p,a,b)
+#define IWineD3DBaseShader_AddRef(p)                 (p)->lpVtbl->AddRef(p)
+#define IWineD3DBaseShader_Release(p)                (p)->lpVtbl->Release(p)
+/*** IWineD3DBase methods ***/
+#define IWineD3DBaseShader_GetParent(p,a)            (p)->lpVtbl->GetParent(p,a)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DBaseShader_SetFunction(p,a)          (p)->lpVtbl->SetFunction(p,a)
+#endif
+
+/*****************************************************************************
  * IWineD3DVertexShader interface 
  */
 #define INTERFACE IWineD3DVertexShader
-DECLARE_INTERFACE_(IWineD3DVertexShader,IWineD3DBase)
+DECLARE_INTERFACE_(IWineD3DVertexShader,IWineD3DBaseShader)
 {
     /*** IUnknown methods ***/
     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
@@ -1328,10 +1361,11 @@ DECLARE_INTERFACE_(IWineD3DVertexShader,
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3DBase methods ***/
     STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
+    /*** IWineD3DBaseShader methods ***/
+    STDMETHOD(SetFunction)(THIS_ CONST DWORD *pFunction) PURE;
     /*** IWineD3DVertexShader methods ***/
     STDMETHOD(GetDevice)(THIS_ IWineD3DDevice** ppDevice) PURE;
     STDMETHOD(GetFunction)(THIS_ VOID *pData, UINT *pSizeOfData) PURE;
-    STDMETHOD(SetFunction)(THIS_ CONST DWORD *pFunction) PURE;
     STDMETHOD(SetConstantB)(THIS_ UINT StartRegister, CONST BOOL*  pConstantData, UINT BoolCount) PURE;
     STDMETHOD(SetConstantI)(THIS_ UINT StartRegister, CONST INT*   pConstantData, UINT Vector4iCount) PURE;
     STDMETHOD(SetConstantF)(THIS_ UINT StartRegister, CONST FLOAT* pConstantData, UINT Vector4fCount) PURE;
@@ -1350,10 +1384,11 @@ DECLARE_INTERFACE_(IWineD3DVertexShader,
 #define IWineD3DVertexShader_Release(p)                (p)->lpVtbl->Release(p)
 /*** IWineD3DBase methods ***/
 #define IWineD3DVertexShader_GetParent(p,a)            (p)->lpVtbl->GetParent(p,a)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DVertexShader_SetFunction(p,a)          (p)->lpVtbl->SetFunction(p,a)
 /*** IWineD3DVertexShader methods ***/
 #define IWineD3DVertexShader_GetDevice(p,a)            (p)->lpVtbl->GetDevice(p,a)
 #define IWineD3DVertexShader_GetFunction(p,a,b)        (p)->lpVtbl->GetFunction(p,a,b)
-#define IWineD3DVertexShader_SetFunction(p,a)          (p)->lpVtbl->SetFunction(p,a)
 #define IWineD3DVertexShader_SetConstantB(p,a,b,c)     (p)->lpVtbl->SetConstantB(p,a,b,c)
 #define IWineD3DVertexShader_SetConstantI(p,a,b,c)     (p)->lpVtbl->SetConstantI(p,a,b,c)
 #define IWineD3DVertexShader_SetConstantF(p,a,b,c)     (p)->lpVtbl->SetConstantF(p,a,b,c)
@@ -1367,7 +1402,7 @@ DECLARE_INTERFACE_(IWineD3DVertexShader,
  * IWineD3DPixelShader interface
  */
 #define INTERFACE IWineD3DPixelShader
-DECLARE_INTERFACE_(IWineD3DPixelShader,IWineD3DBase)
+DECLARE_INTERFACE_(IWineD3DPixelShader,IWineD3DBaseShader)
 {
     /*** IUnknown methods ***/
     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
@@ -1375,11 +1410,11 @@ DECLARE_INTERFACE_(IWineD3DPixelShader,I
     STDMETHOD_(ULONG,Release)(THIS) PURE;
     /*** IWineD3DBase methods ***/
     STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
+    /*** IWineD3DBaseShader methods ***/
+    STDMETHOD(SetFunction)(THIS_ CONST DWORD *pFunction) PURE;
     /*** IWineD3DPixelShader methods ***/
     STDMETHOD(GetDevice)(THIS_ IWineD3DDevice** ppDevice) PURE;
     STDMETHOD(GetFunction)(THIS_ VOID* pData, UINT* pSizeOfData) PURE;
-    /* Internal Interfaces */
-    STDMETHOD(SetFunction)(THIS_ CONST DWORD *pFunction) PURE;
 };
 #undef INTERFACE
 
@@ -1390,10 +1425,11 @@ DECLARE_INTERFACE_(IWineD3DPixelShader,I
 #define IWineD3DPixelShader_Release(p)                 (p)->lpVtbl->Release(p)
 /*** IWineD3DBase methods ***/
 #define IWineD3DPixelShader_GetParent(p,a)             (p)->lpVtbl->GetParent(p,a)
+/*** IWineD3DBaseShader methods ***/
+#define IWineD3DPixelShader_SetFunction(p,a)           (p)->lpVtbl->SetFunction(p,a)
 /*** IWineD3DPixelShader methods ***/
 #define IWineD3DPixelShader_GetDevice(p,a)             (p)->lpVtbl->GetDevice(p,a)
 #define IWineD3DPixelShader_GetFunction(p,a,b)         (p)->lpVtbl->GetFunction(p,a,b)
-#define IWineD3DPixelShader_SetFunction(p,a)          (p)->lpVtbl->SetFunction(p,a)
 #endif
 
 #if 0 /* FIXME: During porting in from d3d8 - the following will be used */




More information about the wine-cvs mailing list