User markers
Since RRA 1.3 it has been possible to capture ray dispatch data from DirectX®12 and Vulkan applications. With RRA 1.7 it is possible to associate each dispatch with a user-defined string called a user marker.
They are meant to label sections of a frame’s rendering work to make it easier for developers to debug their applications with developer tools. User marker strings are pushed to a stack during command buffer recording, then when a ray tracing dispatch is recorded it will be associated with the current stack of user marker strings.
Required driver
- AMD Software: Adrenalin Edition 24.9.1 or above.
Required Radeon™ Developer Panel (RDP) features
- Currently you must enable both Raytracing and Profiling features before capturing the scene in Radeon Developer Panel (RDP) in order for user markers to be captured, as shown:
The RRA interface
In RRA, the user marker shows up in the Overview pane’s dispatch list as well as in the Ray pane’s dispatch tab.
- Dispatch names will be shown below the dispatch API call. Each string pushed to the stack is separated by a forward slash, and in the overview pane the most recent string pushed to the stack is shown on a new line, shown below:
- The Ray pane shows the user marker associated with the dispatch under the dispatch dropdown:
DirectX12 user markers
See the DirectX12 User Markers section in the RGP User Debug Markers documentation, which provides a comprehensive description of adding user markers to your application.
Vulkan user markers
See the Vulkan User Markers section in the RGP User Debug Markers documentation for some examples.
For the Vulkan example shown in the screenshots provided here, the order of commands would look like the following:
VkDebugUtilsLabelEXT label {
.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,
.pLabelName = "Frame 2854 Graphics CB",
.color = {0.0f, 0.0f, 0.0f, 1.0},
}
vkCmdBeginDebugUtilsLabelEXT(cmd, &label);
// Other commands recorded here.
label.pLabelName = "Vk_Renderer::draw";
vkCmdBeginDebugUtilsLabelEXT(cmd, &label);
// Other commands recorded here.
label.pLabelName = "Vk_Renderer::draw::Raytracing";
vkCmdBeginDebugUtilsLabelEXT(cmd, &label);
vkCmdTraceRaysKHR(cmd, &ray_table, &miss_table, &hit_table, &callable_table, 1920, 1080, 1);
vkCmdEndDebugUtilsLabelEXT(cmd);
vkCmdEndDebugUtilsLabelEXT(cmd);
vkCmdEndDebugUtilsLabelEXT(cmd);
Get the Radeon Developer Tool Suite today!
You can find out more about RRA, including links to the release binaries on GitHub and the full release notes list, on our product page.
Your feedback is incredibly valuable to us and helps drive the RRA roadmap forward, so if you want something and it makes sense then just let us know!