blob: 3ea8448fb101a701fc1e766ebe4cb806886bec6e [file] [log] [blame]
Chia-I Wu68a55242014-08-01 11:18:21 +08001#ifndef __XGLDBG_H__
2#define __XGLDBG_H__
3
4#include <xgl.h>
5
6#ifdef __cplusplus
7extern "C"
8{
9#endif // __cplusplus
10
11typedef enum _XGL_DBG_MSG_TYPE
12{
13 XGL_DBG_MSG_UNKNOWN = 0x0,
14 XGL_DBG_MSG_ERROR = 0x1,
15 XGL_DBG_MSG_WARNING = 0x2,
16 XGL_DBG_MSG_PERF_WARNING = 0x3,
17
18 XGL_DBG_MSG_TYPE_BEGIN_RANGE = XGL_DBG_MSG_UNKNOWN,
19 XGL_DBG_MSG_TYPE_END_RANGE = XGL_DBG_MSG_PERF_WARNING,
20 XGL_NUM_DBG_MSG_TYPE = (XGL_DBG_MSG_TYPE_END_RANGE - XGL_DBG_MSG_TYPE_BEGIN_RANGE + 1),
21} XGL_DBG_MSG_TYPE;
22
23typedef enum _XGL_DBG_MSG_FILTER
24{
25 XGL_DBG_MSG_FILTER_NONE = 0x0,
26 XGL_DBG_MSG_FILTER_REPEATED = 0x1,
27 XGL_DBG_MSG_FILTER_ALL = 0x2,
28
29 XGL_DBG_MSG_FILTER_BEGIN_RANGE = XGL_DBG_MSG_FILTER_NONE,
30 XGL_DBG_MSG_FILTER_END_RANGE = XGL_DBG_MSG_FILTER_ALL,
31 XGL_NUM_DBG_MSG_FILTER = (XGL_DBG_MSG_FILTER_END_RANGE - XGL_DBG_MSG_FILTER_BEGIN_RANGE + 1),
32} XGL_DBG_MSG_FILTER;
33
34typedef enum _XGL_DBG_GLOBAL_OPTION
35{
36 XGL_DBG_OPTION_DEBUG_ECHO_ENABLE = 0x0,
37 XGL_DBG_OPTION_BREAK_ON_ERROR = 0x1,
38 XGL_DBG_OPTION_BREAK_ON_WARNING = 0x2,
39
40 XGL_DBG_GLOBAL_OPTION_BEGIN_RANGE = XGL_DBG_OPTION_DEBUG_ECHO_ENABLE,
41 XGL_DBG_GLOBAL_OPTION_END_RANGE = XGL_DBG_OPTION_BREAK_ON_WARNING,
42 XGL_NUM_DBG_GLOBAL_OPTION = (XGL_DBG_GLOBAL_OPTION_END_RANGE - XGL_DBG_GLOBAL_OPTION_BEGIN_RANGE + 1),
43} XGL_DBG_GLOBAL_OPTION;
44
45typedef enum _XGL_DBG_DEVICE_OPTION
46{
47 XGL_DBG_OPTION_DISABLE_PIPELINE_LOADS = 0x0,
48 XGL_DBG_OPTION_FORCE_OBJECT_MEMORY_REQS = 0x1,
49 XGL_DBG_OPTION_FORCE_LARGE_IMAGE_ALIGNMENT = 0x2,
50
51 XGL_DBG_DEVICE_OPTION_BEGIN_RANGE = XGL_DBG_OPTION_DISABLE_PIPELINE_LOADS,
52 XGL_DBG_DEVICE_OPTION_END_RANGE = XGL_DBG_OPTION_FORCE_LARGE_IMAGE_ALIGNMENT,
53 XGL_NUM_DBG_DEVICE_OPTION = (XGL_DBG_DEVICE_OPTION_END_RANGE - XGL_DBG_DEVICE_OPTION_BEGIN_RANGE + 1),
54} XGL_DBG_DEVICE_OPTION;
55
Chia-I Wu450a4232014-08-05 14:50:53 +080056typedef enum _XGL_DBG_OBJECT_TYPE
57{
58 XGL_DBG_OBJECT_UNKNOWN = 0x00,
59 XGL_DBG_OBJECT_DEVICE = 0x01,
60 XGL_DBG_OBJECT_QUEUE = 0x02,
61 XGL_DBG_OBJECT_GPU_MEMORY = 0x03,
62 XGL_DBG_OBJECT_IMAGE = 0x04,
63 XGL_DBG_OBJECT_IMAGE_VIEW = 0x05,
64 XGL_DBG_OBJECT_COLOR_TARGET_VIEW = 0x06,
65 XGL_DBG_OBJECT_DEPTH_STENCIL_VIEW = 0x07,
66 XGL_DBG_OBJECT_SHADER = 0x08,
67 XGL_DBG_OBJECT_GRAPHICS_PIPELINE = 0x09,
68 XGL_DBG_OBJECT_COMPUTE_PIPELINE = 0x0a,
69 XGL_DBG_OBJECT_SAMPLER = 0x0b,
70 XGL_DBG_OBJECT_DESCRIPTOR_SET = 0x0c,
71 XGL_DBG_OBJECT_VIEWPORT_STATE = 0x0d,
72 XGL_DBG_OBJECT_RASTER_STATE = 0x0e,
73 XGL_DBG_OBJECT_MSAA_STATE = 0x0f,
74 XGL_DBG_OBJECT_COLOR_BLEND_STATE = 0x10,
75 XGL_DBG_OBJECT_DEPTH_STENCIL_STATE = 0x11,
76 XGL_DBG_OBJECT_CMD_BUFFER = 0x12,
77 XGL_DBG_OBJECT_FENCE = 0x13,
78 XGL_DBG_OBJECT_QUEUE_SEMAPHORE = 0x14,
79 XGL_DBG_OBJECT_EVENT = 0x15,
80 XGL_DBG_OBJECT_QUERY_POOL = 0x16,
81 XGL_DBG_OBJECT_SHARED_GPU_MEMORY = 0x17,
82 XGL_DBG_OBJECT_SHARED_QUEUE_SEMAPHORE = 0x18,
83 XGL_DBG_OBJECT_PEER_GPU_MEMORY = 0x19,
84 XGL_DBG_OBJECT_PEER_IMAGE = 0x1a,
85 XGL_DBG_OBJECT_PINNED_GPU_MEMORY = 0x1b,
86 XGL_DBG_OBJECT_INTERNAL_GPU_MEMORY = 0x1c,
Jon Ashburnfa420992014-12-24 12:09:06 -070087 XGL_DBG_OBJECT_FRAMEBUFFER = 0x1d,
88 XGL_DBG_OBJECT_RENDER_PASS = 0x1e,
Chia-I Wu450a4232014-08-05 14:50:53 +080089
Chia-I Wu1a28fe02015-01-01 07:55:04 +080090 XGL_DBG_OBJECT_BUFFER,
91 XGL_DBG_OBJECT_BUFFER_VIEW,
92
Chia-I Wu450a4232014-08-05 14:50:53 +080093 XGL_DBG_OBJECT_TYPE_BEGIN_RANGE = XGL_DBG_OBJECT_UNKNOWN,
Jon Ashburnfa420992014-12-24 12:09:06 -070094 XGL_DBG_OBJECT_TYPE_END_RANGE = XGL_DBG_OBJECT_RENDER_PASS,
Chia-I Wu450a4232014-08-05 14:50:53 +080095 XGL_NUM_DBG_OBJECT_TYPE = (XGL_DBG_OBJECT_TYPE_END_RANGE - XGL_DBG_OBJECT_TYPE_BEGIN_RANGE + 1),
96} XGL_DBG_OBJECT_TYPE;
97
Chia-I Wu68a55242014-08-01 11:18:21 +080098typedef XGL_VOID (XGLAPI *XGL_DBG_MSG_CALLBACK_FUNCTION)(
99 XGL_DBG_MSG_TYPE msgType,
100 XGL_VALIDATION_LEVEL validationLevel,
101 XGL_BASE_OBJECT srcObject,
102 XGL_SIZE location,
103 XGL_INT msgCode,
104 const XGL_CHAR* pMsg,
105 XGL_VOID* pUserData);
106
107// Debug functions
Mark Lobodzinski391bb6d2015-01-09 15:12:03 -0600108typedef XGL_RESULT (XGLAPI *xglDbgSetValidationLevelType)(XGL_DEVICE device, XGL_VALIDATION_LEVEL validationLevel);
109typedef XGL_RESULT (XGLAPI *xglDbgRegisterMsgCallbackType)(XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback, XGL_VOID* pUserData);
110typedef XGL_RESULT (XGLAPI *xglDbgUnregisterMsgCallbackType)(XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
111typedef XGL_RESULT (XGLAPI *xglDbgSetMessageFilterType)(XGL_DEVICE device, XGL_INT msgCode, XGL_DBG_MSG_FILTER filter);
112typedef XGL_RESULT (XGLAPI *xglDbgSetObjectTagType)(XGL_BASE_OBJECT object, XGL_SIZE tagSize, const XGL_VOID* pTag);
113typedef XGL_RESULT (XGLAPI *xglDbgSetGlobalOptionType)(XGL_DBG_GLOBAL_OPTION dbgOption, XGL_SIZE dataSize, const XGL_VOID* pData);
114typedef XGL_RESULT (XGLAPI *xglDbgSetDeviceOptionType)(XGL_DEVICE device, XGL_DBG_DEVICE_OPTION dbgOption, XGL_SIZE dataSize, const XGL_VOID* pData);
115typedef XGL_VOID (XGLAPI *xglCmdDbgMarkerBeginType)(XGL_CMD_BUFFER cmdBuffer, const XGL_CHAR* pMarker);
116typedef XGL_VOID (XGLAPI *xglCmdDbgMarkerEndType)(XGL_CMD_BUFFER cmdBuffer);
Chia-I Wu68a55242014-08-01 11:18:21 +0800117
118XGL_RESULT XGLAPI xglDbgSetValidationLevel(
119 XGL_DEVICE device,
120 XGL_VALIDATION_LEVEL validationLevel);
121
122XGL_RESULT XGLAPI xglDbgRegisterMsgCallback(
123 XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback,
124 XGL_VOID* pUserData);
125
126XGL_RESULT XGLAPI xglDbgUnregisterMsgCallback(
127 XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
128
129XGL_RESULT XGLAPI xglDbgSetMessageFilter(
130 XGL_DEVICE device,
131 XGL_INT msgCode,
132 XGL_DBG_MSG_FILTER filter);
133
134XGL_RESULT XGLAPI xglDbgSetObjectTag(
135 XGL_BASE_OBJECT object,
136 XGL_SIZE tagSize,
137 const XGL_VOID* pTag);
138
139XGL_RESULT XGLAPI xglDbgSetGlobalOption(
140 XGL_DBG_GLOBAL_OPTION dbgOption,
141 XGL_SIZE dataSize,
142 const XGL_VOID* pData);
143
144XGL_RESULT XGLAPI xglDbgSetDeviceOption(
145 XGL_DEVICE device,
146 XGL_DBG_DEVICE_OPTION dbgOption,
147 XGL_SIZE dataSize,
148 const XGL_VOID* pData);
149
150XGL_VOID XGLAPI xglCmdDbgMarkerBegin(
151 XGL_CMD_BUFFER cmdBuffer,
152 const XGL_CHAR* pMarker);
153
154XGL_VOID XGLAPI xglCmdDbgMarkerEnd(
155 XGL_CMD_BUFFER cmdBuffer);
156
157#ifdef __cplusplus
158}; // extern "C"
159#endif // __cplusplus
160
161#endif // __XGLDBG_H__