[3/4] d3dx9: D3DXAssembleShaderFromResource implementation

Matteo Bruni matteo.mystral at gmail.com
Sun Oct 18 17:53:35 CDT 2009


-------------- next part --------------
From 77b969496caaa810de20cbcda87c1288152726b5 Mon Sep 17 00:00:00 2001
From: Matteo Bruni <matteo.mystral at gmail.com>
Date: Tue, 15 Sep 2009 20:23:00 +0200
Subject: d3dx9: D3DXAssembleShaderFromResource implementation.

It calls the D3DXAssembleShader function that is, at this point, only
stubbed.
---
 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);
+}
-- 
1.6.4.4


More information about the wine-patches mailing list