diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-04-04 12:13:28 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:33:28 +0800 |
| commit | 955dc488fd1e199d13d01c9f0155a5906170ac33 (patch) | |
| tree | f264f02af2ccb0704e8442dfbe9a30cc73063f7c /include | |
| parent | 109b29d7494847efee84a85650ed650dddda21fa (diff) | |
| download | usermoji-955dc488fd1e199d13d01c9f0155a5906170ac33.tar.xz | |
include: Add vk_dbg.h for the Dbg extension definitions
Diffstat (limited to 'include')
| -rw-r--r-- | include/vk_dbg.h | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/include/vk_dbg.h b/include/vk_dbg.h new file mode 100644 index 00000000..a1d96fdb --- /dev/null +++ b/include/vk_dbg.h @@ -0,0 +1,160 @@ +// +// File: vk_dbg.h +// +/* +** Copyright (c) 2015 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#ifndef __VK_DBG_H__ +#define __VK_DBG_H__ + +#include "vulkan.h" + +#define VK_DEBUG_REPORT_EXTENSION_NUMBER 2 +#define VK_DEBUG_MARKER_EXTENSION_NUMBER 3 +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + +/* +*************************************************************************************************** +* DebugReport and DebugMarker Vulkan Extension API +*************************************************************************************************** +*/ + +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDbgMsgCallback, VkObject) + +// ------------------------------------------------------------------------------------------------ +// Enumerations + +typedef enum VkDbgLevel_ +{ + VK_DBG_LEVEL_INFO_BIT = 0x00000001, + VK_DBG_LEVEL_WARN_BIT = 0x00000002, + VK_DBG_LEVEL_PERF_WARN_BIT = 0x00000004, + VK_DBG_LEVEL_ERROR_BIT = 0x00000008, + + VK_ENUM_RANGE(DBG_LEVEL, INFO_BIT, ERROR_BIT) +} VkDbgReportFlags; + +#define VK_DBG_ENUM_EXTEND(type,id) ((type)(VK_DEBUG_MARKER_EXTENSION_NUMBER * -1000 + (id)) + +#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_TAG VK_DBG_ENUM_EXTEND(VkObjectInfoType, 0) +#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_NAME VK_DBG_ENUM_EXTEND(VkObjectInfoType, 1) + +#define VK_OBJECT_TYPE_MSG_CALLBACK VK_DBG_ENUM_EXTEND(VkObjectType, 0) +// ------------------------------------------------------------------------------------------------ +// Vulkan function pointers + +typedef void (VKAPI *PFN_vkDbgMsgCallback)( + VkFlags msgFlags, + VkObjectType objType, + VkObject srcObject, + size_t location, + int32_t msgCode, + const char* pLayerPrefix, + const char* pMsg, + void* pUserData); + +// ------------------------------------------------------------------------------------------------ +// API functions + +typedef VkResult (VKAPI *PFN_vkDbgCreateMsgCallback)(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, const void* pUserData, const VkDbgMsgCallback* pMsgCallback); +typedef void (VKAPI *PFN_vkStringCallback)(VkFlags msgFlags, VkObjectType objType, VkObject srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); +typedef void (VKAPI *PFN_vkStdioCallback)(VkFlags msgFlags, VkObjectType objType, VkObject srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); +typedef void (VKAPI *PFN_vkBreakCallback)(VkFlags msgFlags, VkObjectType objType, VkObject srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); +typedef void (VKAPI *PFN_vkCmdDbgMarkerBegin)(VkCmdBuffer cmdBuffer, const char* pMarker); +typedef void (VKAPI *PFN_vkCmdDbgMarkerEnd)(VkCmdBuffer cmdBuffer); +typedef VkResult (VKAPI *PFN_vkDbgSetObjectTag)(VkDevice device, VkObjectType objType, VkObject object, size_t tagSize, const void* pTag); +typedef VkResult (VKAPI *PFN_vkDbgSetObjectName)(VkDevice device, VkObjectType objType, VkObject object, size_t nameSize, const char* pName); + +#ifdef VK_PROTOTYPES + +// DebugReport extension entrypoints +VkResult VKAPI vkDbgCreateMsgCallback( + VkInstance instance, + VkFlags msgFlags, + const PFN_vkDbgMsgCallback pfnMsgCallback, + const void* pUserData, + const VkDbgMsgCallback* pMsgCallback); + +// DebugReport utility callback functions +void VKAPI vkStringCallback( + VkFlags msgFlags, + VkObjectType objType, + VkObject srcObject, + size_t location, + int32_t msgCode, + const char* pLayerPrefix, + const char* pMsg, + void* pUserData); + +void VKAPI vkStdioCallback( + VkFlags msgFlags, + VkObjectType objType, + VkObject srcObject, + size_t location, + int32_t msgCode, + const char* pLayerPrefix, + const char* pMsg, + void* pUserData); + +void VKAPI vkBreakCallback( + VkFlags msgFlags, + VkObjectType objType, + VkObject srcObject, + size_t location, + int32_t msgCode, + const char* pLayerPrefix, + const char* pMsg, + void* pUserData); + +// DebugMarker extension entrypoints +void VKAPI vkCmdDbgMarkerBegin( + VkCmdBuffer cmdBuffer, + const char* pMarker); + +void VKAPI vkCmdDbgMarkerEnd( + VkCmdBuffer cmdBuffer); + +VkResult VKAPI vkDbgSetObjectTag( + VkDevice device, + VkObjectType objType, + VkObject object, + size_t tagSize, + const void* pTag); + +VkResult VKAPI vkDbgSetObjectName( + VkDevice device, + VkObjectType objType, + VkObject object, + size_t nameSize, + const char* pName); + +#endif // VK_PROTOTYPES + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +#endif // __VK_DBG_H__ |
