|
|
Donner 0.5.1
Embeddable browser-grade SVG2 engine
|
Runtime configuration for ComplexityBucketer. More...
#include "donner/svg/compositor/ComplexityBucketer.h"
Public Attributes | |
| uint32_t | targetBucketCount = 4 |
| Total number of layer slots the bucketer is allowed to produce, including reserved slots. Design-doc target is K=4 across all backends for v1. | |
| uint32_t | reservedSlots = 1 |
| Slots reserved for non-bucket hint sources (interactive layer, animation, etc.). Subtracted from targetBucketCount to yield the usable bucket count. Default 1 leaves room for the interactive layer. | |
| uint32_t | filterPenalty = 16 |
| Per-subtree cost adder when any entity in the subtree has a filter (RenderingInstanceComponent::resolvedFilter.has_value()). | |
| uint32_t | maskPenalty = 8 |
| Per-subtree cost adder when any entity in the subtree has a mask (RenderingInstanceComponent::mask.has_value()). | |
| uint32_t | minCostToBucket = 1 |
| Minimum subtree cost to be worth bucketing. Subtrees with cost below this threshold stay in the root. Default 1 (bucket every top-level child) for parity with the initial unit-test behavior; production callers should raise this to avoid carving cheap leaf elements into their own layers, which costs more than it saves and exposes correctness edge cases in RendererDriver::drawEntityRange for standalone top-level elements. | |
Runtime configuration for ComplexityBucketer.
Defaults match the design doc's illustrative constants (see § Complexity Bucketing in 0025-composited_rendering.md). They are hand-tuned per Non-Goal 2 ("no ML or user-history heuristics") — adjust values based on benchmark results as the system matures.
| uint32_t donner::svg::compositor::ComplexityBucketerConfig::filterPenalty = 16 |
Per-subtree cost adder when any entity in the subtree has a filter (RenderingInstanceComponent::resolvedFilter.has_value()).
| uint32_t donner::svg::compositor::ComplexityBucketerConfig::maskPenalty = 8 |
Per-subtree cost adder when any entity in the subtree has a mask (RenderingInstanceComponent::mask.has_value()).
| uint32_t donner::svg::compositor::ComplexityBucketerConfig::minCostToBucket = 1 |
Minimum subtree cost to be worth bucketing. Subtrees with cost below this threshold stay in the root. Default 1 (bucket every top-level child) for parity with the initial unit-test behavior; production callers should raise this to avoid carving cheap leaf elements into their own layers, which costs more than it saves and exposes correctness edge cases in RendererDriver::drawEntityRange for standalone top-level elements.
| uint32_t donner::svg::compositor::ComplexityBucketerConfig::reservedSlots = 1 |
Slots reserved for non-bucket hint sources (interactive layer, animation, etc.). Subtracted from targetBucketCount to yield the usable bucket count. Default 1 leaves room for the interactive layer.
| uint32_t donner::svg::compositor::ComplexityBucketerConfig::targetBucketCount = 4 |
Total number of layer slots the bucketer is allowed to produce, including reserved slots. Design-doc target is K=4 across all backends for v1.