blob: be63828c673cfa6d3980fafd086b8bb9191cb0ce [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,
Courtney Goeltzenleuchterebb95842015-03-25 17:14:29 -060078 XGL_DBG_OBJECT_SEMAPHORE = 0x14,
Chia-I Wu450a4232014-08-05 14:50:53 +080079 XGL_DBG_OBJECT_EVENT = 0x15,
80 XGL_DBG_OBJECT_QUERY_POOL = 0x16,
81 XGL_DBG_OBJECT_SHARED_GPU_MEMORY = 0x17,
Courtney Goeltzenleuchterebb95842015-03-25 17:14:29 -060082 XGL_DBG_OBJECT_SHARED_SEMAPHORE = 0x18,
Chia-I Wu450a4232014-08-05 14:50:53 +080083 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
Jon Ashburn540fe5a2015-01-28 18:26:16 -070090 XGL_DBG_OBJECT_INSTANCE,
Chia-I Wu1a28fe02015-01-01 07:55:04 +080091 XGL_DBG_OBJECT_BUFFER,
92 XGL_DBG_OBJECT_BUFFER_VIEW,
Chia-I Wu11078b02015-01-04 16:27:24 +080093 XGL_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT,
94 XGL_DBG_OBJECT_DESCRIPTOR_REGION,
Chia-I Wu1a28fe02015-01-01 07:55:04 +080095
Chia-I Wu450a4232014-08-05 14:50:53 +080096 XGL_DBG_OBJECT_TYPE_BEGIN_RANGE = XGL_DBG_OBJECT_UNKNOWN,
Jon Ashburn9c9340f2015-01-28 15:05:09 -070097 XGL_DBG_OBJECT_TYPE_END_RANGE = XGL_DBG_OBJECT_DESCRIPTOR_REGION,
Chia-I Wu450a4232014-08-05 14:50:53 +080098 XGL_NUM_DBG_OBJECT_TYPE = (XGL_DBG_OBJECT_TYPE_END_RANGE - XGL_DBG_OBJECT_TYPE_BEGIN_RANGE + 1),
99} XGL_DBG_OBJECT_TYPE;
100
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600101typedef void (XGLAPI *XGL_DBG_MSG_CALLBACK_FUNCTION)(
Chia-I Wu68a55242014-08-01 11:18:21 +0800102 XGL_DBG_MSG_TYPE msgType,
103 XGL_VALIDATION_LEVEL validationLevel,
104 XGL_BASE_OBJECT srcObject,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600105 size_t location,
106 int32_t msgCode,
107 const char* pMsg,
108 void* pUserData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800109
110// Debug functions
Mark Lobodzinski391bb6d2015-01-09 15:12:03 -0600111typedef XGL_RESULT (XGLAPI *xglDbgSetValidationLevelType)(XGL_DEVICE device, XGL_VALIDATION_LEVEL validationLevel);
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600112typedef XGL_RESULT (XGLAPI *xglDbgRegisterMsgCallbackType)(XGL_INSTANCE instance, XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback, void* pUserData);
113typedef XGL_RESULT (XGLAPI *xglDbgUnregisterMsgCallbackType)(XGL_INSTANCE instance, XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600114typedef XGL_RESULT (XGLAPI *xglDbgSetMessageFilterType)(XGL_DEVICE device, int32_t msgCode, XGL_DBG_MSG_FILTER filter);
115typedef XGL_RESULT (XGLAPI *xglDbgSetObjectTagType)(XGL_BASE_OBJECT object, size_t tagSize, const void* pTag);
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600116typedef XGL_RESULT (XGLAPI *xglDbgSetGlobalOptionType)(XGL_INSTANCE instance, XGL_DBG_GLOBAL_OPTION dbgOption, size_t dataSize, const void* pData);
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600117typedef XGL_RESULT (XGLAPI *xglDbgSetDeviceOptionType)(XGL_DEVICE device, XGL_DBG_DEVICE_OPTION dbgOption, size_t dataSize, const void* pData);
118typedef void (XGLAPI *xglCmdDbgMarkerBeginType)(XGL_CMD_BUFFER cmdBuffer, const char* pMarker);
119typedef void (XGLAPI *xglCmdDbgMarkerEndType)(XGL_CMD_BUFFER cmdBuffer);
Chia-I Wu68a55242014-08-01 11:18:21 +0800120
121XGL_RESULT XGLAPI xglDbgSetValidationLevel(
122 XGL_DEVICE device,
123 XGL_VALIDATION_LEVEL validationLevel);
124
125XGL_RESULT XGLAPI xglDbgRegisterMsgCallback(
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600126 XGL_INSTANCE instance,
Chia-I Wu68a55242014-08-01 11:18:21 +0800127 XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600128 void* pUserData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800129
130XGL_RESULT XGLAPI xglDbgUnregisterMsgCallback(
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600131 XGL_INSTANCE instance,
Chia-I Wu68a55242014-08-01 11:18:21 +0800132 XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
133
134XGL_RESULT XGLAPI xglDbgSetMessageFilter(
135 XGL_DEVICE device,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600136 int32_t msgCode,
Chia-I Wu68a55242014-08-01 11:18:21 +0800137 XGL_DBG_MSG_FILTER filter);
138
139XGL_RESULT XGLAPI xglDbgSetObjectTag(
140 XGL_BASE_OBJECT object,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600141 size_t tagSize,
142 const void* pTag);
Chia-I Wu68a55242014-08-01 11:18:21 +0800143
144XGL_RESULT XGLAPI xglDbgSetGlobalOption(
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600145 XGL_INSTANCE instance,
Chia-I Wu68a55242014-08-01 11:18:21 +0800146 XGL_DBG_GLOBAL_OPTION dbgOption,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600147 size_t dataSize,
148 const void* pData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800149
150XGL_RESULT XGLAPI xglDbgSetDeviceOption(
151 XGL_DEVICE device,
152 XGL_DBG_DEVICE_OPTION dbgOption,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600153 size_t dataSize,
154 const void* pData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800155
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600156void XGLAPI xglCmdDbgMarkerBegin(
Chia-I Wu68a55242014-08-01 11:18:21 +0800157 XGL_CMD_BUFFER cmdBuffer,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600158 const char* pMarker);
Chia-I Wu68a55242014-08-01 11:18:21 +0800159
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600160void XGLAPI xglCmdDbgMarkerEnd(
Chia-I Wu68a55242014-08-01 11:18:21 +0800161 XGL_CMD_BUFFER cmdBuffer);
162
163#ifdef __cplusplus
164}; // extern "C"
165#endif // __cplusplus
166
167#endif // __XGLDBG_H__