pub enum PlaneFormat {
Show 13 variants
R8,
R16,
RG8,
RG16,
RGBA8,
BGRA8,
RGBA16,
RGBA16F,
RGBA32F,
R16Uint,
R32Float,
RGBA16Uint,
RGB10A2,
}Expand description
Per-plane storage primitive. A plane’s PlaneFormat names the
smallest texture format a GPU upload would use for it; the shader
reinterprets the channels when needed (e.g. AYUV64LE uses RGBA16
storage with AYUV channel semantics).
Variants§
R8
R16
RG8
RG16
RGBA8
BGRA8
RGBA16
RGBA16F
RGBA32F
R16Uint
R32Float
RGBA16Uint
Four-channel 16-bit unsigned-integer RGBA (Rgba16Uint), 8 B/px. The
integer 4-channel storage primitive an already-colour multi-plane raw
frame uploads as (read via textureLoad — never sampler-normalised).
RGB10A2
Packed 10:10:10:2 unsigned-normalized RGBA (Rgb10a2Unorm), 4 B/px —
R in bits 0..10, G 10..20, B 20..30, A 30..32 (little-endian; DXGI
R10G10B10A2_UNORM / Vulkan A2B10G10R10_UNORM_PACK32). The HDR10
swapchain / render-target primitive (PixelFormat::Rgb10A2).
Implementations§
Source§impl PlaneFormat
impl PlaneFormat
Sourcepub const fn bytes_per_sample(self) -> u32
pub const fn bytes_per_sample(self) -> u32
Size in bytes of one stored texel of this plane format (all
channels). width_in_texels * bytes_per_sample() is the tight
row stride; every backend’s stride / buffer-length math derives
from this single table. RGBA16F is two bytes per channel (IEEE
half), matching RGBA16.
Sourcepub const fn requires_16bit_norm(self) -> bool
pub const fn requires_16bit_norm(self) -> bool
True when a texture of this plane format needs the
wgpu::Features::TEXTURE_FORMAT_16BIT_NORM adapter feature — the
three 16-bit normalized storage primitives (R16 → R16Unorm,
RG16 → Rg16Unorm, RGBA16 → Rgba16Unorm). The 16-bit integer
primitives (R16Uint, RGBA16Uint), the 16-bit float primitive
(RGBA16F → Rgba16Float), and every 8-/10-/32-bit primitive are core
wgpu formats and return false.
This is the single source of truth an interop import gate keys on: a
PixelFormat whose plane layout contains any such plane cannot be
zero-copy imported on a device without the feature (see
PixelFormat::requires_16bit_norm).
Sourcepub const fn to_wgpu_texture_format(self) -> TextureFormat
Available on crate feature wgpu only.
pub const fn to_wgpu_texture_format(self) -> TextureFormat
wgpu only.Canonical wgpu equivalent of this per-plane storage primitive.
Used at the wgpu-backend boundary where the type system needs the
real wgpu::TextureFormat (transient texture creation, pipeline
layout). Backend-agnostic code carries PlaneFormat instead.
Trait Implementations§
Source§impl Clone for PlaneFormat
impl Clone for PlaneFormat
impl Copy for PlaneFormat
Source§impl Debug for PlaneFormat
impl Debug for PlaneFormat
Source§impl<'de> Deserialize<'de> for PlaneFormat
Available on crate feature serde only.
impl<'de> Deserialize<'de> for PlaneFormat
serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for PlaneFormat
Source§impl Hash for PlaneFormat
impl Hash for PlaneFormat
Source§impl PartialEq for PlaneFormat
impl PartialEq for PlaneFormat
Source§impl Serialize for PlaneFormat
Available on crate feature serde only.
impl Serialize for PlaneFormat
serde only.impl StructuralPartialEq for PlaneFormat
Auto Trait Implementations§
impl Freeze for PlaneFormat
impl RefUnwindSafe for PlaneFormat
impl Send for PlaneFormat
impl Sync for PlaneFormat
impl Unpin for PlaneFormat
impl UnsafeUnpin for PlaneFormat
impl UnwindSafe for PlaneFormat
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.