| // |
| // File: vk_ext_debug_report.h |
| // |
| /* |
| * Copyright (c) 2015-2016 The Khronos Group Inc. |
| * Copyright (c) 2015-2016 Valve Corporation |
| * Copyright (c) 2015-2016 LunarG, 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(s) 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. |
| * |
| * Author: Cody Northrop <cody@lunarg.com> |
| * Author: Courtney Goeltzenleuchter <courtney@LunarG.com> |
| * Author: Tony Barbour <tony@LunarG.com> |
| * |
| */ |
| |
| #pragma once |
| |
| #include "vulkan.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif // __cplusplus |
| |
| /* |
| *************************************************************************************************** |
| * DebugReport Vulkan Extension API |
| *************************************************************************************************** |
| */ |
| |
| #define VK_EXT_debug_report 1 |
| VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) |
| |
| #define VK_EXT_DEBUG_REPORT_SPEC_VERSION 2 |
| #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" |
| |
| typedef enum VkDebugReportObjectTypeEXT { |
| VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, |
| VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, |
| VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, |
| VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, |
| VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, |
| VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, |
| VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, |
| VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, |
| VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, |
| VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, |
| VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, |
| VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, |
| VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, |
| VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, |
| VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, |
| VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, |
| VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, |
| VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, |
| VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, |
| VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, |
| VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, |
| VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, |
| VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, |
| VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, |
| VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, |
| VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, |
| VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, |
| VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, |
| VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28, |
| } VkDebugReportObjectTypeEXT; |
| |
| typedef enum VkDebugReportErrorEXT { |
| VK_DEBUG_REPORT_ERROR_NONE_EXT = 0, |
| VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1, |
| } VkDebugReportErrorEXT; |
| |
| typedef enum VkDebugReportFlagBitsEXT { |
| VK_DEBUG_REPORT_INFO_BIT_EXT = 0x00000001, |
| VK_DEBUG_REPORT_WARN_BIT_EXT = 0x00000002, |
| VK_DEBUG_REPORT_PERF_WARN_BIT_EXT = 0x00000004, |
| VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, |
| VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, |
| } VkDebugReportFlagBitsEXT; |
| typedef VkFlags VkDebugReportFlagsEXT; |
| |
| typedef VkBool32(VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( |
| VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, |
| uint64_t object, size_t location, int32_t messageCode, |
| const char *pLayerPrefix, const char *pMessage, void *pUserData); |
| |
| typedef struct VkDebugReportCallbackCreateInfoEXT { |
| VkStructureType sType; |
| const void *pNext; |
| VkDebugReportFlagsEXT flags; |
| PFN_vkDebugReportCallbackEXT pfnCallback; |
| void *pUserData; |
| } VkDebugReportCallbackCreateInfoEXT; |
| |
| typedef VkResult(VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)( |
| VkInstance instance, const VkDebugReportCallbackCreateInfoEXT *pCreateInfo, |
| const VkAllocationCallbacks *pAllocator, |
| VkDebugReportCallbackEXT *pCallback); |
| typedef void(VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)( |
| VkInstance instance, VkDebugReportCallbackEXT callback, |
| const VkAllocationCallbacks *pAllocator); |
| typedef void(VKAPI_PTR *PFN_vkDebugReportMessageEXT)( |
| VkInstance instance, VkDebugReportFlagsEXT flags, |
| VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, |
| int32_t messageCode, const char *pLayerPrefix, const char *pMessage); |
| |
| #ifndef VK_NO_PROTOTYPES |
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( |
| VkInstance instance, const VkDebugReportCallbackCreateInfoEXT *pCreateInfo, |
| const VkAllocationCallbacks *pAllocator, |
| VkDebugReportCallbackEXT *pCallback); |
| |
| VKAPI_ATTR void VKAPI_CALL |
| vkDestroyDebugReportCallbackEXT(VkInstance instance, |
| VkDebugReportCallbackEXT callback, |
| const VkAllocationCallbacks *pAllocator); |
| |
| VKAPI_ATTR void VKAPI_CALL |
| vkDebugReportMessageEXT(VkInstance instance, VkDebugReportFlagsEXT flags, |
| VkDebugReportObjectTypeEXT objectType, uint64_t object, |
| size_t location, int32_t messageCode, |
| const char *pLayerPrefix, const char *pMessage); |
| #endif |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif // __cplusplus |