From 40c2b7357314407c06ed76be3af1429cb5c36d1e Mon Sep 17 00:00:00 2001 From: Andrey Gusev Date: Wed, 29 Jun 2016 11:19:56 +0300 Subject: [PATCH] d3dx10: Implement D3DX10CompileFromMemory. Signed-off-by: Andrey Gusev Signed-off-by: Matteo Bruni Signed-off-by: Alexandre Julliard --- dlls/d3dx10_43/Makefile.in | 3 ++- dlls/d3dx10_43/async.c | 45 +++++++++++++++++++++++++++++++++++ dlls/d3dx10_43/d3dx10_43.spec | 2 +- include/d3dx10async.h | 6 +++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 dlls/d3dx10_43/async.c diff --git a/dlls/d3dx10_43/Makefile.in b/dlls/d3dx10_43/Makefile.in index 9338acaf6e1..5f1eccbdacd 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 00000000000..879e4201fda --- /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, eflags %#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 99aa8f3df2e..ab696e872ad 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/include/d3dx10async.h b/include/d3dx10async.h index 85219d28f91..d195d3a4916 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,