[PATCH 2/6] d3dx10: Add D3DX10LoadTextureFromTexture() stub.

Matteo Bruni mbruni at codeweavers.com
Wed Nov 6 03:06:30 CST 2019


From: Connor McAdams <conmanx360 at gmail.com>

Signed-off-by: Connor McAdams <conmanx360 at gmail.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
This fixes a crash in Crysis when run in DX10 mode.

 dlls/d3dx10_43/d3dx10_43.spec   |  2 +-
 dlls/d3dx10_43/d3dx10_43_main.c |  8 ++++++++
 include/d3dx10tex.h             | 34 +++++++++++++++++++++++++++++++--
 3 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/dlls/d3dx10_43/d3dx10_43.spec b/dlls/d3dx10_43/d3dx10_43.spec
index cb491241d4b..36c7633d8e0 100644
--- a/dlls/d3dx10_43/d3dx10_43.spec
+++ b/dlls/d3dx10_43/d3dx10_43.spec
@@ -54,7 +54,7 @@
 @ stdcall D3DX10GetImageInfoFromMemory(ptr long ptr ptr ptr)
 @ stub D3DX10GetImageInfoFromResourceA(long str ptr ptr ptr)
 @ stub D3DX10GetImageInfoFromResourceW(long wstr ptr ptr ptr)
-@ stub D3DX10LoadTextureFromTexture(ptr ptr ptr)
+@ stdcall D3DX10LoadTextureFromTexture(ptr ptr ptr)
 @ stub D3DX10PreprocessShaderFromFileA(str ptr ptr ptr ptr ptr)
 @ stub D3DX10PreprocessShaderFromFileW(wstr ptr ptr ptr ptr ptr)
 @ stdcall D3DX10PreprocessShaderFromMemory(ptr long str ptr ptr ptr ptr ptr ptr)
diff --git a/dlls/d3dx10_43/d3dx10_43_main.c b/dlls/d3dx10_43/d3dx10_43_main.c
index b0295cc093f..45247756b8e 100644
--- a/dlls/d3dx10_43/d3dx10_43_main.c
+++ b/dlls/d3dx10_43/d3dx10_43_main.c
@@ -241,3 +241,11 @@ D3DX_CPU_OPTIMIZATION WINAPI D3DXCpuOptimizations(BOOL enable)
 
     return D3DX_NOT_OPTIMIZED;
 }
+
+HRESULT WINAPI D3DX10LoadTextureFromTexture(ID3D10Resource *src_texture, D3DX10_TEXTURE_LOAD_INFO *load_info,
+        ID3D10Resource *dst_texture)
+{
+    FIXME("src_texture %p, load_info %p, dst_texture %p stub!\n", src_texture, load_info, dst_texture);
+
+    return E_NOTIMPL;
+}
diff --git a/include/d3dx10tex.h b/include/d3dx10tex.h
index 25ad490949a..98cb82c0c93 100644
--- a/include/d3dx10tex.h
+++ b/include/d3dx10tex.h
@@ -103,17 +103,47 @@ typedef struct D3DX10_IMAGE_LOAD_INFO
 #endif
 } D3DX10_IMAGE_LOAD_INFO;
 
+typedef struct _D3DX10_TEXTURE_LOAD_INFO
+{
+    D3D10_BOX *pSrcBox;
+    D3D10_BOX *pDstBox;
+    UINT SrcFirstMip;
+    UINT DstFirstMip;
+    UINT NumMips;
+    UINT SrcFirstElement;
+    UINT DstFirstElement;
+    UINT NumElements;
+    UINT Filter;
+    UINT MipFilter;
+
+#ifdef __cplusplus
+    _D3DX10_TEXTURE_LOAD_INFO()
+    {
+        pSrcBox = NULL;
+        pDstBox = NULL;
+        SrcFirstMip = 0;
+        DstFirstMip = 0;
+        NumMips = D3DX10_DEFAULT;
+        SrcFirstElement = 0;
+        DstFirstElement = 0;
+        NumElements = D3DX10_DEFAULT;
+        Filter = D3DX10_DEFAULT;
+        MipFilter = D3DX10_DEFAULT;
+    }
+#endif
+} D3DX10_TEXTURE_LOAD_INFO;
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 HRESULT WINAPI D3DX10CreateTextureFromMemory(ID3D10Device *device, const void *src_data, SIZE_T src_data_size,
         D3DX10_IMAGE_LOAD_INFO *loadinfo, ID3DX10ThreadPump *pump, ID3D10Resource **texture, HRESULT *hresult);
-
 HRESULT WINAPI D3DX10FilterTexture(ID3D10Resource *texture, UINT src_level, UINT filter);
-
 HRESULT WINAPI D3DX10GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX10ThreadPump *pump,
         D3DX10_IMAGE_INFO *img_info, HRESULT *hresult);
+HRESULT WINAPI D3DX10LoadTextureFromTexture(ID3D10Resource *src_texture, D3DX10_TEXTURE_LOAD_INFO *load_info,
+        ID3D10Resource *dst_texture);
 
 #ifdef __cplusplus
 }
-- 
2.21.0




More information about the wine-devel mailing list