[PATCH 1/2] include: Add IDXGIInfoQueue declaration in dxgidebug.idl.

Biswapriyo Nath wine at gitlab.winehq.org
Fri Jun 17 15:37:21 CDT 2022


From: Biswapriyo Nath <nathbappai at gmail.com>

Signed-off-by: Biswapriyo Nath <nathbappai at gmail.com>
---
 include/dxgidebug.idl | 203 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 203 insertions(+)

diff --git a/include/dxgidebug.idl b/include/dxgidebug.idl
index 2daeb674f97..7806e0be013 100644
--- a/include/dxgidebug.idl
+++ b/include/dxgidebug.idl
@@ -18,6 +18,10 @@
 
 import "oaidl.idl";
 
+const UINT DXGI_DEBUG_BINARY_VERSION = 1;
+
+typedef GUID DXGI_DEBUG_ID;
+
 cpp_quote("DEFINE_GUID(DXGI_DEBUG_ALL,   0xe48ae283, 0xda80, 0x490b,0x87, 0xe6, 0x43, 0xe9, 0xa9, 0xcf, 0xda, 0x08);")
 cpp_quote("DEFINE_GUID(DXGI_DEBUG_DX,    0x35cdd7fc, 0x13b2, 0x421d,0xa5, 0xd7, 0x7e, 0x44, 0x51, 0x28, 0x7d, 0x64);")
 cpp_quote("DEFINE_GUID(DXGI_DEBUG_DXGI,  0x25cddaa4, 0xb1c6, 0x47e1,0xac, 0x3e, 0x98, 0x87, 0x5b, 0x5a, 0x2e, 0x2a);")
@@ -30,6 +34,205 @@ typedef enum DXGI_DEBUG_RLO_FLAGS {
     DXGI_DEBUG_RLO_ALL             = 0x0007
 } DXGI_DEBUG_RLO_FLAGS;
 
+typedef enum DXGI_INFO_QUEUE_MESSAGE_CATEGORY {
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_UNKNOWN,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_MISCELLANEOUS,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_INITIALIZATION,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_CLEANUP,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_COMPILATION,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_CREATION,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_SETTING,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_STATE_GETTING,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_RESOURCE_MANIPULATION,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_EXECUTION,
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY_SHADER,
+} DXGI_INFO_QUEUE_MESSAGE_CATEGORY;
+
+typedef enum DXGI_INFO_QUEUE_MESSAGE_SEVERITY {
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY_CORRUPTION,
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY_ERROR,
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY_WARNING,
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY_INFO,
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY_MESSAGE
+} DXGI_INFO_QUEUE_MESSAGE_SEVERITY;
+
+typedef int DXGI_INFO_QUEUE_MESSAGE_ID;
+cpp_quote("#define DXGI_INFO_QUEUE_MESSAGE_ID_STRING_FROM_APPLICATION 0")
+
+typedef struct DXGI_INFO_QUEUE_MESSAGE {
+    DXGI_DEBUG_ID Producer;
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY Category;
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY Severity;
+    DXGI_INFO_QUEUE_MESSAGE_ID ID;
+    const char *pDescription;
+    SIZE_T DescriptionByteLength;
+} DXGI_INFO_QUEUE_MESSAGE;
+
+typedef struct DXGI_INFO_QUEUE_FILTER_DESC {
+    UINT NumCategories;
+    DXGI_INFO_QUEUE_MESSAGE_CATEGORY *pCategoryList;
+    UINT NumSeverities;
+    DXGI_INFO_QUEUE_MESSAGE_SEVERITY *pSeverityList;
+    UINT NumIDs;
+    DXGI_INFO_QUEUE_MESSAGE_ID *pIDList;
+} DXGI_INFO_QUEUE_FILTER_DESC;
+
+typedef struct DXGI_INFO_QUEUE_FILTER {
+    DXGI_INFO_QUEUE_FILTER_DESC AllowList;
+    DXGI_INFO_QUEUE_FILTER_DESC DenyList;
+} DXGI_INFO_QUEUE_FILTER;
+
+cpp_quote("#define DXGI_INFO_QUEUE_DEFAULT_MESSAGE_COUNT_LIMIT 1024")
+
+cpp_quote("HRESULT WINAPI DXGIGetDebugInterface(REFIID riid, void **ppDebug);")
+
+[
+    uuid(d67441c7-672a-476f-9e82-cd55b44949ce),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface IDXGIInfoQueue : IUnknown
+{
+    HRESULT SetMessageCountLimit(
+        [in] DXGI_DEBUG_ID producer,
+        [in] UINT64 limit);
+
+    void ClearStoredMessages(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT GetMessage(
+        [in] DXGI_DEBUG_ID producer,
+        [in] UINT64 index,
+        [out] DXGI_INFO_QUEUE_MESSAGE *message,
+        [in, out] SIZE_T *length);
+
+    UINT64 GetNumStoredMessagesAllowedByRetrievalFilters(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT64 GetNumStoredMessages(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT64 GetNumMessagesDiscardedByMessageCountLimit(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT64 GetMessageCountLimit(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT64 GetNumMessagesAllowedByStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT64 GetNumMessagesDeniedByStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT AddStorageFilterEntries(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_FILTER *filter);
+
+    HRESULT GetStorageFilter(
+        [in] DXGI_DEBUG_ID producer,
+        [out] DXGI_INFO_QUEUE_FILTER *filter,
+        [in, out] SIZE_T *length);
+
+    void ClearStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushEmptyStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushDenyAllStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushCopyOfStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushStorageFilter(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_FILTER *filter);
+
+    void PopStorageFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT GetStorageFilterStackSize(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT AddRetrievalFilterEntries(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_FILTER *filter);
+
+    HRESULT GetRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer,
+        [out] DXGI_INFO_QUEUE_FILTER *filter,
+        [in, out] SIZE_T *length);
+
+    void ClearRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushEmptyRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushDenyAllRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushCopyOfRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT PushRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_FILTER *filter);
+
+    void PopRetrievalFilter(
+        [in] DXGI_DEBUG_ID producer);
+
+    UINT GetRetrievalFilterStackSize(
+        [in] DXGI_DEBUG_ID producer);
+
+    HRESULT AddMessage(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_CATEGORY category,
+        [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity,
+        [in] DXGI_INFO_QUEUE_MESSAGE_ID id,
+        [in] LPCSTR description);
+
+    HRESULT AddApplicationMessage(
+        [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity,
+        [in] LPCSTR description);
+
+    HRESULT SetBreakOnCategory(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_CATEGORY category,
+        [in] BOOL enable);
+
+    HRESULT SetBreakOnSeverity(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity,
+        [in] BOOL enable);
+
+    HRESULT SetBreakOnID(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_ID id,
+        [in] BOOL enable);
+
+    BOOL GetBreakOnCategory(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_CATEGORY category);
+
+    BOOL GetBreakOnSeverity(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_SEVERITY severity);
+
+    BOOL GetBreakOnID(
+        [in] DXGI_DEBUG_ID producer,
+        [in] DXGI_INFO_QUEUE_MESSAGE_ID id);
+
+    void SetMuteDebugOutput(
+        [in] DXGI_DEBUG_ID producer,
+        [in] BOOL mute);
+
+    BOOL GetMuteDebugOutput(
+        [in] DXGI_DEBUG_ID producer);
+}
+
 [
     object,
     local,
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/270



More information about the wine-devel mailing list