Share document export readiness reporting

This commit is contained in:
2026-06-05 20:19:46 +02:00
parent 2d33f9d928
commit ebc84373e6
9 changed files with 181 additions and 87 deletions

View File

@@ -104,18 +104,20 @@ pp::foundation::Result<LegacyDocumentExportSnapshotReports> prepare_legacy_docum
return pp::foundation::Result<LegacyDocumentExportSnapshotReports>::success(std::move(reports));
}
const auto recorded_upload = pp::paint_renderer::record_document_frame_upload(
pp::paint_renderer::DocumentFrameUploadRequest {
auto readiness = pp::paint_renderer::prepare_document_frame_export_readiness(
pp::paint_renderer::DocumentFrameCompositeRequest {
.document = &reports.snapshot.document,
.frame_index = reports.snapshot.document.active_frame_index(),
.clear_color = {},
});
if (!recorded_upload) {
LOG("%s document export renderer upload failed: %s", context, recorded_upload.status().message);
return pp::foundation::Result<LegacyDocumentExportSnapshotReports>::failure(recorded_upload.status());
if (!readiness) {
LOG("%s document export renderer readiness failed: %s", context, readiness.status().message);
return pp::foundation::Result<LegacyDocumentExportSnapshotReports>::failure(readiness.status());
}
const auto& uploaded = recorded_upload.value().upload;
auto readiness_value = std::move(readiness.value());
const auto& recorded_upload = readiness_value.recorded_upload;
const auto& uploaded = recorded_upload.upload;
LOG(
"%s document export renderer upload: textures=%zu bytes=%llu transitions=%zu facePayloads=%zu commands=%zu uploadCommands=%zu transitionCommands=%zu",
context,
@@ -123,28 +125,18 @@ pp::foundation::Result<LegacyDocumentExportSnapshotReports> prepare_legacy_docum
static_cast<unsigned long long>(uploaded.uploaded_bytes),
uploaded.transition_count,
uploaded.composite.face_payload_count,
recorded_upload.value().command_count,
recorded_upload.value().upload_command_count,
recorded_upload.value().transition_command_count);
const auto face_pngs = pp::paint_renderer::export_document_frame_face_pngs(
pp::paint_renderer::DocumentFrameCompositeRequest {
.document = &reports.snapshot.document,
.frame_index = reports.snapshot.document.active_frame_index(),
.clear_color = {},
});
if (!face_pngs) {
LOG("%s document export face PNG export failed: %s", context, face_pngs.status().message);
return pp::foundation::Result<LegacyDocumentExportSnapshotReports>::failure(face_pngs.status());
}
recorded_upload.command_count,
recorded_upload.upload_command_count,
recorded_upload.transition_command_count);
LOG(
"%s document export face PNG export: faces=%zu bytes=%llu facePayloads=%zu compositedLayerFaces=%zu",
context,
face_pngs.value().face_count,
static_cast<unsigned long long>(face_pngs.value().encoded_bytes),
face_pngs.value().composite.face_payload_count,
face_pngs.value().composite.composited_layer_face_count);
reports.face_pngs = std::move(face_pngs.value());
readiness_value.face_pngs.face_count,
static_cast<unsigned long long>(readiness_value.face_pngs.encoded_bytes),
readiness_value.face_pngs.composite.face_payload_count,
readiness_value.face_pngs.composite.composited_layer_face_count);
reports.face_pngs = std::move(readiness_value.face_pngs);
return pp::foundation::Result<LegacyDocumentExportSnapshotReports>::success(std::move(reports));
}

View File

@@ -481,6 +481,29 @@ pp::foundation::Result<DocumentFrameFacePngExportResult> export_document_frame_f
return pp::foundation::Result<DocumentFrameFacePngExportResult>::success(std::move(result));
}
pp::foundation::Result<DocumentFrameExportReadinessResult> prepare_document_frame_export_readiness(
DocumentFrameCompositeRequest request)
{
auto recorded_upload = record_document_frame_upload(DocumentFrameUploadRequest {
.document = request.document,
.frame_index = request.frame_index,
.clear_color = request.clear_color,
});
if (!recorded_upload) {
return pp::foundation::Result<DocumentFrameExportReadinessResult>::failure(recorded_upload.status());
}
auto face_pngs = export_document_frame_face_pngs(request);
if (!face_pngs) {
return pp::foundation::Result<DocumentFrameExportReadinessResult>::failure(face_pngs.status());
}
DocumentFrameExportReadinessResult result;
result.recorded_upload = std::move(recorded_upload.value());
result.face_pngs = std::move(face_pngs.value());
return pp::foundation::Result<DocumentFrameExportReadinessResult>::success(std::move(result));
}
bool stroke_composite_requires_feedback(
pp::paint::BlendMode layer_blend_mode,
pp::paint::StrokeBlendMode stroke_blend_mode,

View File

@@ -146,6 +146,11 @@ struct DocumentFrameFacePngExportResult {
std::uint64_t encoded_bytes = 0;
};
struct DocumentFrameExportReadinessResult {
RecordedDocumentFrameUploadResult recorded_upload {};
DocumentFrameFacePngExportResult face_pngs {};
};
[[nodiscard]] pp::foundation::Status composite_layer(
std::span<pp::paint::Rgba> destination,
pp::renderer::Extent2D extent,
@@ -167,6 +172,9 @@ struct DocumentFrameFacePngExportResult {
[[nodiscard]] pp::foundation::Result<DocumentFrameFacePngExportResult> export_document_frame_face_pngs(
DocumentFrameCompositeRequest request);
[[nodiscard]] pp::foundation::Result<DocumentFrameExportReadinessResult> prepare_document_frame_export_readiness(
DocumentFrameCompositeRequest request);
[[nodiscard]] bool stroke_composite_requires_feedback(
pp::paint::BlendMode layer_blend_mode,
pp::paint::StrokeBlendMode stroke_blend_mode,