[1/4] d3dx9: Add D3DXAssembleShader and related declarations

Matteo Bruni matteo.mystral at gmail.com
Fri Aug 21 16:06:30 CDT 2009


I'm trying to follow Juan Lang suggestions on how to structure the D3D
assembler patches. I'm not yet sure on how to proceed with the bulk of
the assembler, however these preparatory patches should be safe.
-------------- next part --------------
From fe90495072cb4d816882c67c573e4513e723c6b5 Mon Sep 17 00:00:00 2001
From: Matteo Bruni <matteo.mystral at gmail.com>
Date: Fri, 21 Aug 2009 00:28:46 +0200
Subject: d3dx9: Add D3DXAssembleShader and related declarations

---
 include/d3dx9shader.h |   78 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/include/d3dx9shader.h b/include/d3dx9shader.h
index 899077e..52fa8a5 100644
--- a/include/d3dx9shader.h
+++ b/include/d3dx9shader.h
@@ -21,6 +21,26 @@
 #ifndef __D3DX9SHADER_H__
 #define __D3DX9SHADER_H__
 
+#define D3DXSHADER_DEBUG                          (1 << 0)
+#define D3DXSHADER_SKIPVALIDATION                 (1 << 1)
+#define D3DXSHADER_SKIPOPTIMIZATION               (1 << 2)
+#define D3DXSHADER_PACKMATRIX_ROWMAJOR            (1 << 3)
+#define D3DXSHADER_PACKMATRIX_COLUMNMAJOR         (1 << 4)
+#define D3DXSHADER_PARTIALPRECISION               (1 << 5)
+#define D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT        (1 << 6)
+#define D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT        (1 << 7)
+#define D3DXSHADER_NO_PRESHADER                   (1 << 8)
+#define D3DXSHADER_AVOID_FLOW_CONTROL             (1 << 9)
+#define D3DXSHADER_PREFER_FLOW_CONTROL            (1 << 10)
+#define D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY (1 << 12)
+#define D3DXSHADER_IEEE_STRICTNESS                (1 << 13)
+#define D3DXSHADER_USE_LEGACY_D3DX9_31_DLL        (1 << 16)
+
+#define D3DXSHADER_OPTIMIZATION_LEVEL0            (1 << 14)
+#define D3DXSHADER_OPTIMIZATION_LEVEL1            0
+#define D3DXSHADER_OPTIMIZATION_LEVEL2            ((1 << 14) | (1 << 15))
+#define D3DXSHADER_OPTIMIZATION_LEVEL3            (1 << 15)
+
 typedef LPCSTR D3DXHANDLE;
 
 typedef enum D3DXPARAMETER_CLASS
@@ -64,6 +84,26 @@ typedef struct _D3DXMACRO {
     LPCSTR Definition;
 } D3DXMACRO, *LPD3DXMACRO;
 
+typedef enum _D3DXINCLUDE_TYPE
+{
+    D3DXINC_LOCAL,
+    D3DXINC_SYSTEM,
+    D3DXINC_FORCE_DWORD = 0x7fffffff,
+} D3DXINCLUDE_TYPE, *LPD3DXINCLUDE_TYPE;
+
+typedef struct ID3DXInclude *LPD3DXINCLUDE;
+
+#undef INTERFACE
+#define INTERFACE ID3DXInclude
+
+DECLARE_INTERFACE(ID3DXInclude)
+{
+    STDMETHOD(Open)(THIS_ D3DXINCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID *ppData, UINT *pBytes) PURE;
+    STDMETHOD(Close)(THIS_ LPCVOID pData) PURE;
+};
+
+#define ID3DXInclude_Open(p,a,b,c,d,e)  (p)->lpVtbl->Open(p,a,b,c,d,e)
+#define ID3DXInclude_Close(p,a)         (p)->lpVtbl->Close(p,a)
 
 #ifdef __cplusplus
 extern "C" {
@@ -74,6 +114,44 @@ UINT WINAPI D3DXGetShaderSize(const DWORD *byte_code);
 DWORD WINAPI D3DXGetShaderVersion(const DWORD *byte_code);
 LPCSTR WINAPI D3DXGetVertexShaderProfile(LPDIRECT3DDEVICE9 device);
 
+HRESULT WINAPI D3DXAssembleShaderFromFileA(LPCSTR           pSrcFile,
+                                           CONST D3DXMACRO* pDefines,
+                                           LPD3DXINCLUDE    pInclude,
+                                           DWORD            Flags,
+                                           LPD3DXBUFFER*    ppShader,
+                                           LPD3DXBUFFER*    ppErrorMsgs);
+
+HRESULT WINAPI D3DXAssembleShaderFromFileW(LPCWSTR          pSrcFile,
+                                           CONST D3DXMACRO* pDefines,
+                                           LPD3DXINCLUDE    pInclude,
+                                           DWORD            Flags,
+                                           LPD3DXBUFFER*    ppShader,
+                                           LPD3DXBUFFER*    ppErrorMsgs);
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceA(HMODULE          hSrcModule,
+                                               LPCSTR           pSrcResource,
+                                               CONST D3DXMACRO* pDefines,
+                                               LPD3DXINCLUDE    pInclude,
+                                               DWORD            Flags,
+                                               LPD3DXBUFFER*    ppShader,
+                                               LPD3DXBUFFER*    ppErrorMsgs);
+
+HRESULT WINAPI D3DXAssembleShaderFromResourceW(HMODULE          hSrcModule,
+                                               LPCWSTR          pSrcResource,
+                                               CONST D3DXMACRO* pDefines,
+                                               LPD3DXINCLUDE    pInclude,
+                                               DWORD            Flags,
+                                               LPD3DXBUFFER*    ppShader,
+                                               LPD3DXBUFFER*    ppErrorMsgs);
+
+HRESULT WINAPI D3DXAssembleShader(LPCSTR           pSrcData,
+                                  UINT             SrcDataLen,
+                                  CONST D3DXMACRO* pDefines,
+                                  LPD3DXINCLUDE    pInclude,
+                                  DWORD            Flags,
+                                  LPD3DXBUFFER*    ppShader,
+                                  LPD3DXBUFFER*    ppErrorMsgs);
+
 #ifdef __cplusplus
 }
 #endif
-- 
1.6.3.3


More information about the wine-patches mailing list