Upload document frame faces through renderer API

This commit is contained in:
2026-06-05 17:37:21 +02:00
parent 7c6c5f3e36
commit d0e023556b
9 changed files with 278 additions and 17 deletions

View File

@@ -10668,19 +10668,33 @@ int simulate_document_render(int argc, char** argv)
}
constexpr pp::paint::Rgba clear_color {};
const auto composited = pp::paint_renderer::composite_document_frame(
pp::paint_renderer::DocumentFrameCompositeRequest {
pp::renderer::RecordingRenderDevice render_device;
const auto uploaded = pp::paint_renderer::upload_document_frame_faces(
render_device,
pp::paint_renderer::DocumentFrameUploadRequest {
.document = &document_result.value(),
.frame_index = args.frame,
.clear_color = clear_color,
});
if (!composited) {
print_error("simulate-document-render", composited.status().message);
if (!uploaded) {
print_error("simulate-document-render", uploaded.status().message);
return 2;
}
const auto& document = document_result.value();
const auto& result = composited.value();
const auto& uploaded_value = uploaded.value();
const auto& result = uploaded_value.composite;
std::size_t upload_command_count = 0;
std::size_t transition_command_count = 0;
for (const auto& command : render_device.commands()) {
if (command.kind == pp::renderer::RecordedRenderCommandKind::upload_texture) {
++upload_command_count;
}
if (command.kind == pp::renderer::RecordedRenderCommandKind::transition_texture) {
++transition_command_count;
}
}
std::cout << "{\"ok\":true,\"command\":\"simulate-document-render\""
<< ",\"source\":{\"width\":" << document.width()
<< ",\"height\":" << document.height()
@@ -10729,7 +10743,14 @@ int simulate_document_render(int argc, char** argv)
}
std::cout << "}";
}
std::cout << "]}}\n";
std::cout << "],\"upload\":{\"backend\":\"" << render_device.backend_name()
<< "\",\"textures\":" << uploaded_value.texture_count
<< ",\"bytes\":" << uploaded_value.uploaded_bytes
<< ",\"commands\":" << render_device.commands().size()
<< ",\"uploadCommands\":" << upload_command_count
<< ",\"transitionCommands\":" << transition_command_count
<< ",\"transitions\":" << uploaded_value.transition_count
<< "}}}\n";
return 0;
}