Class EXTDebugReport


  • public class EXTDebugReport
    extends java.lang.Object
    Due to the nature of the Vulkan interface, there is very little error information available to the developer and application. By enabling optional validation layers and using the VK_EXT_debug_report extension, developers can obtain much more detailed feedback on the application's use of Vulkan. This extension defines a way for layers and the implementation to call back to the application for events of interest to the application.
    Examples

    VK_EXT_debug_report allows an application to register multiple callbacks with the validation layers. Some callbacks may log the information to a file, others may cause a debug break point or other application defined behavior. An application can register callbacks even when no validation layers are enabled, but they will only be called for loader and, if implemented, driver events.

    To capture events that occur while creating or destroying an instance an application can link a VkDebugReportCallbackCreateInfoEXT structure to the pNext element of the VkInstanceCreateInfo structure given to CreateInstance. This callback is only valid for the duration of the CreateInstance and the DestroyInstance call. Use CreateDebugReportCallbackEXT to create persistent callback objects.

    Example uses: Create three callback objects. One will log errors and warnings to the debug console using Windows OutputDebugString. The second will cause the debugger to break at that callback when an error happens and the third will log warnings to stdout.

    
         VkResult res;
         VkDebugReportCallbackEXT cb1, cb2, cb3;
     
         VkDebugReportCallbackCreateInfoEXT callback1 = {
                 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,    // sType
                 NULL,                                                       // pNext
                 VK_DEBUG_REPORT_ERROR_BIT_EXT |                             // flags
                 VK_DEBUG_REPORT_WARNING_BIT_EXT,
                 myOutputDebugString,                                        // pfnCallback
                 NULL                                                        // pUserData
         };
         res = vkCreateDebugReportCallbackEXT(instance, &callback1, &cb1);
         if (res != VK_SUCCESS)
            // Do error handling for VK_ERROR_OUT_OF_MEMORY 
     
         callback.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT;
         callback.pfnCallback = myDebugBreak;
         callback.pUserData = NULL;
         res = vkCreateDebugReportCallbackEXT(instance, &callback, &cb2);
         if (res != VK_SUCCESS)
            // Do error handling for VK_ERROR_OUT_OF_MEMORY 
     
         VkDebugReportCallbackCreateInfoEXT callback3 = {
                 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,    // sType
                 NULL,                                                       // pNext
                 VK_DEBUG_REPORT_WARNING_BIT_EXT,                            // flags
                 mystdOutLogger,                                             // pfnCallback
                 NULL                                                        // pUserData
         };
         res = vkCreateDebugReportCallbackEXT(instance, &callback3, &cb3);
         if (res != VK_SUCCESS)
            // Do error handling for VK_ERROR_OUT_OF_MEMORY 
     
         ...
     
         // remove callbacks when cleaning up 
         vkDestroyDebugReportCallbackEXT(instance, cb1);
         vkDestroyDebugReportCallbackEXT(instance, cb2);
         vkDestroyDebugReportCallbackEXT(instance, cb3);
    Name String
    VK_EXT_debug_report
    Extension Type
    Instance extension
    Registered Extension Number
    12
    Revision
    9
    Extension and Version Dependencies
    • Requires Vulkan 1.0
    Deprecation state
    Contact
    Last Modified Date
    2017-09-12
    IP Status
    No known IP claims.
    Contributors
    • Courtney Goeltzenleuchter, LunarG
    • Dan Ginsburg, Valve
    • Jon Ashburn, LunarG
    • Mark Lobodzinski, LunarG