[3/4] d3dx9: D3DXAssembleShaderFromResource implementation
Matteo Bruni
matteo.mystral at gmail.com
Fri Aug 21 16:06:55 CDT 2009
-------------- next part --------------
From 745071cfff234b6144c0cdd773bac4d2d0fea6ca Mon Sep 17 00:00:00 2001
From: Matteo Bruni <matteo.mystral at gmail.com>
Date: Fri, 21 Aug 2009 18:09:11 +0200
Subject: d3dx9: D3DXAssembleShaderFromResource implementation
It calls the D3DXAssembleShader function that now is only stubbed.
---
dlls/d3dx9_36/d3dx9_36.spec | 4 +-
dlls/d3dx9_36/shader.c | 47 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 49 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 f9b0fe2..235a18b 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);
@@ -175,3 +176,49 @@ HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR pSrcFile,
FIXME("stub\n");
return D3DERR_INVALIDCALL;
}
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE hSrcModule,
+ LPCSTR pSrcResource,
+ CONST D3DXMACRO* pDefines,
+ LPD3DXINCLUDE pInclude,
+ DWORD Flags,
+ LPD3DXBUFFER* ppShader,
+ LPD3DXBUFFER* ppErrorMsgs) {
+ HRSRC res;
+ LPCSTR buffer;
+ DWORD len;
+
+ if(!(res=FindResourceA(hSrcModule, pSrcResource, (LPCSTR)RT_RCDATA)))
+ {
+ return D3DXERR_INVALIDDATA;
+ }
+ if(FAILED(load_resource_into_memory(hSrcModule, res, (LPVOID *)&buffer, &len)))
+ {
+ return D3DXERR_INVALIDDATA;
+ }
+ return D3DXAssembleShader(buffer, len, pDefines, pInclude, Flags,
+ ppShader, ppErrorMsgs);
+}
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE hSrcModule,
+ LPCWSTR pSrcResource,
+ CONST D3DXMACRO* pDefines,
+ LPD3DXINCLUDE pInclude,
+ DWORD Flags,
+ LPD3DXBUFFER* ppShader,
+ LPD3DXBUFFER* ppErrorMsgs) {
+ HRSRC res;
+ LPCSTR buffer;
+ DWORD len;
+
+ if(!(res=FindResourceW(hSrcModule, pSrcResource, (LPCWSTR)RT_RCDATA)))
+ {
+ return D3DXERR_INVALIDDATA;
+ }
+ if(FAILED(load_resource_into_memory(hSrcModule, res, (LPVOID *)&buffer, &len)))
+ {
+ return D3DXERR_INVALIDDATA;
+ }
+ return D3DXAssembleShader(buffer, len, pDefines, pInclude, Flags,
+ ppShader, ppErrorMsgs);
+}
--
1.6.3.3
More information about the wine-patches
mailing list