From: Fabian Maurer Subject: [PATCH 5/5] d3dx11: Implemented D3DX11CompileFromFileW Message-Id: <20160913201152.582-5-dark.shadow4@web.de> Date: Tue, 13 Sep 2016 22:11:52 +0200 In-Reply-To: <20160913201152.582-1-dark.shadow4@web.de> References: <20160913201152.582-1-dark.shadow4@web.de> Signed-off-by: Fabian Maurer --- dlls/d3dx11_43/async.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/dlls/d3dx11_43/async.c b/dlls/d3dx11_43/async.c index 90c60fa..1e3042b 100644 --- a/dlls/d3dx11_43/async.c +++ b/dlls/d3dx11_43/async.c @@ -1989,16 +1989,36 @@ HRESULT WINAPI D3DX11CompileFromFileA(const char *filename, const D3D10_SHADER_M return E_NOTIMPL; } + HRESULT WINAPI D3DX11CompileFromFileW(const WCHAR *filename, const D3D10_SHADER_MACRO *defines, ID3D10Include *include, const char *entry_point, const char *target, UINT sflags, UINT eflags, ID3DX11ThreadPump *pump, ID3D10Blob **shader, ID3D10Blob **error_messages, HRESULT *hresult) { - FIXME("filename %s, defines %p, include %p, entry_point %s, target %s, sflags %#x, " + void *file_buffer; + HRESULT hr; + DWORD file_size; + LPSTR filename_converted; + UINT filename_converted_len; + + TRACE("filename %s, defines %p, include %p, entry_point %s, target %s, sflags %#x, " "eflags %#x, pump %p, shader %p, error_messages %p, hresult %p stub.\n", debugstr_w(filename), defines, include, debugstr_a(entry_point), debugstr_a(target), sflags, eflags, pump, shader, error_messages, hresult); - return E_NOTIMPL; + if (FAILED(hr = map_view_of_file(filename, &file_buffer, &file_size))) + return hr; + + filename_converted_len = WideCharToMultiByte(CP_ACP, 0, filename, -1, NULL, 0, NULL, NULL); + filename_converted = HeapAlloc(GetProcessHeap(), 0, filename_converted_len); + WideCharToMultiByte(CP_ACP, 0, filename, -1, filename_converted, filename_converted_len, NULL, NULL); + + hr = D3DX11CompileFromMemory(file_buffer, file_size, filename_converted, defines, include, entry_point, target, + sflags, eflags, pump, shader, error_messages, hresult); + + HeapFree(GetProcessHeap(), 0, filename_converted); + UnmapViewOfFile(file_buffer); + + return hr; } HRESULT WINAPI D3DX11CreateTextureFromMemory(ID3D11Device *device, const void *data, -- 2.9.3