Add renderer trace scope contract
This commit is contained in:
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user