1 // Copyright © 2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 use ctypes
::{c_char, c_int, c_void}
;
8 use shared
::basetsd
::{SIZE_T, UINT64}
;
9 use shared
::guiddef
::{GUID, REFIID}
;
10 use shared
::minwindef
::{BOOL, DWORD, UINT}
;
11 use um
::unknwnbase
::{IUnknown, IUnknownVtbl}
;
12 use um
::winnt
::{HRESULT, LPCSTR}
;
13 pub const DXGI_DEBUG_BINARY_VERSION
: DWORD
= 1;
14 ENUM
!{enum DXGI_DEBUG_RLO_FLAGS
{
15 DXGI_DEBUG_RLO_SUMMARY
= 0x1,
16 DXGI_DEBUG_RLO_DETAIL
= 0x2,
17 DXGI_DEBUG_RLO_IGNORE_INTERNAL
= 0x4,
18 DXGI_DEBUG_RLO_ALL
= 0x7,
20 pub type DXGI_DEBUG_ID
= GUID
;
21 DEFINE_GUID
!{DXGI_DEBUG_ALL
,
22 0xe48ae283, 0xda80, 0x490b, 0x87, 0xe6, 0x43, 0xe9, 0xa9, 0xcf, 0xda, 0x08}
23 DEFINE_GUID
!{DXGI_DEBUG_DX
,
24 0x35cdd7fc, 0x13b2, 0x421d, 0xa5, 0xd7, 0x7e, 0x44, 0x51, 0x28, 0x7d, 0x64}
25 DEFINE_GUID
!{DXGI_DEBUG_DXGI
,
26 0x25cddaa4, 0xb1c6, 0x47e1, 0xac, 0x3e, 0x98, 0x87, 0x5b, 0x5a, 0x2e, 0x2a}
27 DEFINE_GUID
!{DXGI_DEBUG_APP
,
28 0x06cd6e01, 0x4219, 0x4ebd, 0x87, 0x09, 0x27, 0xed, 0x23, 0x36, 0x0c, 0x62}
29 ENUM
!{enum DXGI_INFO_QUEUE_MESSAGE_CATEGORY
{
30 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_UNKNOWN
= 0,
31 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_MISCELLANEOUS
= 1,
32 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_INITIALIZATION
= 2,
33 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_CLEANUP
= 3,
34 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_COMPILATION
= 4,
35 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_CREATION
= 5,
36 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_SETTING
= 6,
37 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_GETTING
= 7,
38 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_RESOURCE_MANIPULATION
= 8,
39 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_EXECUTION
= 9,
40 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_SHADER
= 10,
42 ENUM
!{enum DXGI_INFO_QUEUE_MESSAGE_SEVERITY
{
43 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION
= 0,
44 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR
= 1,
45 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_WARNING
= 2,
46 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_INFO
= 3,
47 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_MESSAGE
= 4,
49 pub type DXGI_INFO_QUEUE_MESSAGE_ID
= c_int
;
50 STRUCT
!{struct DXGI_INFO_QUEUE_MESSAGE
{
51 Producer
: DXGI_DEBUG_ID
,
52 Category
: DXGI_INFO_QUEUE_MESSAGE_CATEGORY
,
53 Severity
: DXGI_INFO_QUEUE_MESSAGE_SEVERITY
,
54 ID
: DXGI_INFO_QUEUE_MESSAGE_ID
,
55 pDescription
: *const c_char
,
56 DescriptionByteLength
: SIZE_T
,
58 STRUCT
!{struct DXGI_INFO_QUEUE_FILTER_DESC
{
60 pCategoryList
: *mut DXGI_INFO_QUEUE_MESSAGE_CATEGORY
,
62 pSeverityList
: *mut DXGI_INFO_QUEUE_MESSAGE_SEVERITY
,
64 pIDList
: *mut DXGI_INFO_QUEUE_MESSAGE_ID
,
66 STRUCT
!{struct DXGI_INFO_QUEUE_FILTER
{
67 AllowList
: DXGI_INFO_QUEUE_FILTER_DESC
,
68 DenyList
: DXGI_INFO_QUEUE_FILTER_DESC
,
70 pub const DXGI_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT
: DWORD
= 1024;
72 pub fn DXGIGetDebugInterface(
74 ppDebug
: *mut *mut c_void
,
77 RIDL
!{#[uuid(0xd67441c7, 0x672a, 0x476f, 0x9e, 0x82, 0xcd, 0x55, 0xb4, 0x49, 0x49, 0xce)]
78 interface
IDXGIInfoQueue(IDXGIInfoQueueVtbl
): IUnknown(IUnknownVtbl
) {
79 fn SetMessageCountLimit(
80 Producer
: DXGI_DEBUG_ID
,
81 MessageCountLimit
: UINT64
,
83 fn ClearStoredMessages(
84 Producer
: DXGI_DEBUG_ID
,
87 Producer
: DXGI_DEBUG_ID
,
89 pMessage
: *mut DXGI_INFO_QUEUE_MESSAGE
,
90 pMessageByteLength
: *mut SIZE_T
,
92 fn GetNumStoredMessagesAllowedByRetrievalFilters(
93 Producer
: DXGI_DEBUG_ID
,
95 fn GetNumStoredMessages(
96 Producer
: DXGI_DEBUG_ID
,
98 fn GetNumMessagesDiscardedByMessageCountLimit(
99 Producer
: DXGI_DEBUG_ID
,
101 fn GetMessageCountLimit(
102 Producer
: DXGI_DEBUG_ID
,
104 fn GetNumMessagesAllowedByStorageFilter(
105 Producer
: DXGI_DEBUG_ID
,
107 fn GetNumMessagesDeniedByStorageFilter(
108 Producer
: DXGI_DEBUG_ID
,
110 fn AddStorageFilterEntries(
111 Producer
: DXGI_DEBUG_ID
,
112 pFilter
: *const DXGI_INFO_QUEUE_FILTER
,
115 Producer
: DXGI_DEBUG_ID
,
116 pFilter
: *mut DXGI_INFO_QUEUE_FILTER
,
117 pFilterByteLength
: *mut SIZE_T
,
119 fn ClearStorageFilter(
120 Producer
: DXGI_DEBUG_ID
,
122 fn PushEmptyStorageFilter(
123 Producer
: DXGI_DEBUG_ID
,
125 fn PushDenyAllStorageFilter(
126 Producer
: DXGI_DEBUG_ID
,
128 fn PushCopyOfStorageFilter(
129 Producer
: DXGI_DEBUG_ID
,
131 fn PushStorageFilter(
132 Producer
: DXGI_DEBUG_ID
,
133 pFilter
: *const DXGI_INFO_QUEUE_FILTER
,
136 Producer
: DXGI_DEBUG_ID
,
138 fn GetStorageFilterStackSize(
139 Producer
: DXGI_DEBUG_ID
,
141 fn AddRetrievalFilterEntries(
142 Producer
: DXGI_DEBUG_ID
,
143 pFilter
: *const DXGI_INFO_QUEUE_FILTER
,
145 fn GetRetrievalFilter(
146 Producer
: DXGI_DEBUG_ID
,
147 pFilter
: *mut DXGI_INFO_QUEUE_FILTER
,
148 pFilterByteLength
: *mut SIZE_T
,
150 fn ClearRetrievalFilter(
151 Producer
: DXGI_DEBUG_ID
,
153 fn PushEmptyRetrievalFilter(
154 Producer
: DXGI_DEBUG_ID
,
156 fn PushDenyAllRetrievalFilter(
157 Producer
: DXGI_DEBUG_ID
,
159 fn PushCopyOfRetrievalFilter(
160 Producer
: DXGI_DEBUG_ID
,
162 fn PushRetrievalFilter(
163 Producer
: DXGI_DEBUG_ID
,
164 pFilter
: *const DXGI_INFO_QUEUE_FILTER
,
166 fn PopRetrievalFilter(
167 Producer
: DXGI_DEBUG_ID
,
169 fn GetRetrievalFilterStackSize(
170 Producer
: DXGI_DEBUG_ID
,
173 Producer
: DXGI_DEBUG_ID
,
174 Category
: DXGI_INFO_QUEUE_MESSAGE_CATEGORY
,
175 Severity
: DXGI_INFO_QUEUE_MESSAGE_SEVERITY
,
176 ID
: DXGI_INFO_QUEUE_MESSAGE_ID
,
177 pDescription
: LPCSTR
,
179 fn AddApplicationMessage(
180 Severity
: DXGI_INFO_QUEUE_MESSAGE_SEVERITY
,
181 pDescription
: LPCSTR
,
183 fn SetBreakOnCategory(
184 Producer
: DXGI_DEBUG_ID
,
185 Category
: DXGI_INFO_QUEUE_MESSAGE_CATEGORY
,
188 fn SetBreakOnSeverity(
189 Producer
: DXGI_DEBUG_ID
,
190 Severity
: DXGI_INFO_QUEUE_MESSAGE_SEVERITY
,
194 Producer
: DXGI_DEBUG_ID
,
195 ID
: DXGI_INFO_QUEUE_MESSAGE_ID
,
198 fn GetBreakOnCategory(
199 Producer
: DXGI_DEBUG_ID
,
200 Category
: DXGI_INFO_QUEUE_MESSAGE_CATEGORY
,
202 fn GetBreakOnSeverity(
203 Producer
: DXGI_DEBUG_ID
,
204 Severity
: DXGI_INFO_QUEUE_MESSAGE_SEVERITY
,
207 Producer
: DXGI_DEBUG_ID
,
208 ID
: DXGI_INFO_QUEUE_MESSAGE_ID
,
210 fn SetMuteDebugOutput(
211 Producer
: DXGI_DEBUG_ID
,
214 fn GetMuteDebugOutput(
215 Producer
: DXGI_DEBUG_ID
,
218 RIDL
!{#[uuid(0x119e7452, 0xde9e, 0x40fe, 0x88, 0x06, 0x88, 0xf9, 0x0c, 0x12, 0xb4, 0x41)]
219 interface
IDXGIDebug(IDXGIDebugVtbl
): IUnknown(IUnknownVtbl
) {
220 fn ReportLiveObjects(
222 flags
: DXGI_DEBUG_RLO_FLAGS
,
225 RIDL
!{#[uuid(0x119e7452, 0xde9e, 0x40fe, 0x88, 0x06, 0x88, 0xf9, 0x0c, 0x12, 0xb4, 0x41)]
226 interface
IDXGIDebug1(IDXGIDebug1Vtbl
): IDXGIDebug(IDXGIDebugVtbl
) {
227 fn EnableLeakTrackingForThread() -> (),
228 fn DisableLeakTrackingForThread() -> (),
229 fn IsLeakTrackingEnabledForThread() -> BOOL
,
231 DEFINE_GUID
!{IID_IDXGIInfoQueue
,
232 0xd67441c7, 0x672a, 0x476f, 0x9e, 0x82, 0xcd, 0x55, 0xb4, 0x49, 0x49, 0xce}
233 DEFINE_GUID
!{IID_IDXGIDebug
,
234 0x119e7452, 0xde9e, 0x40fe, 0x88, 0x06, 0x88, 0xf9, 0x0c, 0x12, 0xb4, 0x41}
235 DEFINE_GUID
!{IID_IDXGIDebug1
,
236 0xc5a05f0c, 0x16f2, 0x4adf, 0x9f, 0x4d, 0xa8, 0xc4, 0xd5, 0x8a, 0xc5, 0x50}