dawn-cmake/docs/DebugMarkers.md
Brandon Jones 11d32c8095 Implementation of Debug Marker APIs
Introduces pushDebugGroup, popDebugGroup, and insertDebugMarker implementations
for Vulkan and Metal using VK_EXT_debug_marker and XCode, respectively.

Bug: dawn:44
Change-Id: I0ae56c4d67aa832123f27a1fcdddf65746261e57
Reviewed-on: https://dawn-review.googlesource.com/c/4241
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2019-02-20 20:21:00 +00:00

38 lines
1.4 KiB
Markdown

# 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.