| # 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](https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#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](https://renderdoc.org/). | |
| ## 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](https://developer.apple.com/documentation/metal/tools_profiling_and_debugging/metal_gpu_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. |