Subversion Repositories Games.Chess Giants

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. //  Copyright (c) Microsoft Corporation.  All rights reserved.
  4. //
  5. //  File:       D3DCompiler.h
  6. //  Content:    D3D Compilation Types and APIs
  7. //
  8. //////////////////////////////////////////////////////////////////////////////
  9.  
  10. #ifndef __D3DCOMPILER_H__
  11. #define __D3DCOMPILER_H__
  12.  
  13. // Current name of the DLL shipped in the same SDK as this header.
  14.  
  15.  
  16. #define D3DCOMPILER_DLL_W L"d3dcompiler_42.dll"
  17. #define D3DCOMPILER_DLL_A "d3dcompiler_42.dll"
  18.  
  19. #ifdef UNICODE
  20.     #define D3DCOMPILER_DLL D3DCOMPILER_DLL_W
  21. #else
  22.     #define D3DCOMPILER_DLL D3DCOMPILER_DLL_A
  23. #endif
  24.  
  25. #include "d3d11shader.h"
  26.  
  27. // The compilation APIs are generally not tied to particular
  28. // versions of D3D, thus their names and types don't reflect
  29. // a particular version number unless it is necessary to
  30. // do so.  However, for compatibility with previous compilation
  31. // API definitions some of the neutral types are simply
  32. // redefinitions of older types.
  33. typedef struct _D3D10_SHADER_MACRO D3D_SHADER_MACRO;
  34. typedef enum _D3D10_INCLUDE_TYPE D3D_INCLUDE_TYPE;
  35. typedef interface ID3D10Blob ID3DBlob;
  36. typedef ID3DBlob* LPD3DBLOB;
  37. typedef interface ID3D10Include ID3DInclude;
  38. typedef ID3DInclude* LPD3DINCLUDE;
  39.  
  40. //////////////////////////////////////////////////////////////////////////////
  41. // APIs //////////////////////////////////////////////////////////////////////
  42. //////////////////////////////////////////////////////////////////////////////
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif //__cplusplus
  47.  
  48. //----------------------------------------------------------------------------
  49. // D3DCompile:
  50. // ----------
  51. // Compile source text into bytecode appropriate for the given target.
  52. //----------------------------------------------------------------------------
  53.  
  54. HRESULT WINAPI
  55. D3DCompile(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  56.            __in SIZE_T SrcDataSize,
  57.            __in_opt LPCSTR pSourceName,
  58.            __in_xcount_opt(pDefines->Name != NULL) CONST D3D_SHADER_MACRO* pDefines,
  59.            __in_opt LPD3DINCLUDE pInclude,
  60.            __in LPCSTR pEntrypoint,
  61.            __in LPCSTR pTarget,
  62.            __in UINT Flags1,
  63.            __in UINT Flags2,
  64.            __out LPD3DBLOB* ppCode,
  65.            __out_opt LPD3DBLOB* ppErrorMsgs);
  66.  
  67. typedef HRESULT (WINAPI *pD3DCompile)
  68.     (LPCVOID                         pSrcData,
  69.      SIZE_T                          SrcDataSize,
  70.      LPCSTR                          pFileName,
  71.      CONST D3D10_SHADER_MACRO*       pDefines,
  72.      LPD3D10INCLUDE                  pInclude,
  73.      LPCSTR                          pEntrypoint,
  74.      LPCSTR                          pTarget,
  75.      UINT                            Flags1,
  76.      UINT                            Flags2,
  77.      LPD3D10BLOB*                    ppCode,
  78.      LPD3D10BLOB*                    ppErrorMsgs);
  79.      
  80. //----------------------------------------------------------------------------
  81. // D3DPreprocess:
  82. // ----------
  83. // Process source text with the compiler's preprocessor and return
  84. // the resulting text.
  85. //----------------------------------------------------------------------------
  86.  
  87. HRESULT WINAPI
  88. D3DPreprocess(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  89.               __in SIZE_T SrcDataSize,
  90.               __in_opt LPCSTR pSourceName,
  91.               __in_opt CONST D3D_SHADER_MACRO* pDefines,
  92.               __in_opt LPD3DINCLUDE pInclude,
  93.               __out LPD3DBLOB* ppCodeText,
  94.               __out_opt LPD3DBLOB* ppErrorMsgs);
  95.  
  96. typedef HRESULT (WINAPI *pD3DPreprocess)
  97.     (LPCVOID                      pSrcData,
  98.      SIZE_T                       SrcDataSize,
  99.      LPCSTR                       pFileName,
  100.      CONST D3D10_SHADER_MACRO*    pDefines,
  101.      LPD3D10INCLUDE               pInclude,
  102.      LPD3D10BLOB*                 ppCodeText,
  103.      LPD3D10BLOB*                 ppErrorMsgs);
  104.  
  105. //----------------------------------------------------------------------------
  106. // D3DGetDebugInfo:
  107. // -----------------------
  108. // Gets shader debug info.  Debug info is generated by D3DCompile and is
  109. // embedded in the body of the shader.
  110. //----------------------------------------------------------------------------
  111.  
  112. HRESULT WINAPI
  113. D3DGetDebugInfo(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  114.                 __in SIZE_T SrcDataSize,
  115.                 __out LPD3DBLOB* ppDebugInfo);
  116.  
  117. //----------------------------------------------------------------------------
  118. // D3DReflect:
  119. // ----------
  120. // Shader code contains metadata that can be inspected via the
  121. // reflection APIs.
  122. //----------------------------------------------------------------------------
  123.  
  124. HRESULT WINAPI
  125. D3DReflect(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  126.            __in SIZE_T SrcDataSize,
  127.            __in REFIID pInterface,
  128.            __out void** ppReflector);
  129.  
  130. //----------------------------------------------------------------------------
  131. // D3DDisassemble:
  132. // ----------------------
  133. // Takes a binary shader and returns a buffer containing text assembly.
  134. //----------------------------------------------------------------------------
  135.  
  136. #define D3D_DISASM_ENABLE_COLOR_CODE            0x00000001
  137. #define D3D_DISASM_ENABLE_DEFAULT_VALUE_PRINTS  0x00000002
  138. #define D3D_DISASM_ENABLE_INSTRUCTION_NUMBERING 0x00000004
  139. #define D3D_DISASM_ENABLE_INSTRUCTION_CYCLE     0x00000008
  140.  
  141. HRESULT WINAPI
  142. D3DDisassemble(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  143.                __in SIZE_T SrcDataSize,
  144.                __in UINT Flags,
  145.                __in_opt LPCSTR szComments,
  146.                __out LPD3DBLOB* ppDisassembly);
  147.  
  148. typedef HRESULT (WINAPI *pD3DDisassemble)
  149.     (__in_bcount(SrcDataSize) LPCVOID pSrcData,
  150.      __in SIZE_T SrcDataSize,
  151.      __in UINT Flags,
  152.      __in_opt LPCSTR szComments,
  153.      __out LPD3DBLOB* ppDisassembly);
  154.  
  155. //----------------------------------------------------------------------------
  156. // D3DDisassemble10Effect:
  157. // -----------------------
  158. // Takes a D3D10 effect interface and returns a
  159. // buffer containing text assembly.
  160. //----------------------------------------------------------------------------
  161.  
  162. HRESULT WINAPI
  163. D3DDisassemble10Effect(__in ID3D10Effect *pEffect,
  164.                        __in UINT Flags,
  165.                        __out LPD3DBLOB* ppDisassembly);
  166.  
  167. //----------------------------------------------------------------------------
  168. // D3DGetInputSignatureBlob:
  169. // -----------------------
  170. // Retrieve the input signature from a compilation result.
  171. //----------------------------------------------------------------------------
  172.  
  173. HRESULT WINAPI
  174. D3DGetInputSignatureBlob(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  175.                          __in SIZE_T SrcDataSize,
  176.                          __out LPD3DBLOB* ppSignatureBlob);
  177.  
  178. //----------------------------------------------------------------------------
  179. // D3DGetOutputSignatureBlob:
  180. // -----------------------
  181. // Retrieve the output signature from a compilation result.
  182. //----------------------------------------------------------------------------
  183.  
  184. HRESULT WINAPI
  185. D3DGetOutputSignatureBlob(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  186.                           __in SIZE_T SrcDataSize,
  187.                           __out LPD3DBLOB* ppSignatureBlob);
  188.  
  189. //----------------------------------------------------------------------------
  190. // D3DGetInputAndOutputSignatureBlob:
  191. // -----------------------
  192. // Retrieve the input and output signatures from a compilation result.
  193. //----------------------------------------------------------------------------
  194.  
  195. HRESULT WINAPI
  196. D3DGetInputAndOutputSignatureBlob(__in_bcount(SrcDataSize) LPCVOID pSrcData,
  197.                                   __in SIZE_T SrcDataSize,
  198.                                   __out LPD3DBLOB* ppSignatureBlob);
  199.  
  200. //----------------------------------------------------------------------------
  201. // D3DStripShader:
  202. // -----------------------
  203. // Removes unwanted blobs from a compilation result
  204. //----------------------------------------------------------------------------
  205.  
  206. typedef enum D3DCOMPILER_STRIP_FLAGS
  207. {
  208.     D3DCOMPILER_STRIP_REFLECTION_DATA = 1,
  209.     D3DCOMPILER_STRIP_DEBUG_INFO      = 2,
  210.     D3DCOMPILER_STRIP_TEST_BLOBS      = 4,
  211.     D3DCOMPILER_STRIP_FORCE_DWORD     = 0x7fffffff,
  212. } D3DCOMPILER_STRIP_FLAGS;
  213.  
  214. HRESULT WINAPI
  215. D3DStripShader(__in_bcount(BytecodeLength) LPCVOID pShaderBytecode,
  216.                __in SIZE_T BytecodeLength,
  217.                __in UINT uStripFlags,
  218.                __out LPD3DBLOB* ppStrippedBlob);
  219.  
  220. #ifdef __cplusplus
  221. }
  222. #endif //__cplusplus
  223.    
  224. #endif // #ifndef __D3DCOMPILER_H__
  225.