Halide
mini_d3d12.h
Go to the documentation of this file.
1 #ifndef __mini_d3d12_h__
2 #define __mini_d3d12_h__
3 
4 #ifdef __clang__
5 // #define __stdcall __attribute__ ((stdcall))
6 #pragma clang diagnostic push
7 #pragma clang diagnostic ignored "-Wunknown-pragmas"
8 #pragma clang diagnostic ignored "-Wunused-value"
9 #define __export
10 #ifndef _WIN32
11 #define _WIN32 1
12 #endif //_WIN32
13 #ifdef BITS_64 // <- Halide back-end compilation flag (-DBITS_${j})
14 #ifndef _WIN64
15 #define _WIN64 1
16 #endif //_WIN64
17 #else
18 #define _STDCALL_SUPPORTED
19 #endif
20 #endif
21 
22 #ifndef __midl
23 #define __midl
24 #endif //__midl
25 
26 /* sal.h */
27 // Clear-out SAL macros (Source-code Annotation Language)
28 #ifndef _In_
29 #define _In_
30 #endif //_In_
31 
32 #ifndef _In_z_
33 #define _In_z_
34 #endif //_In_z_
35 
36 #ifndef _In_opt_
37 #define _In_opt_
38 #endif //_In_opt_
39 
40 #ifndef _Out_
41 #define _Out_
42 #endif //_Out_
43 
44 #ifndef _Out_opt_
45 #define _Out_opt_
46 #endif //_Out_opt_
47 
48 #ifndef _Inout_
49 #define _Inout_
50 #endif //_Inout_
51 
52 #ifndef _Inout_opt_
53 #define _Inout_opt_
54 #endif //_Inout_opt_
55 
56 #ifndef _COM_Outptr_
57 #define _COM_Outptr_
58 #endif //_COM_Outptr_
59 
60 #ifndef _COM_Outptr_opt_
61 #define _COM_Outptr_opt_
62 #endif //_COM_Outptr_opt_
63 
64 #ifndef _Check_return_
65 #define _Check_return_
66 #endif //_Check_return_
67 
68 #ifndef _Null_terminated_
69 #define _Null_terminated_
70 #endif //_Null_terminated_
71 
72 #ifndef _Return_type_success_
73 #define _Return_type_success_(expr)
74 #endif //_Return_type_success_
75 
76 #ifndef _Post_equal_to_
77 #define _Post_equal_to_(e)
78 #endif //_Post_equal_to_
79 
80 #ifndef _Post_satisfies_
81 #define _Post_satisfies_(expr)
82 #endif //_Post_satisfies_
83 
84 #ifndef _In_range_
85 #define _In_range_(lb, ub)
86 #endif //_In_range_
87 
88 #ifndef _In_reads_
89 #define _In_reads_(size)
90 #endif //_In_reads_
91 
92 #ifndef _In_reads_opt_
93 #define _In_reads_opt_(size)
94 #endif //_In_reads_opt_
95 
96 #ifndef _In_reads_bytes_
97 #define _In_reads_bytes_(size)
98 #endif //_In_reads_bytes_
99 
100 #ifndef _In_reads_bytes_opt_
101 #define _In_reads_bytes_opt_(size)
102 #endif //_In_reads_bytes_opt_
103 
104 #ifndef _Out_writes_
105 #define _Out_writes_(size)
106 #endif //_Out_writes_
107 
108 #ifndef _Out_writes_opt_
109 #define _Out_writes_opt_(size)
110 #endif //_Out_writes_opt_
111 
112 #ifndef _Out_writes_bytes_
113 #define _Out_writes_bytes_(size)
114 #endif //_Out_writes_bytes_
115 
116 #ifndef _Out_writes_bytes_opt_
117 #define _Out_writes_bytes_opt_(size)
118 #endif //_Out_writes_bytes_opt_
119 
120 #ifndef _Inout_updates_bytes_
121 #define _Inout_updates_bytes_(size)
122 #endif //_Inout_updates_bytes_
123 
124 #ifndef _Field_size_full_
125 #define _Field_size_full_(size)
126 #endif //_Field_size_full_
127 
128 #ifndef _Field_size_bytes_full_
129 #define _Field_size_bytes_full_(size)
130 #endif //_Field_size_bytes_full_
131 
132 #ifndef _Outptr_opt_result_bytebuffer_
133 #define _Outptr_opt_result_bytebuffer_(size)
134 #endif //_Outptr_opt_result_bytebuffer_
135 
136 #ifndef _Must_inspect_result_
137 #define _Must_inspect_result_
138 #endif //_Must_inspect_result_
139 
140 #ifndef __specstrings
141 #define __specstrings
142 #endif //__specstrings
143 
144 #ifndef _Always_
145 #define _Always_(annos)
146 #endif //_Always_
147 
148 /* rpcsal.h */
149 #ifndef __RPC_string
150 #define __RPC_string
151 #endif //__RPC_string
152 
153 #ifndef __RPC__deref_out
154 #define __RPC__deref_out
155 #endif //__RPC__deref_out
156 
157 /* minwindef.h */
158 /*
159  * On ARM and x64 processors, __stdcall is accepted and ignored by the compiler;
160  * on ARM and x64 architectures, by convention, arguments are passed in registers
161  * when possible, and subsequent arguments are passed on the stack.
162  */
163 #define WINAPI __stdcall
164 
165 #define VOID void
166 typedef char CHAR;
167 typedef short SHORT;
168 typedef unsigned char BYTE;
169 typedef unsigned short WORD;
170 #ifdef __clang__
171 // must enforce LLP64 for Windows x64 ...
172 typedef int32_t LONG; // long is 64bits on clang-x64
173 typedef int32_t INT; // and so is int as well...
174 typedef uint32_t ULONG;
175 typedef uint32_t UINT;
176 typedef uint32_t DWORD;
177 #else
178 typedef long LONG;
179 typedef int INT;
180 typedef unsigned long ULONG;
181 typedef unsigned int UINT;
182 typedef unsigned long DWORD;
183 #endif
184 typedef float FLOAT;
185 
186 #define CONST const
187 #define far
188 #define near
189 typedef CONST void far *LPCVOID;
190 typedef void far *LPVOID;
191 
192 typedef INT BOOL;
193 
194 #ifdef __clang__
195 typedef unsigned short WCHAR; // clang's wchar_t is 32bits by default...
196 #else
197 #ifndef _MAC
198 typedef wchar_t WCHAR; // Windows wchar_t : 16-bit UNICODE character
199 #else
200 // some Macintosh compilers don't define wchar_t in a convenient location, or define it as a char
201 typedef unsigned short WCHAR; // wc, 16-bit UNICODE character
202 #endif
203 #endif
207 
208 #define FAR far
209 #define NEAR near
210 
211 #ifndef FALSE
212 #define FALSE 0
213 #endif
214 
215 #ifndef TRUE
216 #define TRUE 1
217 #endif
218 
219 /* basestd.h */
220 typedef CHAR INT8, *PINT8;
221 typedef SHORT INT16, *PINT16;
222 typedef INT INT32, *PINT32;
223 typedef BYTE UINT8, *PUINT8;
224 typedef WORD UINT16, *PUINT16;
225 typedef UINT UINT32, *PUINT32;
226 #ifdef __clang__
227 typedef int64_t INT64, *PINT64;
228 typedef uint64_t UINT64, *PUINT64;
229 #else
230 typedef __int64 INT64, *PINT64;
231 typedef unsigned __int64 UINT64, *PUINT64;
232 #endif
233 #if !defined(_W64)
234 #if !defined(__midl) && (defined(_X86_) || defined(_M_IX86) || defined(_ARM_) || defined(_M_ARM)) && _MSC_VER >= 1300
235 #define _W64 __w64
236 #else
237 #define _W64
238 #endif
239 #endif
240 #if defined(_WIN64)
241 typedef INT64 INT_PTR, *PINT_PTR;
242 typedef UINT64 UINT_PTR, *PUINT_PTR;
243 
244 typedef INT64 LONG_PTR, *PLONG_PTR;
245 typedef UINT64 ULONG_PTR, *PULONG_PTR;
246 
247 #define __int3264 INT64
248 
249 #else
252 
255 
256 #define __int3264 INT32
257 
258 #endif
261 
262 #ifndef NO_STRICT
263 #ifndef STRICT
264 #define STRICT 1
265 #endif
266 #endif /* NO_STRICT */
267 
268 /* minwinbase.h */
269 typedef struct _SECURITY_ATTRIBUTES {
274 
275 /* winnt.h */
276 #ifdef __clang__
277 typedef int64_t LONGLONG;
278 #else
279 typedef __int64 LONGLONG;
280 #endif
281 
282 typedef _Return_type_success_(return >= 0) LONG HRESULT;
283 
284 #if defined(_WIN32) || defined(_MPPC_)
285 
286 // Win32 doesn't support __export
287 
288 #ifdef _68K_
289 #define STDMETHODCALLTYPE __cdecl
290 #else
291 #define STDMETHODCALLTYPE __stdcall
292 #endif
293 #define STDMETHODVCALLTYPE __cdecl
294 
295 #define STDAPICALLTYPE __stdcall
296 #define STDAPIVCALLTYPE __cdecl
297 
298 #else
299 
300 #define STDMETHODCALLTYPE __export __stdcall
301 #define STDMETHODVCALLTYPE __export __cdecl
302 
303 #define STDAPICALLTYPE __export __stdcall
304 #define STDAPIVCALLTYPE __export __cdecl
305 
306 #endif
307 
308 #define DUMMYSTRUCTNAME
309 
310 typedef union _LARGE_INTEGER {
311  struct {
314  } DUMMYSTRUCTNAME;
315  struct {
316  DWORD LowPart;
317  LONG HighPart;
318  } u;
320 } LARGE_INTEGER;
321 
322 #ifdef __cplusplus
323 #define EXTERN_C extern "C"
324 #define EXTERN_C_START extern "C" {
325 #define EXTERN_C_END }
326 #else
327 #define EXTERN_C extern
328 #define EXTERN_C_START
329 #define EXTERN_C_END
330 #endif
331 
332 #if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_ARM64)) && !defined(MIDL_PASS)
333 #define DECLSPEC_IMPORT __declspec(dllimport)
334 #else
335 #define DECLSPEC_IMPORT
336 #endif
337 
338 #ifdef __cplusplus
339 
340 // Define operator overloads to enable bit operations on enum values that are
341 // used to define flags. Use DEFINE_ENUM_FLAG_OPERATORS(YOUR_TYPE) to enable these
342 // operators on YOUR_TYPE.
343 
344 // Moved here from objbase.w.
345 
346 // Templates are defined here in order to avoid a dependency on C++ <type_traits> header file,
347 // or on compiler-specific contructs.
348 extern "C++" {
349 
350 template<size_t S>
351 struct _ENUM_FLAG_INTEGER_FOR_SIZE;
352 
353 template<>
354 struct _ENUM_FLAG_INTEGER_FOR_SIZE<1> {
355  typedef INT8 type;
356 };
357 
358 template<>
359 struct _ENUM_FLAG_INTEGER_FOR_SIZE<2> {
360  typedef INT16 type;
361 };
362 
363 template<>
364 struct _ENUM_FLAG_INTEGER_FOR_SIZE<4> {
365  typedef INT32 type;
366 };
367 
368 // used as an approximation of std::underlying_type<T>
369 template<class T>
370 struct _ENUM_FLAG_SIZED_INTEGER {
371  typedef typename _ENUM_FLAG_INTEGER_FOR_SIZE<sizeof(T)>::type type;
372 };
373 }
374 
375 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
376  extern "C++" { \
377  inline ENUMTYPE operator|(ENUMTYPE a, ENUMTYPE b) { \
378  return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) | ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); \
379  } \
380  inline ENUMTYPE &operator|=(ENUMTYPE &a, ENUMTYPE b) { \
381  return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) |= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); \
382  } \
383  inline ENUMTYPE operator&(ENUMTYPE a, ENUMTYPE b) { \
384  return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) & ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); \
385  } \
386  inline ENUMTYPE &operator&=(ENUMTYPE &a, ENUMTYPE b) { \
387  return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) &= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); \
388  } \
389  inline ENUMTYPE operator~(ENUMTYPE a) { \
390  return ENUMTYPE(~((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a)); \
391  } \
392  inline ENUMTYPE operator^(ENUMTYPE a, ENUMTYPE b) { \
393  return ENUMTYPE(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)a) ^ ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); \
394  } \
395  inline ENUMTYPE &operator^=(ENUMTYPE &a, ENUMTYPE b) { \
396  return (ENUMTYPE &)(((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type &)a) ^= ((_ENUM_FLAG_SIZED_INTEGER<ENUMTYPE>::type)b)); \
397  } \
398  }
399 #else
400 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) // NOP, C allows these operators.
401 #endif
402 
403 #ifndef DECLSPEC_NOTHROW
404 #if (_MSC_VER >= 1200) && !defined(MIDL_PASS)
405 #define DECLSPEC_NOTHROW __declspec(nothrow)
406 #else
407 #define DECLSPEC_NOTHROW
408 #endif
409 #endif
410 
411 #ifdef STRICT
412 typedef void *HANDLE;
413 #if 0 && (_MSC_VER > 1000)
414 #define DECLARE_HANDLE(name) \
415  struct name##__; \
416  typedef struct name##__ *name
417 #else
418 #define DECLARE_HANDLE(name) \
419  struct name##__ { \
420  int unused; \
421  }; \
422  typedef struct name##__ *name
423 #endif
424 #else
425 typedef PVOID HANDLE;
426 #define DECLARE_HANDLE(name) typedef HANDLE name
427 #endif
428 typedef HANDLE *PHANDLE;
429 
430 /* windef.h */
431 typedef struct tagRECT {
436 } RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;
437 
438 DECLARE_HANDLE(HWND);
439 
440 /* minwindef.h (2) */
441 DECLARE_HANDLE(HINSTANCE);
442 typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */
443 
444 /* winerror.h */
445 #define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc)
446 #define S_OK _HRESULT_TYPEDEF_(0x0L)
447 #define E_UNEXPECTED _HRESULT_TYPEDEF_(0x8000FFFFL)
448 #define DXGI_ERROR_NOT_FOUND _HRESULT_TYPEDEF_(0x887a0002)
449 #define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0)
450 #define FAILED(hr) (((HRESULT)(hr)) < 0)
451 
452 /* guiddef.h */
453 typedef struct _GUID {
458 } GUID;
459 typedef GUID IID;
460 typedef IID *LPIID;
461 
462 #ifdef __midl_proxy
463 #define __MIDL_CONST
464 #else
465 #define __MIDL_CONST const
466 #endif
467 
468 #ifdef __cplusplus
469 #define REFIID const IID &
470 #else
471 #define REFIID const IID *__MIDL_CONST
472 #endif
473 
474 #ifdef __cplusplus
475 #define REFGUID const GUID &
476 #else
477 #define REFGUID const GUID *__MIDL_CONST
478 #endif
479 
480 #ifndef DECLSPEC_SELECTANY
481 #if (_MSC_VER >= 1100)
482 #define DECLSPEC_SELECTANY __declspec(selectany)
483 #else
484 #define DECLSPEC_SELECTANY
485 #endif
486 #endif
487 
488 #ifdef INITGUID
489 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
490  EXTERN_C const GUID DECLSPEC_SELECTANY name = {l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}
491 #else
492 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
493  EXTERN_C const GUID FAR name
494 #endif // INITGUID
495 
496 /* rpc.h */
497 #if defined(__specstrings)
498 typedef _Return_type_success_(return == 0) LONG RPC_STATUS;
499 #else
500 typedef LONG RPC_STATUS;
501 #endif
502 
503 #if !defined(__RPC_MAC__) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
504 #define __RPC_API __stdcall
505 #define __RPC_USER __stdcall
506 #define __RPC_STUB __stdcall
507 #define RPC_ENTRY __stdcall
508 #else // Not Win32/Win64
509 #define __RPC_API
510 #define __RPC_USER
511 #define __RPC_STUB
512 #define RPC_ENTRY
513 #endif
514 
515 #define __RPC_FAR
516 
517 typedef void *I_RPC_HANDLE;
518 
519 /* rpcdce.h */
520 #ifndef UUID_DEFINED
521 #define UUID_DEFINED
522 typedef GUID UUID;
523 #ifndef uuid_t
524 #define uuid_t UUID
525 #endif
526 #endif
527 
530 #define rpc_binding_handle_t RPC_BINDING_HANDLE
531 
532 #define RPC_MGR_EPV void
533 
534 /* rpcdcep.h */
535 //#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
536 
537 typedef struct _RPC_VERSION {
538  unsigned short MajorVersion;
539  unsigned short MinorVersion;
540 } RPC_VERSION;
541 
542 typedef struct _RPC_SYNTAX_IDENTIFIER {
546 
547 typedef struct _RPC_MESSAGE {
549  unsigned long DataRepresentation;
551  unsigned int BufferLength;
552  unsigned int ProcNum;
558  unsigned long RpcFlags;
560 
561 //#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */
562 
563 /* rpcndr.h */
564 #ifndef DECLSPEC_NOVTABLE
565 #if (_MSC_VER >= 1100) && defined(__cplusplus)
566 #define DECLSPEC_NOVTABLE __declspec(novtable)
567 #else
568 #define DECLSPEC_NOVTABLE
569 #endif
570 #endif
571 
572 #ifndef DECLSPEC_UUID
573 #if (_MSC_VER >= 1100) && defined(__cplusplus)
574 #define DECLSPEC_UUID(x) __declspec(uuid(x))
575 #else
576 #define DECLSPEC_UUID(x)
577 #endif
578 #endif
579 
580 #define MIDL_INTERFACE(x) struct DECLSPEC_UUID(x) DECLSPEC_NOVTABLE
581 
582 /* combaseapi.h */
583 #define BEGIN_INTERFACE
584 #define END_INTERFACE
585 
586 #ifdef _68K_
587 #ifndef REQUIRESAPPLEPASCAL
588 #define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT PASCAL
589 #define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type PASCAL
590 #else
591 #define WINOLEAPI EXTERN_C DECLSPEC_IMPORT PASCAL HRESULT
592 #define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT PASCAL type
593 #endif
594 #else
595 #define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
596 #define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
597 #endif
598 
599 #ifdef COM_STDMETHOD_CAN_THROW
600 #define COM_DECLSPEC_NOTHROW
601 #else
602 #define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW
603 #endif
604 
605 #if defined(__cplusplus) && !defined(CINTERFACE)
606 
607 #ifdef COM_STDMETHOD_CAN_THROW
608 #define COM_DECLSPEC_NOTHROW
609 #else
610 #define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW
611 #endif
612 
613 #define __STRUCT__ struct
614 #define interface __STRUCT__
615 #define STDMETHOD(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE method
616 #define STDMETHOD_(type, method) virtual COM_DECLSPEC_NOTHROW type STDMETHODCALLTYPE method
617 #define STDMETHODV(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODVCALLTYPE method
618 #define STDMETHODV_(type, method) virtual COM_DECLSPEC_NOTHROW type STDMETHODVCALLTYPE method
619 #define PURE = 0
620 #define THIS_
621 #define THIS void
622 #define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface
623 #define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface
624 #define DECLARE_INTERFACE_IID(iface, iid) interface DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE iface
625 #define DECLARE_INTERFACE_IID_(iface, baseiface, iid) interface DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE iface : public baseiface
626 
627 #define IFACEMETHOD(method) __override STDMETHOD(method)
628 #define IFACEMETHOD_(type, method) __override STDMETHOD_(type, method)
629 #define IFACEMETHODV(method) __override STDMETHODV(method)
630 #define IFACEMETHODV_(type, method) __override STDMETHODV_(type, method)
631 
632 #if !defined(BEGIN_INTERFACE)
633 
634 #if defined(_MPPC_) && ((defined(_MSC_VER) || defined(__SC__) || defined(__MWERKS__)) && !defined(NO_NULL_VTABLE_ENTRY))
635 #define BEGIN_INTERFACE \
636  virtual void a() { \
637  }
638 #define END_INTERFACE
639 #else
640 #define BEGIN_INTERFACE
641 #define END_INTERFACE
642 #endif
643 #endif
644 
645 // IID_PPV_ARGS(ppType)
646 // ppType is the variable of type IType that will be filled
647 //
648 // RESULTS in: IID_IType, ppvType
649 // will create a compiler error if wrong level of indirection is used.
650 //
651 
652 /* Unknwn.h */
653 #ifndef __IUnknown_FWD_DEFINED__
654 #define __IUnknown_FWD_DEFINED__
655 typedef interface IUnknown IUnknown;
656 
657 #endif /* __IUnknown_FWD_DEFINED__ */
658 
659 extern "C++" {
660 template<typename T>
661 _Post_equal_to_(pp) _Post_satisfies_(return == pp) void **IID_PPV_ARGS_Helper(T **pp) {
662 #pragma prefast(suppress : 6269, "Tool issue with unused static_cast")
663  static_cast<IUnknown *>(*pp); // make sure everyone derives from IUnknown
664  return reinterpret_cast<void **>(pp);
665 }
666 }
667 
668 #define IID_PPV_ARGS(ppType) __uuidof(**(ppType)), IID_PPV_ARGS_Helper(ppType)
669 
670 #else
671 
672 #define interface struct
673 
674 #define STDMETHOD(method) HRESULT(STDMETHODCALLTYPE *method)
675 #define STDMETHOD_(type, method) type(STDMETHODCALLTYPE *method)
676 #define STDMETHODV(method) HRESULT(STDMETHODVCALLTYPE *method)
677 #define STDMETHODV_(type, method) type(STDMETHODVCALLTYPE *method)
678 
679 #define IFACEMETHOD(method) __override STDMETHOD(method)
680 #define IFACEMETHOD_(type, method) __override STDMETHOD_(type, method)
681 #define IFACEMETHODV(method) __override STDMETHODV(method)
682 #define IFACEMETHODV_(type, method) __override STDMETHODV_(type, method)
683 
684 #if !defined(BEGIN_INTERFACE)
685 
686 #if defined(_MPPC_)
687 #define BEGIN_INTERFACE void *b;
688 #define END_INTERFACE
689 #else
690 #define BEGIN_INTERFACE
691 #define END_INTERFACE
692 #endif
693 #endif
694 
695 #define PURE
696 #define THIS_ INTERFACE FAR *This,
697 #define THIS INTERFACE FAR *This
698 #ifdef CONST_VTABLE
699 #undef CONST_VTBL
700 #define CONST_VTBL const
701 #define DECLARE_INTERFACE(iface) \
702  typedef interface iface { \
703  const struct iface##Vtbl FAR *lpVtbl; \
704  } \
705  iface; \
706  typedef const struct iface##Vtbl iface##Vtbl; \
707  const struct iface##Vtbl
708 #else
709 #undef CONST_VTBL
710 #define CONST_VTBL
711 #define DECLARE_INTERFACE(iface) \
712  typedef interface iface { \
713  struct iface##Vtbl FAR *lpVtbl; \
714  } \
715  iface; \
716  typedef struct iface##Vtbl iface##Vtbl; \
717  struct iface##Vtbl
718 #endif
719 #define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE(iface)
720 #define DECLARE_INTERFACE_IID(iface, iid) DECLARE_INTERFACE(iface)
721 #define DECLARE_INTERFACE_IID_(iface, baseiface, iid) DECLARE_INTERFACE_(iface, baseiface)
722 #endif
723 
724 typedef interface IRpcStubBuffer IRpcStubBuffer;
726 
727 /* Unknwn.h */
728 #ifndef __IUnknown_FWD_DEFINED__
729 #define __IUnknown_FWD_DEFINED__
730 typedef interface IUnknown IUnknown;
731 
732 #endif /* __IUnknown_FWD_DEFINED__ */
733 
734 #ifndef __IUnknown_INTERFACE_DEFINED__
735 #define __IUnknown_INTERFACE_DEFINED__
736 
737 /* interface IUnknown */
738 /* [unique][uuid][object][local] */
739 
740 typedef /* [unique] */ IUnknown *LPUNKNOWN;
741 
742 //////////////////////////////////////////////////////////////////
743 // IID_IUnknown and all other system IIDs are provided in UUID.LIB
744 // Link that library in with your proxies, clients and servers
745 //////////////////////////////////////////////////////////////////
746 
747 #if (_MSC_VER >= 1100) && defined(__cplusplus) && !defined(CINTERFACE)
749 extern "C++" {
750 MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
751 IUnknown {
752 public:
754  virtual HRESULT STDMETHODCALLTYPE QueryInterface(
755  /* [in] */ REFIID riid,
756  /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
757 
758  virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;
759 
760  virtual ULONG STDMETHODCALLTYPE Release(void) = 0;
761 
762  template<class Q>
763  HRESULT
764 #ifdef _M_CEE_PURE
765  __clrcall
766 #else
768 #endif
769  QueryInterface(_COM_Outptr_ Q * *pp) {
770  return QueryInterface(__uuidof(Q), (void **)pp);
771  }
772 
774 };
775 } // extern C++
776 HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
777  IUnknown __RPC_FAR *This,
778  /* [in] */ REFIID riid,
779  /* [iid_is][out] */ __RPC__deref_out void __RPC_FAR *__RPC_FAR *ppvObject);
780 
781 void __RPC_STUB IUnknown_QueryInterface_Stub(
782  IRpcStubBuffer *This,
783  IRpcChannelBuffer *_pRpcChannelBuffer,
784  PRPC_MESSAGE _pRpcMessage,
785  DWORD *_pdwStubPhase);
786 
787 ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
788  IUnknown __RPC_FAR *This);
789 
790 void __RPC_STUB IUnknown_AddRef_Stub(
791  IRpcStubBuffer *This,
792  IRpcChannelBuffer *_pRpcChannelBuffer,
793  PRPC_MESSAGE _pRpcMessage,
794  DWORD *_pdwStubPhase);
795 
796 ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
797  IUnknown __RPC_FAR *This);
798 
799 void __RPC_STUB IUnknown_Release_Stub(
800  IRpcStubBuffer *This,
801  IRpcChannelBuffer *_pRpcChannelBuffer,
802  PRPC_MESSAGE _pRpcMessage,
803  DWORD *_pdwStubPhase);
804 #else
805 
807 
808 #if defined(__cplusplus) && !defined(CINTERFACE)
809 
810 MIDL_INTERFACE("00000000-0000-0000-C000-000000000046")
811 IUnknown {
812 public:
814  virtual HRESULT STDMETHODCALLTYPE QueryInterface(
815  /* [in] */ REFIID riid,
816  /* [annotation][iid_is][out] */
817  _COM_Outptr_ void **ppvObject) = 0;
818 
819  virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;
820 
821  virtual ULONG STDMETHODCALLTYPE Release(void) = 0;
822 
824 };
825 
826 #else /* C style interface */
827 
828 typedef struct IUnknownVtbl {
830 
831  HRESULT(STDMETHODCALLTYPE *QueryInterface)
832  (
833  IUnknown *This,
834  /* [in] */ REFIID riid,
835  /* [annotation][iid_is][out] */
836  _COM_Outptr_ void **ppvObject);
837 
838  ULONG(STDMETHODCALLTYPE *AddRef)
839  (
841 
842  ULONG(STDMETHODCALLTYPE *Release)
843  (
844  IUnknown *This);
845 
847 } IUnknownVtbl;
848 
849 interface IUnknown {
850  CONST_VTBL struct IUnknownVtbl *lpVtbl;
851 };
852 
853 #ifdef COBJMACROS
854 
855 #define IUnknown_QueryInterface(This, riid, ppvObject) \
856  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
857 
858 #define IUnknown_AddRef(This) \
859  ((This)->lpVtbl->AddRef(This))
860 
861 #define IUnknown_Release(This) \
862  ((This)->lpVtbl->Release(This))
863 
864 #endif /* COBJMACROS */
865 
866 #endif /* C style interface */
867 
868 #if 0
869 HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(
870  IUnknown * This,
871  /* [in] */ REFIID riid,
872  /* [annotation][iid_is][out] */
873  _COM_Outptr_ void **ppvObject);
874 
875 
876 void __RPC_STUB IUnknown_QueryInterface_Stub(
878  IRpcChannelBuffer *_pRpcChannelBuffer,
879  PRPC_MESSAGE _pRpcMessage,
880  DWORD *_pdwStubPhase);
881 
882 
883 ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(
884  IUnknown * This);
885 
886 
887 void __RPC_STUB IUnknown_AddRef_Stub(
889  IRpcChannelBuffer *_pRpcChannelBuffer,
890  PRPC_MESSAGE _pRpcMessage,
891  DWORD *_pdwStubPhase);
892 
893 
894 ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(
895  IUnknown * This);
896 
897 
898 void __RPC_STUB IUnknown_Release_Stub(
900  IRpcChannelBuffer *_pRpcChannelBuffer,
901  PRPC_MESSAGE _pRpcMessage,
902  DWORD *_pdwStubPhase);
903 #endif
904 
905 #endif /* LEGACY MSVC CHECK */
906 
907 #endif /* __IUnknown_INTERFACE_DEFINED__ */
908 
909 /* WTypesbase.h */
910 #if defined(_WIN32) && !defined(OLE2ANSI)
911 typedef WCHAR OLECHAR;
912 
913 typedef /* [string] */ __RPC_string OLECHAR *LPOLESTR;
914 
915 typedef /* [string] */ __RPC_string const OLECHAR *LPCOLESTR;
916 
917 #define OLESTR(str) L##str
918 
919 #else
920 
921 typedef char OLECHAR;
922 typedef LPSTR LPOLESTR;
924 #define OLESTR(str) str
925 #endif
926 
927 /* d3dcommon.h */
928 #ifdef __cplusplus
929 extern "C" {
930 #endif
931 
932 typedef enum D3D_FEATURE_LEVEL {
943 
1040 
1041 #ifdef __cplusplus
1042 }
1043 #endif
1044 
1045 /* dxgiformat.h */
1046 typedef enum DXGI_FORMAT {
1164 } DXGI_FORMAT;
1165 
1166 /* dxgitype.h */
1167 typedef struct DXGI_SAMPLE_DESC {
1171 
1172 /* d3dcommon.h */
1173 typedef enum _D3D_INCLUDE_TYPE {
1180 
1181 typedef interface ID3DInclude ID3DInclude;
1182 #undef INTERFACE
1183 #define INTERFACE ID3DInclude
1185  STDMETHOD(Open)
1186  (THIS_ D3D_INCLUDE_TYPE IncludeType, LPCSTR pFileName, LPCVOID pParentData, LPCVOID * ppData, UINT * pBytes) PURE;
1187  STDMETHOD(Close)
1188  (THIS_ LPCVOID pData) PURE;
1189 };
1190 
1191 typedef struct _D3D_SHADER_MACRO {
1195 
1197 
1198 #if defined(__cplusplus) && !defined(CINTERFACE)
1199 
1200 MIDL_INTERFACE("8BA5FB08-5195-40e2-AC58-0D989C3A0102")
1201 ID3D10Blob : public IUnknown {
1202 public:
1203  virtual LPVOID STDMETHODCALLTYPE GetBufferPointer(void) = 0;
1204 
1205  virtual SIZE_T STDMETHODCALLTYPE GetBufferSize(void) = 0;
1206 };
1207 
1208 #else /* C style interface */
1209 
1210 #ifndef __ID3D10Blob_FWD_DEFINED__
1211 #define __ID3D10Blob_FWD_DEFINED__
1212 typedef interface ID3D10Blob ID3D10Blob;
1213 
1214 #endif /* __ID3D10Blob_FWD_DEFINED__ */
1215 
1216 typedef struct ID3D10BlobVtbl {
1218 
1219  HRESULT(STDMETHODCALLTYPE *QueryInterface)
1220  (
1221  ID3D10Blob *This,
1222  /* [in] */ REFIID riid,
1223  /* [annotation][iid_is][out] */
1224  _COM_Outptr_ void **ppvObject);
1225 
1226  ULONG(STDMETHODCALLTYPE *AddRef)
1227  (
1229 
1230  ULONG(STDMETHODCALLTYPE *Release)
1231  (
1232  ID3D10Blob *This);
1233 
1234  LPVOID(STDMETHODCALLTYPE *GetBufferPointer)
1235  (
1236  ID3D10Blob *This);
1237 
1238  SIZE_T(STDMETHODCALLTYPE *GetBufferSize)
1239  (
1240  ID3D10Blob *This);
1241 
1243 } ID3D10BlobVtbl;
1244 
1245 interface ID3D10Blob {
1246  CONST_VTBL struct ID3D10BlobVtbl *lpVtbl;
1247 };
1248 
1249 #ifdef COBJMACROS
1250 
1251 #define ID3D10Blob_QueryInterface(This, riid, ppvObject) \
1252  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
1253 
1254 #define ID3D10Blob_AddRef(This) \
1255  ((This)->lpVtbl->AddRef(This))
1256 
1257 #define ID3D10Blob_Release(This) \
1258  ((This)->lpVtbl->Release(This))
1259 
1260 #define ID3D10Blob_GetBufferPointer(This) \
1261  ((This)->lpVtbl->GetBufferPointer(This))
1262 
1263 #define ID3D10Blob_GetBufferSize(This) \
1264  ((This)->lpVtbl->GetBufferSize(This))
1265 
1266 #endif /* COBJMACROS */
1267 
1268 #endif /* C style interface */
1269 
1270 typedef interface ID3D10Blob *LPD3D10BLOB;
1272 
1274 #define IID_ID3DBlob IID_ID3D10Blob
1275 
1276 /* d3d12.h */
1277 /* Forward Declarations */
1278 
1279 #ifndef __ID3D12Object_FWD_DEFINED__
1280 #define __ID3D12Object_FWD_DEFINED__
1281 typedef interface ID3D12Object ID3D12Object;
1282 
1283 #endif /* __ID3D12Object_FWD_DEFINED__ */
1284 
1285 #ifndef __ID3D12DeviceChild_FWD_DEFINED__
1286 #define __ID3D12DeviceChild_FWD_DEFINED__
1288 
1289 #endif /* __ID3D12DeviceChild_FWD_DEFINED__ */
1290 
1291 #ifndef __ID3D12RootSignature_FWD_DEFINED__
1292 #define __ID3D12RootSignature_FWD_DEFINED__
1294 
1295 #endif /* __ID3D12RootSignature_FWD_DEFINED__ */
1296 
1297 #ifndef __ID3D12RootSignatureDeserializer_FWD_DEFINED__
1298 #define __ID3D12RootSignatureDeserializer_FWD_DEFINED__
1300 
1301 #endif /* __ID3D12RootSignatureDeserializer_FWD_DEFINED__ */
1302 
1303 #ifndef __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
1304 #define __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__
1306 
1307 #endif /* __ID3D12VersionedRootSignatureDeserializer_FWD_DEFINED__ */
1308 
1309 #ifndef __ID3D12Pageable_FWD_DEFINED__
1310 #define __ID3D12Pageable_FWD_DEFINED__
1311 typedef interface ID3D12Pageable ID3D12Pageable;
1312 
1313 #endif /* __ID3D12Pageable_FWD_DEFINED__ */
1314 
1315 #ifndef __ID3D12Heap_FWD_DEFINED__
1316 #define __ID3D12Heap_FWD_DEFINED__
1317 typedef interface ID3D12Heap ID3D12Heap;
1318 
1319 #endif /* __ID3D12Heap_FWD_DEFINED__ */
1320 
1321 #ifndef __ID3D12Resource_FWD_DEFINED__
1322 #define __ID3D12Resource_FWD_DEFINED__
1323 typedef interface ID3D12Resource ID3D12Resource;
1324 
1325 #endif /* __ID3D12Resource_FWD_DEFINED__ */
1326 
1327 #ifndef __ID3D12CommandAllocator_FWD_DEFINED__
1328 #define __ID3D12CommandAllocator_FWD_DEFINED__
1330 
1331 #endif /* __ID3D12CommandAllocator_FWD_DEFINED__ */
1332 
1333 #ifndef __ID3D12Fence_FWD_DEFINED__
1334 #define __ID3D12Fence_FWD_DEFINED__
1335 typedef interface ID3D12Fence ID3D12Fence;
1336 
1337 #endif /* __ID3D12Fence_FWD_DEFINED__ */
1338 
1339 #ifndef __ID3D12PipelineState_FWD_DEFINED__
1340 #define __ID3D12PipelineState_FWD_DEFINED__
1342 
1343 #endif /* __ID3D12PipelineState_FWD_DEFINED__ */
1344 
1345 #ifndef __ID3D12DescriptorHeap_FWD_DEFINED__
1346 #define __ID3D12DescriptorHeap_FWD_DEFINED__
1348 
1349 #endif /* __ID3D12DescriptorHeap_FWD_DEFINED__ */
1350 
1351 #ifndef __ID3D12QueryHeap_FWD_DEFINED__
1352 #define __ID3D12QueryHeap_FWD_DEFINED__
1354 
1355 #endif /* __ID3D12QueryHeap_FWD_DEFINED__ */
1356 
1357 #ifndef __ID3D12CommandSignature_FWD_DEFINED__
1358 #define __ID3D12CommandSignature_FWD_DEFINED__
1360 
1361 #endif /* __ID3D12CommandSignature_FWD_DEFINED__ */
1362 
1363 #ifndef __ID3D12CommandList_FWD_DEFINED__
1364 #define __ID3D12CommandList_FWD_DEFINED__
1366 
1367 #endif /* __ID3D12CommandList_FWD_DEFINED__ */
1368 
1369 #ifndef __ID3D12GraphicsCommandList_FWD_DEFINED__
1370 #define __ID3D12GraphicsCommandList_FWD_DEFINED__
1372 
1373 #endif /* __ID3D12GraphicsCommandList_FWD_DEFINED__ */
1374 
1375 #ifndef __ID3D12GraphicsCommandList1_FWD_DEFINED__
1376 #define __ID3D12GraphicsCommandList1_FWD_DEFINED__
1378 
1379 #endif /* __ID3D12GraphicsCommandList1_FWD_DEFINED__ */
1380 
1381 #ifndef __ID3D12CommandQueue_FWD_DEFINED__
1382 #define __ID3D12CommandQueue_FWD_DEFINED__
1384 
1385 #endif /* __ID3D12CommandQueue_FWD_DEFINED__ */
1386 
1387 #ifndef __ID3D12Device_FWD_DEFINED__
1388 #define __ID3D12Device_FWD_DEFINED__
1389 typedef interface ID3D12Device ID3D12Device;
1390 
1391 #endif /* __ID3D12Device_FWD_DEFINED__ */
1392 
1393 #ifndef __ID3D12PipelineLibrary_FWD_DEFINED__
1394 #define __ID3D12PipelineLibrary_FWD_DEFINED__
1396 
1397 #endif /* __ID3D12PipelineLibrary_FWD_DEFINED__ */
1398 
1399 #ifndef __ID3D12PipelineLibrary1_FWD_DEFINED__
1400 #define __ID3D12PipelineLibrary1_FWD_DEFINED__
1402 
1403 #endif /* __ID3D12PipelineLibrary1_FWD_DEFINED__ */
1404 
1405 #ifndef __ID3D12Device1_FWD_DEFINED__
1406 #define __ID3D12Device1_FWD_DEFINED__
1407 typedef interface ID3D12Device1 ID3D12Device1;
1408 
1409 #endif /* __ID3D12Device1_FWD_DEFINED__ */
1410 
1411 #ifndef __ID3D12Device2_FWD_DEFINED__
1412 #define __ID3D12Device2_FWD_DEFINED__
1413 typedef interface ID3D12Device2 ID3D12Device2;
1414 
1415 #endif /* __ID3D12Device2_FWD_DEFINED__ */
1416 
1417 #ifndef __ID3D12Tools_FWD_DEFINED__
1418 #define __ID3D12Tools_FWD_DEFINED__
1419 typedef interface ID3D12Tools ID3D12Tools;
1420 
1421 #endif /* __ID3D12Tools_FWD_DEFINED__ */
1422 
1423 #ifdef __cplusplus
1424 extern "C" {
1425 #endif
1426 
1427 #if defined(__cplusplus) && !defined(CINTERFACE)
1428 
1429 MIDL_INTERFACE("c4fec28f-7966-4e95-9f94-f431cb56c3b8")
1430 ID3D12Object : public IUnknown {
1431 public:
1432  virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
1433  _In_ REFGUID guid,
1434  _Inout_ UINT * pDataSize,
1435  _Out_writes_bytes_opt_(*pDataSize) void *pData) = 0;
1436 
1437  virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
1438  _In_ REFGUID guid,
1439  _In_ UINT DataSize,
1440  _In_reads_bytes_opt_(DataSize) const void *pData) = 0;
1441 
1442  virtual HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
1443  _In_ REFGUID guid,
1444  _In_opt_ const IUnknown *pData) = 0;
1445 
1446  virtual HRESULT STDMETHODCALLTYPE SetName(
1447  _In_z_ LPCWSTR Name) = 0;
1448 };
1449 
1450 #else /* C style interface */
1451 
1452 typedef struct ID3D12ObjectVtbl {
1454 
1455  HRESULT(STDMETHODCALLTYPE *QueryInterface)
1456  (
1457  ID3D12Object *This,
1458  REFIID riid,
1459  _COM_Outptr_ void **ppvObject);
1460 
1461  ULONG(STDMETHODCALLTYPE *AddRef)
1462  (
1464 
1465  ULONG(STDMETHODCALLTYPE *Release)
1466  (
1467  ID3D12Object *This);
1468 
1469  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
1470  (
1471  ID3D12Object *This,
1475 
1476  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
1477  (
1478  ID3D12Object *This,
1479  _In_ REFGUID guid,
1481  _In_reads_bytes_opt_(DataSize) const void *pData);
1482 
1483  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
1484  (
1485  ID3D12Object *This,
1486  _In_ REFGUID guid,
1488 
1489  HRESULT(STDMETHODCALLTYPE *SetName)
1490  (
1491  ID3D12Object *This,
1493 
1496 
1497 interface ID3D12Object {
1498  CONST_VTBL struct ID3D12ObjectVtbl *lpVtbl;
1499 };
1500 
1501 #ifdef COBJMACROS
1502 
1503 #define ID3D12Object_QueryInterface(This, riid, ppvObject) \
1504  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
1505 
1506 #define ID3D12Object_AddRef(This) \
1507  ((This)->lpVtbl->AddRef(This))
1508 
1509 #define ID3D12Object_Release(This) \
1510  ((This)->lpVtbl->Release(This))
1511 
1512 #define ID3D12Object_GetPrivateData(This, guid, pDataSize, pData) \
1513  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
1514 
1515 #define ID3D12Object_SetPrivateData(This, guid, DataSize, pData) \
1516  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
1517 
1518 #define ID3D12Object_SetPrivateDataInterface(This, guid, pData) \
1519  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
1520 
1521 #define ID3D12Object_SetName(This, Name) \
1522  ((This)->lpVtbl->SetName(This, Name))
1523 
1524 #endif /* COBJMACROS */
1525 
1526 #endif /* C style interface */
1527 
1528 #if defined(__cplusplus) && !defined(CINTERFACE)
1529 
1530 MIDL_INTERFACE("905db94b-a00c-4140-9df5-2b64ca9ea357")
1532 public:
1533  virtual HRESULT STDMETHODCALLTYPE GetDevice(
1534  REFIID riid,
1535  _COM_Outptr_opt_ void **ppvDevice) = 0;
1536 };
1537 
1538 #else /* C style interface */
1539 
1540 typedef struct ID3D12DeviceChildVtbl {
1542 
1543  HRESULT(STDMETHODCALLTYPE *QueryInterface)
1544  (
1546  REFIID riid,
1547  _COM_Outptr_ void **ppvObject);
1548 
1549  ULONG(STDMETHODCALLTYPE *AddRef)
1550  (
1552 
1553  ULONG(STDMETHODCALLTYPE *Release)
1554  (
1556 
1557  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
1558  (
1563 
1564  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
1565  (
1567  _In_ REFGUID guid,
1569  _In_reads_bytes_opt_(DataSize) const void *pData);
1570 
1571  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
1572  (
1574  _In_ REFGUID guid,
1576 
1577  HRESULT(STDMETHODCALLTYPE *SetName)
1578  (
1581 
1582  HRESULT(STDMETHODCALLTYPE *GetDevice)
1583  (
1587 
1590 
1591 interface ID3D12DeviceChild {
1592  CONST_VTBL struct ID3D12DeviceChildVtbl *lpVtbl;
1593 };
1594 
1595 #ifdef COBJMACROS
1596 
1597 #define ID3D12DeviceChild_QueryInterface(This, riid, ppvObject) \
1598  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
1599 
1600 #define ID3D12DeviceChild_AddRef(This) \
1601  ((This)->lpVtbl->AddRef(This))
1602 
1603 #define ID3D12DeviceChild_Release(This) \
1604  ((This)->lpVtbl->Release(This))
1605 
1606 #define ID3D12DeviceChild_GetPrivateData(This, guid, pDataSize, pData) \
1607  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
1608 
1609 #define ID3D12DeviceChild_SetPrivateData(This, guid, DataSize, pData) \
1610  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
1611 
1612 #define ID3D12DeviceChild_SetPrivateDataInterface(This, guid, pData) \
1613  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
1614 
1615 #define ID3D12DeviceChild_SetName(This, Name) \
1616  ((This)->lpVtbl->SetName(This, Name))
1617 
1618 #define ID3D12DeviceChild_GetDevice(This, riid, ppvDevice) \
1619  ((This)->lpVtbl->GetDevice(This, riid, ppvDevice))
1620 
1621 #endif /* COBJMACROS */
1622 
1623 #endif /* C style interface */
1624 
1625 #if defined(__cplusplus) && !defined(CINTERFACE)
1626 
1627 MIDL_INTERFACE("c54a6b66-72df-4ee8-8be5-a946a1429214")
1629  public :
1630 };
1631 
1632 #else /* C style interface */
1633 
1634 typedef struct ID3D12RootSignatureVtbl {
1636 
1637  HRESULT(STDMETHODCALLTYPE *QueryInterface)
1638  (
1640  REFIID riid,
1641  _COM_Outptr_ void **ppvObject);
1642 
1643  ULONG(STDMETHODCALLTYPE *AddRef)
1644  (
1646 
1647  ULONG(STDMETHODCALLTYPE *Release)
1648  (
1650 
1651  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
1652  (
1657 
1658  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
1659  (
1661  _In_ REFGUID guid,
1663  _In_reads_bytes_opt_(DataSize) const void *pData);
1664 
1665  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
1666  (
1668  _In_ REFGUID guid,
1670 
1671  HRESULT(STDMETHODCALLTYPE *SetName)
1672  (
1675 
1676  HRESULT(STDMETHODCALLTYPE *GetDevice)
1677  (
1681 
1684 
1685 interface ID3D12RootSignature {
1686  CONST_VTBL struct ID3D12RootSignatureVtbl *lpVtbl;
1687 };
1688 
1689 #ifdef COBJMACROS
1690 
1691 #define ID3D12RootSignature_QueryInterface(This, riid, ppvObject) \
1692  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
1693 
1694 #define ID3D12RootSignature_AddRef(This) \
1695  ((This)->lpVtbl->AddRef(This))
1696 
1697 #define ID3D12RootSignature_Release(This) \
1698  ((This)->lpVtbl->Release(This))
1699 
1700 #define ID3D12RootSignature_GetPrivateData(This, guid, pDataSize, pData) \
1701  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
1702 
1703 #define ID3D12RootSignature_SetPrivateData(This, guid, DataSize, pData) \
1704  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
1705 
1706 #define ID3D12RootSignature_SetPrivateDataInterface(This, guid, pData) \
1707  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
1708 
1709 #define ID3D12RootSignature_SetName(This, Name) \
1710  ((This)->lpVtbl->SetName(This, Name))
1711 
1712 #define ID3D12RootSignature_GetDevice(This, riid, ppvDevice) \
1713  ((This)->lpVtbl->GetDevice(This, riid, ppvDevice))
1714 
1715 #endif /* COBJMACROS */
1716 
1717 #endif /* C style interface */
1718 
1719 #if defined(__cplusplus) && !defined(CINTERFACE)
1720 
1721 MIDL_INTERFACE("63ee58fb-1268-4835-86da-f008ce62f0d6")
1723  public :
1724 };
1725 
1726 #else /* C style interface */
1727 
1728 #ifndef __ID3D12Pageable_FWD_DEFINED__
1729 #define __ID3D12Pageable_FWD_DEFINED__
1730 typedef interface ID3D12Pageable ID3D12Pageable;
1731 
1732 #endif /* __ID3D12Pageable_FWD_DEFINED__ */
1733 
1734 typedef struct ID3D12PageableVtbl {
1736 
1737  HRESULT(STDMETHODCALLTYPE *QueryInterface)
1738  (
1740  REFIID riid,
1741  _COM_Outptr_ void **ppvObject);
1742 
1743  ULONG(STDMETHODCALLTYPE *AddRef)
1744  (
1746 
1747  ULONG(STDMETHODCALLTYPE *Release)
1748  (
1749  ID3D12Pageable *This);
1750 
1751  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
1752  (
1757 
1758  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
1759  (
1761  _In_ REFGUID guid,
1763  _In_reads_bytes_opt_(DataSize) const void *pData);
1764 
1765  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
1766  (
1768  _In_ REFGUID guid,
1770 
1771  HRESULT(STDMETHODCALLTYPE *SetName)
1772  (
1775 
1776  HRESULT(STDMETHODCALLTYPE *GetDevice)
1777  (
1781 
1784 
1785 interface ID3D12Pageable {
1786  CONST_VTBL struct ID3D12PageableVtbl *lpVtbl;
1787 };
1788 
1789 #ifdef COBJMACROS
1790 
1791 #define ID3D12Pageable_QueryInterface(This, riid, ppvObject) \
1792  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
1793 
1794 #define ID3D12Pageable_AddRef(This) \
1795  ((This)->lpVtbl->AddRef(This))
1796 
1797 #define ID3D12Pageable_Release(This) \
1798  ((This)->lpVtbl->Release(This))
1799 
1800 #define ID3D12Pageable_GetPrivateData(This, guid, pDataSize, pData) \
1801  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
1802 
1803 #define ID3D12Pageable_SetPrivateData(This, guid, DataSize, pData) \
1804  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
1805 
1806 #define ID3D12Pageable_SetPrivateDataInterface(This, guid, pData) \
1807  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
1808 
1809 #define ID3D12Pageable_SetName(This, Name) \
1810  ((This)->lpVtbl->SetName(This, Name))
1811 
1812 #define ID3D12Pageable_GetDevice(This, riid, ppvDevice) \
1813  ((This)->lpVtbl->GetDevice(This, riid, ppvDevice))
1814 
1815 #endif /* COBJMACROS */
1816 
1817 #endif /* C style interface */
1818 
1819 typedef struct D3D12_RANGE {
1822 } D3D12_RANGE;
1823 
1824 typedef struct D3D12_BOX {
1831 } D3D12_BOX;
1832 
1839 
1844 
1851 
1858 
1859 typedef struct D3D12_SHADER_BYTECODE {
1860  _Field_size_bytes_full_(BytecodeLength) const void *pShaderBytecode;
1863 
1872 
1876  _Field_size_full_(NumStrides) const UINT *pBufferStrides;
1880 
1881 typedef enum D3D12_BLEND {
1899 } D3D12_BLEND;
1900 
1901 typedef enum D3D12_BLEND_OP {
1907 } D3D12_BLEND_OP;
1908 
1909 typedef enum D3D12_LOGIC_OP {
1926 } D3D12_LOGIC_OP;
1927 
1940 
1941 typedef struct D3D12_BLEND_DESC {
1946 
1947 typedef enum D3D12_FILL_MODE {
1950 } D3D12_FILL_MODE;
1951 
1952 typedef enum D3D12_CULL_MODE {
1956 } D3D12_CULL_MODE;
1957 
1962 
1963 typedef struct D3D12_RASTERIZER_DESC {
1976 
1981 
1992 
1993 typedef enum D3D12_STENCIL_OP {
2003 
2010 
2021 
2026 
2036 
2037 typedef struct D3D12_INPUT_LAYOUT_DESC {
2038  _Field_size_full_(NumElements) const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs;
2041 
2046 
2052 
2060 
2062  _Field_size_bytes_full_(CachedBlobSizeInBytes) const void *pCachedBlob;
2065 
2090 
2098 
2103 
2111 
2112 typedef enum D3D12_TEXTURE_LAYOUT {
2118 
2119 typedef enum D3D12_RESOURCE_FLAGS {
2128 
2130 typedef struct D3D12_RESOURCE_DESC {
2142 
2149 
2150 typedef enum D3D12_MEMORY_POOL {
2155 
2156 typedef enum D3D12_HEAP_TYPE {
2161 } D3D12_HEAP_TYPE;
2162 
2163 typedef struct D3D12_HEAP_PROPERTIES {
2170 
2171 typedef enum D3D12_HEAP_FLAGS {
2186 
2191 
2199 
2217  D3D12_RESOURCE_STATE_GENERIC_READ = (((((0x1 | 0x2) | 0x40) | 0x80) | 0x200) | 0x800),
2221 
2226 
2227 typedef struct D3D12_CLEAR_VALUE {
2229  union {
2232  };
2234 
2235 typedef enum D3D12_FEATURE {
2250 } D3D12_FEATURE;
2251 
2252 typedef enum D3D12_CLEAR_FLAGS {
2256 
2258 typedef enum D3D12_FENCE_FLAGS {
2263 
2272 
2277 
2286 
2287 #define D3D12_SHADER_COMPONENT_MAPPING_MASK 0x7
2288 #define D3D12_SHADER_COMPONENT_MAPPING_SHIFT 3
2289 #define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1 << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4))
2290 #define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0, Src1, Src2, Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK) | \
2291  (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK) << D3D12_SHADER_COMPONENT_MAPPING_SHIFT) | \
2292  (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) | \
2293  (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) | \
2294  D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))
2295 #define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract, Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK))
2296 #define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3)
2297 
2302 
2304 typedef struct D3D12_BUFFER_SRV {
2310 
2311 typedef struct D3D12_TEX1D_SRV {
2315 } D3D12_TEX1D_SRV;
2316 
2317 typedef struct D3D12_TEX1D_ARRAY_SRV {
2324 
2325 typedef struct D3D12_TEX2D_SRV {
2330 } D3D12_TEX2D_SRV;
2331 
2332 typedef struct D3D12_TEX2D_ARRAY_SRV {
2340 
2341 typedef struct D3D12_TEX3D_SRV {
2345 } D3D12_TEX3D_SRV;
2346 
2347 typedef struct D3D12_TEXCUBE_SRV {
2352 
2353 typedef struct D3D12_TEXCUBE_ARRAY_SRV {
2360 
2361 typedef struct D3D12_TEX2DMS_SRV {
2364 
2365 typedef struct D3D12_TEX2DMS_ARRAY_SRV {
2369 
2370 typedef enum D3D12_SRV_DIMENSION {
2383 
2388  union {
2399  };
2401 
2403 
2408 
2412 
2416 
2421 
2423 typedef struct D3D12_BUFFER_UAV {
2430 
2431 typedef struct D3D12_TEX1D_UAV {
2433 } D3D12_TEX1D_UAV;
2434 
2435 typedef struct D3D12_TEX1D_ARRAY_UAV {
2440 
2441 typedef struct D3D12_TEX2D_UAV {
2444 } D3D12_TEX2D_UAV;
2445 
2446 typedef struct D3D12_TEX2D_ARRAY_UAV {
2452 
2453 typedef struct D3D12_TEX3D_UAV {
2457 } D3D12_TEX3D_UAV;
2458 
2459 typedef enum D3D12_UAV_DIMENSION {
2468 
2472  union {
2479  };
2481 
2482 typedef struct D3D12_BUFFER_RTV {
2486 
2487 typedef struct D3D12_TEX1D_RTV {
2489 } D3D12_TEX1D_RTV;
2490 
2491 typedef struct D3D12_TEX1D_ARRAY_RTV {
2496 
2497 typedef struct D3D12_TEX2D_RTV {
2500 } D3D12_TEX2D_RTV;
2501 
2502 typedef struct D3D12_TEX2DMS_RTV {
2505 
2506 typedef struct D3D12_TEX2D_ARRAY_RTV {
2512 
2513 typedef struct D3D12_TEX2DMS_ARRAY_RTV {
2517 
2518 typedef struct D3D12_TEX3D_RTV {
2522 } D3D12_TEX3D_RTV;
2523 
2524 typedef enum D3D12_RTV_DIMENSION {
2535 
2539  union {
2548  };
2550 
2551 typedef struct D3D12_TEX1D_DSV {
2553 } D3D12_TEX1D_DSV;
2554 
2555 typedef struct D3D12_TEX1D_ARRAY_DSV {
2560 
2561 typedef struct D3D12_TEX2D_DSV {
2563 } D3D12_TEX2D_DSV;
2564 
2565 typedef struct D3D12_TEX2D_ARRAY_DSV {
2570 
2571 typedef struct D3D12_TEX2DMS_DSV {
2574 
2575 typedef struct D3D12_TEX2DMS_ARRAY_DSV {
2579 
2580 typedef enum D3D12_DSV_FLAGS {
2584 } D3D12_DSV_FLAGS;
2585 
2587 typedef enum D3D12_DSV_DIMENSION {
2596 
2601  union {
2608  };
2610 
2611 typedef enum D3D12_FILTER {
2648 } D3D12_FILTER;
2649 
2657 
2658 typedef struct D3D12_SAMPLER_DESC {
2670 
2678 
2680 typedef struct D3D12_HEAP_DESC {
2685 } D3D12_HEAP_DESC;
2686 
2694 
2699 
2706 
2707 typedef struct D3D12_QUERY_HEAP_DESC {
2712 
2724 
2727  union {
2728  struct
2729  {
2731  } VertexBuffer;
2732  struct
2733  {
2737  } Constant;
2738  struct
2739  {
2742  struct
2743  {
2746  struct
2747  {
2750  };
2752 
2759 
2760 typedef struct D3D12_PACKED_MIP_INFO {
2766 
2767 typedef struct D3D12_TILE_SHAPE {
2772 
2779 
2786 
2787 typedef struct D3D12_TILE_REGION_SIZE {
2794 
2801 
2806 
2810  union {
2813  };
2815 
2817 
2818 #define D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE (16)
2819 
2820 typedef struct D3D12_INDEX_BUFFER_VIEW {
2825 
2826 typedef struct D3D12_VIEWPORT {
2833 } D3D12_VIEWPORT;
2834 
2836 
2843 
2848 
2852 
2858 
2865 
2867 typedef struct D3D12_RESOURCE_BARRIER {
2870  union {
2874  };
2876 
2882 
2888 
2889 typedef struct D3D12_DISCARD_REGION {
2891  _In_reads_(NumRects) const D3D12_RECT *pRects;
2895 
2896 typedef enum D3D12_QUERY_TYPE {
2906 
2907 typedef enum D3D12_PREDICATION_OP {
2911 
2922 
2930 
2937 
2938 typedef struct D3D12_DESCRIPTOR_RANGE {
2945 
2950 
2951 typedef struct D3D12_ROOT_CONSTANTS {
2956 
2957 typedef struct D3D12_ROOT_DESCRIPTOR {
2961 
2970 
2971 typedef struct D3D12_ROOT_PARAMETER {
2973  union {
2977  };
2980 
2987 
3003 
3011 
3019 
3021 typedef struct D3D12_DESCRIPTOR_RANGE1 {
3029 
3034 
3041 
3043 typedef struct D3D12_ROOT_DESCRIPTOR1 {
3048 
3049 typedef struct D3D12_ROOT_PARAMETER1 {
3051  union {
3055  };
3058 
3066 
3072 
3075  union {
3078  };
3080 
3081 #define D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND (0xffffffff)
3082 
3083 #ifndef __ID3D12Resource_INTERFACE_DEFINED__
3084 #define __ID3D12Resource_INTERFACE_DEFINED__
3085 
3086 /* interface ID3D12Resource */
3087 /* [unique][local][object][uuid] */
3088 
3090 
3091 #if defined(__cplusplus) && !defined(CINTERFACE)
3092 
3093 MIDL_INTERFACE("696442be-a72e-4059-bc79-5b5c98040fad")
3094 ID3D12Resource : public ID3D12Pageable {
3095 public:
3096  virtual HRESULT STDMETHODCALLTYPE Map(
3097  UINT Subresource,
3098  _In_opt_ const D3D12_RANGE *pReadRange,
3099  _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData) = 0;
3100 
3101  virtual void STDMETHODCALLTYPE Unmap(
3102  UINT Subresource,
3103  _In_opt_ const D3D12_RANGE *pWrittenRange) = 0;
3104 
3105  virtual D3D12_RESOURCE_DESC STDMETHODCALLTYPE GetDesc(void) = 0;
3106 
3107  virtual D3D12_GPU_VIRTUAL_ADDRESS STDMETHODCALLTYPE GetGPUVirtualAddress(void) = 0;
3108 
3109  virtual HRESULT STDMETHODCALLTYPE WriteToSubresource(
3110  UINT DstSubresource,
3111  _In_opt_ const D3D12_BOX *pDstBox,
3112  _In_ const void *pSrcData,
3113  UINT SrcRowPitch,
3114  UINT SrcDepthPitch) = 0;
3115 
3116  virtual HRESULT STDMETHODCALLTYPE ReadFromSubresource(
3117  _Out_ void *pDstData,
3118  UINT DstRowPitch,
3119  UINT DstDepthPitch,
3120  UINT SrcSubresource,
3121  _In_opt_ const D3D12_BOX *pSrcBox) = 0;
3122 
3123  virtual HRESULT STDMETHODCALLTYPE GetHeapProperties(
3124  _Out_opt_ D3D12_HEAP_PROPERTIES * pHeapProperties,
3125  _Out_opt_ D3D12_HEAP_FLAGS * pHeapFlags) = 0;
3126 };
3127 
3128 #else /* C style interface */
3129 
3130 typedef struct ID3D12ResourceVtbl {
3132 
3133  HRESULT(STDMETHODCALLTYPE *QueryInterface)
3134  (
3136  REFIID riid,
3137  _COM_Outptr_ void **ppvObject);
3138 
3139  ULONG(STDMETHODCALLTYPE *AddRef)
3140  (
3142 
3143  ULONG(STDMETHODCALLTYPE *Release)
3144  (
3145  ID3D12Resource *This);
3146 
3147  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
3148  (
3153 
3154  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
3155  (
3157  _In_ REFGUID guid,
3159  _In_reads_bytes_opt_(DataSize) const void *pData);
3160 
3161  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
3162  (
3164  _In_ REFGUID guid,
3166 
3167  HRESULT(STDMETHODCALLTYPE *SetName)
3168  (
3171 
3172  HRESULT(STDMETHODCALLTYPE *GetDevice)
3173  (
3177 
3179  (
3183  _Outptr_opt_result_bytebuffer_(_Inexpressible_("Dependent on resource")) void **ppData);
3184 
3185  void(STDMETHODCALLTYPE *Unmap)(
3189 
3191  (
3192  ID3D12Resource *This);
3193 
3194  D3D12_GPU_VIRTUAL_ADDRESS(STDMETHODCALLTYPE *GetGPUVirtualAddress)
3195  (
3196  ID3D12Resource *This);
3197 
3198  HRESULT(STDMETHODCALLTYPE *WriteToSubresource)
3199  (
3203  _In_ const void *pSrcData,
3206 
3207  HRESULT(STDMETHODCALLTYPE *ReadFromSubresource)
3208  (
3215 
3216  HRESULT(STDMETHODCALLTYPE *GetHeapProperties)
3217  (
3221 
3224 
3226  CONST_VTBL struct ID3D12ResourceVtbl *lpVtbl;
3227 };
3228 
3229 #ifdef COBJMACROS
3230 
3231 #define ID3D12Resource_QueryInterface(This, riid, ppvObject) \
3232  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
3233 
3234 #define ID3D12Resource_AddRef(This) \
3235  ((This)->lpVtbl->AddRef(This))
3236 
3237 #define ID3D12Resource_Release(This) \
3238  ((This)->lpVtbl->Release(This))
3239 
3240 #define ID3D12Resource_GetPrivateData(This, guid, pDataSize, pData) \
3241  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
3242 
3243 #define ID3D12Resource_SetPrivateData(This, guid, DataSize, pData) \
3244  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
3245 
3246 #define ID3D12Resource_SetPrivateDataInterface(This, guid, pData) \
3247  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
3248 
3249 #define ID3D12Resource_SetName(This, Name) \
3250  ((This)->lpVtbl->SetName(This, Name))
3251 
3252 #define ID3D12Resource_GetDevice(This, riid, ppvDevice) \
3253  ((This)->lpVtbl->GetDevice(This, riid, ppvDevice))
3254 
3255 #define ID3D12Resource_Map(This, Subresource, pReadRange, ppData) \
3256  ((This)->lpVtbl->Map(This, Subresource, pReadRange, ppData))
3257 
3258 #define ID3D12Resource_Unmap(This, Subresource, pWrittenRange) \
3259  ((This)->lpVtbl->Unmap(This, Subresource, pWrittenRange))
3260 
3261 #define ID3D12Resource_GetDesc(This) \
3262  ((This)->lpVtbl->GetDesc(This))
3263 
3264 #define ID3D12Resource_GetGPUVirtualAddress(This) \
3265  ((This)->lpVtbl->GetGPUVirtualAddress(This))
3266 
3267 #define ID3D12Resource_WriteToSubresource(This, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch) \
3268  ((This)->lpVtbl->WriteToSubresource(This, DstSubresource, pDstBox, pSrcData, SrcRowPitch, SrcDepthPitch))
3269 
3270 #define ID3D12Resource_ReadFromSubresource(This, pDstData, DstRowPitch, DstDepthPitch, SrcSubresource, pSrcBox) \
3271  ((This)->lpVtbl->ReadFromSubresource(This, pDstData, DstRowPitch, DstDepthPitch, SrcSubresource, pSrcBox))
3272 
3273 #define ID3D12Resource_GetHeapProperties(This, pHeapProperties, pHeapFlags) \
3274  ((This)->lpVtbl->GetHeapProperties(This, pHeapProperties, pHeapFlags))
3275 
3276 #endif /* COBJMACROS */
3277 
3278 #endif /* C style interface */
3279 
3280 #endif /* __ID3D12Resource_INTERFACE_DEFINED__ */
3281 
3282 #ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
3283 #define __ID3D12CommandAllocator_INTERFACE_DEFINED__
3284 
3285 /* interface ID3D12CommandAllocator */
3286 /* [unique][local][object][uuid] */
3287 
3289 
3290 #if defined(__cplusplus) && !defined(CINTERFACE)
3291 
3292 MIDL_INTERFACE("6102dee4-af59-4b09-b999-b44d73f09b24")
3294 public:
3295  virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;
3296 };
3297 
3298 #else /* C style interface */
3299 
3302 
3303  HRESULT(STDMETHODCALLTYPE *QueryInterface)
3304  (
3306  REFIID riid,
3307  _COM_Outptr_ void **ppvObject);
3308 
3309  ULONG(STDMETHODCALLTYPE *AddRef)
3310  (
3312 
3313  ULONG(STDMETHODCALLTYPE *Release)
3314  (
3316 
3317  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
3318  (
3323 
3324  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
3325  (
3327  _In_ REFGUID guid,
3329  _In_reads_bytes_opt_(DataSize) const void *pData);
3330 
3331  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
3332  (
3334  _In_ REFGUID guid,
3336 
3337  HRESULT(STDMETHODCALLTYPE *SetName)
3338  (
3341 
3342  HRESULT(STDMETHODCALLTYPE *GetDevice)
3343  (
3347 
3348  HRESULT(STDMETHODCALLTYPE *Reset)
3349  (
3351 
3354 
3355 interface ID3D12CommandAllocator {
3356  CONST_VTBL struct ID3D12CommandAllocatorVtbl *lpVtbl;
3357 };
3358 
3359 #ifdef COBJMACROS
3360 
3361 #define ID3D12CommandAllocator_QueryInterface(This, riid, ppvObject) \
3362  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
3363 
3364 #define ID3D12CommandAllocator_AddRef(This) \
3365  ((This)->lpVtbl->AddRef(This))
3366 
3367 #define ID3D12CommandAllocator_Release(This) \
3368  ((This)->lpVtbl->Release(This))
3369 
3370 #define ID3D12CommandAllocator_GetPrivateData(This, guid, pDataSize, pData) \
3371  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
3372 
3373 #define ID3D12CommandAllocator_SetPrivateData(This, guid, DataSize, pData) \
3374  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
3375 
3376 #define ID3D12CommandAllocator_SetPrivateDataInterface(This, guid, pData) \
3377  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
3378 
3379 #define ID3D12CommandAllocator_SetName(This, Name) \
3380  ((This)->lpVtbl->SetName(This, Name))
3381 
3382 #define ID3D12CommandAllocator_GetDevice(This, riid, ppvDevice) \
3383  ((This)->lpVtbl->GetDevice(This, riid, ppvDevice))
3384 
3385 #define ID3D12CommandAllocator_Reset(This) \
3386  ((This)->lpVtbl->Reset(This))
3387 
3388 #endif /* COBJMACROS */
3389 
3390 #endif /* C style interface */
3391 
3392 #endif /* __ID3D12CommandAllocator_INTERFACE_DEFINED__ */
3393 
3394 #ifndef __ID3D12CommandList_INTERFACE_DEFINED__
3395 #define __ID3D12CommandList_INTERFACE_DEFINED__
3396 
3397 /* interface ID3D12CommandList */
3398 /* [unique][local][object][uuid] */
3399 
3401 
3402 #if defined(__cplusplus) && !defined(CINTERFACE)
3403 
3404 MIDL_INTERFACE("7116d91c-e7e4-47ce-b8c6-ec8168f437e5")
3406 public:
3407  virtual D3D12_COMMAND_LIST_TYPE STDMETHODCALLTYPE GetType(void) = 0;
3408 };
3409 
3410 #else /* C style interface */
3411 
3412 typedef struct ID3D12CommandListVtbl {
3414 
3415  HRESULT(STDMETHODCALLTYPE *QueryInterface)
3416  (
3418  REFIID riid,
3419  _COM_Outptr_ void **ppvObject);
3420 
3421  ULONG(STDMETHODCALLTYPE *AddRef)
3422  (
3424 
3425  ULONG(STDMETHODCALLTYPE *Release)
3426  (
3428 
3429  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
3430  (
3435 
3436  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
3437  (
3439  _In_ REFGUID guid,
3441  _In_reads_bytes_opt_(DataSize) const void *pData);
3442 
3443  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
3444  (
3446  _In_ REFGUID guid,
3448 
3449  HRESULT(STDMETHODCALLTYPE *SetName)
3450  (
3453 
3454  HRESULT(STDMETHODCALLTYPE *GetDevice)
3455  (
3459 
3461  (
3463 
3466 
3467 interface ID3D12CommandList {
3468  CONST_VTBL struct ID3D12CommandListVtbl *lpVtbl;
3469 };
3470 
3471 #ifdef COBJMACROS
3472 
3473 #define ID3D12CommandList_QueryInterface(This, riid, ppvObject) \
3474  ((This)->lpVtbl->QueryInterface(This, riid, ppvObject))
3475 
3476 #define ID3D12CommandList_AddRef(This) \
3477  ((This)->lpVtbl->AddRef(This))
3478 
3479 #define ID3D12CommandList_Release(This) \
3480  ((This)->lpVtbl->Release(This))
3481 
3482 #define ID3D12CommandList_GetPrivateData(This, guid, pDataSize, pData) \
3483  ((This)->lpVtbl->GetPrivateData(This, guid, pDataSize, pData))
3484 
3485 #define ID3D12CommandList_SetPrivateData(This, guid, DataSize, pData) \
3486  ((This)->lpVtbl->SetPrivateData(This, guid, DataSize, pData))
3487 
3488 #define ID3D12CommandList_SetPrivateDataInterface(This, guid, pData) \
3489  ((This)->lpVtbl->SetPrivateDataInterface(This, guid, pData))
3490 
3491 #define ID3D12CommandList_SetName(This, Name) \
3492  ((This)->lpVtbl->SetName(This, Name))
3493 
3494 #define ID3D12CommandList_GetDevice(This, riid, ppvDevice) \
3495  ((This)->lpVtbl->GetDevice(This, riid, ppvDevice))
3496 
3497 #define ID3D12CommandList_GetType(This) \
3498  ((This)->lpVtbl->GetType(This))
3499 
3500 #endif /* COBJMACROS */
3501 
3502 #endif /* C style interface */
3503 
3504 #endif /* __ID3D12CommandList_INTERFACE_DEFINED__ */
3505 
3506 #ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
3507 #define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
3508 
3509 /* interface ID3D12GraphicsCommandList */
3510 /* [unique][local][object][uuid] */
3511 
3513 
3514 #if defined(__cplusplus) && !defined(CINTERFACE)
3515 
3516 MIDL_INTERFACE("5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")
3518 public:
3519  virtual HRESULT STDMETHODCALLTYPE Close(void) = 0;
3520 
3521  virtual HRESULT STDMETHODCALLTYPE Reset(
3522  _In_ ID3D12CommandAllocator * pAllocator,
3523  _In_opt_ ID3D12PipelineState * pInitialState) = 0;
3524 
3525  virtual void STDMETHODCALLTYPE ClearState(
3526  _In_opt_ ID3D12PipelineState * pPipelineState) = 0;
3527 
3528  virtual void STDMETHODCALLTYPE DrawInstanced(
3529  _In_ UINT VertexCountPerInstance,
3530  _In_ UINT InstanceCount,
3531  _In_ UINT StartVertexLocation,
3532  _In_ UINT StartInstanceLocation) = 0;
3533 
3534  virtual void STDMETHODCALLTYPE DrawIndexedInstanced(
3535  _In_ UINT IndexCountPerInstance,
3536  _In_ UINT InstanceCount,
3537  _In_ UINT StartIndexLocation,
3538  _In_ INT BaseVertexLocation,
3539  _In_ UINT StartInstanceLocation) = 0;
3540 
3541  virtual void STDMETHODCALLTYPE Dispatch(
3542  _In_ UINT ThreadGroupCountX,
3543  _In_ UINT ThreadGroupCountY,
3544  _In_ UINT ThreadGroupCountZ) = 0;
3545 
3546  virtual void STDMETHODCALLTYPE CopyBufferRegion(
3547  _In_ ID3D12Resource * pDstBuffer,
3548  UINT64 DstOffset,
3549  _In_ ID3D12Resource * pSrcBuffer,
3550  UINT64 SrcOffset,
3551  UINT64 NumBytes) = 0;
3552 
3553  virtual void STDMETHODCALLTYPE CopyTextureRegion(
3554  _In_ const D3D12_TEXTURE_COPY_LOCATION *pDst,
3555  UINT DstX,
3556  UINT DstY,
3557  UINT DstZ,
3558  _In_ const D3D12_TEXTURE_COPY_LOCATION *pSrc,
3559  _In_opt_ const D3D12_BOX *pSrcBox) = 0;
3560 
3561  virtual void STDMETHODCALLTYPE CopyResource(
3562  _In_ ID3D12Resource * pDstResource,
3563  _In_ ID3D12Resource * pSrcResource) = 0;
3564 
3565  virtual void STDMETHODCALLTYPE CopyTiles(
3566  _In_ ID3D12Resource * pTiledResource,
3567  _In_ const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
3568  _In_ const D3D12_TILE_REGION_SIZE *pTileRegionSize,
3569  _In_ ID3D12Resource *pBuffer,
3570  UINT64 BufferStartOffsetInBytes,
3571  D3D12_TILE_COPY_FLAGS Flags) = 0;
3572 
3573  virtual void STDMETHODCALLTYPE ResolveSubresource(
3574  _In_ ID3D12Resource * pDstResource,
3576  _In_ ID3D12Resource * pSrcResource,
3578  _In_ DXGI_FORMAT Format) = 0;
3579 
3580  virtual void STDMETHODCALLTYPE IASetPrimitiveTopology(
3581  _In_ D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology) = 0;
3582 
3583  virtual void STDMETHODCALLTYPE RSSetViewports(
3585  _In_reads_(NumViewports) const D3D12_VIEWPORT *pViewports) = 0;
3586 
3587  virtual void STDMETHODCALLTYPE RSSetScissorRects(
3589  _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
3590 
3591  virtual void STDMETHODCALLTYPE OMSetBlendFactor(
3592  _In_opt_ const FLOAT BlendFactor[4]) = 0;
3593 
3594  virtual void STDMETHODCALLTYPE OMSetStencilRef(
3595  _In_ UINT StencilRef) = 0;
3596 
3597  virtual void STDMETHODCALLTYPE SetPipelineState(
3598  _In_ ID3D12PipelineState * pPipelineState) = 0;
3599 
3600  virtual void STDMETHODCALLTYPE ResourceBarrier(
3601  _In_ UINT NumBarriers,
3602  _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers) = 0;
3603 
3604  virtual void STDMETHODCALLTYPE ExecuteBundle(
3605  _In_ ID3D12GraphicsCommandList * pCommandList) = 0;
3606 
3607  virtual void STDMETHODCALLTYPE SetDescriptorHeaps(
3608  _In_ UINT NumDescriptorHeaps,
3609  _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps) = 0;
3610 
3611  virtual void STDMETHODCALLTYPE SetComputeRootSignature(
3612  _In_opt_ ID3D12RootSignature * pRootSignature) = 0;
3613 
3614  virtual void STDMETHODCALLTYPE SetGraphicsRootSignature(
3615  _In_opt_ ID3D12RootSignature * pRootSignature) = 0;
3616 
3617  virtual void STDMETHODCALLTYPE SetComputeRootDescriptorTable(
3618  _In_ UINT RootParameterIndex,
3619  _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
3620 
3621  virtual void STDMETHODCALLTYPE SetGraphicsRootDescriptorTable(
3622  _In_ UINT RootParameterIndex,
3623  _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
3624 
3625  virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstant(
3626  _In_ UINT RootParameterIndex,
3627  _In_ UINT SrcData,
3628  _In_ UINT DestOffsetIn32BitValues) = 0;
3629 
3630  virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstant(
3631  _In_ UINT RootParameterIndex,
3632  _In_ UINT SrcData,
3633  _In_ UINT DestOffsetIn32BitValues) = 0;
3634 
3635  virtual void STDMETHODCALLTYPE SetComputeRoot32BitConstants(
3636  _In_ UINT RootParameterIndex,
3637  _In_ UINT Num32BitValuesToSet,
3638  _In_reads_(Num32BitValuesToSet * sizeof(UINT)) const void *pSrcData,
3639  _In_ UINT DestOffsetIn32BitValues) = 0;
3640 
3641  virtual void STDMETHODCALLTYPE SetGraphicsRoot32BitConstants(
3642  _In_ UINT RootParameterIndex,
3643  _In_ UINT Num32BitValuesToSet,
3644  _In_reads_(Num32BitValuesToSet * sizeof(UINT)) const void *pSrcData,
3645  _In_ UINT DestOffsetIn32BitValues) = 0;
3646 
3647  virtual void STDMETHODCALLTYPE SetComputeRootConstantBufferView(
3648  _In_ UINT RootParameterIndex,
3649  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
3650 
3651  virtual void STDMETHODCALLTYPE SetGraphicsRootConstantBufferView(
3652  _In_ UINT RootParameterIndex,
3653  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
3654 
3655  virtual void STDMETHODCALLTYPE SetComputeRootShaderResourceView(
3656  _In_ UINT RootParameterIndex,
3657  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
3658 
3659  virtual void STDMETHODCALLTYPE SetGraphicsRootShaderResourceView(
3660  _In_ UINT RootParameterIndex,
3661  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
3662 
3663  virtual void STDMETHODCALLTYPE SetComputeRootUnorderedAccessView(
3664  _In_ UINT RootParameterIndex,
3665  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
3666 
3667  virtual void STDMETHODCALLTYPE SetGraphicsRootUnorderedAccessView(
3668  _In_ UINT RootParameterIndex,
3669  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation) = 0;
3670 
3671  virtual void STDMETHODCALLTYPE IASetIndexBuffer(
3672  _In_opt_ const D3D12_INDEX_BUFFER_VIEW *pView) = 0;
3673 
3674  virtual void STDMETHODCALLTYPE IASetVertexBuffers(
3675  _In_ UINT StartSlot,
3676  _In_ UINT NumViews,
3677  _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews) = 0;
3678 
3679  virtual void STDMETHODCALLTYPE SOSetTargets(
3680  _In_ UINT StartSlot,
3681  _In_ UINT NumViews,
3682  _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews) = 0;
3683 
3684  virtual void STDMETHODCALLTYPE OMSetRenderTargets(
3685  _In_ UINT NumRenderTargetDescriptors,
3686  _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors,
3687  _In_ BOOL RTsSingleHandleToDescriptorRange,
3688  _In_opt_ const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor) = 0;
3689 
3690  virtual void STDMETHODCALLTYPE ClearDepthStencilView(
3691  _In_ D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView,
3692  _In_ D3D12_CLEAR_FLAGS ClearFlags,
3693  _In_ FLOAT Depth,
3694  _In_ UINT8 Stencil,
3695  _In_ UINT NumRects,
3696  _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
3697 
3698  virtual void STDMETHODCALLTYPE ClearRenderTargetView(
3699  _In_ D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView,
3700  _In_ const FLOAT ColorRGBA[4],
3701  _In_ UINT NumRects,
3702  _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
3703 
3704  virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewUint(
3705  _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3706  _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3707  _In_ ID3D12Resource * pResource,
3708  _In_ const UINT Values[4],
3709  _In_ UINT NumRects,
3710  _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
3711 
3712  virtual void STDMETHODCALLTYPE ClearUnorderedAccessViewFloat(
3713  _In_ D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap,
3714  _In_ D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle,
3715  _In_ ID3D12Resource * pResource,
3716  _In_ const FLOAT Values[4],
3717  _In_ UINT NumRects,
3718  _In_reads_(NumRects) const D3D12_RECT *pRects) = 0;
3719 
3720  virtual void STDMETHODCALLTYPE DiscardResource(
3721  _In_ ID3D12Resource * pResource,
3722  _In_opt_ const D3D12_DISCARD_REGION *pRegion) = 0;
3723 
3724  virtual void STDMETHODCALLTYPE BeginQuery(
3725  _In_ ID3D12QueryHeap * pQueryHeap,
3726  _In_ D3D12_QUERY_TYPE Type,
3727  _In_ UINT Index) = 0;
3728 
3729  virtual void STDMETHODCALLTYPE EndQuery(
3730  _In_ ID3D12QueryHeap * pQueryHeap,
3731  _In_ D3D12_QUERY_TYPE Type,
3732  _In_ UINT Index) = 0;
3733 
3734  virtual void STDMETHODCALLTYPE ResolveQueryData(
3735  _In_ ID3D12QueryHeap * pQueryHeap,
3736  _In_ D3D12_QUERY_TYPE Type,
3737  _In_ UINT StartIndex,
3738  _In_ UINT NumQueries,
3739  _In_ ID3D12Resource * pDestinationBuffer,
3740  _In_ UINT64 AlignedDestinationBufferOffset) = 0;
3741 
3742  virtual void STDMETHODCALLTYPE SetPredication(
3743  _In_opt_ ID3D12Resource * pBuffer,
3744  _In_ UINT64 AlignedBufferOffset,
3745  _In_ D3D12_PREDICATION_OP Operation) = 0;
3746 
3747  virtual void STDMETHODCALLTYPE SetMarker(
3748  UINT Metadata,
3749  _In_reads_bytes_opt_(Size) const void *pData,
3750  UINT Size) = 0;
3751 
3752  virtual void STDMETHODCALLTYPE BeginEvent(
3753  UINT Metadata,
3754  _In_reads_bytes_opt_(Size) const void *pData,
3755  UINT Size) = 0;
3756 
3757  virtual void STDMETHODCALLTYPE EndEvent(void) = 0;
3758 
3759  virtual void STDMETHODCALLTYPE ExecuteIndirect(
3760  _In_ ID3D12CommandSignature * pCommandSignature,
3761  _In_ UINT MaxCommandCount,
3762  _In_ ID3D12Resource * pArgumentBuffer,
3763  _In_ UINT64 ArgumentBufferOffset,
3764  _In_opt_ ID3D12Resource * pCountBuffer,
3765  _In_ UINT64 CountBufferOffset) = 0;
3766 };
3767 
3768 #else /* C style interface */
3769 
3772 
3773  HRESULT(STDMETHODCALLTYPE *QueryInterface)
3774  (
3776  REFIID riid,
3777  _COM_Outptr_ void **ppvObject);
3778 
3779  ULONG(STDMETHODCALLTYPE *AddRef)
3780  (
3782 
3783  ULONG(STDMETHODCALLTYPE *Release)
3784  (
3786 
3787  HRESULT(STDMETHODCALLTYPE *GetPrivateData)
3788  (
3793 
3794  HRESULT(STDMETHODCALLTYPE *SetPrivateData)
3795  (
3797  _In_ REFGUID guid,
3799  _In_reads_bytes_opt_(DataSize) const void *pData);
3800 
3801  HRESULT(STDMETHODCALLTYPE *SetPrivateDataInterface)
3802  (
3804  _In_ REFGUID guid,
3806 
3807  HRESULT(STDMETHODCALLTYPE *SetName)
3808  (
3811 
3812  HRESULT(STDMETHODCALLTYPE *GetDevice)
3813  (
3817 
3819  (
3821 
3822  HRESULT(STDMETHODCALLTYPE *Close)
3823  (
3825 
3826  HRESULT(STDMETHODCALLTYPE *Reset)
3827  (
3831 
3832  void(STDMETHODCALLTYPE *ClearState)(
3835 
3836  void(STDMETHODCALLTYPE *DrawInstanced)(
3842 
3843  void(STDMETHODCALLTYPE *DrawIndexedInstanced)(
3846  _In_ UINT InstanceCount,
3850 
3851  void(STDMETHODCALLTYPE *Dispatch)(
3856 
3857  void(STDMETHODCALLTYPE *CopyBufferRegion)(
3864 
3865  void(STDMETHODCALLTYPE *CopyTextureRegion)(
3873 
3874  void(STDMETHODCALLTYPE *CopyResource)(
3878 
3879  void(STDMETHODCALLTYPE *CopyTiles)(
3887 
3888  void(STDMETHODCALLTYPE *ResolveSubresource)(
3890  _In_ ID3D12Resource *pDstResource,
3895 
3896  void(STDMETHODCALLTYPE *IASetPrimitiveTopology)(
3899 
3900  void(STDMETHODCALLTYPE *RSSetViewports)(
3903  _In_reads_(NumViewports) const D3D12_VIEWPORT *pViewports);
3904 
3905  void(STDMETHODCALLTYPE *RSSetScissorRects)(
3908  _In_reads_(NumRects) const D3D12_RECT *pRects);
3909 
3910  void(STDMETHODCALLTYPE *OMSetBlendFactor)(
3912  _In_opt_ const FLOAT BlendFactor[4]);
3913 
3914  void(STDMETHODCALLTYPE *OMSetStencilRef)(
3917 
3918  void(STDMETHODCALLTYPE *SetPipelineState)(
3921 
3922  void(STDMETHODCALLTYPE *ResourceBarrier)(
3925  _In_reads_(NumBarriers) const D3D12_RESOURCE_BARRIER *pBarriers);
3926 
3927  void(STDMETHODCALLTYPE *ExecuteBundle)(
3930 
3931  void(STDMETHODCALLTYPE *SetDescriptorHeaps)(
3934  _In_reads_(NumDescriptorHeaps) ID3D12DescriptorHeap *const *ppDescriptorHeaps);
3935 
3936  void(STDMETHODCALLTYPE *SetComputeRootSignature)(
3939 
3940  void(STDMETHODCALLTYPE *SetGraphicsRootSignature)(
3942  _In_opt_ ID3D12RootSignature *pRootSignature);
3943 
3944  void(STDMETHODCALLTYPE *SetComputeRootDescriptorTable)(
3948 
3949  void(STDMETHODCALLTYPE *SetGraphicsRootDescriptorTable)(
3951  _In_ UINT RootParameterIndex,
3952  _In_ D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor);
3953 
3954  void(STDMETHODCALLTYPE *SetComputeRoot32BitConstant)(
3956  _In_ UINT RootParameterIndex,
3959 
3960  void(STDMETHODCALLTYPE *SetGraphicsRoot32BitConstant)(
3962  _In_ UINT RootParameterIndex,
3963  _In_ UINT SrcData,
3964  _In_ UINT DestOffsetIn32BitValues);
3965 
3966  void(STDMETHODCALLTYPE *SetComputeRoot32BitConstants)(
3968  _In_ UINT RootParameterIndex,
3970  _In_reads_(Num32BitValuesToSet * sizeof(UINT)) const void *pSrcData,
3971  _In_ UINT DestOffsetIn32BitValues);
3972 
3973  void(STDMETHODCALLTYPE *SetGraphicsRoot32BitConstants)(
3975  _In_ UINT RootParameterIndex,
3976  _In_ UINT Num32BitValuesToSet,
3977  _In_reads_(Num32BitValuesToSet * sizeof(UINT)) const void *pSrcData,
3978  _In_ UINT DestOffsetIn32BitValues);
3979 
3980  void(STDMETHODCALLTYPE *SetComputeRootConstantBufferView)(
3982  _In_ UINT RootParameterIndex,
3984 
3985  void(STDMETHODCALLTYPE *SetGraphicsRootConstantBufferView)(
3987  _In_ UINT RootParameterIndex,
3988  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
3989 
3990  void(STDMETHODCALLTYPE *SetComputeRootShaderResourceView)(
3992  _In_ UINT RootParameterIndex,
3993  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
3994 
3995  void(STDMETHODCALLTYPE *SetGraphicsRootShaderResourceView)(
3997  _In_ UINT RootParameterIndex,
3998  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
3999 
4000  void(STDMETHODCALLTYPE *SetComputeRootUnorderedAccessView)(
4002  _In_ UINT RootParameterIndex,
4003  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
4004 
4005  void(STDMETHODCALLTYPE *SetGraphicsRootUnorderedAccessView)(
4007  _In_ UINT RootParameterIndex,
4008  _In_ D3D12_GPU_VIRTUAL_ADDRESS BufferLocation);
4009 
4010  void(STDMETHODCALLTYPE *IASetIndexBuffer)(
4013 
4014  void(STDMETHODCALLTYPE *IASetVertexBuffers)(
4018  _In_reads_opt_(NumViews) const D3D12_VERTEX_BUFFER_VIEW *pViews);
4019 
4020  void(STDMETHODCALLTYPE *SOSetTargets)(
4022  _In_ UINT StartSlot,
4023  _In_ UINT NumViews,
4024  _In_reads_opt_(NumViews) const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews);
4025 
4026  void(STDMETHODCALLTYPE *OMSetRenderTargets)(
4032 
4033  void(STDMETHODCALLTYPE *ClearDepthStencilView)(
4040  _In_reads_(NumRects) const D3D12_RECT *pRects);
4041 
4042  void(STDMETHODCALLTYPE *ClearRenderTargetView)(
4045  _In_ const FLOAT ColorRGBA[4],
4047  _In_reads_(NumRects) const D3D12_RECT *pRects);
4048 
4049  void(STDMETHODCALLTYPE *ClearUnorderedAccessViewUint)(