Add renderer frame capture contract

This commit is contained in:
2026-06-02 15:18:04 +02:00
parent d37145660a
commit 818014127a
9 changed files with 138 additions and 14 deletions

View File

@@ -2279,10 +2279,18 @@ int record_render(int argc, char** argv)
return 2;
}
const auto capture_status = context.capture_frame(target, readback_buffer);
if (!capture_status.ok()) {
print_error("record-render", capture_status.message);
return 2;
}
std::size_t draw_commands = 0;
std::size_t readback_commands = 0;
std::size_t capture_commands = 0;
std::size_t trace_markers = 0;
std::uint64_t readback_bytes = 0;
std::uint64_t capture_bytes = 0;
const auto commands = device.commands();
for (const auto& command : commands) {
if (command.kind == pp::renderer::RecordedRenderCommandKind::draw) {
@@ -2290,6 +2298,9 @@ int record_render(int argc, char** argv)
} else if (command.kind == pp::renderer::RecordedRenderCommandKind::read_texture) {
++readback_commands;
readback_bytes += command.readback_bytes;
} else if (command.kind == pp::renderer::RecordedRenderCommandKind::capture_frame) {
++capture_commands;
capture_bytes += command.capture_bytes;
} else if (command.kind == pp::renderer::RecordedRenderCommandKind::trace_marker) {
++trace_markers;
}
@@ -2304,6 +2315,8 @@ int record_render(int argc, char** argv)
<< ",\"drawCommands\":" << draw_commands
<< ",\"readbackCommands\":" << readback_commands
<< ",\"readbackBytes\":" << readback_bytes
<< ",\"captureCommands\":" << capture_commands
<< ",\"captureBytes\":" << capture_bytes
<< ",\"traceMarkers\":" << trace_markers
<< ",\"first\":\""
<< pp::renderer::recorded_render_command_kind_name(commands.front().kind)