d3dx10: Implement D3DX10CompileFromMemory.

Andrey Gusev andrey.goosev at gmail.com
Mon Jun 27 14:49:15 CDT 2016


-------------- next part --------------
From 737c77d7a5076b4264e108e881b6bac38969a93e Mon Sep 17 00:00:00 2001
Message-Id: <737c77d7a5076b4264e108e881b6bac38969a93e.1467056894.git.andrey.goosev at gmail.com>
From: Andrey Gusev <andrey.goosev at gmail.com>
Date: Mon, 27 Jun 2016 22:47:56 +0300
Subject: [PATCH] d3dx10: Implement D3DX10CompileFromMemory.

Signed-off-by: Andrey Gusev <andrey.goosev at gmail.com>
---
 dlls/d3dx10_43/Makefile.in      |  3 ++-
 dlls/d3dx10_43/async.c          | 45 +++++++++++++++++++++++++++++++++++++++++
 dlls/d3dx10_43/d3dx10_43.spec   |  2 +-
 dlls/d3dx10_43/d3dx10_43_main.c |  2 ++
 include/d3dx10async.h           |  6 ++++++
 5 files changed, 56 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx10_43/Makefile.in b/dlls/d3dx10_43/Makefile.in
index 9338aca..5f1eccb 100644
--- a/dlls/d3dx10_43/Makefile.in
+++ b/dlls/d3dx10_43/Makefile.in
@@ -1,8 +1,9 @@
 MODULE    = d3dx10_43.dll
 IMPORTLIB = d3dx10
-IMPORTS   = d3d10_1 dxguid
+IMPORTS   = d3d10_1 d3dcompiler dxguid
 
 C_SRCS = \
+	async.c \
 	d3dx10_43_main.c
 
 RC_SRCS = version.rc
diff --git a/dlls/d3dx10_43/async.c b/dlls/d3dx10_43/async.c
new file mode 100644
index 0000000..d990c30
--- /dev/null
+++ b/dlls/d3dx10_43/async.c
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2016 Andrey Gusev
+ *
+ * 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 "config.h"
+#include "wine/port.h"
+#include "d3d10_1.h"
+#include "d3dx10.h"
+#include "d3dx10core.h"
+#include "d3dcompiler.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
+
+HRESULT WINAPI D3DX10CompileFromMemory(const char *data, SIZE_T data_size, const char *filename,
+        const D3D10_SHADER_MACRO *defines, ID3D10Include *include, const char *entry_point,
+        const char *target, UINT sflags, UINT eflags, ID3DX10ThreadPump *pump, ID3D10Blob **shader,
+        ID3D10Blob **error_messages, HRESULT *hresult)
+{
+    TRACE("data %s, data_size %lu, filename %s, defines %p, include %p, entry_point %s, target %s, "
+            "sflags %#x, eflage %#x, pump %p, shader %p, error_messages %p, hresult %p.\n",
+            debugstr_a(data), data_size, debugstr_a(filename), defines, include, entry_point,
+            debugstr_a(target), sflags, eflags, pump, shader, error_messages, hresult);
+
+    if (pump)
+        FIXME("Unimplemented ID3DX10ThreadPump handling.\n");
+
+    return D3DCompile(data, data_size, filename, defines, include, entry_point, target,
+            sflags, eflags, shader, error_messages);
+}
diff --git a/dlls/d3dx10_43/d3dx10_43.spec b/dlls/d3dx10_43/d3dx10_43.spec
index 99aa8f3..ab696e8 100644
--- a/dlls/d3dx10_43/d3dx10_43.spec
+++ b/dlls/d3dx10_43/d3dx10_43.spec
@@ -2,7 +2,7 @@
 @ stdcall D3DX10CheckVersion(long long)
 @ stub D3DX10CompileFromFileA(str ptr ptr str str long long ptr ptr ptr ptr)
 @ stub D3DX10CompileFromFileW(wstr ptr ptr str str long long ptr ptr ptr ptr)
-@ stub D3DX10CompileFromMemory(str long str ptr ptr str str long long ptr ptr ptr ptr)
+@ stdcall D3DX10CompileFromMemory(str long str ptr ptr str str long long ptr ptr ptr ptr)
 @ stub D3DX10CompileFromResourceA(long str str ptr ptr str str long long ptr ptr ptr ptr)
 @ stub D3DX10CompileFromResourceW(long wstr wstr ptr ptr str str long long ptr ptr ptr ptr)
 @ stub D3DX10ComputeNormalMap(ptr long long long ptr)
diff --git a/dlls/d3dx10_43/d3dx10_43_main.c b/dlls/d3dx10_43/d3dx10_43_main.c
index 0c1ff80..fe56ee0 100644
--- a/dlls/d3dx10_43/d3dx10_43_main.c
+++ b/dlls/d3dx10_43/d3dx10_43_main.c
@@ -37,6 +37,8 @@
 #include "d3dx10core.h"
 #include "d3dx10tex.h"
 
+#include "wine/debug.h"
+
 WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
 
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
diff --git a/include/d3dx10async.h b/include/d3dx10async.h
index 85219d2..d195d3a 100644
--- a/include/d3dx10async.h
+++ b/include/d3dx10async.h
@@ -19,6 +19,12 @@
 #ifndef __D3DX10ASYNC_H__
 #define __D3DX10ASYNC_H__
 
+#include "d3dx10.h"
+
+HRESULT WINAPI D3DX10CompileFromMemory(const char *data, SIZE_T data_size, const char *filename,
+        const D3D10_SHADER_MACRO *defines, ID3D10Include *include, const char *entry_point,
+        const char *target, UINT sflags, UINT eflags, ID3DX10ThreadPump *pump, ID3D10Blob **shader,
+        ID3D10Blob **error_messages, HRESULT *hresult);
 
 HRESULT WINAPI D3DX10CreateEffectFromFileA(const char *filename, const D3D10_SHADER_MACRO *defines,
         ID3D10Include *include, const char *profile, UINT hlslflags, UINT fxflags, ID3D10Device *device,
-- 
2.5.5



More information about the wine-patches mailing list