Donner SVG main
0.8.0 ยท 382bd0190.8.0 main
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::geode::GeodeFrameGeometryBudget Class Reference

Aggregate encoded-geometry work retained by one renderer frame. More...

#include "donner/svg/renderer/geode/GeodeResourceBudget.h"

Classes

struct  Limits
 Caller-selected frame limits for draws, items, and retained bytes. More...

Public Member Functions

void reset ()
 Begin a new frame with zero charges and no latched rejection.
bool reserve (std::size_t draws, std::size_t items, std::uint64_t retainedBytes)
 Charge draw, item, and retained-byte work to the current frame.
void release (std::size_t draws, std::size_t items, std::uint64_t retainedBytes)
 Subtract charges when frame geometry is discarded, saturating each counter at zero.
void reject ()
 Latch the current frame as rejected after an external geometry failure.
void setLimitsForTesting (Limits limits)
 Tighten frame limits for a test; this never raises a production limit.
std::size_t draws () const
 Draw calls charged to the current frame.
std::size_t items () const
 Encoded geometry items charged to the current frame.
std::uint64_t retainedBytes () const
 Geometry bytes charged to the current frame.
bool rejected () const
 Whether frame geometry admission has been rejected.

Static Public Attributes

static constexpr std::size_t kMaximumDraws = 64u * 1024u
 Maximum encoded geometry draw calls admitted in one frame.
static constexpr std::size_t kMaximumItems = 4u << 20
 Sized with the text budget for about ten dense pages of instanced glyphs per frame.
static constexpr std::uint64_t kMaximumRetainedBytes = 256u << 20
 Maximum encoded geometry bytes retained for one frame.

Detailed Description

Aggregate encoded-geometry work retained by one renderer frame.


Class Documentation

◆ donner::geode::GeodeFrameGeometryBudget::Limits

struct donner::geode::GeodeFrameGeometryBudget::Limits

Caller-selected frame limits for draws, items, and retained bytes.

Class Members
size_t draws = kMaximumDraws Maximum draw calls.
size_t items = kMaximumItems Maximum encoded items.
uint64_t retainedBytes = kMaximumRetainedBytes Maximum retained bytes.

Member Function Documentation

◆ release()

void donner::geode::GeodeFrameGeometryBudget::release ( std::size_t draws,
std::size_t items,
std::uint64_t retainedBytes )
inline

Subtract charges when frame geometry is discarded, saturating each counter at zero.

Parameters
drawsDraw calls to release.
itemsEncoded items to release.
retainedBytesGeometry bytes to release.

◆ reserve()

bool donner::geode::GeodeFrameGeometryBudget::reserve ( std::size_t draws,
std::size_t items,
std::uint64_t retainedBytes )
inlinenodiscard

Charge draw, item, and retained-byte work to the current frame.

Parameters
drawsAdditional draw calls.
itemsAdditional encoded geometry items.
retainedBytesAdditional retained geometry bytes.
Returns
False if any limit is exceeded or the frame was already rejected.

◆ setLimitsForTesting()

void donner::geode::GeodeFrameGeometryBudget::setLimitsForTesting ( Limits limits)
inline

Tighten frame limits for a test; this never raises a production limit.

Parameters
limitsRequested upper bounds for each frame charge.

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