Module: wine Branch: master Commit: cbcf69985686f781819a285bdab9df3e02e14107 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cbcf69985686f781819a285bda...
Author: Matteo Bruni matteo.mystral@gmail.com Date: Tue Sep 15 20:23:00 2009 +0200
d3dx9: D3DXAssembleShaderFromResource implementation.
---
dlls/d3dx9_36/d3dx9_36.spec | 4 ++-- dlls/d3dx9_36/shader.c | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec index 0d39114..08bb7f5 100644 --- a/dlls/d3dx9_36/d3dx9_36.spec +++ b/dlls/d3dx9_36/d3dx9_36.spec @@ -1,8 +1,8 @@ @ stdcall D3DXAssembleShader(ptr long ptr ptr long ptr ptr) @ stdcall D3DXAssembleShaderFromFileA(str ptr ptr long ptr ptr) @ stdcall D3DXAssembleShaderFromFileW(wstr ptr ptr long ptr ptr) -@ stub D3DXAssembleShaderFromResourceA -@ stub D3DXAssembleShaderFromResourceW +@ stdcall D3DXAssembleShaderFromResourceA(long str ptr ptr long ptr ptr) +@ stdcall D3DXAssembleShaderFromResourceW(long wstr ptr ptr long ptr ptr) @ stdcall D3DXBoxBoundProbe(ptr ptr ptr ptr) @ stub D3DXCheckCubeTextureRequirements @ stub D3DXCheckTextureRequirements diff --git a/dlls/d3dx9_36/shader.c b/dlls/d3dx9_36/shader.c index 97b2384..c05f7b7 100644 --- a/dlls/d3dx9_36/shader.c +++ b/dlls/d3dx9_36/shader.c @@ -23,6 +23,7 @@ #include "windef.h" #include "wingdi.h" #include "d3dx9.h" +#include "d3dx9_36_private.h"
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
@@ -179,3 +180,43 @@ HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR filename, FIXME("stub\n"); return D3DERR_INVALIDCALL; } + +HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE module, + LPCSTR resource, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages) +{ + HRSRC res; + LPCSTR buffer; + DWORD len; + + if (!(res = FindResourceA(module, resource, (LPCSTR)RT_RCDATA))) + return D3DXERR_INVALIDDATA; + if (FAILED(load_resource_into_memory(module, res, (LPVOID *)&buffer, &len))) + return D3DXERR_INVALIDDATA; + return D3DXAssembleShader(buffer, len, defines, include, flags, + shader, error_messages); +} + +HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE module, + LPCWSTR resource, + CONST D3DXMACRO* defines, + LPD3DXINCLUDE include, + DWORD flags, + LPD3DXBUFFER* shader, + LPD3DXBUFFER* error_messages) +{ + HRSRC res; + LPCSTR buffer; + DWORD len; + + if (!(res = FindResourceW(module, resource, (LPCWSTR)RT_RCDATA))) + return D3DXERR_INVALIDDATA; + if (FAILED(load_resource_into_memory(module, res, (LPVOID *)&buffer, &len))) + return D3DXERR_INVALIDDATA; + return D3DXAssembleShader(buffer, len, defines, include, flags, + shader, error_messages); +}