dxcapi.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // //
  3. // dxcapi.h //
  4. // Copyright (C) Microsoft Corporation. All rights reserved. //
  5. // This file is distributed under the University of Illinois Open Source //
  6. // License. See LICENSE.TXT for details. //
  7. // //
  8. // Provides declarations for the DirectX Compiler API entry point. //
  9. // //
  10. ///////////////////////////////////////////////////////////////////////////////
  11. #ifndef __DXC_API__
  12. #define __DXC_API__
  13. #ifndef DXC_API_IMPORT
  14. #define DXC_API_IMPORT __declspec(dllimport)
  15. #endif
  16. #ifdef _WIN32
  17. #define DECLARE_CROSS_PLATFORM_UUIDOF(T)
  18. #define DEFINE_CROSS_PLATFORM_UUIDOF(T)
  19. #else
  20. #include <dlfcn.h>
  21. #include "dxc/Support/WinAdapter.h"
  22. #endif
  23. struct IMalloc;
  24. struct IDxcIncludeHandler;
  25. /// <summary>
  26. /// Creates a single uninitialized object of the class associated with a specified CLSID.
  27. /// </summary>
  28. /// <param name="rclsid">
  29. /// The CLSID associated with the data and code that will be used to create the object.
  30. /// </param>
  31. /// <param name="riid">
  32. /// A reference to the identifier of the interface to be used to communicate
  33. /// with the object.
  34. /// </param>
  35. /// <param name="ppv">
  36. /// Address of pointer variable that receives the interface pointer requested
  37. /// in riid. Upon successful return, *ppv contains the requested interface
  38. /// pointer. Upon failure, *ppv contains NULL.</param>
  39. /// <remarks>
  40. /// While this function is similar to CoCreateInstance, there is no COM involvement.
  41. /// </remarks>
  42. typedef HRESULT (__stdcall *DxcCreateInstanceProc)(
  43. _In_ REFCLSID rclsid,
  44. _In_ REFIID riid,
  45. _Out_ LPVOID* ppv
  46. );
  47. typedef HRESULT(__stdcall *DxcCreateInstance2Proc)(
  48. _In_ IMalloc *pMalloc,
  49. _In_ REFCLSID rclsid,
  50. _In_ REFIID riid,
  51. _Out_ LPVOID* ppv
  52. );
  53. /// <summary>
  54. /// Creates a single uninitialized object of the class associated with a specified CLSID.
  55. /// </summary>
  56. /// <param name="rclsid">
  57. /// The CLSID associated with the data and code that will be used to create the object.
  58. /// </param>
  59. /// <param name="riid">
  60. /// A reference to the identifier of the interface to be used to communicate
  61. /// with the object.
  62. /// </param>
  63. /// <param name="ppv">
  64. /// Address of pointer variable that receives the interface pointer requested
  65. /// in riid. Upon successful return, *ppv contains the requested interface
  66. /// pointer. Upon failure, *ppv contains NULL.</param>
  67. /// <remarks>
  68. /// While this function is similar to CoCreateInstance, there is no COM involvement.
  69. /// </remarks>
  70. #ifndef _MSC_VER
  71. extern "C"
  72. #endif
  73. DXC_API_IMPORT HRESULT __stdcall DxcCreateInstance(
  74. _In_ REFCLSID rclsid,
  75. _In_ REFIID riid,
  76. _Out_ LPVOID* ppv
  77. );
  78. #ifndef _MSC_VER
  79. extern "C"
  80. #endif
  81. DXC_API_IMPORT HRESULT __stdcall DxcCreateInstance2(
  82. _In_ IMalloc *pMalloc,
  83. _In_ REFCLSID rclsid,
  84. _In_ REFIID riid,
  85. _Out_ LPVOID* ppv
  86. );
  87. // IDxcBlob is an alias of ID3D10Blob and ID3DBlob
  88. struct __declspec(uuid("8BA5FB08-5195-40e2-AC58-0D989C3A0102"))
  89. IDxcBlob : public IUnknown {
  90. public:
  91. virtual LPVOID STDMETHODCALLTYPE GetBufferPointer(void) = 0;
  92. virtual SIZE_T STDMETHODCALLTYPE GetBufferSize(void) = 0;
  93. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcBlob)
  94. };
  95. struct __declspec(uuid("7241d424-2646-4191-97c0-98e96e42fc68"))
  96. IDxcBlobEncoding : public IDxcBlob {
  97. public:
  98. virtual HRESULT STDMETHODCALLTYPE GetEncoding(_Out_ BOOL *pKnown,
  99. _Out_ UINT32 *pCodePage) = 0;
  100. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcBlobEncoding)
  101. };
  102. struct __declspec(uuid("e5204dc7-d18c-4c3c-bdfb-851673980fe7"))
  103. IDxcLibrary : public IUnknown {
  104. virtual HRESULT STDMETHODCALLTYPE SetMalloc(_In_opt_ IMalloc *pMalloc) = 0;
  105. virtual HRESULT STDMETHODCALLTYPE CreateBlobFromBlob(
  106. _In_ IDxcBlob *pBlob, UINT32 offset, UINT32 length, _COM_Outptr_ IDxcBlob **ppResult) = 0;
  107. virtual HRESULT STDMETHODCALLTYPE CreateBlobFromFile(
  108. LPCWSTR pFileName, _In_opt_ UINT32* codePage,
  109. _COM_Outptr_ IDxcBlobEncoding **pBlobEncoding) = 0;
  110. virtual HRESULT STDMETHODCALLTYPE CreateBlobWithEncodingFromPinned(
  111. _In_bytecount_(size) LPCVOID pText, UINT32 size, UINT32 codePage,
  112. _COM_Outptr_ IDxcBlobEncoding **pBlobEncoding) = 0;
  113. virtual HRESULT STDMETHODCALLTYPE CreateBlobWithEncodingOnHeapCopy(
  114. _In_bytecount_(size) LPCVOID pText, UINT32 size, UINT32 codePage,
  115. _COM_Outptr_ IDxcBlobEncoding **pBlobEncoding) = 0;
  116. virtual HRESULT STDMETHODCALLTYPE CreateBlobWithEncodingOnMalloc(
  117. _In_bytecount_(size) LPCVOID pText, IMalloc *pIMalloc, UINT32 size, UINT32 codePage,
  118. _COM_Outptr_ IDxcBlobEncoding **pBlobEncoding) = 0;
  119. virtual HRESULT STDMETHODCALLTYPE CreateIncludeHandler(
  120. _COM_Outptr_ IDxcIncludeHandler **ppResult) = 0;
  121. virtual HRESULT STDMETHODCALLTYPE CreateStreamFromBlobReadOnly(
  122. _In_ IDxcBlob *pBlob, _COM_Outptr_ IStream **ppStream) = 0;
  123. virtual HRESULT STDMETHODCALLTYPE GetBlobAsUtf8(
  124. _In_ IDxcBlob *pBlob, _COM_Outptr_ IDxcBlobEncoding **pBlobEncoding) = 0;
  125. virtual HRESULT STDMETHODCALLTYPE GetBlobAsUtf16(
  126. _In_ IDxcBlob *pBlob, _COM_Outptr_ IDxcBlobEncoding **pBlobEncoding) = 0;
  127. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcLibrary)
  128. };
  129. struct __declspec(uuid("CEDB484A-D4E9-445A-B991-CA21CA157DC2"))
  130. IDxcOperationResult : public IUnknown {
  131. virtual HRESULT STDMETHODCALLTYPE GetStatus(_Out_ HRESULT *pStatus) = 0;
  132. virtual HRESULT STDMETHODCALLTYPE GetResult(_COM_Outptr_result_maybenull_ IDxcBlob **pResult) = 0;
  133. virtual HRESULT STDMETHODCALLTYPE GetErrorBuffer(_COM_Outptr_result_maybenull_ IDxcBlobEncoding **pErrors) = 0;
  134. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcOperationResult)
  135. };
  136. struct __declspec(uuid("7f61fc7d-950d-467f-b3e3-3c02fb49187c"))
  137. IDxcIncludeHandler : public IUnknown {
  138. virtual HRESULT STDMETHODCALLTYPE LoadSource(
  139. _In_ LPCWSTR pFilename, // Candidate filename.
  140. _COM_Outptr_result_maybenull_ IDxcBlob **ppIncludeSource // Resultant source object for included file, nullptr if not found.
  141. ) = 0;
  142. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcIncludeHandler)
  143. };
  144. struct DxcDefine {
  145. LPCWSTR Name;
  146. _Maybenull_ LPCWSTR Value;
  147. };
  148. struct __declspec(uuid("8c210bf3-011f-4422-8d70-6f9acb8db617"))
  149. IDxcCompiler : public IUnknown {
  150. // Compile a single entry point to the target shader model
  151. virtual HRESULT STDMETHODCALLTYPE Compile(
  152. _In_ IDxcBlob *pSource, // Source text to compile
  153. _In_opt_ LPCWSTR pSourceName, // Optional file name for pSource. Used in errors and include handlers.
  154. _In_ LPCWSTR pEntryPoint, // entry point name
  155. _In_ LPCWSTR pTargetProfile, // shader profile to compile
  156. _In_count_(argCount) LPCWSTR *pArguments, // Array of pointers to arguments
  157. _In_ UINT32 argCount, // Number of arguments
  158. _In_count_(defineCount) const DxcDefine *pDefines, // Array of defines
  159. _In_ UINT32 defineCount, // Number of defines
  160. _In_opt_ IDxcIncludeHandler *pIncludeHandler, // user-provided interface to handle #include directives (optional)
  161. _COM_Outptr_ IDxcOperationResult **ppResult // Compiler output status, buffer, and errors
  162. ) = 0;
  163. // Preprocess source text
  164. virtual HRESULT STDMETHODCALLTYPE Preprocess(
  165. _In_ IDxcBlob *pSource, // Source text to preprocess
  166. _In_opt_ LPCWSTR pSourceName, // Optional file name for pSource. Used in errors and include handlers.
  167. _In_count_(argCount) LPCWSTR *pArguments, // Array of pointers to arguments
  168. _In_ UINT32 argCount, // Number of arguments
  169. _In_count_(defineCount) const DxcDefine *pDefines, // Array of defines
  170. _In_ UINT32 defineCount, // Number of defines
  171. _In_opt_ IDxcIncludeHandler *pIncludeHandler, // user-provided interface to handle #include directives (optional)
  172. _COM_Outptr_ IDxcOperationResult **ppResult // Preprocessor output status, buffer, and errors
  173. ) = 0;
  174. // Disassemble a program.
  175. virtual HRESULT STDMETHODCALLTYPE Disassemble(
  176. _In_ IDxcBlob *pSource, // Program to disassemble.
  177. _COM_Outptr_ IDxcBlobEncoding **ppDisassembly // Disassembly text.
  178. ) = 0;
  179. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcCompiler)
  180. };
  181. struct __declspec(uuid("A005A9D9-B8BB-4594-B5C9-0E633BEC4D37"))
  182. IDxcCompiler2 : public IDxcCompiler {
  183. // Compile a single entry point to the target shader model with debug information.
  184. virtual HRESULT STDMETHODCALLTYPE CompileWithDebug(
  185. _In_ IDxcBlob *pSource, // Source text to compile
  186. _In_opt_ LPCWSTR pSourceName, // Optional file name for pSource. Used in errors and include handlers.
  187. _In_ LPCWSTR pEntryPoint, // Entry point name
  188. _In_ LPCWSTR pTargetProfile, // Shader profile to compile
  189. _In_count_(argCount) LPCWSTR *pArguments, // Array of pointers to arguments
  190. _In_ UINT32 argCount, // Number of arguments
  191. _In_count_(defineCount) const DxcDefine *pDefines, // Array of defines
  192. _In_ UINT32 defineCount, // Number of defines
  193. _In_opt_ IDxcIncludeHandler *pIncludeHandler, // user-provided interface to handle #include directives (optional)
  194. _COM_Outptr_ IDxcOperationResult **ppResult, // Compiler output status, buffer, and errors
  195. _Outptr_opt_result_z_ LPWSTR *ppDebugBlobName,// Suggested file name for debug blob.
  196. _COM_Outptr_opt_ IDxcBlob **ppDebugBlob // Debug blob
  197. ) = 0;
  198. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcCompiler2)
  199. };
  200. struct __declspec(uuid("F1B5BE2A-62DD-4327-A1C2-42AC1E1E78E6"))
  201. IDxcLinker : public IUnknown {
  202. public:
  203. // Register a library with name to ref it later.
  204. virtual HRESULT RegisterLibrary(
  205. _In_opt_ LPCWSTR pLibName, // Name of the library.
  206. _In_ IDxcBlob *pLib // Library blob.
  207. ) = 0;
  208. // Links the shader and produces a shader blob that the Direct3D runtime can
  209. // use.
  210. virtual HRESULT STDMETHODCALLTYPE Link(
  211. _In_opt_ LPCWSTR pEntryName, // Entry point name
  212. _In_ LPCWSTR pTargetProfile, // shader profile to link
  213. _In_count_(libCount)
  214. const LPCWSTR *pLibNames, // Array of library names to link
  215. UINT32 libCount, // Number of libraries to link
  216. _In_count_(argCount)
  217. const LPCWSTR *pArguments, // Array of pointers to arguments
  218. _In_ UINT32 argCount, // Number of arguments
  219. _COM_Outptr_ IDxcOperationResult *
  220. *ppResult // Linker output status, buffer, and errors
  221. ) = 0;
  222. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcLinker)
  223. };
  224. static const UINT32 DxcValidatorFlags_Default = 0;
  225. static const UINT32 DxcValidatorFlags_InPlaceEdit = 1; // Validator is allowed to update shader blob in-place.
  226. static const UINT32 DxcValidatorFlags_RootSignatureOnly = 2;
  227. static const UINT32 DxcValidatorFlags_ModuleOnly = 4;
  228. static const UINT32 DxcValidatorFlags_ValidMask = 0x7;
  229. struct __declspec(uuid("A6E82BD2-1FD7-4826-9811-2857E797F49A"))
  230. IDxcValidator : public IUnknown {
  231. // Validate a shader.
  232. virtual HRESULT STDMETHODCALLTYPE Validate(
  233. _In_ IDxcBlob *pShader, // Shader to validate.
  234. _In_ UINT32 Flags, // Validation flags.
  235. _COM_Outptr_ IDxcOperationResult **ppResult // Validation output status, buffer, and errors
  236. ) = 0;
  237. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcValidator)
  238. };
  239. struct __declspec(uuid("334b1f50-2292-4b35-99a1-25588d8c17fe"))
  240. IDxcContainerBuilder : public IUnknown {
  241. virtual HRESULT STDMETHODCALLTYPE Load(_In_ IDxcBlob *pDxilContainerHeader) = 0; // Loads DxilContainer to the builder
  242. virtual HRESULT STDMETHODCALLTYPE AddPart(_In_ UINT32 fourCC, _In_ IDxcBlob *pSource) = 0; // Part to add to the container
  243. virtual HRESULT STDMETHODCALLTYPE RemovePart(_In_ UINT32 fourCC) = 0; // Remove the part with fourCC
  244. virtual HRESULT STDMETHODCALLTYPE SerializeContainer(_Out_ IDxcOperationResult **ppResult) = 0; // Builds a container of the given container builder state
  245. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcContainerBuilder)
  246. };
  247. struct __declspec(uuid("091f7a26-1c1f-4948-904b-e6e3a8a771d5"))
  248. IDxcAssembler : public IUnknown {
  249. // Assemble dxil in ll or llvm bitcode to DXIL container.
  250. virtual HRESULT STDMETHODCALLTYPE AssembleToContainer(
  251. _In_ IDxcBlob *pShader, // Shader to assemble.
  252. _COM_Outptr_ IDxcOperationResult **ppResult // Assembly output status, buffer, and errors
  253. ) = 0;
  254. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcAssembler)
  255. };
  256. // D3D_SIT_RTACCELERATIONSTRUCTURE is an additional value for D3D_SHADER_INPUT_TYPE,
  257. // in order to fit it in to ID3D12LibraryReflection.
  258. static const UINT32 D3D_SIT_RTACCELERATIONSTRUCTURE = 12; // (D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + 1)
  259. struct __declspec(uuid("d2c21b26-8350-4bdc-976a-331ce6f4c54c"))
  260. IDxcContainerReflection : public IUnknown {
  261. virtual HRESULT STDMETHODCALLTYPE Load(_In_ IDxcBlob *pContainer) = 0; // Container to load.
  262. virtual HRESULT STDMETHODCALLTYPE GetPartCount(_Out_ UINT32 *pResult) = 0;
  263. virtual HRESULT STDMETHODCALLTYPE GetPartKind(UINT32 idx, _Out_ UINT32 *pResult) = 0;
  264. virtual HRESULT STDMETHODCALLTYPE GetPartContent(UINT32 idx, _COM_Outptr_ IDxcBlob **ppResult) = 0;
  265. virtual HRESULT STDMETHODCALLTYPE FindFirstPartKind(UINT32 kind, _Out_ UINT32 *pResult) = 0;
  266. virtual HRESULT STDMETHODCALLTYPE GetPartReflection(UINT32 idx, REFIID iid, void **ppvObject) = 0;
  267. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcContainerReflection)
  268. };
  269. struct __declspec(uuid("AE2CD79F-CC22-453F-9B6B-B124E7A5204C"))
  270. IDxcOptimizerPass : public IUnknown {
  271. virtual HRESULT STDMETHODCALLTYPE GetOptionName(_COM_Outptr_ LPWSTR *ppResult) = 0;
  272. virtual HRESULT STDMETHODCALLTYPE GetDescription(_COM_Outptr_ LPWSTR *ppResult) = 0;
  273. virtual HRESULT STDMETHODCALLTYPE GetOptionArgCount(_Out_ UINT32 *pCount) = 0;
  274. virtual HRESULT STDMETHODCALLTYPE GetOptionArgName(UINT32 argIndex, _COM_Outptr_ LPWSTR *ppResult) = 0;
  275. virtual HRESULT STDMETHODCALLTYPE GetOptionArgDescription(UINT32 argIndex, _COM_Outptr_ LPWSTR *ppResult) = 0;
  276. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcOptimizerPass)
  277. };
  278. struct __declspec(uuid("25740E2E-9CBA-401B-9119-4FB42F39F270"))
  279. IDxcOptimizer : public IUnknown {
  280. virtual HRESULT STDMETHODCALLTYPE GetAvailablePassCount(_Out_ UINT32 *pCount) = 0;
  281. virtual HRESULT STDMETHODCALLTYPE GetAvailablePass(UINT32 index, _COM_Outptr_ IDxcOptimizerPass** ppResult) = 0;
  282. virtual HRESULT STDMETHODCALLTYPE RunOptimizer(IDxcBlob *pBlob,
  283. _In_count_(optionCount) LPCWSTR *ppOptions, UINT32 optionCount,
  284. _COM_Outptr_ IDxcBlob **pOutputModule,
  285. _COM_Outptr_opt_ IDxcBlobEncoding **ppOutputText) = 0;
  286. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcOptimizer)
  287. };
  288. static const UINT32 DxcVersionInfoFlags_None = 0;
  289. static const UINT32 DxcVersionInfoFlags_Debug = 1; // Matches VS_FF_DEBUG
  290. static const UINT32 DxcVersionInfoFlags_Internal = 2; // Internal Validator (non-signing)
  291. struct __declspec(uuid("b04f5b50-2059-4f12-a8ff-a1e0cde1cc7e"))
  292. IDxcVersionInfo : public IUnknown {
  293. virtual HRESULT STDMETHODCALLTYPE GetVersion(_Out_ UINT32 *pMajor, _Out_ UINT32 *pMinor) = 0;
  294. virtual HRESULT STDMETHODCALLTYPE GetFlags(_Out_ UINT32 *pFlags) = 0;
  295. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcVersionInfo)
  296. };
  297. struct __declspec(uuid("fb6904c4-42f0-4b62-9c46-983af7da7c83"))
  298. IDxcVersionInfo2 : public IDxcVersionInfo {
  299. virtual HRESULT STDMETHODCALLTYPE GetCommitInfo(_Out_ UINT32 *pCommitCount, _Out_ char **pCommitHash) = 0;
  300. DECLARE_CROSS_PLATFORM_UUIDOF(IDxcVersionInfo2)
  301. };
  302. // Note: __declspec(selectany) requires 'extern'
  303. // On Linux __declspec(selectany) is removed and using 'extern' results in link error.
  304. #ifdef _MSC_VER
  305. #define EXTERN extern
  306. #else
  307. #define EXTERN
  308. #endif
  309. // {73e22d93-e6ce-47f3-b5bf-f0664f39c1b0}
  310. __declspec(selectany) EXTERN const CLSID CLSID_DxcCompiler = {
  311. 0x73e22d93,
  312. 0xe6ce,
  313. 0x47f3,
  314. { 0xb5, 0xbf, 0xf0, 0x66, 0x4f, 0x39, 0xc1, 0xb0 }
  315. };
  316. // {EF6A8087-B0EA-4D56-9E45-D07E1A8B7806}
  317. __declspec(selectany) EXTERN const GUID CLSID_DxcLinker = {
  318. 0xef6a8087,
  319. 0xb0ea,
  320. 0x4d56,
  321. {0x9e, 0x45, 0xd0, 0x7e, 0x1a, 0x8b, 0x78, 0x6}
  322. };
  323. // {CD1F6B73-2AB0-484D-8EDC-EBE7A43CA09F}
  324. __declspec(selectany) EXTERN const CLSID CLSID_DxcDiaDataSource = {
  325. 0xcd1f6b73,
  326. 0x2ab0,
  327. 0x484d,
  328. { 0x8e, 0xdc, 0xeb, 0xe7, 0xa4, 0x3c, 0xa0, 0x9f }
  329. };
  330. // {6245D6AF-66E0-48FD-80B4-4D271796748C}
  331. __declspec(selectany) EXTERN const GUID CLSID_DxcLibrary = {
  332. 0x6245d6af,
  333. 0x66e0,
  334. 0x48fd,
  335. { 0x80, 0xb4, 0x4d, 0x27, 0x17, 0x96, 0x74, 0x8c }
  336. };
  337. // {8CA3E215-F728-4CF3-8CDD-88AF917587A1}
  338. __declspec(selectany) EXTERN const GUID CLSID_DxcValidator = {
  339. 0x8ca3e215,
  340. 0xf728,
  341. 0x4cf3,
  342. { 0x8c, 0xdd, 0x88, 0xaf, 0x91, 0x75, 0x87, 0xa1 }
  343. };
  344. // {D728DB68-F903-4F80-94CD-DCCF76EC7151}
  345. __declspec(selectany) EXTERN const GUID CLSID_DxcAssembler = {
  346. 0xd728db68,
  347. 0xf903,
  348. 0x4f80,
  349. { 0x94, 0xcd, 0xdc, 0xcf, 0x76, 0xec, 0x71, 0x51 }
  350. };
  351. // {b9f54489-55b8-400c-ba3a-1675e4728b91}
  352. __declspec(selectany) EXTERN const GUID CLSID_DxcContainerReflection = {
  353. 0xb9f54489,
  354. 0x55b8,
  355. 0x400c,
  356. { 0xba, 0x3a, 0x16, 0x75, 0xe4, 0x72, 0x8b, 0x91 }
  357. };
  358. // {AE2CD79F-CC22-453F-9B6B-B124E7A5204C}
  359. __declspec(selectany) EXTERN const GUID CLSID_DxcOptimizer = {
  360. 0xae2cd79f,
  361. 0xcc22,
  362. 0x453f,
  363. {0x9b, 0x6b, 0xb1, 0x24, 0xe7, 0xa5, 0x20, 0x4c}
  364. };
  365. // {94134294-411f-4574-b4d0-8741e25240d2}
  366. __declspec(selectany) EXTERN const GUID CLSID_DxcContainerBuilder = {
  367. 0x94134294,
  368. 0x411f,
  369. 0x4574,
  370. { 0xb4, 0xd0, 0x87, 0x41, 0xe2, 0x52, 0x40, 0xd2 }
  371. };
  372. #endif