#[non_exhaustive]pub enum NarrowPolicy {
Combined,
AutoOnModeset,
PerCrtc,
}Expand description
How to split a frame across the outputs it touches.
The policy shapes the groups partition_for_policy returns; each group
is one atomic commit for the caller to make.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Combined
Never split: one group, so one atomic commit, for every engaged scene.
The only policy that makes a multi-output frame atomic — either
every output shows the new frame or none does. What it costs is that
one output’s refusal takes the others down with it, and that a modeset
anywhere forces ALLOW_MODESET on the whole commit.
AutoOnModeset
Split only when the outputs disagree about modesetting.
The default, and the reason the policy exists. A modeset is expensive and can blank an output; a steady frame is neither. Committing them together makes every steady output pay the modeset’s cost, so when the set is mixed they go separately — modeset first, since a steady frame on an output that is about to be reconfigured is wasted work. When every engaged scene agrees, one commit, and the atomicity is kept.
PerCrtc
One commit per engaged scene, always.
Gives up cross-output atomicity to contain failure: an output that refuses its frame does not stop the others showing theirs. For a caller that would rather have three screens right and one wrong than four screens stale.