pub trait FrameRenderer {
// Required methods
fn inspect_frame(
&self,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> RenderReport;
fn build_frame_graph<'a>(
&self,
size: RenderSize,
frame: &'a FrameDesc<'a>,
frames: &'a dyn FrameProvider,
) -> Result<FrameGraph<'a>, RenderError>;
fn render_frame(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> Result<FrameRender, RenderError>;
fn render_frame_yuv420p(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
) -> Result<FrameYuv420pRender, RenderError>;
fn render_frame_yuv420p_timed(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
timings: &mut FrameSubmitTimings,
) -> Result<FrameYuv420pRender, RenderError>;
}Expand description
Required Methods§
Sourcefn inspect_frame(
&self,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> RenderReport
fn inspect_frame( &self, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> RenderReport
Resolves the textures required by an evaluated frame.
This performs no fallback rendering: it is the common availability pass used by a real-time player (which may reuse an older image) and a deterministic exporter (which waits and retries).
Sourcefn build_frame_graph<'a>(
&self,
size: RenderSize,
frame: &'a FrameDesc<'a>,
frames: &'a dyn FrameProvider,
) -> Result<FrameGraph<'a>, RenderError>
fn build_frame_graph<'a>( &self, size: RenderSize, frame: &'a FrameDesc<'a>, frames: &'a dyn FrameProvider, ) -> Result<FrameGraph<'a>, RenderError>
Compiles one evaluator result into the render graph every render method below submits, without encoding GPU work.
The graph borrows the frame’s effect and parameter names and the provider’s textures; an incomplete source set returns its report and no graph.
§Errors
Returns RenderError when an effect is unknown or a visual or
caption is invalid.
Sourcefn render_frame(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
) -> Result<FrameRender, RenderError>
fn render_frame( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, ) -> Result<FrameRender, RenderError>
Renders one pure evaluator result using textures supplied by the host.
Source availability is checked before encoding GPU work. An incomplete attempt returns its missing-source report with no partially rendered texture, allowing real-time and deterministic runners to apply their own hold or wait policy.
§Errors
Returns RenderError when a visual or render target is invalid.
Sourcefn render_frame_yuv420p(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
) -> Result<FrameYuv420pRender, RenderError>
fn render_frame_yuv420p( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, ) -> Result<FrameYuv420pRender, RenderError>
Renders one evaluator result, converts it to YUV420, and submits both workloads in one command buffer.
An incomplete source set returns without encoding or submitting work. The output size must be even for chroma subsampling.
§Errors
Returns RenderError for invalid graph, target, or YUV layout data.
Sourcefn render_frame_yuv420p_timed(
&self,
size: RenderSize,
frame: &FrameDesc<'_>,
frames: &dyn FrameProvider,
encoding: YuvEncoding,
timings: &mut FrameSubmitTimings,
) -> Result<FrameYuv420pRender, RenderError>
fn render_frame_yuv420p_timed( &self, size: RenderSize, frame: &FrameDesc<'_>, frames: &dyn FrameProvider, encoding: YuvEncoding, timings: &mut FrameSubmitTimings, ) -> Result<FrameYuv420pRender, RenderError>
Renders one frame for YUV420 readback and reports where the call went.
This produces exactly what FrameRenderer::render_frame_yuv420p
produces; the only difference is that it reads a clock between stages
and writes the spans to timings. An incomplete source set leaves
timings holding only the stages that ran.
§Errors
Returns RenderError for invalid graph, target, or YUV layout data.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".