Add renderer trace scope contract

This commit is contained in:
2026-06-02 16:55:23 +02:00
parent 07293c0590
commit bbe3db1747
9 changed files with 305 additions and 101 deletions

View File

@@ -575,13 +575,48 @@ RecordingRenderTrace::RecordingRenderTrace(std::vector<RecordedRenderCommand>& c
{
}
void RecordingRenderTrace::marker(const char* component, const char* name) noexcept
pp::foundation::Status RecordingRenderTrace::marker(const char* component, const char* name) noexcept
{
const auto status = validate_trace_label(component, name);
if (!status.ok()) {
return status;
}
push_command(commands_, RecordedRenderCommand {
.kind = RecordedRenderCommandKind::trace_marker,
.component = non_null_name(component),
.name = non_null_name(name),
});
return pp::foundation::Status::success();
}
pp::foundation::Status RecordingRenderTrace::begin_scope(const char* component, const char* name) noexcept
{
const auto status = validate_trace_label(component, name);
if (!status.ok()) {
return status;
}
push_command(commands_, RecordedRenderCommand {
.kind = RecordedRenderCommandKind::trace_begin_scope,
.component = non_null_name(component),
.name = non_null_name(name),
});
++scope_depth_;
return pp::foundation::Status::success();
}
pp::foundation::Status RecordingRenderTrace::end_scope() noexcept
{
if (scope_depth_ == 0U) {
return pp::foundation::Status::invalid_argument("trace scope has not begun");
}
push_command(commands_, RecordedRenderCommand {
.kind = RecordedRenderCommandKind::trace_end_scope,
});
--scope_depth_;
return pp::foundation::Status::success();
}
RecordingRenderDevice::RecordingRenderDevice() noexcept
@@ -731,6 +766,10 @@ const char* recorded_render_command_kind_name(RecordedRenderCommandKind kind) no
return "end_render_pass";
case RecordedRenderCommandKind::trace_marker:
return "trace_marker";
case RecordedRenderCommandKind::trace_begin_scope:
return "trace_begin_scope";
case RecordedRenderCommandKind::trace_end_scope:
return "trace_end_scope";
}
return "unknown";