pub struct D3d11ImageLayout {
pub dxgi_format: u32,
pub texture_width: usize,
pub texture_height: usize,
pub bytes_per_texel: usize,
pub gl_internal_format: u32,
}Expand description
One texture’s format and geometry for a HAL image. texture_width and
texture_height are texels and rows, not image pixels: the packed rows
fold several pixels or several planes into one texel, and a semi-planar
row is the image’s row stride rather than its width.
Fields§
§dxgi_format: u32§texture_width: usize§texture_height: usize§bytes_per_texel: usize§gl_internal_format: u32Implementations§
Source§impl D3d11ImageLayout
impl D3d11ImageLayout
Sourcepub fn tight_row_bytes(&self) -> usize
pub fn tight_row_bytes(&self) -> usize
Bytes in one texture row, with no driver padding: the row a copy into or out of the texture moves.
This is the image’s own row for every format except a semi-planar one,
whose texture row is the stride and can exceed the image width (see
image_d3d11_layout). The image footprint of such a tensor is the
storage’s business, not this table’s, because only the storage still
knows the image width.
Sourcepub fn tight_bytes(&self) -> usize
pub fn tight_bytes(&self) -> usize
Bytes in the whole texture, padding-free: tight_row_bytes over every
row, with the same semi-planar caveat.
Sourcepub fn widened_to(&self, texture_width: usize) -> Self
pub fn widened_to(&self, texture_width: usize) -> Self
This layout with its rows widened to texture_width texels.
The one sanctioned edit of a table entry, and only for a semi-planar
row: its texture must be as wide as the row pitch the driver hands a
CPU map, and a pitch is a property of a created texture rather than of
the format, so the allocator probes for one and widens the entry here
(see D3d11TextureTensor::new_image). A wrapped external texture is
widened the same way, to the width its host chose.
A width below the entry’s own is not a widening and leaves it alone: the table’s width is the floor every consumer of the layout may assume.
Trait Implementations§
Source§impl Clone for D3d11ImageLayout
impl Clone for D3d11ImageLayout
impl Copy for D3d11ImageLayout
Source§impl Debug for D3d11ImageLayout
impl Debug for D3d11ImageLayout
impl Eq for D3d11ImageLayout
Source§impl PartialEq for D3d11ImageLayout
impl PartialEq for D3d11ImageLayout
impl StructuralPartialEq for D3d11ImageLayout
Auto Trait Implementations§
impl Freeze for D3d11ImageLayout
impl RefUnwindSafe for D3d11ImageLayout
impl Send for D3d11ImageLayout
impl Sync for D3d11ImageLayout
impl Unpin for D3d11ImageLayout
impl UnsafeUnpin for D3d11ImageLayout
impl UnwindSafe for D3d11ImageLayout
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<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 more