Debug Markers

Dawn provides debug tooling integration for each backend.

Debugging markers are exposed through this API:

partial GPUProgrammablePassEncoder {
    void pushDebugGroup(const char * markerLabel);
    void popDebugGroup();
    void insertDebugMarker(const char * markerLabel);
};

These APIs will result in silent no-ops if they are used without setting up the execution environment properly. Each backend has a specific process for setting up this environment.

D3D12

Debug markers are currently unimplemented on D3D12 pending resolution of a licensing issue.

Vulkan

Debug markers on Vulkan are implemented with VK_EXT_debug_marker.

To enable marker functionality, you must launch your application from your debugging tool. Attaching to an already running application is not supported.

Vulkan markers have been tested with RenderDoc.

Metal

Debug markers on Metal are used with the XCode debugger.

To enable marker functionality, you must launch your application from XCode and use GPU Frame Capture.

OpenGL

Debug markers on OpenGL are not implemented and will result in a silent no-op. This is due to low adoption of the GL_EXT_debug_marker extension in Linux device drivers.