Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::editor::RenderResult Struct Reference

Presentation payload plus the document version it was rendered from. More...

#include "donner/editor/AsyncRenderer.h"

Classes

struct  WorkerTimingBreakdown
 Internal timing split for one async worker iteration. More...
struct  CompositedTile
 One composite tile from the worker's CompositorController:: snapshotCompositorTiles() snapshot. The editor uploads one GL texture per tile (keyed on id). The GL presenter composes those cached textures into one pane-sized presentation texture; the WebGPU presenter composites them directly into the framebuffer. Immediate tiles intentionally use transient ids and always carry a fresh payload. Geometry fields are doc-unit quantities so the editor can scale them by the current pixelsPerDocUnit during canvas-resize debouncing. More...
struct  CompositedPreview

Public Attributes

svg::RendererBitmap bitmap
std::optional< CompositedPreviewcompositedPreview
EditorRasterViewport rasterViewport
 Raster viewport used to produce this result.
ViewportState viewport
 Editor viewport rasterViewport was derived from, copied from the request.
bool overviewInfillOnly = false
 True when this result should update only retained overview infill.
std::uint64_t version = 0
std::uint64_t documentGeneration = 0
 Document generation captured by the render request.
double workerMs = 0.0
 Wall-clock milliseconds spent in the worker iteration after a request is dequeued, including CompositorController::renderFrame, final snapshot/readback work, and diagnostic snapshots that gate presentation. Reported so the editor can plot worker latency alongside ImGui frame time on the frame graph. Zero means no worker timing was recorded.
WorkerTimingBreakdown workerTiming
std::chrono::steady_clock::time_point workerCompletedAt
 Internal completion timestamp used to populate workerTiming.pollDelayMs on acceptance.

Detailed Description

Presentation payload plus the document version it was rendered from.


Class Documentation

◆ donner::editor::RenderResult::WorkerTimingBreakdown

struct donner::editor::RenderResult::WorkerTimingBreakdown

Internal timing split for one async worker iteration.

Class Members
double buildPreviewMs = 0.0 Time spent building composited-preview tile metadata/payloads.
double dequeueToStartMs = 0.0 Worker-thread preflight between dequeue and the measured render iteration.
bool deviceLost = false True when the worker's backend device has been declared lost, either by the driver or by a bounded GPU wait exceeding its deadline.
double diagnosticsMs = 0.0 Time spent copying compositor diagnostics for editor panels.
double finalSnapshotMs = 0.0 Time spent taking the final fallback canvas snapshot, when needed.
double pollDelayMs = 0.0 Time from worker result completion until the UI thread polls it.
double queueWaitMs = 0.0 Time from UI-thread request submission until the worker dequeues the request.
int readbackCount = 0 GPU-to-CPU readbacks performed by the worker renderer and its offscreen instances.
int readbackPollIterations = 0 Legacy device-poll iterations used while waiting for those readbacks.
double renderFrameMs = 0.0 Time spent in CompositorController::renderFrame.
double setupMs = 0.0 Time before CompositorController::renderFrame, including compositor selection setup.
int timedOutWaitMs = 0 Wall time that wait spent before giving up, in milliseconds.
GpuWaitTimeoutSite timedOutWaitSite = svg::GpuWaitTimeoutSite::None Which bounded GPU wait declared that loss, when a deadline did.
bool usedTimedWaitAny = false True when browser readbacks used the event-driven timed WaitAny path.
double wakeToPollMs = 0.0 Portion of pollDelayMs spent waiting for the UI thread's next frame after the result became pollable. This is the handoff's animation-frame phase wait.

Member Data Documentation

◆ bitmap

svg::RendererBitmap donner::editor::RenderResult::bitmap

◆ compositedPreview

std::optional<CompositedPreview> donner::editor::RenderResult::compositedPreview

◆ documentGeneration

std::uint64_t donner::editor::RenderResult::documentGeneration = 0

Document generation captured by the render request.

◆ overviewInfillOnly

bool donner::editor::RenderResult::overviewInfillOnly = false

True when this result should update only retained overview infill.

◆ rasterViewport

EditorRasterViewport donner::editor::RenderResult::rasterViewport

Raster viewport used to produce this result.

◆ version

std::uint64_t donner::editor::RenderResult::version = 0

◆ viewport

ViewportState donner::editor::RenderResult::viewport

Editor viewport rasterViewport was derived from, copied from the request.

◆ workerCompletedAt

std::chrono::steady_clock::time_point donner::editor::RenderResult::workerCompletedAt

Internal completion timestamp used to populate workerTiming.pollDelayMs on acceptance.

◆ workerMs

double donner::editor::RenderResult::workerMs = 0.0

Wall-clock milliseconds spent in the worker iteration after a request is dequeued, including CompositorController::renderFrame, final snapshot/readback work, and diagnostic snapshots that gate presentation. Reported so the editor can plot worker latency alongside ImGui frame time on the frame graph. Zero means no worker timing was recorded.

◆ workerTiming

WorkerTimingBreakdown donner::editor::RenderResult::workerTiming

The documentation for this struct was generated from the following file: