[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