Add renderer frame capture contract
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user