[PATCH 3/5] d3dx9: Avoid LPDIRECT3DDEVICE9.

Henri Verbeet hverbeet at codeweavers.com
Sun Oct 28 14:54:52 CDT 2012


---
 dlls/d3dx9_36/d3dx9_36_main.c |    2 +-
 dlls/d3dx9_36/effect.c        |   90 ++++++++++-------------
 dlls/d3dx9_36/font.c          |    5 +-
 dlls/d3dx9_36/line.c          |    4 +-
 dlls/d3dx9_36/mesh.c          |  160 ++++++++++++++---------------------------
 dlls/d3dx9_36/shader.c        |   66 +++++++++--------
 dlls/d3dx9_36/sprite.c        |    4 +-
 dlls/d3dx9_36/tests/line.c    |    2 +-
 dlls/d3dx9_36/texture.c       |   27 ++------
 include/d3dx9anim.h           |   13 +++-
 include/d3dx9core.h           |   46 +++++++-----
 include/d3dx9effect.h         |  131 +++++++++-------------------------
 include/d3dx9mesh.h           |  113 ++++++++++++++++++-----------
 include/d3dx9shader.h         |   46 +++++++-----
 include/d3dx9shape.h          |  124 ++++++++++++--------------------
 include/d3dx9tex.h            |   28 ++------
 16 files changed, 363 insertions(+), 498 deletions(-)
 rewrite include/d3dx9shape.h (66%)

diff --git a/dlls/d3dx9_36/d3dx9_36_main.c b/dlls/d3dx9_36/d3dx9_36_main.c
index e9c7004..35d132c 100644
--- a/dlls/d3dx9_36/d3dx9_36_main.c
+++ b/dlls/d3dx9_36/d3dx9_36_main.c
@@ -76,7 +76,7 @@ BOOL WINAPI D3DXDebugMute(BOOL mute)
  * D3DXGetDriverLevel.
  * Returns always 900 (DX 9) for us
  */
-UINT WINAPI D3DXGetDriverLevel(LPDIRECT3DDEVICE9 device)
+UINT WINAPI D3DXGetDriverLevel(struct IDirect3DDevice9 *device)
 {
     return 900;
 }
diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c
index 188b386..0911e35 100644
--- a/dlls/d3dx9_36/effect.c
+++ b/dlls/d3dx9_36/effect.c
@@ -171,9 +171,9 @@ struct ID3DXEffectImpl
     ID3DXEffect ID3DXEffect_iface;
     LONG ref;
 
-    LPD3DXEFFECTSTATEMANAGER manager;
-    LPDIRECT3DDEVICE9 device;
-    LPD3DXEFFECTPOOL pool;
+    struct ID3DXEffectStateManager *manager;
+    struct IDirect3DDevice9 *device;
+    struct ID3DXEffectPool *pool;
     D3DXHANDLE active_technique;
     D3DXHANDLE active_pass;
 
@@ -3570,7 +3570,7 @@ static HRESULT WINAPI ID3DXEffectImpl_End(ID3DXEffect* iface)
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ID3DXEffectImpl_GetDevice(ID3DXEffect *iface, LPDIRECT3DDEVICE9 *device)
+static HRESULT WINAPI ID3DXEffectImpl_GetDevice(ID3DXEffect *iface, struct IDirect3DDevice9 **device)
 {
     struct ID3DXEffectImpl *This = impl_from_ID3DXEffect(iface);
 
@@ -3677,7 +3677,8 @@ static HRESULT WINAPI ID3DXEffectImpl_DeleteParameterBlock(ID3DXEffect* iface, D
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI ID3DXEffectImpl_CloneEffect(ID3DXEffect* iface, LPDIRECT3DDEVICE9 device, LPD3DXEFFECT* effect)
+static HRESULT WINAPI ID3DXEffectImpl_CloneEffect(ID3DXEffect *iface,
+        struct IDirect3DDevice9 *device, struct ID3DXEffect **effect)
 {
     struct ID3DXEffectImpl *This = impl_from_ID3DXEffect(iface);
 
@@ -4716,7 +4717,7 @@ static HRESULT d3dx9_copy_data(char **str, const char **ptr)
     return D3D_OK;
 }
 
-static HRESULT d3dx9_parse_data(struct d3dx_parameter *param, const char **ptr, LPDIRECT3DDEVICE9 device)
+static HRESULT d3dx9_parse_data(struct d3dx_parameter *param, const char **ptr, struct IDirect3DDevice9 *device)
 {
     DWORD size;
     HRESULT hr;
@@ -5729,8 +5730,8 @@ static HRESULT d3dx9_base_effect_init(struct ID3DXBaseEffectImpl *base,
     return D3D_OK;
 }
 
-static HRESULT d3dx9_effect_init(struct ID3DXEffectImpl *effect, LPDIRECT3DDEVICE9 device,
-        const char *data, SIZE_T data_size, LPD3DXEFFECTPOOL pool)
+static HRESULT d3dx9_effect_init(struct ID3DXEffectImpl *effect, struct IDirect3DDevice9 *device,
+        const char *data, SIZE_T data_size, struct ID3DXEffectPool *pool)
 {
     HRESULT hr;
     struct ID3DXBaseEffectImpl *object = NULL;
@@ -5780,16 +5781,9 @@ err_out:
     return hr;
 }
 
-HRESULT WINAPI D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device,
-                                  LPCVOID srcdata,
-                                  UINT srcdatalen,
-                                  CONST D3DXMACRO* defines,
-                                  LPD3DXINCLUDE include,
-                                  LPCSTR skip_constants,
-                                  DWORD flags,
-                                  LPD3DXEFFECTPOOL pool,
-                                  LPD3DXEFFECT* effect,
-                                  LPD3DXBUFFER* compilation_errors)
+HRESULT WINAPI D3DXCreateEffectEx(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors)
 {
     struct ID3DXEffectImpl *object;
     HRESULT hr;
@@ -5829,15 +5823,9 @@ HRESULT WINAPI D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device,
     return D3D_OK;
 }
 
-HRESULT WINAPI D3DXCreateEffect(LPDIRECT3DDEVICE9 device,
-                                LPCVOID srcdata,
-                                UINT srcdatalen,
-                                CONST D3DXMACRO* defines,
-                                LPD3DXINCLUDE include,
-                                DWORD flags,
-                                LPD3DXEFFECTPOOL pool,
-                                LPD3DXEFFECT* effect,
-                                LPD3DXBUFFER* compilation_errors)
+HRESULT WINAPI D3DXCreateEffect(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors)
 {
     TRACE("(%p, %p, %u, %p, %p, %#x, %p, %p, %p): Forwarded to D3DXCreateEffectEx\n", device, srcdata, srcdatalen, defines,
         include, flags, pool, effect, compilation_errors);
@@ -6009,9 +5997,9 @@ HRESULT WINAPI D3DXCreateEffectPool(LPD3DXEFFECTPOOL *pool)
     return S_OK;
 }
 
-HRESULT WINAPI D3DXCreateEffectFromFileExW(LPDIRECT3DDEVICE9 device, LPCWSTR srcfile,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, LPCSTR skipconstants, DWORD flags,
-    LPD3DXEFFECTPOOL pool, LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromFileExW(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     LPVOID buffer;
     HRESULT ret;
@@ -6033,9 +6021,9 @@ HRESULT WINAPI D3DXCreateEffectFromFileExW(LPDIRECT3DDEVICE9 device, LPCWSTR src
     return ret;
 }
 
-HRESULT WINAPI D3DXCreateEffectFromFileExA(LPDIRECT3DDEVICE9 device, LPCSTR srcfile,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, LPCSTR skipconstants, DWORD flags,
-    LPD3DXEFFECTPOOL pool, LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromFileExA(struct IDirect3DDevice9 *device, const char *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     LPWSTR srcfileW;
     HRESULT ret;
@@ -6056,25 +6044,25 @@ HRESULT WINAPI D3DXCreateEffectFromFileExA(LPDIRECT3DDEVICE9 device, LPCSTR srcf
     return ret;
 }
 
-HRESULT WINAPI D3DXCreateEffectFromFileW(LPDIRECT3DDEVICE9 device, LPCWSTR srcfile,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, DWORD flags, LPD3DXEFFECTPOOL pool,
-    LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromFileW(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool,
+        struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     TRACE("(void): relay\n");
     return D3DXCreateEffectFromFileExW(device, srcfile, defines, include, NULL, flags, pool, effect, compilationerrors);
 }
 
-HRESULT WINAPI D3DXCreateEffectFromFileA(LPDIRECT3DDEVICE9 device, LPCSTR srcfile,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, DWORD flags, LPD3DXEFFECTPOOL pool,
-    LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromFileA(struct IDirect3DDevice9 *device, const char *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags, struct ID3DXEffectPool *pool,
+        struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     TRACE("(void): relay\n");
     return D3DXCreateEffectFromFileExA(device, srcfile, defines, include, NULL, flags, pool, effect, compilationerrors);
 }
 
-HRESULT WINAPI D3DXCreateEffectFromResourceExW(LPDIRECT3DDEVICE9 device, HMODULE srcmodule, LPCWSTR srcresource,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, LPCSTR skipconstants, DWORD flags,
-    LPD3DXEFFECTPOOL pool, LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromResourceExW(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants,
+        DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     HRSRC resinfo;
 
@@ -6102,9 +6090,9 @@ HRESULT WINAPI D3DXCreateEffectFromResourceExW(LPDIRECT3DDEVICE9 device, HMODULE
     return D3DXERR_INVALIDDATA;
 }
 
-HRESULT WINAPI D3DXCreateEffectFromResourceExA(LPDIRECT3DDEVICE9 device, HMODULE srcmodule, LPCSTR srcresource,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, LPCSTR skipconstants, DWORD flags,
-    LPD3DXEFFECTPOOL pool, LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromResourceExA(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skipconstants,
+        DWORD flags, struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     HRSRC resinfo;
 
@@ -6132,17 +6120,17 @@ HRESULT WINAPI D3DXCreateEffectFromResourceExA(LPDIRECT3DDEVICE9 device, HMODULE
     return D3DXERR_INVALIDDATA;
 }
 
-HRESULT WINAPI D3DXCreateEffectFromResourceW(LPDIRECT3DDEVICE9 device, HMODULE srcmodule, LPCWSTR srcresource,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, DWORD flags, LPD3DXEFFECTPOOL pool,
-    LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromResourceW(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     TRACE("(void): relay\n");
     return D3DXCreateEffectFromResourceExW(device, srcmodule, srcresource, defines, include, NULL, flags, pool, effect, compilationerrors);
 }
 
-HRESULT WINAPI D3DXCreateEffectFromResourceA(LPDIRECT3DDEVICE9 device, HMODULE srcmodule, LPCSTR srcresource,
-    const D3DXMACRO *defines, LPD3DXINCLUDE include, DWORD flags, LPD3DXEFFECTPOOL pool,
-    LPD3DXEFFECT *effect, LPD3DXBUFFER *compilationerrors)
+HRESULT WINAPI D3DXCreateEffectFromResourceA(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilationerrors)
 {
     TRACE("(void): relay\n");
     return D3DXCreateEffectFromResourceExA(device, srcmodule, srcresource, defines, include, NULL, flags, pool, effect, compilationerrors);
diff --git a/dlls/d3dx9_36/font.c b/dlls/d3dx9_36/font.c
index 5c09f82..1aeebea 100644
--- a/dlls/d3dx9_36/font.c
+++ b/dlls/d3dx9_36/font.c
@@ -228,8 +228,9 @@ static const ID3DXFontVtbl D3DXFont_Vtbl =
     ID3DXFontImpl_OnResetDevice
 };
 
-HRESULT WINAPI D3DXCreateFontA(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCSTR facename, LPD3DXFONT *font)
+HRESULT WINAPI D3DXCreateFontA(struct IDirect3DDevice9 *device, INT height, UINT width,
+        UINT weight, UINT miplevels, BOOL italic, DWORD charset, DWORD precision, DWORD quality,
+        DWORD pitchandfamily, const char *facename, struct ID3DXFont **font)
 {
     D3DXFONT_DESCA desc;
 
diff --git a/dlls/d3dx9_36/line.c b/dlls/d3dx9_36/line.c
index d9ec2e0..e6cd3b0 100644
--- a/dlls/d3dx9_36/line.c
+++ b/dlls/d3dx9_36/line.c
@@ -81,7 +81,7 @@ static ULONG WINAPI ID3DXLineImpl_Release(ID3DXLine* iface)
 }
 
 /*** ID3DXLine methods ***/
-static HRESULT WINAPI ID3DXLineImpl_GetDevice(ID3DXLine* iface, LPDIRECT3DDEVICE9* device)
+static HRESULT WINAPI ID3DXLineImpl_GetDevice(struct ID3DXLine *iface, struct IDirect3DDevice9 **device)
 {
     ID3DXLineImpl *This = impl_from_ID3DXLine(iface);
 
@@ -328,7 +328,7 @@ static const struct ID3DXLineVtbl ID3DXLine_Vtbl =
     ID3DXLineImpl_OnResetDevice
 };
 
-HRESULT WINAPI D3DXCreateLine(LPDIRECT3DDEVICE9 device, LPD3DXLINE* line)
+HRESULT WINAPI D3DXCreateLine(struct IDirect3DDevice9 *device, struct ID3DXLine **line)
 {
     ID3DXLineImpl* object;
 
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index cbdba68..10c3a73 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -255,7 +255,7 @@ static DWORD WINAPI ID3DXMeshImpl_GetOptions(ID3DXMesh *iface)
     return This->options;
 }
 
-static HRESULT WINAPI ID3DXMeshImpl_GetDevice(ID3DXMesh *iface, LPDIRECT3DDEVICE9 *device)
+static HRESULT WINAPI ID3DXMeshImpl_GetDevice(struct ID3DXMesh *iface, struct IDirect3DDevice9 **device)
 {
     ID3DXMeshImpl *This = impl_from_ID3DXMesh(iface);
 
@@ -268,7 +268,8 @@ static HRESULT WINAPI ID3DXMeshImpl_GetDevice(ID3DXMesh *iface, LPDIRECT3DDEVICE
     return D3D_OK;
 }
 
-static HRESULT WINAPI ID3DXMeshImpl_CloneMeshFVF(ID3DXMesh *iface, DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH *clone_mesh)
+static HRESULT WINAPI ID3DXMeshImpl_CloneMeshFVF(struct ID3DXMesh *iface, DWORD options, DWORD fvf,
+        struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh)
 {
     ID3DXMeshImpl *This = impl_from_ID3DXMesh(iface);
     HRESULT hr;
@@ -675,8 +676,8 @@ static BOOL declaration_equals(CONST D3DVERTEXELEMENT9 *declaration1, CONST D3DV
     return FALSE;
 }
 
-static HRESULT WINAPI ID3DXMeshImpl_CloneMesh(ID3DXMesh *iface, DWORD options, CONST D3DVERTEXELEMENT9 *declaration, LPDIRECT3DDEVICE9 device,
-                                              LPD3DXMESH *clone_mesh_out)
+static HRESULT WINAPI ID3DXMeshImpl_CloneMesh(struct ID3DXMesh *iface, DWORD options,
+        const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh_out)
 {
     ID3DXMeshImpl *This = impl_from_ID3DXMesh(iface);
     ID3DXMeshImpl *cloned_this;
@@ -2431,8 +2432,8 @@ BOOL WINAPI D3DXSphereBoundProbe(CONST D3DXVECTOR3 *pcenter, FLOAT radius, CONST
 /*************************************************************************
  * D3DXCreateMesh
  */
-HRESULT WINAPI D3DXCreateMesh(DWORD numfaces, DWORD numvertices, DWORD options, CONST D3DVERTEXELEMENT9 *declaration,
-                              LPDIRECT3DDEVICE9 device, LPD3DXMESH *mesh)
+HRESULT WINAPI D3DXCreateMesh(DWORD numfaces, DWORD numvertices, DWORD options,
+        const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh)
 {
     HRESULT hr;
     DWORD fvf;
@@ -2593,8 +2594,8 @@ HRESULT WINAPI D3DXCreateMesh(DWORD numfaces, DWORD numvertices, DWORD options,
 /*************************************************************************
  * D3DXCreateMeshFVF
  */
-HRESULT WINAPI D3DXCreateMeshFVF(DWORD numfaces, DWORD numvertices, DWORD options, DWORD fvf,
-                                 LPDIRECT3DDEVICE9 device, LPD3DXMESH *mesh)
+HRESULT WINAPI D3DXCreateMeshFVF(DWORD numfaces, DWORD numvertices, DWORD options,
+        DWORD fvf, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh)
 {
     HRESULT hr;
     D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE];
@@ -3274,15 +3275,10 @@ static HRESULT generate_effects(ID3DXBuffer *materials, DWORD num_materials,
 }
 
 /* change to D3DXLoadSkinMeshFromXof when ID3DXFileData is implemented */
-static HRESULT load_skin_mesh_from_xof(IDirectXFileData *filedata,
-                                       DWORD options,
-                                       LPDIRECT3DDEVICE9 device,
-                                       LPD3DXBUFFER *adjacency_out,
-                                       LPD3DXBUFFER *materials_out,
-                                       LPD3DXBUFFER *effects_out,
-                                       DWORD *num_materials_out,
-                                       LPD3DXSKININFO *skin_info_out,
-                                       LPD3DXMESH *mesh_out)
+static HRESULT load_skin_mesh_from_xof(struct IDirectXFileData *filedata, DWORD options,
+        struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency_out, struct ID3DXBuffer **materials_out,
+        struct ID3DXBuffer **effects_out, DWORD *num_materials_out, struct ID3DXSkinInfo **skin_info_out,
+        struct ID3DXMesh **mesh_out)
 {
     HRESULT hr;
     DWORD *index_in_ptr;
@@ -3518,13 +3514,9 @@ cleanup:
     return hr;
 }
 
-HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(LPCSTR filename,
-                                           DWORD options,
-                                           LPDIRECT3DDEVICE9 device,
-                                           LPD3DXALLOCATEHIERARCHY alloc_hier,
-                                           LPD3DXLOADUSERDATA load_user_data,
-                                           LPD3DXFRAME *frame_hierarchy,
-                                           LPD3DXANIMATIONCONTROLLER *anim_controller)
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(const char *filename, DWORD options, struct IDirect3DDevice9 *device,
+        struct ID3DXAllocateHierarchy *alloc_hier, struct ID3DXLoadUserData *load_user_data,
+        D3DXFRAME **frame_hierarchy, struct ID3DXAnimationController **anim_controller)
 {
     HRESULT hr;
     int len;
@@ -3548,13 +3540,9 @@ HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(LPCSTR filename,
     return hr;
 }
 
-HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(LPCWSTR filename,
-                                           DWORD options,
-                                           LPDIRECT3DDEVICE9 device,
-                                           LPD3DXALLOCATEHIERARCHY alloc_hier,
-                                           LPD3DXLOADUSERDATA load_user_data,
-                                           LPD3DXFRAME *frame_hierarchy,
-                                           LPD3DXANIMATIONCONTROLLER *anim_controller)
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(const WCHAR *filename, DWORD options, struct IDirect3DDevice9 *device,
+        struct ID3DXAllocateHierarchy *alloc_hier, struct ID3DXLoadUserData *load_user_data,
+        D3DXFRAME **frame_hierarchy, struct ID3DXAnimationController **anim_controller)
 {
     HRESULT hr;
     DWORD size;
@@ -3600,11 +3588,8 @@ static HRESULT filedata_get_name(IDirectXFileData *filedata, char **name)
     return hr;
 }
 
-static HRESULT load_mesh_container(IDirectXFileData *filedata,
-                                   DWORD options,
-                                   LPDIRECT3DDEVICE9 device,
-                                   LPD3DXALLOCATEHIERARCHY alloc_hier,
-                                   D3DXMESHCONTAINER **mesh_container)
+static HRESULT load_mesh_container(struct IDirectXFileData *filedata, DWORD options, struct IDirect3DDevice9 *device,
+        struct ID3DXAllocateHierarchy *alloc_hier, D3DXMESHCONTAINER **mesh_container)
 {
     HRESULT hr;
     ID3DXBuffer *adjacency = NULL;
@@ -3670,11 +3655,8 @@ static HRESULT parse_transform_matrix(IDirectXFileData *filedata, D3DXMATRIX *tr
     return D3D_OK;
 }
 
-static HRESULT load_frame(IDirectXFileData *filedata,
-                          DWORD options,
-                          LPDIRECT3DDEVICE9 device,
-                          LPD3DXALLOCATEHIERARCHY alloc_hier,
-                          D3DXFRAME **frame_out)
+static HRESULT load_frame(struct IDirectXFileData *filedata, DWORD options, struct IDirect3DDevice9 *device,
+        struct ID3DXAllocateHierarchy *alloc_hier, D3DXFRAME **frame_out)
 {
     HRESULT hr;
     const GUID *type;
@@ -3717,14 +3699,10 @@ static HRESULT load_frame(IDirectXFileData *filedata,
     return hr;
 }
 
-HRESULT WINAPI D3DXLoadMeshHierarchyFromXInMemory(LPCVOID memory,
-                                                  DWORD memory_size,
-                                                  DWORD options,
-                                                  LPDIRECT3DDEVICE9 device,
-                                                  LPD3DXALLOCATEHIERARCHY alloc_hier,
-                                                  LPD3DXLOADUSERDATA load_user_data,
-                                                  LPD3DXFRAME *frame_hierarchy,
-                                                  LPD3DXANIMATIONCONTROLLER *anim_controller)
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXInMemory(const void *memory, DWORD memory_size, DWORD options,
+        struct IDirect3DDevice9 *device, struct ID3DXAllocateHierarchy *alloc_hier,
+        struct ID3DXLoadUserData *load_user_data, D3DXFRAME **frame_hierarchy,
+        struct ID3DXAnimationController **anim_controller)
 {
     HRESULT hr;
     IDirectXFile *dxfile = NULL;
@@ -3867,14 +3845,9 @@ HRESULT WINAPI D3DXFrameDestroy(LPD3DXFRAME frame, LPD3DXALLOCATEHIERARCHY alloc
     return D3D_OK;
 }
 
-HRESULT WINAPI D3DXLoadMeshFromXA(LPCSTR filename,
-                                  DWORD options,
-                                  LPDIRECT3DDEVICE9 device,
-                                  LPD3DXBUFFER *adjacency,
-                                  LPD3DXBUFFER *materials,
-                                  LPD3DXBUFFER *effect_instances,
-                                  DWORD *num_materials,
-                                  LPD3DXMESH *mesh)
+HRESULT WINAPI D3DXLoadMeshFromXA(const char *filename, DWORD options, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *num_materials, struct ID3DXMesh **mesh)
 {
     HRESULT hr;
     int len;
@@ -3898,14 +3871,9 @@ HRESULT WINAPI D3DXLoadMeshFromXA(LPCSTR filename,
     return hr;
 }
 
-HRESULT WINAPI D3DXLoadMeshFromXW(LPCWSTR filename,
-                                  DWORD options,
-                                  LPDIRECT3DDEVICE9 device,
-                                  LPD3DXBUFFER *adjacency,
-                                  LPD3DXBUFFER *materials,
-                                  LPD3DXBUFFER *effect_instances,
-                                  DWORD *num_materials,
-                                  LPD3DXMESH *mesh)
+HRESULT WINAPI D3DXLoadMeshFromXW(const WCHAR *filename, DWORD options, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *num_materials, struct ID3DXMesh **mesh)
 {
     HRESULT hr;
     DWORD size;
@@ -3929,16 +3897,9 @@ HRESULT WINAPI D3DXLoadMeshFromXW(LPCWSTR filename,
     return hr;
 }
 
-HRESULT WINAPI D3DXLoadMeshFromXResource(HMODULE module,
-                                         LPCSTR name,
-                                         LPCSTR type,
-                                         DWORD options,
-                                         LPDIRECT3DDEVICE9 device,
-                                         LPD3DXBUFFER *adjacency,
-                                         LPD3DXBUFFER *materials,
-                                         LPD3DXBUFFER *effect_instances,
-                                         DWORD *num_materials,
-                                         LPD3DXMESH *mesh)
+HRESULT WINAPI D3DXLoadMeshFromXResource(HMODULE module, const char *name, const char *type, DWORD options,
+        struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials,
+        struct ID3DXBuffer **effect_instances, DWORD *num_materials, struct ID3DXMesh **mesh)
 {
     HRESULT hr;
     HRSRC resinfo;
@@ -3970,12 +3931,8 @@ struct mesh_container
     D3DXMATRIX transform;
 };
 
-static HRESULT parse_frame(IDirectXFileData *filedata,
-                           DWORD options,
-                           LPDIRECT3DDEVICE9 device,
-                           const D3DXMATRIX *parent_transform,
-                           struct list *container_list,
-                           DWORD provide_flags)
+static HRESULT parse_frame(struct IDirectXFileData *filedata, DWORD options, struct IDirect3DDevice9 *device,
+        const D3DXMATRIX *parent_transform, struct list *container_list, DWORD provide_flags)
 {
     HRESULT hr;
     D3DXMATRIX transform = *parent_transform;
@@ -4009,15 +3966,9 @@ static HRESULT parse_frame(IDirectXFileData *filedata,
     return hr == DXFILEERR_NOMOREOBJECTS ? D3D_OK : hr;
 }
 
-HRESULT WINAPI D3DXLoadMeshFromXInMemory(LPCVOID memory,
-                                         DWORD memory_size,
-                                         DWORD options,
-                                         LPDIRECT3DDEVICE9 device,
-                                         LPD3DXBUFFER *adjacency_out,
-                                         LPD3DXBUFFER *materials_out,
-                                         LPD3DXBUFFER *effects_out,
-                                         DWORD *num_materials_out,
-                                         LPD3DXMESH *mesh_out)
+HRESULT WINAPI D3DXLoadMeshFromXInMemory(const void *memory, DWORD memory_size, DWORD options,
+        struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency_out, struct ID3DXBuffer **materials_out,
+        struct ID3DXBuffer **effects_out, DWORD *num_materials_out, struct ID3DXMesh **mesh_out)
 {
     HRESULT hr;
     IDirectXFile *dxfile = NULL;
@@ -4365,8 +4316,8 @@ cleanup:
     return hr;
 }
 
-HRESULT WINAPI D3DXCreateBox(LPDIRECT3DDEVICE9 device, FLOAT width, FLOAT height,
-                             FLOAT depth, LPD3DXMESH* mesh, LPD3DXBUFFER* adjacency)
+HRESULT WINAPI D3DXCreateBox(struct IDirect3DDevice9 *device, float width, float height,
+        float depth, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency)
 {
     FIXME("(%p, %f, %f, %f, %p, %p): stub\n", device, width, height, depth, mesh, adjacency);
 
@@ -4427,8 +4378,8 @@ static WORD vertex_index(UINT slices, int slice, int stack)
     return stack*slices+slice+1;
 }
 
-HRESULT WINAPI D3DXCreateSphere(LPDIRECT3DDEVICE9 device, FLOAT radius, UINT slices,
-                                UINT stacks, LPD3DXMESH* mesh, LPD3DXBUFFER* adjacency)
+HRESULT WINAPI D3DXCreateSphere(struct IDirect3DDevice9 *device, float radius, UINT slices,
+        UINT stacks, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency)
 {
     DWORD number_of_vertices, number_of_faces;
     HRESULT hr;
@@ -4598,8 +4549,8 @@ HRESULT WINAPI D3DXCreateSphere(LPDIRECT3DDEVICE9 device, FLOAT radius, UINT sli
     return D3D_OK;
 }
 
-HRESULT WINAPI D3DXCreateCylinder(LPDIRECT3DDEVICE9 device, FLOAT radius1, FLOAT radius2, FLOAT length, UINT slices,
-                                  UINT stacks, LPD3DXMESH* mesh, LPD3DXBUFFER* adjacency)
+HRESULT WINAPI D3DXCreateCylinder(struct IDirect3DDevice9 *device, float radius1, float radius2,
+        float length, UINT slices, UINT stacks, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency)
 {
     DWORD number_of_vertices, number_of_faces;
     HRESULT hr;
@@ -4784,18 +4735,16 @@ HRESULT WINAPI D3DXCreateCylinder(LPDIRECT3DDEVICE9 device, FLOAT radius1, FLOAT
     return D3D_OK;
 }
 
-HRESULT WINAPI D3DXCreateTeapot(LPDIRECT3DDEVICE9 device, LPD3DXMESH *mesh, LPD3DXBUFFER* adjacency)
+HRESULT WINAPI D3DXCreateTeapot(struct IDirect3DDevice9 *device,
+        struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency)
 {
     FIXME("(%p, %p, %p): stub\n", device, mesh, adjacency);
 
     return E_NOTIMPL;
 }
 
-HRESULT WINAPI D3DXCreateTextA(LPDIRECT3DDEVICE9 device,
-                               HDC hdc, LPCSTR text,
-                               FLOAT deviation, FLOAT extrusion,
-                               LPD3DXMESH *mesh, LPD3DXBUFFER *adjacency,
-                               LPGLYPHMETRICSFLOAT glyphmetrics)
+HRESULT WINAPI D3DXCreateTextA(struct IDirect3DDevice9 *device, HDC hdc, const char *text, float deviation,
+        float extrusion, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency, GLYPHMETRICSFLOAT *glyphmetrics)
 {
     HRESULT hr;
     int len;
@@ -5600,11 +5549,8 @@ static HRESULT triangulate(struct triangulation_array *triangulations)
     return S_OK;
 }
 
-HRESULT WINAPI D3DXCreateTextW(LPDIRECT3DDEVICE9 device,
-                               HDC hdc, LPCWSTR text,
-                               FLOAT deviation, FLOAT extrusion,
-                               LPD3DXMESH *mesh_ptr, LPD3DXBUFFER *adjacency,
-                               LPGLYPHMETRICSFLOAT glyphmetrics)
+HRESULT WINAPI D3DXCreateTextW(struct IDirect3DDevice9 *device, HDC hdc, const WCHAR *text, float deviation,
+        float extrusion, struct ID3DXMesh **mesh_ptr, struct ID3DXBuffer **adjacency, GLYPHMETRICSFLOAT *glyphmetrics)
 {
     HRESULT hr;
     ID3DXMesh *mesh = NULL;
diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c
index 3147d40..3c92992 100644
--- a/dlls/d3dx9_36/shader.c
+++ b/dlls/d3dx9_36/shader.c
@@ -40,7 +40,7 @@ HRESULT WINAPI D3DAssemble(LPCVOID data, SIZE_T datasize, LPCSTR filename,
                            UINT flags,
                            ID3DBlob **shader, ID3DBlob **error_messages);
 
-LPCSTR WINAPI D3DXGetPixelShaderProfile(LPDIRECT3DDEVICE9 device)
+const char * WINAPI D3DXGetPixelShaderProfile(struct IDirect3DDevice9 *device)
 {
     D3DCAPS9 caps;
 
@@ -118,7 +118,7 @@ DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code)
     return byte_code ? *byte_code : 0;
 }
 
-LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device)
+const char * WINAPI D3DXGetVertexShaderProfile(struct IDirect3DDevice9 *device)
 {
     D3DCAPS9 caps;
 
@@ -1321,7 +1321,8 @@ static HRESULT set_matrix_pointer_array(ID3DXConstantTable *iface, IDirect3DDevi
     return D3D_OK;
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetDefaults(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetDefaults(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
     UINT i;
@@ -1344,8 +1345,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetDefaults(ID3DXConstantTable *ifa
     return D3D_OK;
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetValue(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                      D3DXHANDLE constant, LPCVOID data, UINT bytes)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetValue(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const void *data, UINT bytes)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
     HRESULT hr;
@@ -1380,8 +1381,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetValue(ID3DXConstantTable *iface,
     }
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetBool(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                     D3DXHANDLE constant, BOOL b)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetBool(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, BOOL b)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1390,8 +1391,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetBool(ID3DXConstantTable *iface,
     return set_scalar_array(iface, device, constant, &b, 1, D3DXPT_BOOL);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetBoolArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                          D3DXHANDLE constant, CONST BOOL* b, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetBoolArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const BOOL *b, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1400,7 +1401,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetBoolArray(ID3DXConstantTable *if
     return set_scalar_array(iface, device, constant, b, count, D3DXPT_BOOL);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetInt(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device, D3DXHANDLE constant, INT n)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetInt(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, INT n)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1409,8 +1411,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetInt(ID3DXConstantTable *iface, L
     return set_scalar_array(iface, device, constant, &n, 1, D3DXPT_INT);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetIntArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                         D3DXHANDLE constant, CONST INT* n, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetIntArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const INT *n, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1419,8 +1421,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetIntArray(ID3DXConstantTable *ifa
     return set_scalar_array(iface, device, constant, n, count, D3DXPT_INT);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetFloat(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                      D3DXHANDLE constant, FLOAT f)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetFloat(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, float f)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1429,8 +1431,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetFloat(ID3DXConstantTable *iface,
     return set_scalar_array(iface, device, constant, &f, 1, D3DXPT_FLOAT);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetFloatArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                           D3DXHANDLE constant, CONST FLOAT *f, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetFloatArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const float *f, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1439,8 +1441,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetFloatArray(ID3DXConstantTable *i
     return set_scalar_array(iface, device, constant, f, count, D3DXPT_FLOAT);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetVector(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                       D3DXHANDLE constant, CONST D3DXVECTOR4 *vector)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetVector(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXVECTOR4 *vector)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1449,8 +1451,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetVector(ID3DXConstantTable *iface
     return set_vector_array(iface, device, constant, vector, 1, D3DXPT_FLOAT);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                            D3DXHANDLE constant, CONST D3DXVECTOR4 *vector, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXVECTOR4 *vector, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1459,8 +1461,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetVectorArray(ID3DXConstantTable *
     return set_vector_array(iface, device, constant, vector, count, D3DXPT_FLOAT);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrix(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                       D3DXHANDLE constant, CONST D3DXMATRIX *matrix)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrix(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1469,8 +1471,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrix(ID3DXConstantTable *iface
     return set_matrix_array(iface, device, constant, matrix, 1, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 4, 4);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                            D3DXHANDLE constant, CONST D3DXMATRIX *matrix, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1479,8 +1481,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixArray(ID3DXConstantTable *
     return set_matrix_array(iface, device, constant, matrix, count, D3DXPC_MATRIX_ROWS, D3DXPT_FLOAT, 4, 4);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixPointerArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                                   D3DXHANDLE constant, CONST D3DXMATRIX **matrix, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixPointerArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX **matrix, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1489,8 +1491,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixPointerArray(ID3DXConstant
     return set_matrix_pointer_array(iface, device, constant, matrix, count, D3DXPC_MATRIX_ROWS);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTranspose(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                                D3DXHANDLE constant, CONST D3DXMATRIX *matrix)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTranspose(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1499,8 +1501,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTranspose(ID3DXConstantTab
     return set_matrix_array(iface, device, constant, matrix, 1, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposeArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                                     D3DXHANDLE constant, CONST D3DXMATRIX *matrix, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposeArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *matrix, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
@@ -1509,8 +1511,8 @@ static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposeArray(ID3DXConsta
     return set_matrix_array(iface, device, constant, matrix, count, D3DXPC_MATRIX_COLUMNS, D3DXPT_FLOAT, 4, 4);
 }
 
-static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposePointerArray(ID3DXConstantTable *iface, LPDIRECT3DDEVICE9 device,
-                                                                            D3DXHANDLE constant, CONST D3DXMATRIX **matrix, UINT count)
+static HRESULT WINAPI ID3DXConstantTableImpl_SetMatrixTransposePointerArray(struct ID3DXConstantTable *iface,
+        struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX **matrix, UINT count)
 {
     struct ID3DXConstantTableImpl *This = impl_from_ID3DXConstantTable(iface);
 
diff --git a/dlls/d3dx9_36/sprite.c b/dlls/d3dx9_36/sprite.c
index 3c8e14c..658b6ea 100644
--- a/dlls/d3dx9_36/sprite.c
+++ b/dlls/d3dx9_36/sprite.c
@@ -119,7 +119,7 @@ static ULONG WINAPI ID3DXSpriteImpl_Release(ID3DXSprite *iface)
     return ref;
 }
 
-static HRESULT WINAPI ID3DXSpriteImpl_GetDevice(ID3DXSprite *iface, LPDIRECT3DDEVICE9 *device)
+static HRESULT WINAPI ID3DXSpriteImpl_GetDevice(struct ID3DXSprite *iface, struct IDirect3DDevice9 **device)
 {
     ID3DXSpriteImpl *This = impl_from_ID3DXSprite(iface);
 
@@ -529,7 +529,7 @@ static const ID3DXSpriteVtbl D3DXSprite_Vtbl =
     ID3DXSpriteImpl_OnResetDevice
 };
 
-HRESULT WINAPI D3DXCreateSprite(LPDIRECT3DDEVICE9 device, LPD3DXSPRITE *sprite)
+HRESULT WINAPI D3DXCreateSprite(struct IDirect3DDevice9 *device, struct ID3DXSprite **sprite)
 {
     ID3DXSpriteImpl *object;
     D3DCAPS9 caps;
diff --git a/dlls/d3dx9_36/tests/line.c b/dlls/d3dx9_36/tests/line.c
index 52c153d..dc0c747 100644
--- a/dlls/d3dx9_36/tests/line.c
+++ b/dlls/d3dx9_36/tests/line.c
@@ -59,7 +59,7 @@ static void test_create_line(IDirect3DDevice9* device)
 {
     HRESULT hr;
     LPD3DXLINE line = NULL;
-    LPDIRECT3DDEVICE9 return_device;
+    struct IDirect3DDevice9 *return_device;
     D3DXMATRIX world, identity, result;
     FLOAT r11, r12, r13, r14;
     ULONG ref;
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
index 0747704..3809b02 100644
--- a/dlls/d3dx9_36/texture.c
+++ b/dlls/d3dx9_36/texture.c
@@ -184,13 +184,8 @@ HRESULT WINAPI D3DXFilterTexture(IDirect3DBaseTexture9 *texture,
     }
 }
 
-HRESULT WINAPI D3DXCheckTextureRequirements(LPDIRECT3DDEVICE9 device,
-                                            UINT* width,
-                                            UINT* height,
-                                            UINT* miplevels,
-                                            DWORD usage,
-                                            D3DFORMAT* format,
-                                            D3DPOOL pool)
+HRESULT WINAPI D3DXCheckTextureRequirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height,
+        UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
 {
     UINT w = (width && *width) ? *width : 1;
     UINT h = (height && *height) ? *height : 1;
@@ -389,12 +384,8 @@ cleanup:
     return D3D_OK;
 }
 
-HRESULT WINAPI D3DXCheckCubeTextureRequirements(LPDIRECT3DDEVICE9 device,
-                                                UINT *size,
-                                                UINT *miplevels,
-                                                DWORD usage,
-                                                D3DFORMAT *format,
-                                                D3DPOOL pool)
+HRESULT WINAPI D3DXCheckCubeTextureRequirements(struct IDirect3DDevice9 *device, UINT *size,
+        UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
 {
     D3DCAPS9 caps;
     UINT s = (size && *size) ? *size : 256;
@@ -429,14 +420,8 @@ HRESULT WINAPI D3DXCheckCubeTextureRequirements(LPDIRECT3DDEVICE9 device,
     return hr;
 }
 
-HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *depth,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool)
+HRESULT WINAPI D3DXCheckVolumeTextureRequirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height,
+        UINT *depth, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool)
 {
     D3DCAPS9 caps;
     UINT w = width ? *width : D3DX_DEFAULT;
diff --git a/include/d3dx9anim.h b/include/d3dx9anim.h
index 1e31299..0c9d7b9 100644
--- a/include/d3dx9anim.h
+++ b/include/d3dx9anim.h
@@ -367,10 +367,17 @@ DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown)
 extern "C" {
 #endif
 
-HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(LPCSTR, DWORD, LPDIRECT3DDEVICE9, LPD3DXALLOCATEHIERARCHY, LPD3DXLOADUSERDATA, LPD3DXFRAME*, LPD3DXANIMATIONCONTROLLER*);
-HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(LPCWSTR, DWORD, LPDIRECT3DDEVICE9, LPD3DXALLOCATEHIERARCHY, LPD3DXLOADUSERDATA, LPD3DXFRAME*, LPD3DXANIMATIONCONTROLLER*);
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(const char *filename, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXAllocateHierarchy *alloc, struct ID3DXLoadUserData *user_data_loader,
+        D3DXFRAME **frame_hierarchy, struct ID3DXAnimationController **animation_controller);
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(const WCHAR *filename, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXAllocateHierarchy *alloc, struct ID3DXLoadUserData *user_data_loader,
+        D3DXFRAME **frame_hierarchy, struct ID3DXAnimationController **animation_controller);
 #define D3DXLoadMeshHierarchyFromX WINELIB_NAME_AW(D3DXLoadMeshHierarchyFromX)
-HRESULT WINAPI D3DXLoadMeshHierarchyFromXInMemory(LPCVOID, DWORD, DWORD, LPDIRECT3DDEVICE9, LPD3DXALLOCATEHIERARCHY, LPD3DXLOADUSERDATA, LPD3DXFRAME*, LPD3DXANIMATIONCONTROLLER*);
+HRESULT WINAPI D3DXLoadMeshHierarchyFromXInMemory(const void *data, DWORD data_size, DWORD flags,
+        struct IDirect3DDevice9 *device, struct ID3DXAllocateHierarchy *alloc,
+        struct ID3DXLoadUserData *user_data_loader, D3DXFRAME **frame_hierarchy,
+        struct ID3DXAnimationController **animation_controller);
 HRESULT WINAPI D3DXSaveMeshHierarchyToFileA(LPCSTR, DWORD, CONST D3DXFRAME*, LPD3DXANIMATIONCONTROLLER, LPD3DXSAVEUSERDATA);
 HRESULT WINAPI D3DXSaveMeshHierarchyToFileW(LPCWSTR, DWORD, CONST D3DXFRAME*, LPD3DXANIMATIONCONTROLLER, LPD3DXSAVEUSERDATA);
 #define D3DXSaveMeshHierarchyToFile WINELIB_NAME_AW(D3DXSaveMeshHierarchyToFile)
diff --git a/include/d3dx9core.h b/include/d3dx9core.h
index c5dffce..2fb26da 100644
--- a/include/d3dx9core.h
+++ b/include/d3dx9core.h
@@ -131,7 +131,7 @@ DECLARE_INTERFACE_(ID3DXFont, IUnknown)
     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
     STDMETHOD_(ULONG, Release)(THIS) PURE;
     /*** ID3DXFont methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
     STDMETHOD(GetDescA)(THIS_ D3DXFONT_DESCA *desc) PURE;
     STDMETHOD(GetDescW)(THIS_ D3DXFONT_DESCW *desc) PURE;
     STDMETHOD_(BOOL, GetTextMetricsA)(THIS_ TEXTMETRICA *metrics) PURE;
@@ -212,7 +212,7 @@ DECLARE_INTERFACE_(ID3DXLine, IUnknown)
     STDMETHOD_(ULONG, Release)(THIS) PURE;
 
     /*** ID3DXLine methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
 
     STDMETHOD(Begin)(THIS) PURE;
     STDMETHOD(Draw)(THIS_ CONST D3DXVECTOR2 *vertexlist, DWORD vertexlistcount, D3DCOLOR color) PURE;
@@ -301,7 +301,7 @@ DECLARE_INTERFACE_(ID3DXRenderToEnvMap, IUnknown)
     STDMETHOD_(ULONG, Release)(THIS) PURE;
 
     /*** ID3DXRenderToEnvMap methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
     STDMETHOD(GetDesc)(THIS_ D3DXRTE_DESC *desc) PURE;
 
     STDMETHOD(BeginCube)(THIS_ struct IDirect3DCubeTexture9 *cubetex) PURE;
@@ -368,7 +368,7 @@ DECLARE_INTERFACE_(ID3DXRenderToSurface, IUnknown)
     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
     STDMETHOD_(ULONG, Release)(THIS) PURE;
     /*** ID3DXRenderToSurface methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
     STDMETHOD(GetDesc)(THIS_ D3DXRTS_DESC *desc) PURE;
 
     STDMETHOD(BeginScene)(THIS_ struct IDirect3DSurface9 *surface, const D3DVIEWPORT9 *viewport) PURE;
@@ -413,7 +413,7 @@ DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
     STDMETHOD_(ULONG, Release)(THIS) PURE;
     /*** ID3DXSprite methods ***/
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9 *device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
 
     STDMETHOD(GetTransform)(THIS_ D3DXMATRIX *transform) PURE;
     STDMETHOD(SetTransform)(THIS_ CONST D3DXMATRIX *transform) PURE;
@@ -474,21 +474,27 @@ DECLARE_INTERFACE_(ID3DXSprite, IUnknown)
 extern "C" {
 #endif
 
-BOOL    WINAPI D3DXCheckVersion(UINT d3dsdkvers, UINT d3dxsdkvers);
-HRESULT WINAPI D3DXCreateFontA(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCSTR facename, LPD3DXFONT *font);
-HRESULT WINAPI D3DXCreateFontW(LPDIRECT3DDEVICE9 device, INT height, UINT width, UINT weight, UINT miplevels, BOOL italic, DWORD charset,
-                               DWORD precision, DWORD quality, DWORD pitchandfamily, LPCWSTR facename, LPD3DXFONT *font);
-#define        D3DXCreateFont WINELIB_NAME_AW(D3DXCreateFont)
-HRESULT WINAPI D3DXCreateFontIndirectA(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCA *desc, LPD3DXFONT *font);
-HRESULT WINAPI D3DXCreateFontIndirectW(LPDIRECT3DDEVICE9 device, CONST D3DXFONT_DESCW *desc, LPD3DXFONT *font);
-#define        D3DXCreateFontIndirect WINELIB_NAME_AW(D3DXCreateFontIndirect)
-HRESULT WINAPI D3DXCreateLine(LPDIRECT3DDEVICE9 device, LPD3DXLINE *line);
-HRESULT WINAPI D3DXCreateRenderToEnvMap(LPDIRECT3DDEVICE9 device, UINT size, UINT miplevels, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRenderToEnvMap *rtem);
-HRESULT WINAPI D3DXCreateRenderToSurface(LPDIRECT3DDEVICE9 device, UINT width, UINT height, D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, LPD3DXRENDERTOSURFACE *rts);
-HRESULT WINAPI D3DXCreateSprite(LPDIRECT3DDEVICE9 device, LPD3DXSPRITE *sprite);
-BOOL    WINAPI D3DXDebugMute(BOOL mute);
-UINT    WINAPI D3DXGetDriverLevel(LPDIRECT3DDEVICE9 device);
+BOOL WINAPI D3DXCheckVersion(UINT d3dsdkvers, UINT d3dxsdkvers);
+HRESULT WINAPI D3DXCreateFontA(struct IDirect3DDevice9 *device, INT height, UINT width, UINT weight,
+        UINT miplevels, BOOL italic, DWORD charset, DWORD precision, DWORD quality, DWORD pitchandfamily,
+        const char *facename, struct ID3DXFont **font);
+HRESULT WINAPI D3DXCreateFontW(struct IDirect3DDevice9 *device, INT height, UINT width, UINT weight,
+        UINT miplevels, BOOL italic, DWORD charset, DWORD precision, DWORD quality, DWORD pitchandfamily,
+        const WCHAR *facename, struct ID3DXFont **font);
+#define D3DXCreateFont WINELIB_NAME_AW(D3DXCreateFont)
+HRESULT WINAPI D3DXCreateFontIndirectA(struct IDirect3DDevice9 *device,
+        const D3DXFONT_DESCA *desc, struct ID3DXFont **font);
+HRESULT WINAPI D3DXCreateFontIndirectW(struct IDirect3DDevice9 *device,
+        const D3DXFONT_DESCW *desc, struct ID3DXFont **font);
+#define D3DXCreateFontIndirect WINELIB_NAME_AW(D3DXCreateFontIndirect)
+HRESULT WINAPI D3DXCreateLine(struct IDirect3DDevice9 *device, struct ID3DXLine **line);
+HRESULT WINAPI D3DXCreateRenderToEnvMap(struct IDirect3DDevice9 *device, UINT size, UINT miplevels,
+        D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, struct ID3DXRenderToEnvMap **rtem);
+HRESULT WINAPI D3DXCreateRenderToSurface(struct IDirect3DDevice9 *device, UINT width, UINT height,
+        D3DFORMAT format, BOOL stencil, D3DFORMAT stencil_format, struct ID3DXRenderToSurface **rts);
+HRESULT WINAPI D3DXCreateSprite(struct IDirect3DDevice9 *device, struct ID3DXSprite **sprite);
+BOOL WINAPI D3DXDebugMute(BOOL mute);
+UINT WINAPI D3DXGetDriverLevel(struct IDirect3DDevice9 *device);
 
 #ifdef __cplusplus
 }
diff --git a/include/d3dx9effect.h b/include/d3dx9effect.h
index f6850ec..edf933f 100644
--- a/include/d3dx9effect.h
+++ b/include/d3dx9effect.h
@@ -269,7 +269,7 @@ DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
     STDMETHOD(CommitChanges)(THIS) PURE;
     STDMETHOD(EndPass)(THIS) PURE;
     STDMETHOD(End)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
     STDMETHOD(OnLostDevice)(THIS) PURE;
     STDMETHOD(OnResetDevice)(THIS) PURE;
     STDMETHOD(SetStateManager)(THIS_ LPD3DXEFFECTSTATEMANAGER manager) PURE;
@@ -278,7 +278,7 @@ DECLARE_INTERFACE_(ID3DXEffect, ID3DXBaseEffect)
     STDMETHOD_(D3DXHANDLE, EndParameterBlock)(THIS) PURE;
     STDMETHOD(ApplyParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
     STDMETHOD(DeleteParameterBlock)(THIS_ D3DXHANDLE parameter_block) PURE;
-    STDMETHOD(CloneEffect)(THIS_ LPDIRECT3DDEVICE9 device, LPD3DXEFFECT* effect) PURE;
+    STDMETHOD(CloneEffect)(THIS_ struct IDirect3DDevice9 *device, struct ID3DXEffect **effect) PURE;
     STDMETHOD(SetRawValue)(THIS_ D3DXHANDLE parameter, LPCVOID data, UINT byte_offset, UINT bytes) PURE;
 };
 #undef INTERFACE
@@ -364,28 +364,12 @@ extern "C" {
 #endif
 
 HRESULT WINAPI D3DXCreateEffectPool(LPD3DXEFFECTPOOL* pool);
-
-HRESULT WINAPI D3DXCreateEffect(LPDIRECT3DDEVICE9 device,
-                                LPCVOID srcdata,
-                                UINT srcdatalen,
-                                CONST D3DXMACRO* defines,
-                                LPD3DXINCLUDE include,
-                                DWORD flags,
-                                LPD3DXEFFECTPOOL pool,
-                                LPD3DXEFFECT* effect,
-                                LPD3DXBUFFER* compilation_errors);
-
-HRESULT WINAPI D3DXCreateEffectEx(LPDIRECT3DDEVICE9 device,
-                                  LPCVOID srcdata,
-                                  UINT srcdatalen,
-                                  CONST D3DXMACRO* defines,
-                                  LPD3DXINCLUDE include,
-                                  LPCSTR skip_constants,
-                                  DWORD flags,
-                                  LPD3DXEFFECTPOOL pool,
-                                  LPD3DXEFFECT* effect,
-                                  LPD3DXBUFFER* compilation_errors);
-
+HRESULT WINAPI D3DXCreateEffect(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
+HRESULT WINAPI D3DXCreateEffectEx(struct IDirect3DDevice9 *device, const void *srcdata, UINT srcdatalen,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
 HRESULT WINAPI D3DXCreateEffectCompiler(LPCSTR srcdata,
                                         UINT srcdatalen,
                                         CONST D3DXMACRO* defines,
@@ -393,85 +377,38 @@ HRESULT WINAPI D3DXCreateEffectCompiler(LPCSTR srcdata,
                                         DWORD flags,
                                         LPD3DXEFFECTCOMPILER* compiler,
                                         LPD3DXBUFFER* parse_errors);
-
-HRESULT WINAPI D3DXCreateEffectFromFileExA(LPDIRECT3DDEVICE9 device,
-                                           LPCSTR srcfile,
-                                           const D3DXMACRO *defines,
-                                           LPD3DXINCLUDE include,
-                                           LPCSTR skipconstants,
-                                           DWORD flags,
-                                           LPD3DXEFFECTPOOL pool,
-                                           LPD3DXEFFECT *effect,
-                                           LPD3DXBUFFER *compilationerrors);
-HRESULT WINAPI D3DXCreateEffectFromFileExW(LPDIRECT3DDEVICE9 device,
-                                           LPCWSTR srcfile,
-                                           const D3DXMACRO *defines,
-                                           LPD3DXINCLUDE include,
-                                           LPCSTR skipconstants,
-                                           DWORD flags,
-                                           LPD3DXEFFECTPOOL pool,
-                                           LPD3DXEFFECT *effect,
-                                           LPD3DXBUFFER *compilationerrors);
+HRESULT WINAPI D3DXCreateEffectFromFileExA(struct IDirect3DDevice9 *device, const char *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
+HRESULT WINAPI D3DXCreateEffectFromFileExW(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, const char *skip_constants, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
 #define D3DXCreateEffectFromFileEx WINELIB_NAME_AW(D3DXCreateEffectFromFileEx)
 
-HRESULT WINAPI D3DXCreateEffectFromFileA(LPDIRECT3DDEVICE9 device,
-                                         LPCSTR srcfile,
-                                         const D3DXMACRO *defines,
-                                         LPD3DXINCLUDE include,
-                                         DWORD flags,
-                                         LPD3DXEFFECTPOOL pool,
-                                         LPD3DXEFFECT *effect,
-                                         LPD3DXBUFFER *compilationerrors);
-HRESULT WINAPI D3DXCreateEffectFromFileW(LPDIRECT3DDEVICE9 device,
-                                         LPCWSTR srcfile,
-                                         const D3DXMACRO *defines,
-                                         LPD3DXINCLUDE include,
-                                         DWORD flags,
-                                         LPD3DXEFFECTPOOL pool,
-                                         LPD3DXEFFECT *effect,
-                                         LPD3DXBUFFER *compilationerrors);
+HRESULT WINAPI D3DXCreateEffectFromFileA(struct IDirect3DDevice9 *device, const char *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
+HRESULT WINAPI D3DXCreateEffectFromFileW(struct IDirect3DDevice9 *device, const WCHAR *srcfile,
+        const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
 #define D3DXCreateEffectFromFile WINELIB_NAME_AW(D3DXCreateEffectFromFile)
 
-HRESULT WINAPI D3DXCreateEffectFromResourceExA(LPDIRECT3DDEVICE9 device,
-                                               HMODULE srcmodule,
-                                               LPCSTR srcresource,
-                                               const D3DXMACRO *defines,
-                                               LPD3DXINCLUDE include,
-                                               LPCSTR skipconstants,
-                                               DWORD flags,
-                                               LPD3DXEFFECTPOOL pool,
-                                               LPD3DXEFFECT *effect,
-                                               LPD3DXBUFFER *compilationerrors);
-HRESULT WINAPI D3DXCreateEffectFromResourceExW(LPDIRECT3DDEVICE9 device,
-                                               HMODULE srcmodule,
-                                               LPCWSTR srcresource,
-                                               const D3DXMACRO *defines,
-                                               LPD3DXINCLUDE include,
-                                               LPCSTR skipconstants,
-                                               DWORD flags,
-                                               LPD3DXEFFECTPOOL pool,
-                                               LPD3DXEFFECT *effect,
-                                               LPD3DXBUFFER *compilationerrors);
+HRESULT WINAPI D3DXCreateEffectFromResourceExA(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include,
+        const char *skip_constants, DWORD flags, struct ID3DXEffectPool *pool,
+        struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
+HRESULT WINAPI D3DXCreateEffectFromResourceExW(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include,
+        const char *skip_constants, DWORD flags, struct ID3DXEffectPool *pool,
+        struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
 #define D3DXCreateEffectFromResourceEx WINELIB_NAME_AW(D3DXCreateEffectFromResourceEx)
 
-HRESULT WINAPI D3DXCreateEffectFromResourceA(LPDIRECT3DDEVICE9 device,
-                                             HMODULE srcmodule,
-                                             LPCSTR srcresource,
-                                             const D3DXMACRO *defines,
-                                             LPD3DXINCLUDE include,
-                                             DWORD flags,
-                                             LPD3DXEFFECTPOOL pool,
-                                             LPD3DXEFFECT *effect,
-                                             LPD3DXBUFFER *compilationerrors);
-HRESULT WINAPI D3DXCreateEffectFromResourceW(LPDIRECT3DDEVICE9 device,
-                                             HMODULE srcmodule,
-                                             LPCWSTR srcresource,
-                                             const D3DXMACRO *defines,
-                                             LPD3DXINCLUDE include,
-                                             DWORD flags,
-                                             LPD3DXEFFECTPOOL pool,
-                                             LPD3DXEFFECT *effect,
-                                             LPD3DXBUFFER *compilationerrors);
+HRESULT WINAPI D3DXCreateEffectFromResourceA(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const char *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
+HRESULT WINAPI D3DXCreateEffectFromResourceW(struct IDirect3DDevice9 *device, HMODULE srcmodule,
+        const WCHAR *srcresource, const D3DXMACRO *defines, struct ID3DXInclude *include, DWORD flags,
+        struct ID3DXEffectPool *pool, struct ID3DXEffect **effect, struct ID3DXBuffer **compilation_errors);
 #define D3DXCreateEffectFromResource WINELIB_NAME_AW(D3DXCreateEffectFromResource)
 
 HRESULT WINAPI D3DXCreateEffectCompilerFromFileA(LPCSTR srcfile,
diff --git a/include/d3dx9mesh.h b/include/d3dx9mesh.h
index eb13e93..ff45762 100644
--- a/include/d3dx9mesh.h
+++ b/include/d3dx9mesh.h
@@ -318,10 +318,11 @@ DECLARE_INTERFACE_(ID3DXBaseMesh, IUnknown)
     STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
     STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
     STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
+    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
+            struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
+    STDMETHOD(CloneMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration,
+            struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
     STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
     STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
     STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
@@ -351,10 +352,11 @@ DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
     STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
     STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
     STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
+    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
+            struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
+    STDMETHOD(CloneMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration,
+            struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
     STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
     STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
     STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
@@ -392,10 +394,11 @@ DECLARE_INTERFACE_(ID3DXPMesh, ID3DXBaseMesh)
     STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
     STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
     STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXMESH* clone_mesh) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
+    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
+            struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
+    STDMETHOD(CloneMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration,
+            struct IDirect3DDevice9 *device, struct ID3DXMesh **clone_mesh) PURE;
     STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
     STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
     STDMETHOD(LockVertexBuffer)(THIS_ DWORD flags, LPVOID* data) PURE;
@@ -408,9 +411,10 @@ DECLARE_INTERFACE_(ID3DXPMesh, ID3DXBaseMesh)
     STDMETHOD(GenerateAdjacency)(THIS_ FLOAT epsilon, DWORD* adjacency) PURE;
     STDMETHOD(UpdateSemantics)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
     /*** ID3DXPMesh ***/
-    STDMETHOD(ClonePMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, LPD3DXPMESH* clone_mesh) PURE;
-    STDMETHOD(ClonePMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        LPD3DXPMESH* clone_mesh) PURE;
+    STDMETHOD(ClonePMeshFVF)(THIS_ DWORD options, DWORD fvf,
+            struct IDirect3DDevice9 *device, struct ID3DXPMesh **clone_mesh) PURE;
+    STDMETHOD(ClonePMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration,
+            struct IDirect3DDevice9 *device, struct ID3DXPMesh **clone_mesh) PURE;
     STDMETHOD(SetNumFaces)(THIS_ DWORD faces) PURE;
     STDMETHOD(SetNumVertices)(THIS_ DWORD vertices) PURE;
     STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
@@ -441,15 +445,19 @@ DECLARE_INTERFACE_(ID3DXSPMesh, IUnknown)
     STDMETHOD_(DWORD, GetNumFVF)(THIS) PURE;
     STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
     STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
-    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, DWORD* adjacency_out,
-        DWORD* vertex_remap_out, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(CloneMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        DWORD* adjacency_out, DWORD* vertex_remap_out, LPD3DXMESH* clone_mesh) PURE;
-    STDMETHOD(ClonePMeshFVF)(THIS_ DWORD options, DWORD fvf, LPDIRECT3DDEVICE9 device, DWORD* vertex_remap_out,
-        FLOAT* errors_by_face, LPD3DXPMESH* clone_mesh) PURE;
-    STDMETHOD(ClonePMesh)(THIS_ DWORD options, CONST D3DVERTEXELEMENT9* declaration, LPDIRECT3DDEVICE9 device,
-        DWORD* vertex_remap_out, FLOAT* errors_by_face, LPD3DXPMESH* clone_mesh) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
+    STDMETHOD(CloneMeshFVF)(THIS_ DWORD options, DWORD fvf,
+            struct IDirect3DDevice9 *device, DWORD *adjacency_out,
+            DWORD *vertex_remap_out, struct ID3DXMesh **clone_mesh) PURE;
+    STDMETHOD(CloneMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration,
+            struct IDirect3DDevice9 *device, DWORD *adjacency_out,
+            DWORD *vertex_remap_out, struct ID3DXMesh **clone_mesh) PURE;
+    STDMETHOD(ClonePMeshFVF)(THIS_ DWORD options, DWORD fvf,
+            struct IDirect3DDevice9 *device, DWORD *vertex_remap_out,
+            float *errors_by_face, struct ID3DXPMesh **clone_mesh) PURE;
+    STDMETHOD(ClonePMesh)(THIS_ DWORD options, const D3DVERTEXELEMENT9 *declaration,
+            struct IDirect3DDevice9 *device, DWORD *vertex_remap_out,
+            float *errors_by_face, struct ID3DXPMesh **clone_mesh) PURE;
     STDMETHOD(ReduceFaces)(THIS_ DWORD faces) PURE;
     STDMETHOD(ReduceVertices)(THIS_ DWORD vertices) PURE;
     STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
@@ -472,7 +480,7 @@ DECLARE_INTERFACE_(ID3DXPatchMesh, IUnknown)
     STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE]) PURE;
     STDMETHOD_(DWORD, GetControlVerticesPerPatch)(THIS) PURE;
     STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
-    STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* device) PURE;
+    STDMETHOD(GetDevice)(THIS_ struct IDirect3DDevice9 **device) PURE;
     STDMETHOD(GetPatchInfo)(THIS_ LPD3DXPATCHINFO patch_info) PURE;
     STDMETHOD(GetVertexBuffer)(THIS_ struct IDirect3DVertexBuffer9 **vertex_buffer) PURE;
     STDMETHOD(GetIndexBuffer)(THIS_ struct IDirect3DIndexBuffer9 **index_buffer) PURE;
@@ -636,8 +644,8 @@ DECLARE_INTERFACE_(ID3DXPRTEngine, IUnknown)
     STDMETHOD(SetPerTexelNormals)(THIS_ struct IDirect3DTexture9 *normal_texture) PURE;
     STDMETHOD(ExtractPerVertexAlbedo)(THIS_ LPD3DXMESH mesh, D3DDECLUSAGE usage, UINT num_channels) PURE;
     STDMETHOD(ResampleBuffer)(THIS_ LPD3DXPRTBUFFER buffer_in, LPD3DXPRTBUFFER buffer_out) PURE;
-    STDMETHOD(GetAdaptedMesh)(THIS_ LPDIRECT3DDEVICE9 device, UINT *face_remap,
-        UINT *vert_remap, FLOAT *vert_weights, LPD3DXMESH *mesh) PURE;
+    STDMETHOD(GetAdaptedMesh)(THIS_ struct IDirect3DDevice9 *device, UINT *face_remap,
+            UINT *vert_remap, float *vert_weights, struct ID3DXMesh **mesh) PURE;
     STDMETHOD_(UINT, GetNumVerts)(THIS) PURE;
     STDMETHOD_(UINT, GetNumFaces)(THIS) PURE;
     STDMETHOD(SetMinMaxIntersection)(THIS_ FLOAT min, FLOAT max) PURE;
@@ -647,8 +655,8 @@ DECLARE_INTERFACE_(ID3DXPRTEngine, IUnknown)
     STDMETHOD(ComputeDirectLightingSH)(THIS_ UINT sh_order, LPD3DXPRTBUFFER data_out) PURE;
     STDMETHOD(ComputeDirectLightingSHAdaptive)(THIS_ UINT sh_order, FLOAT adaptive_thresh,
         FLOAT min_edge_length, UINT max_subdiv, LPD3DXPRTBUFFER data_out) PURE;
-    STDMETHOD(ComputeDirectLightingSHGPU)(THIS_ LPDIRECT3DDEVICE9 device, UINT flags,
-        UINT sh_order, FLOAT zbias, FLOAT zangle_bias, LPD3DXPRTBUFFER data_out) PURE;
+    STDMETHOD(ComputeDirectLightingSHGPU)(THIS_ struct IDirect3DDevice9 *device, UINT flags,
+            UINT sh_order, float zbias, float zangle_bias, struct ID3DXPRTBuffer *data_out) PURE;
     STDMETHOD(ComputeSS)(THIS_ LPD3DXPRTBUFFER data_in, LPD3DXPRTBUFFER data_out,
         LPD3DXPRTBUFFER data_total) PURE;
     STDMETHOD(ComputeSSAdaptive)(THIS_ LPD3DXPRTBUFFER data_in, FLOAT adaptive_thres,
@@ -683,28 +691,49 @@ DECLARE_INTERFACE_(ID3DXPRTEngine, IUnknown)
 extern "C" {
 #endif
 
-HRESULT WINAPI D3DXCreateMesh(DWORD, DWORD, DWORD, CONST D3DVERTEXELEMENT9 *, LPDIRECT3DDEVICE9, LPD3DXMESH *);
-HRESULT WINAPI D3DXCreateMeshFVF(DWORD, DWORD, DWORD, DWORD, LPDIRECT3DDEVICE9, LPD3DXMESH *);
+HRESULT WINAPI D3DXCreateMesh(DWORD face_count, DWORD vertex_count, DWORD flags,
+        const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh);
+HRESULT WINAPI D3DXCreateMeshFVF(DWORD face_count, DWORD vertex_count, DWORD flags,
+        DWORD fvf, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh);
 HRESULT WINAPI D3DXCreateBuffer(DWORD, LPD3DXBUFFER*);
 HRESULT WINAPI D3DXCreateSPMesh(LPD3DXMESH, CONST DWORD *, CONST D3DXATTRIBUTEWEIGHTS, CONST FLOAT *, LPD3DXSPMESH *);
-HRESULT WINAPI D3DXCreatePMeshFromStream(IStream *, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXPMESH *);
+HRESULT WINAPI D3DXCreatePMeshFromStream(struct IStream *stream, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXPMesh **mesh);
 HRESULT WINAPI D3DXCreateSkinInfo(DWORD, CONST D3DVERTEXELEMENT9 *, DWORD, LPD3DXSKININFO *);
 HRESULT WINAPI D3DXCreateSkinInfoFVF(DWORD, DWORD, DWORD, LPD3DXSKININFO *);
 HRESULT WINAPI D3DXCreateSkinInfoFromBlendedMesh(LPD3DXBASEMESH, DWORD, CONST D3DXBONECOMBINATION *, LPD3DXSKININFO *);
-HRESULT WINAPI D3DXCreatePatchMesh(CONST D3DXPATCHINFO *, DWORD, DWORD, DWORD, CONST D3DVERTEXELEMENT9 *, LPDIRECT3DDEVICE9, LPD3DXPATCHMESH *);
+HRESULT WINAPI D3DXCreatePatchMesh(const D3DXPATCHINFO *patch_info, DWORD patch_count,
+        DWORD vertex_count, DWORD flags, const D3DVERTEXELEMENT9 *declaration,
+        struct IDirect3DDevice9 *device, struct ID3DXPatchMesh **mesh);
 HRESULT WINAPI D3DXCreatePRTBuffer(UINT, UINT, UINT, LPD3DXPRTBUFFER *);
 HRESULT WINAPI D3DXCreatePRTBufferTex(UINT, UINT, UINT, UINT, LPD3DXPRTBUFFER *);
 HRESULT WINAPI D3DXCreatePRTCompBuffer(D3DXSHCOMPRESSQUALITYTYPE, UINT, UINT, LPD3DXSHPRTSIMCB, LPVOID, LPD3DXPRTBUFFER, LPD3DXPRTCOMPBUFFER *);
 HRESULT WINAPI D3DXCreateTextureGutterHelper(UINT, UINT, LPD3DXMESH, FLOAT, LPD3DXTEXTUREGUTTERHELPER *);
 HRESULT WINAPI D3DXCreatePRTEngine(LPD3DXMESH, DWORD *, BOOL, LPD3DXMESH, LPD3DXPRTENGINE *);
-HRESULT WINAPI D3DXLoadMeshFromXA(LPCSTR, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXMESH *);
-HRESULT WINAPI D3DXLoadMeshFromXW(LPCWSTR, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXMESH *);
+HRESULT WINAPI D3DXLoadMeshFromXA(const char *filename, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXMesh **mesh);
+HRESULT WINAPI D3DXLoadMeshFromXW(const WCHAR *filename, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXMesh **mesh);
 #define D3DXLoadMeshFromX WINELIB_NAME_AW(D3DXLoadMeshFromX)
-HRESULT WINAPI D3DXLoadMeshFromXInMemory(LPCVOID, DWORD, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXMESH *);
-HRESULT WINAPI D3DXLoadMeshFromXResource(HMODULE, LPCSTR, LPCSTR, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXMESH *);
-HRESULT WINAPI D3DXLoadMeshFromXof(LPD3DXFILEDATA, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXMESH *);
-HRESULT WINAPI D3DXLoadPatchMeshFromXof(LPD3DXFILEDATA, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXPATCHMESH *);
-HRESULT WINAPI D3DXLoadSkinMeshFromXof(LPD3DXFILEDATA, DWORD, LPDIRECT3DDEVICE9, LPD3DXBUFFER *, LPD3DXBUFFER *, LPD3DXBUFFER *, DWORD *, LPD3DXSKININFO *, LPD3DXMESH *);
+HRESULT WINAPI D3DXLoadMeshFromXInMemory(const void *data, DWORD data_size, DWORD flags,
+        struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials,
+        struct ID3DXBuffer **effect_instances, DWORD *material_count, struct ID3DXMesh **mesh);
+HRESULT WINAPI D3DXLoadMeshFromXResource(HMODULE module, const char *resource, const char *resource_type,
+        DWORD flags, struct IDirect3DDevice9 *device, struct ID3DXBuffer **adjacency,
+        struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXMesh **mesh);
+HRESULT WINAPI D3DXLoadMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXMesh **mesh);
+HRESULT WINAPI D3DXLoadPatchMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXPatchMesh **mesh);
+HRESULT WINAPI D3DXLoadSkinMeshFromXof(struct ID3DXFileData *file_data, DWORD flags, struct IDirect3DDevice9 *device,
+        struct ID3DXBuffer **adjacency, struct ID3DXBuffer **materials, struct ID3DXBuffer **effect_instances,
+        DWORD *material_count, struct ID3DXSkinInfo **skin_info, struct ID3DXMesh **mesh);
 HRESULT WINAPI D3DXLoadPRTBufferFromFileA(LPCSTR, LPD3DXPRTBUFFER *);
 HRESULT WINAPI D3DXLoadPRTBufferFromFileW(LPCWSTR, LPD3DXPRTBUFFER *);
 #define D3DXLoadPRTBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTBufferFromFile)
@@ -726,7 +755,9 @@ UINT    WINAPI D3DXGetFVFVertexSize(DWORD);
 BOOL    WINAPI D3DXBoxBoundProbe(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *);
 BOOL    WINAPI D3DXSphereBoundProbe(CONST D3DXVECTOR3 *,FLOAT,CONST D3DXVECTOR3 *,CONST D3DXVECTOR3 *);
 HRESULT WINAPI D3DXCleanMesh(D3DXCLEANTYPE, LPD3DXMESH, CONST DWORD *, LPD3DXMESH *, DWORD *, LPD3DXBUFFER *);
-HRESULT WINAPI D3DXConcatenateMeshes(LPD3DXMESH *, UINT, DWORD, CONST D3DXMATRIX *, CONST D3DXMATRIX *, CONST D3DVERTEXELEMENT9 *, LPDIRECT3DDEVICE9, LPD3DXMESH *);
+HRESULT WINAPI D3DXConcatenateMeshes(struct ID3DXMesh **meshes, UINT mesh_count, DWORD flags,
+        const D3DXMATRIX *geometry_matrices, const D3DXMATRIX *texture_matrices,
+        const D3DVERTEXELEMENT9 *declaration, struct IDirect3DDevice9 *device, struct ID3DXMesh **mesh);
 HRESULT WINAPI D3DXComputeBoundingBox(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, D3DXVECTOR3 *);
 HRESULT WINAPI D3DXComputeBoundingSphere(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, FLOAT *);
 HRESULT WINAPI D3DXComputeIMTFromPerTexelSignal(LPD3DXMESH, DWORD, FLOAT *, UINT, UINT, UINT, UINT, DWORD, LPD3DXUVATLASCB, LPVOID, LPD3DXBUFFER *);
diff --git a/include/d3dx9shader.h b/include/d3dx9shader.h
index 4de53dd..9a556ef 100644
--- a/include/d3dx9shader.h
+++ b/include/d3dx9shader.h
@@ -133,22 +133,32 @@ DECLARE_INTERFACE_(ID3DXConstantTable, ID3DXBuffer)
     STDMETHOD_(D3DXHANDLE, GetConstant)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
     STDMETHOD_(D3DXHANDLE, GetConstantByName)(THIS_ D3DXHANDLE hConstant, LPCSTR pName) PURE;
     STDMETHOD_(D3DXHANDLE, GetConstantElement)(THIS_ D3DXHANDLE hConstant, UINT Index) PURE;
-    STDMETHOD(SetDefaults)(THIS_ LPDIRECT3DDEVICE9 pDevice) PURE;
-    STDMETHOD(SetValue)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, LPCVOID pData, UINT Bytes) PURE;
-    STDMETHOD(SetBool)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, BOOL b) PURE;
-    STDMETHOD(SetBoolArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST BOOL* pb, UINT Count) PURE;
-    STDMETHOD(SetInt)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, INT n) PURE;
-    STDMETHOD(SetIntArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST INT* pn, UINT Count) PURE;
-    STDMETHOD(SetFloat)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, FLOAT f) PURE;
-    STDMETHOD(SetFloatArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST FLOAT* pf, UINT Count) PURE;
-    STDMETHOD(SetVector)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector) PURE;
-    STDMETHOD(SetVectorArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXVECTOR4* pVector, UINT Count) PURE;
-    STDMETHOD(SetMatrix)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
-    STDMETHOD(SetMatrixArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixPointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixTranspose)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix) PURE;
-    STDMETHOD(SetMatrixTransposeArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX* pMatrix, UINT Count) PURE;
-    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ LPDIRECT3DDEVICE9 pDevice, D3DXHANDLE hConstant, CONST D3DXMATRIX** ppMatrix, UINT Count) PURE;
+    STDMETHOD(SetDefaults)(THIS_ struct IDirect3DDevice9 *device) PURE;
+    STDMETHOD(SetValue)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const void *data, UINT data_size) PURE;
+    STDMETHOD(SetBool)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, BOOL value) PURE;
+    STDMETHOD(SetBoolArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const BOOL *values, UINT value_count) PURE;
+    STDMETHOD(SetInt)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, INT value) PURE;
+    STDMETHOD(SetIntArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const INT *values, UINT value_count) PURE;
+    STDMETHOD(SetFloat)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, float value) PURE;
+    STDMETHOD(SetFloatArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const float *values, UINT value_count) PURE;
+    STDMETHOD(SetVector)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXVECTOR4 *value) PURE;
+    STDMETHOD(SetVectorArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const D3DXVECTOR4 *values, UINT value_count) PURE;
+    STDMETHOD(SetMatrix)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant, const D3DXMATRIX *value) PURE;
+    STDMETHOD(SetMatrixArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const D3DXMATRIX *values, UINT value_count) PURE;
+    STDMETHOD(SetMatrixPointerArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const D3DXMATRIX **values, UINT value_count) PURE;
+    STDMETHOD(SetMatrixTranspose)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const D3DXMATRIX *value) PURE;
+    STDMETHOD(SetMatrixTransposeArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const D3DXMATRIX *values, UINT value_count) PURE;
+    STDMETHOD(SetMatrixTransposePointerArray)(THIS_ struct IDirect3DDevice9 *device, D3DXHANDLE constant,
+            const D3DXMATRIX **values, UINT value_count) PURE;
 };
 #undef INTERFACE
 
@@ -253,10 +263,10 @@ typedef struct ID3DXInclude *LPD3DXINCLUDE;
 extern "C" {
 #endif
 
-LPCSTR WINAPI D3DXGetPixelShaderProfile(LPDIRECT3DDEVICE9 device);
+const char * WINAPI D3DXGetPixelShaderProfile(struct IDirect3DDevice9 *device);
 UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code);
 DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code);
-LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device);
+const char * WINAPI D3DXGetVertexShaderProfile(struct IDirect3DDevice9 *device);
 HRESULT WINAPI D3DXFindShaderComment(CONST DWORD* byte_code, DWORD fourcc, LPCVOID* data, UINT* size);
 HRESULT WINAPI D3DXGetShaderSamplers(CONST DWORD *byte_code, LPCSTR *samplers, UINT *count);
 
diff --git a/include/d3dx9shape.h b/include/d3dx9shape.h
dissimilarity index 66%
index 690b183..1d2667d 100644
--- a/include/d3dx9shape.h
+++ b/include/d3dx9shape.h
@@ -1,78 +1,46 @@
-/*
- * Copyright 2010 Christian Costa
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "d3dx9.h"
-
-#ifndef __D3DX9SHAPE_H__
-#define __D3DX9SHAPE_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HRESULT WINAPI D3DXCreateBox(LPDIRECT3DDEVICE9 device,
-                             FLOAT width,
-                             FLOAT height,
-                             FLOAT depth,
-                             LPD3DXMESH* mesh,
-                             LPD3DXBUFFER* adjacency);
-
-HRESULT WINAPI D3DXCreateSphere(LPDIRECT3DDEVICE9 device,
-                                FLOAT radius,
-                                UINT slices,
-                                UINT stacks,
-                                LPD3DXMESH* mesh,
-                                LPD3DXBUFFER* adjacency);
-
-HRESULT WINAPI D3DXCreateCylinder(LPDIRECT3DDEVICE9 device,
-                                  FLOAT radius1,
-                                  FLOAT radius2,
-                                  FLOAT length,
-                                  UINT slices,
-                                  UINT stacks,
-                                  LPD3DXMESH *mesh,
-                                  LPD3DXBUFFER *adjacency);
-
-HRESULT WINAPI D3DXCreateTeapot(LPDIRECT3DDEVICE9 device,
-                                LPD3DXMESH *mesh,
-                                LPD3DXBUFFER *adjacency);
-
-HRESULT WINAPI D3DXCreateTextA(LPDIRECT3DDEVICE9 device,
-                               HDC hdc,
-                               LPCSTR text,
-                               FLOAT deviation,
-                               FLOAT extrusion,
-                               LPD3DXMESH *mesh,
-                               LPD3DXBUFFER *adjacency,
-                               LPGLYPHMETRICSFLOAT glyphmetrics);
-
-HRESULT WINAPI D3DXCreateTextW(LPDIRECT3DDEVICE9 device,
-                               HDC hdc,
-                               LPCWSTR text,
-                               FLOAT deviation,
-                               FLOAT extrusion,
-                               LPD3DXMESH *mesh,
-                               LPD3DXBUFFER *adjacency,
-                               LPGLYPHMETRICSFLOAT glyphmetrics);
-#define D3DXCreateText WINELIB_NAME_AW(D3DXCreateText)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __D3DX9SHAPE_H__ */
+/*
+ * Copyright 2010 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "d3dx9.h"
+
+#ifndef __D3DX9SHAPE_H__
+#define __D3DX9SHAPE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+HRESULT WINAPI D3DXCreateBox(struct IDirect3DDevice9 *device, float width, float height,
+        float depth, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency);
+HRESULT WINAPI D3DXCreateCylinder(struct IDirect3DDevice9 *device, float radius1, float radius2,
+        float length, UINT slices, UINT stacks, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency);
+HRESULT WINAPI D3DXCreateSphere(struct IDirect3DDevice9 *device, float radius, UINT slices,
+        UINT stacks, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency);
+HRESULT WINAPI D3DXCreateTeapot(struct IDirect3DDevice9 *device,
+        struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency);
+HRESULT WINAPI D3DXCreateTextA(struct IDirect3DDevice9 *device, HDC hdc, const char *text, float deviation,
+        float extrusion, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency, GLYPHMETRICSFLOAT *glyphmetrics);
+HRESULT WINAPI D3DXCreateTextW(struct IDirect3DDevice9 *device, HDC hdc, const WCHAR *text, float deviation,
+        FLOAT extrusion, struct ID3DXMesh **mesh, struct ID3DXBuffer **adjacency, GLYPHMETRICSFLOAT *glyphmetrics);
+#define D3DXCreateText WINELIB_NAME_AW(D3DXCreateText)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __D3DX9SHAPE_H__ */
diff --git a/include/d3dx9tex.h b/include/d3dx9tex.h
index 206d56d..d10e01d 100644
--- a/include/d3dx9tex.h
+++ b/include/d3dx9tex.h
@@ -182,28 +182,12 @@ HRESULT WINAPI D3DXSaveVolumeToFileW(const WCHAR *destfile, D3DXIMAGE_FILEFORMAT
 
 
 /* Texture, cube texture and volume texture creation */
-HRESULT WINAPI D3DXCheckTextureRequirements(      LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-HRESULT WINAPI D3DXCheckCubeTextureRequirements(  LPDIRECT3DDEVICE9 device,
-                                                  UINT *size,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
-
-HRESULT WINAPI D3DXCheckVolumeTextureRequirements(LPDIRECT3DDEVICE9 device,
-                                                  UINT *width,
-                                                  UINT *height,
-                                                  UINT *depth,
-                                                  UINT *miplevels,
-                                                  DWORD usage,
-                                                  D3DFORMAT *format,
-                                                  D3DPOOL pool);
+HRESULT WINAPI D3DXCheckTextureRequirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height,
+        UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool);
+HRESULT WINAPI D3DXCheckCubeTextureRequirements(struct IDirect3DDevice9 *device, UINT *size,
+        UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool);
+HRESULT WINAPI D3DXCheckVolumeTextureRequirements(struct IDirect3DDevice9 *device, UINT *width, UINT *height,
+        UINT *depth, UINT *miplevels, DWORD usage, D3DFORMAT *format, D3DPOOL pool);
 
 HRESULT WINAPI D3DXCreateTexture(struct IDirect3DDevice9 *device, UINT width, UINT height,
         UINT miplevels, DWORD usage, D3DFORMAT format, D3DPOOL pool, struct IDirect3DTexture9 **texture);
-- 
1.7.8.6




More information about the wine-patches mailing list