pub struct Round {
pub target: RoundTarget,
pub ops: Vec<RoundOp>,
pub released: Vec<PageParity>,
pub filter: Option<FilterPass>,
}Expand description
One render pass over one target.
A target is not a round: the surface, and a layer’s page, can each take several, and the rounds of one target run in the order they are listed with every one after the first loading what the one before it left.
Fields§
§target: RoundTargetWhat this pass renders into.
ops: Vec<RoundOp>The pass’s work, in execution order. Empty on a filter round, which issues no draw and composites nothing.
released: Vec<PageParity>Pages whose contents this round consumed; they return to the pool once it completes.
filter: Option<FilterPass>The filter pass this round runs, on a filter round.
A field rather than a RoundOp variant, and it stays one now that the
renderer executes filter rounds: a filter round is only a filter pass
— it draws nothing and composites nothing, and it is drawn through a
different pipeline, off a different instance buffer, with no viewport
uniform and no strip bind groups. Naming it here is what lets the frame
path branch on the round before it starts issuing a list, and keeps
RoundOp exactly the set of things one strip pass can interleave.
Implementations§
Source§impl Round
impl Round
Sourcepub fn page(&self) -> Option<&PageTarget>
pub fn page(&self) -> Option<&PageTarget>
The page this round renders into, or None for the surface.
Sourcepub fn filter_pass(&self) -> Option<&FilterPass>
pub fn filter_pass(&self) -> Option<&FilterPass>
The filter pass this round runs, or None on an ordinary round.
Sourcepub fn composites(&self) -> impl Iterator<Item = &Composite>
pub fn composites(&self) -> impl Iterator<Item = &Composite>
The composites this round performs, in execution order.
Sourcepub fn draw_count(&self) -> u32
pub fn draw_count(&self) -> u32
How many recorded draws this round issues.