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

Aggregate conversion, rasterization, and upload work shared by a render frame. More...

#include "donner/svg/renderer/RendererInterface.h"

Classes

struct  Cost
class  PathMeasurementReservation
 Exclusive reservation for one bounded path-measurement query. More...

Public Member Functions

void reset ()
void reject ()
void setGradientStopLimitForTesting (std::size_t maximum)
bool reserve (const Cost &cost)
std::optional< PathMeasurementReservationreservePathMeasurement ()
 Reserves all remaining path-measurement work before a bounded query starts.
bool reconcilePathMeasurement (const PathMeasurementReservation &reservation, std::size_t actualWorkUnits, bool completed)
 Reconciles an exclusive path-measurement reservation to work actually consumed.
std::size_t drawCalls () const
std::size_t pathCommands () const
std::size_t pathMeasurementWorkUnits () const
std::size_t gradientStops () const
std::size_t imageDraws () const
std::uint64_t imageBytes () const
bool rejected () const

Static Public Attributes

static constexpr std::size_t kMaximumDrawCalls = 64 * 1024
static constexpr std::size_t kMaximumPathCommands = 256 * 1024
static constexpr std::size_t kMaximumPathMeasurementWorkUnits = Path::kMaximumGeometryQueryWork
static constexpr std::size_t kMaximumGradientStops = 256 * 1024
static constexpr std::size_t kMaximumImageDraws = 128
static constexpr std::uint64_t kMaximumImageBytes = 256ULL * 1024 * 1024

Detailed Description

Aggregate conversion, rasterization, and upload work shared by a render frame.


Class Documentation

◆ donner::svg::RendererDrawBudget::Cost

struct donner::svg::RendererDrawBudget::Cost
Class Members
size_t drawCalls = 0
size_t gradientStops = 0
uint64_t imageBytes = 0
size_t imageDraws = 0
size_t pathCommands = 0
size_t pathMeasurementWorkUnits = 0

Member Function Documentation

◆ reconcilePathMeasurement()

bool donner::svg::RendererDrawBudget::reconcilePathMeasurement ( const PathMeasurementReservation & reservation,
std::size_t actualWorkUnits,
bool completed )
inlinenodiscard

Reconciles an exclusive path-measurement reservation to work actually consumed.

An incomplete query consumes its reported work and rejects the aggregate budget.

◆ reservePathMeasurement()

std::optional< PathMeasurementReservation > donner::svg::RendererDrawBudget::reservePathMeasurement ( )
inlinenodiscard

Reserves all remaining path-measurement work before a bounded query starts.

The caller must pass the returned maximum to the query, then call reconcilePathMeasurement with the query's actual work and completion outcome.


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