pub struct RenderDtypeSupport {
pub f32: bool,
pub f16: bool,
}Expand description
Reports which float-color-buffer extensions the GPU backend detected.
Returned by ImageProcessor::supported_render_dtypes; the two flags
are independent.
Linux: reflects the real probe results from GL_EXT_color_buffer_half_float
and GL_EXT_color_buffer_float. On V3D (RPi 5) and Mali-G310 (i.MX 95)
both flags are typically true; on Vivante GC7000UL both are forced
false (float readback measured 170–320 ms — disabled). Tegra Orin
exposes both via PBO; the flags match the GPU report.
macOS (ANGLE): f16 == true gates the RGBA16F-packed IOSurface
path for F16 PlanarRgb destinations. f32 reflects the GL
extension probe but is not actionable — ANGLE’s
EGL_ANGLE_iosurface_client_buffer rejects every (GL_FLOAT, *)
combination with EGL_BAD_ATTRIBUTE, so there is no F32 IOSurface
path.
Regardless of these flags, ImageProcessor::convert never returns
an error due to float capability — it falls back to CPU when the GPU
path is unavailable.
Fields§
§f32: boolGL_EXT_color_buffer_float is available on the current GPU.
On Linux, true enables F32 Rgb NHWC PBO readback. On macOS
this flag is informational only — no F32 IOSurface path exists.
f16: boolGL_EXT_color_buffer_half_float is available on the current GPU.
On Linux, true enables F16 PlanarRgb NCHW PBO readback and,
on V3D/Mali, zero-copy DMA-BUF render. On macOS, true enables
F16 PlanarRgb via RGBA16F-packed IOSurface (zero-copy).
Trait Implementations§
Source§impl Clone for RenderDtypeSupport
impl Clone for RenderDtypeSupport
Source§fn clone(&self) -> RenderDtypeSupport
fn clone(&self) -> RenderDtypeSupport
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RenderDtypeSupport
Source§impl Debug for RenderDtypeSupport
impl Debug for RenderDtypeSupport
Source§impl Default for RenderDtypeSupport
impl Default for RenderDtypeSupport
Source§fn default() -> RenderDtypeSupport
fn default() -> RenderDtypeSupport
impl Eq for RenderDtypeSupport
Source§impl PartialEq for RenderDtypeSupport
impl PartialEq for RenderDtypeSupport
Source§fn eq(&self, other: &RenderDtypeSupport) -> bool
fn eq(&self, other: &RenderDtypeSupport) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for RenderDtypeSupport
Auto Trait Implementations§
impl Freeze for RenderDtypeSupport
impl RefUnwindSafe for RenderDtypeSupport
impl Send for RenderDtypeSupport
impl Sync for RenderDtypeSupport
impl Unpin for RenderDtypeSupport
impl UnsafeUnpin for RenderDtypeSupport
impl UnwindSafe for RenderDtypeSupport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.