pub trait GpuFrameRenderer: FrameRenderer<Image = RenderedTexture> {
// Required methods
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
The GPU renderer’s frame paths that end on the GPU: a YUV420 readback still to be mapped, and hardware-encoder NV12 planes.
Required Methods§
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 GpuFrameRenderer::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".