/* * Copyright 2015 Steve Lhomme * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ 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);") cpp_quote("DEFINE_GUID(DXGI_DEBUG_APP, 0x06cd6e01, 0x4219, 0x4ebd,0x87, 0x90, 0x27, 0xed, 0x23, 0x36, 0x0c, 0x62);") typedef enum DXGI_DEBUG_RLO_FLAGS { DXGI_DEBUG_RLO_SUMMARY = 0x0001, DXGI_DEBUG_RLO_DETAIL = 0x0002, DXGI_DEBUG_RLO_IGNORE_INTERNAL = 0x0004, 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, uuid(119e7452-de9e-40fe-8806-88f90c12b441) ] interface IDXGIDebug : IUnknown { HRESULT ReportLiveObjects( [in] GUID apiid, [in] DXGI_DEBUG_RLO_FLAGS flags); } [ uuid(c5a05f0c-16f2-4adf-9f4d-a8c4d58ac550), object, local, pointer_default(unique) ] interface IDXGIDebug1 : IDXGIDebug { void EnableLeakTrackingForThread(); void DisableLeakTrackingForThread(); BOOL IsLeakTrackingEnabledForThread(); }