[PATCH] d3dx10: Implement D3DX10CreateDevice().

Matteo Bruni mbruni at codeweavers.com
Wed Apr 20 10:42:30 CDT 2016


From: Nikolay Sivov <nsivov at codeweavers.com>

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
 dlls/d3dx10_43/Makefile.in      |  1 +
 dlls/d3dx10_43/d3dx10_43.spec   |  2 +-
 dlls/d3dx10_43/d3dx10_43_main.c | 21 ++++++++++++++++++++-
 include/d3dx10core.idl          |  2 ++
 4 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx10_43/Makefile.in b/dlls/d3dx10_43/Makefile.in
index cb48f0d..6e67a6b 100644
--- a/dlls/d3dx10_43/Makefile.in
+++ b/dlls/d3dx10_43/Makefile.in
@@ -1,5 +1,6 @@
 MODULE    = d3dx10_43.dll
 IMPORTLIB = d3dx10
+IMPORTS   = d3d10_1
 
 C_SRCS = \
 	d3dx10_43_main.c
diff --git a/dlls/d3dx10_43/d3dx10_43.spec b/dlls/d3dx10_43/d3dx10_43.spec
index 0673f6a..53059bf 100644
--- a/dlls/d3dx10_43/d3dx10_43.spec
+++ b/dlls/d3dx10_43/d3dx10_43.spec
@@ -18,7 +18,7 @@
 @ stub D3DX10CreateAsyncShaderResourceViewProcessor(ptr ptr ptr)
 @ stub D3DX10CreateAsyncTextureInfoProcessor(ptr ptr)
 @ stub D3DX10CreateAsyncTextureProcessor(ptr ptr ptr)
-@ stub D3DX10CreateDevice(ptr long long long ptr)
+@ stdcall D3DX10CreateDevice(ptr long long long ptr)
 @ stub D3DX10CreateDeviceAndSwapChain(ptr long long long ptr ptr ptr)
 @ stdcall D3DX10CreateEffectFromFileA(str ptr ptr str long long ptr ptr ptr ptr ptr ptr)
 @ stdcall D3DX10CreateEffectFromFileW(wstr ptr ptr str long long 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 fa4fa79..1b60fc5 100644
--- a/dlls/d3dx10_43/d3dx10_43_main.c
+++ b/dlls/d3dx10_43/d3dx10_43_main.c
@@ -33,7 +33,7 @@
 #include "winuser.h"
 #include "objbase.h"
 
-#include "d3d10.h"
+#include "d3d10_1.h"
 #include "d3dx10core.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
@@ -123,3 +123,22 @@ HRESULT WINAPI D3DX10UnsetAllDeviceObjects(ID3D10Device *device)
 
     return E_NOTIMPL;
 }
+
+HRESULT WINAPI D3DX10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
+        HMODULE swrast, unsigned int flags, ID3D10Device **device)
+{
+    HRESULT hr;
+
+    TRACE("adapter %p, driver_type %d, swrast %p, flags %#x, device %p.\n", adapter, driver_type,
+            swrast, flags, device);
+
+    if (SUCCEEDED(hr = D3D10CreateDevice1(adapter, driver_type, swrast, flags, D3D10_FEATURE_LEVEL_10_1,
+            D3D10_SDK_VERSION, (ID3D10Device1 **)device)))
+        return hr;
+
+    if (SUCCEEDED(hr = D3D10CreateDevice1(adapter, driver_type, swrast, flags, D3D10_FEATURE_LEVEL_10_0,
+            D3D10_SDK_VERSION, (ID3D10Device1 **)device)))
+        return hr;
+
+    return hr;
+}
diff --git a/include/d3dx10core.idl b/include/d3dx10core.idl
index 0e2bf31..6d9927e 100644
--- a/include/d3dx10core.idl
+++ b/include/d3dx10core.idl
@@ -66,3 +66,5 @@ interface ID3DX10ThreadPump : IUnknown
 };
 
 cpp_quote("HRESULT WINAPI D3DX10UnsetAllDeviceObjects(ID3D10Device *device);")
+cpp_quote("HRESULT WINAPI D3DX10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,")
+cpp_quote("        HMODULE swrast, unsigned int flags, ID3D10Device **device);")
-- 
2.7.3




More information about the wine-patches mailing list