ntdll/tests: Introduce enumeration to handle stages in test_debugger().
[wine.git] / include / dxgidebug.idl
blob686637321f04244d3f13ddb006ce8e2c9445b54e
1 /*
2 * Copyright 2015 Steve Lhomme
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 import "oaidl.idl";
21 const UINT DXGI_DEBUG_BINARY_VERSION = 1;
23 typedef GUID DXGI_DEBUG_ID;
25 cpp_quote("DEFINE_GUID(DXGI_DEBUG_ALL, 0xe48ae283, 0xda80, 0x490b,0x87, 0xe6, 0x43, 0xe9, 0xa9, 0xcf, 0xda, 0x08);")
26 cpp_quote("DEFINE_GUID(DXGI_DEBUG_DX, 0x35cdd7fc, 0x13b2, 0x421d,0xa5, 0xd7, 0x7e, 0x44, 0x51, 0x28, 0x7d, 0x64);")
27 cpp_quote("DEFINE_GUID(DXGI_DEBUG_DXGI, 0x25cddaa4, 0xb1c6, 0x47e1,0xac, 0x3e, 0x98, 0x87, 0x5b, 0x5a, 0x2e, 0x2a);")
28 cpp_quote("DEFINE_GUID(DXGI_DEBUG_APP, 0x06cd6e01, 0x4219, 0x4ebd,0x87, 0x90, 0x27, 0xed, 0x23, 0x36, 0x0c, 0x62);")
30 typedef enum DXGI_DEBUG_RLO_FLAGS {
31 DXGI_DEBUG_RLO_SUMMARY = 0x0001,
32 DXGI_DEBUG_RLO_DETAIL = 0x0002,
33 DXGI_DEBUG_RLO_IGNORE_INTERNAL = 0x0004,
34 DXGI_DEBUG_RLO_ALL = 0x0007
35 } DXGI_DEBUG_RLO_FLAGS;
37 typedef enum DXGI_INFO_QUEUE_MESSAGE_CATEGORY {
38 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_UNKNOWN,
39 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_MISCELLANEOUS,
40 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_INITIALIZATION,
41 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_CLEANUP,
42 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_COMPILATION,
43 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_CREATION,
44 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_SETTING,
45 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_GETTING,
46 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
47 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_EXECUTION,
48 DXGI_INFO_QUEUE_MESSAGE_CATEGORY_SHADER,
49 } DXGI_INFO_QUEUE_MESSAGE_CATEGORY;
51 typedef enum DXGI_INFO_QUEUE_MESSAGE_SEVERITY {
52 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION,
53 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR,
54 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_WARNING,
55 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_INFO,
56 DXGI_INFO_QUEUE_MESSAGE_SEVERITY_MESSAGE
57 } DXGI_INFO_QUEUE_MESSAGE_SEVERITY;
59 typedef int DXGI_INFO_QUEUE_MESSAGE_ID;
60 cpp_quote("#define DXGI_INFO_QUEUE_MESSAGE_ID_STRING_FROM_APPLICATION 0")
62 typedef struct DXGI_INFO_QUEUE_MESSAGE {
63 DXGI_DEBUG_ID Producer;
64 DXGI_INFO_QUEUE_MESSAGE_CATEGORY Category;
65 DXGI_INFO_QUEUE_MESSAGE_SEVERITY Severity;
66 DXGI_INFO_QUEUE_MESSAGE_ID ID;
67 const char *pDescription;
68 SIZE_T DescriptionByteLength;
69 } DXGI_INFO_QUEUE_MESSAGE;
71 typedef struct DXGI_INFO_QUEUE_FILTER_DESC {
72 UINT NumCategories;
73 DXGI_INFO_QUEUE_MESSAGE_CATEGORY *pCategoryList;
74 UINT NumSeverities;
75 DXGI_INFO_QUEUE_MESSAGE_SEVERITY *pSeverityList;
76 UINT NumIDs;
77 DXGI_INFO_QUEUE_MESSAGE_ID *pIDList;
78 } DXGI_INFO_QUEUE_FILTER_DESC;
80 typedef struct DXGI_INFO_QUEUE_FILTER {
81 DXGI_INFO_QUEUE_FILTER_DESC AllowList;
82 DXGI_INFO_QUEUE_FILTER_DESC DenyList;
83 } DXGI_INFO_QUEUE_FILTER;
85 cpp_quote("#define DXGI_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
87 cpp_quote("HRESULT WINAPI DXGIGetDebugInterface(REFIID riid, void **ppDebug);")
90 uuid(d67441c7-672a-476f-9e82-cd55b44949ce),
91 object,
92 local,
93 pointer_default(unique)
95 interface IDXGIInfoQueue : IUnknown
97 HRESULT SetMessageCountLimit(
98 [in] DXGI_DEBUG_ID producer,
99 [in] UINT64 limit);
101 void ClearStoredMessages(
102 [in] DXGI_DEBUG_ID producer);
104 HRESULT GetMessage(
105 [in] DXGI_DEBUG_ID producer,
106 [in] UINT64 index,
107 [out] DXGI_INFO_QUEUE_MESSAGE *message,
108 [in, out] SIZE_T *length);
110 UINT64 GetNumStoredMessagesAllowedByRetrievalFilters(
111 [in] DXGI_DEBUG_ID producer);
113 UINT64 GetNumStoredMessages(
114 [in] DXGI_DEBUG_ID producer);
116 UINT64 GetNumMessagesDiscardedByMessageCountLimit(
117 [in] DXGI_DEBUG_ID producer);
119 UINT64 GetMessageCountLimit(
120 [in] DXGI_DEBUG_ID producer);
122 UINT64 GetNumMessagesAllowedByStorageFilter(
123 [in] DXGI_DEBUG_ID producer);
125 UINT64 GetNumMessagesDeniedByStorageFilter(
126 [in] DXGI_DEBUG_ID producer);
128 HRESULT AddStorageFilterEntries(
129 [in] DXGI_DEBUG_ID producer,
130 [in] DXGI_INFO_QUEUE_FILTER *filter);
132 HRESULT GetStorageFilter(
133 [in] DXGI_DEBUG_ID producer,
134 [out] DXGI_INFO_QUEUE_FILTER *filter,
135 [in, out] SIZE_T *length);
137 void ClearStorageFilter(
138 [in] DXGI_DEBUG_ID producer);
140 HRESULT PushEmptyStorageFilter(
141 [in] DXGI_DEBUG_ID producer);
143 HRESULT PushDenyAllStorageFilter(
144 [in] DXGI_DEBUG_ID producer);
146 HRESULT PushCopyOfStorageFilter(
147 [in] DXGI_DEBUG_ID producer);
149 HRESULT PushStorageFilter(
150 [in] DXGI_DEBUG_ID producer,
151 [in] DXGI_INFO_QUEUE_FILTER *filter);
153 void PopStorageFilter(
154 [in] DXGI_DEBUG_ID producer);
156 UINT GetStorageFilterStackSize(
157 [in] DXGI_DEBUG_ID producer);
159 HRESULT AddRetrievalFilterEntries(
160 [in] DXGI_DEBUG_ID producer,
161 [in] DXGI_INFO_QUEUE_FILTER *filter);
163 HRESULT GetRetrievalFilter(
164 [in] DXGI_DEBUG_ID producer,
165 [out] DXGI_INFO_QUEUE_FILTER *filter,
166 [in, out] SIZE_T *length);
168 void ClearRetrievalFilter(
169 [in] DXGI_DEBUG_ID producer);
171 HRESULT PushEmptyRetrievalFilter(
172 [in] DXGI_DEBUG_ID producer);
174 HRESULT PushDenyAllRetrievalFilter(
175 [in] DXGI_DEBUG_ID producer);
177 HRESULT PushCopyOfRetrievalFilter(
178 [in] DXGI_DEBUG_ID producer);
180 HRESULT PushRetrievalFilter(
181 [in] DXGI_DEBUG_ID producer,
182 [in] DXGI_INFO_QUEUE_FILTER *filter);
184 void PopRetrievalFilter(
185 [in] DXGI_DEBUG_ID producer);
187 UINT GetRetrievalFilterStackSize(
188 [in] DXGI_DEBUG_ID producer);
190 HRESULT AddMessage(
191 [in] DXGI_DEBUG_ID producer,
192 [in] DXGI_INFO_QUEUE_MESSAGE_CATEGORY category,
193 [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity,
194 [in] DXGI_INFO_QUEUE_MESSAGE_ID id,
195 [in] LPCSTR description);
197 HRESULT AddApplicationMessage(
198 [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity,
199 [in] LPCSTR description);
201 HRESULT SetBreakOnCategory(
202 [in] DXGI_DEBUG_ID producer,
203 [in] DXGI_INFO_QUEUE_MESSAGE_CATEGORY category,
204 [in] BOOL enable);
206 HRESULT SetBreakOnSeverity(
207 [in] DXGI_DEBUG_ID producer,
208 [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity,
209 [in] BOOL enable);
211 HRESULT SetBreakOnID(
212 [in] DXGI_DEBUG_ID producer,
213 [in] DXGI_INFO_QUEUE_MESSAGE_ID id,
214 [in] BOOL enable);
216 BOOL GetBreakOnCategory(
217 [in] DXGI_DEBUG_ID producer,
218 [in] DXGI_INFO_QUEUE_MESSAGE_CATEGORY category);
220 BOOL GetBreakOnSeverity(
221 [in] DXGI_DEBUG_ID producer,
222 [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity);
224 BOOL GetBreakOnID(
225 [in] DXGI_DEBUG_ID producer,
226 [in] DXGI_INFO_QUEUE_MESSAGE_ID id);
228 void SetMuteDebugOutput(
229 [in] DXGI_DEBUG_ID producer,
230 [in] BOOL mute);
232 BOOL GetMuteDebugOutput(
233 [in] DXGI_DEBUG_ID producer);
237 object,
238 local,
239 uuid(119e7452-de9e-40fe-8806-88f90c12b441)
241 interface IDXGIDebug : IUnknown
243 HRESULT ReportLiveObjects(
244 [in] GUID apiid,
245 [in] DXGI_DEBUG_RLO_FLAGS flags);
249 uuid(c5a05f0c-16f2-4adf-9f4d-a8c4d58ac550),
250 object,
251 local,
252 pointer_default(unique)
254 interface IDXGIDebug1 : IDXGIDebug
256 void EnableLeakTrackingForThread();
257 void DisableLeakTrackingForThread();
258 BOOL IsLeakTrackingEnabledForThread();