259 lines
7.8 KiB
Text
259 lines
7.8 KiB
Text
/*
|
|
* 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();
|
|
}
|