blob: 41b4b3baf7deabb6fcc6256d9ebf536a97d5d06d [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,
Chia-I Wu41126e52015-03-26 15:27:55 +080094 XGL_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT_CHAIN,
Chia-I Wu985ba162015-03-26 13:14:16 +080095 XGL_DBG_OBJECT_DESCRIPTOR_POOL,
Chia-I Wu1a28fe02015-01-01 07:55:04 +080096
Chia-I Wu450a4232014-08-05 14:50:53 +080097 XGL_DBG_OBJECT_TYPE_BEGIN_RANGE = XGL_DBG_OBJECT_UNKNOWN,
Chia-I Wu985ba162015-03-26 13:14:16 +080098 XGL_DBG_OBJECT_TYPE_END_RANGE = XGL_DBG_OBJECT_DESCRIPTOR_POOL,
Chia-I Wu450a4232014-08-05 14:50:53 +080099 XGL_NUM_DBG_OBJECT_TYPE = (XGL_DBG_OBJECT_TYPE_END_RANGE - XGL_DBG_OBJECT_TYPE_BEGIN_RANGE + 1),
100} XGL_DBG_OBJECT_TYPE;
101
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600102typedef void (XGLAPI *XGL_DBG_MSG_CALLBACK_FUNCTION)(
Chia-I Wu68a55242014-08-01 11:18:21 +0800103 XGL_DBG_MSG_TYPE msgType,
104 XGL_VALIDATION_LEVEL validationLevel,
105 XGL_BASE_OBJECT srcObject,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600106 size_t location,
107 int32_t msgCode,
108 const char* pMsg,
109 void* pUserData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800110
111// Debug functions
Mark Lobodzinski391bb6d2015-01-09 15:12:03 -0600112typedef XGL_RESULT (XGLAPI *xglDbgSetValidationLevelType)(XGL_DEVICE device, XGL_VALIDATION_LEVEL validationLevel);
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600113typedef XGL_RESULT (XGLAPI *xglDbgRegisterMsgCallbackType)(XGL_INSTANCE instance, XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback, void* pUserData);
114typedef XGL_RESULT (XGLAPI *xglDbgUnregisterMsgCallbackType)(XGL_INSTANCE instance, XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600115typedef XGL_RESULT (XGLAPI *xglDbgSetMessageFilterType)(XGL_DEVICE device, int32_t msgCode, XGL_DBG_MSG_FILTER filter);
116typedef XGL_RESULT (XGLAPI *xglDbgSetObjectTagType)(XGL_BASE_OBJECT object, size_t tagSize, const void* pTag);
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600117typedef 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 -0600118typedef XGL_RESULT (XGLAPI *xglDbgSetDeviceOptionType)(XGL_DEVICE device, XGL_DBG_DEVICE_OPTION dbgOption, size_t dataSize, const void* pData);
119typedef void (XGLAPI *xglCmdDbgMarkerBeginType)(XGL_CMD_BUFFER cmdBuffer, const char* pMarker);
120typedef void (XGLAPI *xglCmdDbgMarkerEndType)(XGL_CMD_BUFFER cmdBuffer);
Chia-I Wu68a55242014-08-01 11:18:21 +0800121
122XGL_RESULT XGLAPI xglDbgSetValidationLevel(
123 XGL_DEVICE device,
124 XGL_VALIDATION_LEVEL validationLevel);
125
126XGL_RESULT XGLAPI xglDbgRegisterMsgCallback(
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600127 XGL_INSTANCE instance,
Chia-I Wu68a55242014-08-01 11:18:21 +0800128 XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600129 void* pUserData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800130
131XGL_RESULT XGLAPI xglDbgUnregisterMsgCallback(
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600132 XGL_INSTANCE instance,
Chia-I Wu68a55242014-08-01 11:18:21 +0800133 XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
134
135XGL_RESULT XGLAPI xglDbgSetMessageFilter(
136 XGL_DEVICE device,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600137 int32_t msgCode,
Chia-I Wu68a55242014-08-01 11:18:21 +0800138 XGL_DBG_MSG_FILTER filter);
139
140XGL_RESULT XGLAPI xglDbgSetObjectTag(
141 XGL_BASE_OBJECT object,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600142 size_t tagSize,
143 const void* pTag);
Chia-I Wu68a55242014-08-01 11:18:21 +0800144
145XGL_RESULT XGLAPI xglDbgSetGlobalOption(
Courtney Goeltzenleuchterc80a5572015-04-13 14:10:06 -0600146 XGL_INSTANCE instance,
Chia-I Wu68a55242014-08-01 11:18:21 +0800147 XGL_DBG_GLOBAL_OPTION dbgOption,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600148 size_t dataSize,
149 const void* pData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800150
151XGL_RESULT XGLAPI xglDbgSetDeviceOption(
152 XGL_DEVICE device,
153 XGL_DBG_DEVICE_OPTION dbgOption,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600154 size_t dataSize,
155 const void* pData);
Chia-I Wu68a55242014-08-01 11:18:21 +0800156
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600157void XGLAPI xglCmdDbgMarkerBegin(
Chia-I Wu68a55242014-08-01 11:18:21 +0800158 XGL_CMD_BUFFER cmdBuffer,
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600159 const char* pMarker);
Chia-I Wu68a55242014-08-01 11:18:21 +0800160
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600161void XGLAPI xglCmdDbgMarkerEnd(
Chia-I Wu68a55242014-08-01 11:18:21 +0800162 XGL_CMD_BUFFER cmdBuffer);
163
164#ifdef __cplusplus
165}; // extern "C"
166#endif // __cplusplus
167
168#endif // __XGLDBG_H__