blob: 41b4b3baf7deabb6fcc6256d9ebf536a97d5d06d [file] [log] [blame]
#ifndef __XGLDBG_H__
#define __XGLDBG_H__
#include <xgl.h>
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
typedef enum _XGL_DBG_MSG_TYPE
{
XGL_DBG_MSG_UNKNOWN = 0x0,
XGL_DBG_MSG_ERROR = 0x1,
XGL_DBG_MSG_WARNING = 0x2,
XGL_DBG_MSG_PERF_WARNING = 0x3,
XGL_DBG_MSG_TYPE_BEGIN_RANGE = XGL_DBG_MSG_UNKNOWN,
XGL_DBG_MSG_TYPE_END_RANGE = XGL_DBG_MSG_PERF_WARNING,
XGL_NUM_DBG_MSG_TYPE = (XGL_DBG_MSG_TYPE_END_RANGE - XGL_DBG_MSG_TYPE_BEGIN_RANGE + 1),
} XGL_DBG_MSG_TYPE;
typedef enum _XGL_DBG_MSG_FILTER
{
XGL_DBG_MSG_FILTER_NONE = 0x0,
XGL_DBG_MSG_FILTER_REPEATED = 0x1,
XGL_DBG_MSG_FILTER_ALL = 0x2,
XGL_DBG_MSG_FILTER_BEGIN_RANGE = XGL_DBG_MSG_FILTER_NONE,
XGL_DBG_MSG_FILTER_END_RANGE = XGL_DBG_MSG_FILTER_ALL,
XGL_NUM_DBG_MSG_FILTER = (XGL_DBG_MSG_FILTER_END_RANGE - XGL_DBG_MSG_FILTER_BEGIN_RANGE + 1),
} XGL_DBG_MSG_FILTER;
typedef enum _XGL_DBG_GLOBAL_OPTION
{
XGL_DBG_OPTION_DEBUG_ECHO_ENABLE = 0x0,
XGL_DBG_OPTION_BREAK_ON_ERROR = 0x1,
XGL_DBG_OPTION_BREAK_ON_WARNING = 0x2,
XGL_DBG_GLOBAL_OPTION_BEGIN_RANGE = XGL_DBG_OPTION_DEBUG_ECHO_ENABLE,
XGL_DBG_GLOBAL_OPTION_END_RANGE = XGL_DBG_OPTION_BREAK_ON_WARNING,
XGL_NUM_DBG_GLOBAL_OPTION = (XGL_DBG_GLOBAL_OPTION_END_RANGE - XGL_DBG_GLOBAL_OPTION_BEGIN_RANGE + 1),
} XGL_DBG_GLOBAL_OPTION;
typedef enum _XGL_DBG_DEVICE_OPTION
{
XGL_DBG_OPTION_DISABLE_PIPELINE_LOADS = 0x0,
XGL_DBG_OPTION_FORCE_OBJECT_MEMORY_REQS = 0x1,
XGL_DBG_OPTION_FORCE_LARGE_IMAGE_ALIGNMENT = 0x2,
XGL_DBG_DEVICE_OPTION_BEGIN_RANGE = XGL_DBG_OPTION_DISABLE_PIPELINE_LOADS,
XGL_DBG_DEVICE_OPTION_END_RANGE = XGL_DBG_OPTION_FORCE_LARGE_IMAGE_ALIGNMENT,
XGL_NUM_DBG_DEVICE_OPTION = (XGL_DBG_DEVICE_OPTION_END_RANGE - XGL_DBG_DEVICE_OPTION_BEGIN_RANGE + 1),
} XGL_DBG_DEVICE_OPTION;
typedef enum _XGL_DBG_OBJECT_TYPE
{
XGL_DBG_OBJECT_UNKNOWN = 0x00,
XGL_DBG_OBJECT_DEVICE = 0x01,
XGL_DBG_OBJECT_QUEUE = 0x02,
XGL_DBG_OBJECT_GPU_MEMORY = 0x03,
XGL_DBG_OBJECT_IMAGE = 0x04,
XGL_DBG_OBJECT_IMAGE_VIEW = 0x05,
XGL_DBG_OBJECT_COLOR_TARGET_VIEW = 0x06,
XGL_DBG_OBJECT_DEPTH_STENCIL_VIEW = 0x07,
XGL_DBG_OBJECT_SHADER = 0x08,
XGL_DBG_OBJECT_GRAPHICS_PIPELINE = 0x09,
XGL_DBG_OBJECT_COMPUTE_PIPELINE = 0x0a,
XGL_DBG_OBJECT_SAMPLER = 0x0b,
XGL_DBG_OBJECT_DESCRIPTOR_SET = 0x0c,
XGL_DBG_OBJECT_VIEWPORT_STATE = 0x0d,
XGL_DBG_OBJECT_RASTER_STATE = 0x0e,
XGL_DBG_OBJECT_MSAA_STATE = 0x0f,
XGL_DBG_OBJECT_COLOR_BLEND_STATE = 0x10,
XGL_DBG_OBJECT_DEPTH_STENCIL_STATE = 0x11,
XGL_DBG_OBJECT_CMD_BUFFER = 0x12,
XGL_DBG_OBJECT_FENCE = 0x13,
XGL_DBG_OBJECT_SEMAPHORE = 0x14,
XGL_DBG_OBJECT_EVENT = 0x15,
XGL_DBG_OBJECT_QUERY_POOL = 0x16,
XGL_DBG_OBJECT_SHARED_GPU_MEMORY = 0x17,
XGL_DBG_OBJECT_SHARED_SEMAPHORE = 0x18,
XGL_DBG_OBJECT_PEER_GPU_MEMORY = 0x19,
XGL_DBG_OBJECT_PEER_IMAGE = 0x1a,
XGL_DBG_OBJECT_PINNED_GPU_MEMORY = 0x1b,
XGL_DBG_OBJECT_INTERNAL_GPU_MEMORY = 0x1c,
XGL_DBG_OBJECT_FRAMEBUFFER = 0x1d,
XGL_DBG_OBJECT_RENDER_PASS = 0x1e,
XGL_DBG_OBJECT_INSTANCE,
XGL_DBG_OBJECT_BUFFER,
XGL_DBG_OBJECT_BUFFER_VIEW,
XGL_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT,
XGL_DBG_OBJECT_DESCRIPTOR_SET_LAYOUT_CHAIN,
XGL_DBG_OBJECT_DESCRIPTOR_POOL,
XGL_DBG_OBJECT_TYPE_BEGIN_RANGE = XGL_DBG_OBJECT_UNKNOWN,
XGL_DBG_OBJECT_TYPE_END_RANGE = XGL_DBG_OBJECT_DESCRIPTOR_POOL,
XGL_NUM_DBG_OBJECT_TYPE = (XGL_DBG_OBJECT_TYPE_END_RANGE - XGL_DBG_OBJECT_TYPE_BEGIN_RANGE + 1),
} XGL_DBG_OBJECT_TYPE;
typedef void (XGLAPI *XGL_DBG_MSG_CALLBACK_FUNCTION)(
XGL_DBG_MSG_TYPE msgType,
XGL_VALIDATION_LEVEL validationLevel,
XGL_BASE_OBJECT srcObject,
size_t location,
int32_t msgCode,
const char* pMsg,
void* pUserData);
// Debug functions
typedef XGL_RESULT (XGLAPI *xglDbgSetValidationLevelType)(XGL_DEVICE device, XGL_VALIDATION_LEVEL validationLevel);
typedef XGL_RESULT (XGLAPI *xglDbgRegisterMsgCallbackType)(XGL_INSTANCE instance, XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback, void* pUserData);
typedef XGL_RESULT (XGLAPI *xglDbgUnregisterMsgCallbackType)(XGL_INSTANCE instance, XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
typedef XGL_RESULT (XGLAPI *xglDbgSetMessageFilterType)(XGL_DEVICE device, int32_t msgCode, XGL_DBG_MSG_FILTER filter);
typedef XGL_RESULT (XGLAPI *xglDbgSetObjectTagType)(XGL_BASE_OBJECT object, size_t tagSize, const void* pTag);
typedef XGL_RESULT (XGLAPI *xglDbgSetGlobalOptionType)(XGL_INSTANCE instance, XGL_DBG_GLOBAL_OPTION dbgOption, size_t dataSize, const void* pData);
typedef XGL_RESULT (XGLAPI *xglDbgSetDeviceOptionType)(XGL_DEVICE device, XGL_DBG_DEVICE_OPTION dbgOption, size_t dataSize, const void* pData);
typedef void (XGLAPI *xglCmdDbgMarkerBeginType)(XGL_CMD_BUFFER cmdBuffer, const char* pMarker);
typedef void (XGLAPI *xglCmdDbgMarkerEndType)(XGL_CMD_BUFFER cmdBuffer);
XGL_RESULT XGLAPI xglDbgSetValidationLevel(
XGL_DEVICE device,
XGL_VALIDATION_LEVEL validationLevel);
XGL_RESULT XGLAPI xglDbgRegisterMsgCallback(
XGL_INSTANCE instance,
XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback,
void* pUserData);
XGL_RESULT XGLAPI xglDbgUnregisterMsgCallback(
XGL_INSTANCE instance,
XGL_DBG_MSG_CALLBACK_FUNCTION pfnMsgCallback);
XGL_RESULT XGLAPI xglDbgSetMessageFilter(
XGL_DEVICE device,
int32_t msgCode,
XGL_DBG_MSG_FILTER filter);
XGL_RESULT XGLAPI xglDbgSetObjectTag(
XGL_BASE_OBJECT object,
size_t tagSize,
const void* pTag);
XGL_RESULT XGLAPI xglDbgSetGlobalOption(
XGL_INSTANCE instance,
XGL_DBG_GLOBAL_OPTION dbgOption,
size_t dataSize,
const void* pData);
XGL_RESULT XGLAPI xglDbgSetDeviceOption(
XGL_DEVICE device,
XGL_DBG_DEVICE_OPTION dbgOption,
size_t dataSize,
const void* pData);
void XGLAPI xglCmdDbgMarkerBegin(
XGL_CMD_BUFFER cmdBuffer,
const char* pMarker);
void XGLAPI xglCmdDbgMarkerEnd(
XGL_CMD_BUFFER cmdBuffer);
#ifdef __cplusplus
}; // extern "C"
#endif // __cplusplus
#endif // __XGLDBG_H__