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

@@ -8,6 +8,7 @@
#include <array>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <span>
#include <vector>
@@ -116,6 +117,21 @@ struct DocumentFrameCompositeResult {
std::size_t face_payload_count = 0;
};
struct DocumentFrameUploadRequest {
const pp::document::CanvasDocument* document = nullptr;
std::size_t frame_index = 0;
pp::paint::Rgba clear_color {};
bool transition_to_shader_read = true;
};
struct DocumentFrameUploadResult {
DocumentFrameCompositeResult composite {};
std::array<std::unique_ptr<pp::renderer::ITexture2D>, pp::document::cube_face_count> face_textures {};
std::size_t texture_count = 0;
std::size_t transition_count = 0;
std::uint64_t uploaded_bytes = 0;
};
[[nodiscard]] pp::foundation::Status composite_layer(
std::span<pp::paint::Rgba> destination,
pp::renderer::Extent2D extent,
@@ -127,6 +143,10 @@ struct DocumentFrameCompositeResult {
[[nodiscard]] pp::foundation::Result<DocumentFrameCompositeResult> composite_document_frame(
DocumentFrameCompositeRequest request);
[[nodiscard]] pp::foundation::Result<DocumentFrameUploadResult> upload_document_frame_faces(
pp::renderer::IRenderDevice& device,
DocumentFrameUploadRequest request);
[[nodiscard]] bool stroke_composite_requires_feedback(
pp::paint::BlendMode layer_blend_mode,
pp::paint::StrokeBlendMode stroke_blend_mode,