Struct nannou::wgpu::RowPaddedBuffer
source · pub struct RowPaddedBuffer { /* private fields */ }
Expand description
A wrapper around a wgpu buffer suitable for copying to and from Textures. Automatically handles the padding necessary for buffer-to-texture and texture-to-buffer copies.
Note: as of wgpu
0.6, texture-to-buffer and buffer-to-texture copies require that image rows
are padded to a multiple wgpu::COPY_BYTES_PER_ROW_ALIGNMENT
bytes. Note that this is a
requirement on the buffers, not on the textures! You can have textures of whatever size you
like, but when you copy them to/from a buffer, the buffer rows need padding. This is referred
to as “pitch alignment”.
In a RowPaddedBuffer
, the image is stored in row-major order, with rows padded at the end with
uninitialized bytes to reach the necessary size.
Implementations§
source§impl RowPaddedBuffer
impl RowPaddedBuffer
sourcepub fn from_image_buffer<P, Container>(
device: &Device,
image_buffer: &ImageBuffer<P, Container>
) -> RowPaddedBuffer
pub fn from_image_buffer<P, Container>( device: &Device, image_buffer: &ImageBuffer<P, Container> ) -> RowPaddedBuffer
Initialize from an image buffer (i.e. an image on CPU).
sourcepub async fn read<'b>(
&'b self
) -> Result<ImageReadMapping<'b>, BufferAsyncError>
pub async fn read<'b>( &'b self ) -> Result<ImageReadMapping<'b>, BufferAsyncError>
Asynchronously maps the buffer of bytes from GPU to host memory.
Note: The returned future will not be ready until the memory is mapped and the device is polled. You should not rely on the being ready immediately.
source§impl RowPaddedBuffer
impl RowPaddedBuffer
sourcepub fn new(
device: &Device,
width: u32,
height: u32,
usage: BufferUsages
) -> RowPaddedBuffer
pub fn new( device: &Device, width: u32, height: u32, usage: BufferUsages ) -> RowPaddedBuffer
Create a row-padded buffer on the device.
Width should be given in bytes.
sourcepub fn for_texture(
device: &Device,
texture: &Texture,
usage: BufferUsages
) -> RowPaddedBuffer
pub fn for_texture( device: &Device, texture: &Texture, usage: BufferUsages ) -> RowPaddedBuffer
Creates a buffer compatible with a 2d slice of the given texture.
sourcepub fn row_padding(&self) -> u32
pub fn row_padding(&self) -> u32
The padding of each row of this buffer.
sourcepub fn padded_width(&self) -> u32
pub fn padded_width(&self) -> u32
The width of the buffer, in bytes, INCLUDING padding bytes.
sourcepub fn write(&self, buf: &[u8])
pub fn write(&self, buf: &[u8])
Copy data into the padded buffer.
Will copy data_width
bytes of data into each row of the buffer, leaving the remainder
of the buffer unmodified.
The buffer usage must include BufferUsages::map_read()
.
sourcepub fn encode_copy_into(
&self,
encoder: &mut CommandEncoder,
destination: &Texture
)
pub fn encode_copy_into( &self, encoder: &mut CommandEncoder, destination: &Texture )
Encode a copy into a texture. Assumes the texture is 2d.
The copy will not be performed until the encoded command buffer is submitted.
sourcepub fn encode_copy_into_at(
&self,
encoder: &mut CommandEncoder,
destination: &Texture,
depth: u32
)
pub fn encode_copy_into_at( &self, encoder: &mut CommandEncoder, destination: &Texture, depth: u32 )
Encode a copy into a 3d texture at a given depth. Will copy this buffer (modulo padding) to a slice of the texture at the given depth.
The copy will not be performed until the encoded command buffer is submitted.
sourcepub fn encode_copy_from(&self, encoder: &mut CommandEncoder, source: &Texture)
pub fn encode_copy_from(&self, encoder: &mut CommandEncoder, source: &Texture)
Encode a copy from a texture.
The copy will not be performed until the encoded command buffer is submitted.
sourcepub fn encode_copy_from_at(
&self,
encoder: &mut CommandEncoder,
source: &Texture,
depth: u32
)
pub fn encode_copy_from_at( &self, encoder: &mut CommandEncoder, source: &Texture, depth: u32 )
Encode a copy from a 3d texture at a given depth. Will copy a slice of the texture to fill this whole buffer (modulo padding).
The copy will not be performed until the encoded command buffer is submitted.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for RowPaddedBuffer
impl Send for RowPaddedBuffer
impl Sync for RowPaddedBuffer
impl Unpin for RowPaddedBuffer
impl !UnwindSafe for RowPaddedBuffer
Blanket Implementations§
source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<Swp, Dwp, T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<Swp, Dwp, T>,
source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
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
source§impl<T, U> ConvertInto<U> for Twhere
U: ConvertFrom<T>,
impl<T, U> ConvertInto<U> for Twhere
U: ConvertFrom<T>,
source§fn convert_into(self) -> U
fn convert_into(self) -> U
source§fn convert_unclamped_into(self) -> U
fn convert_unclamped_into(self) -> U
source§fn try_convert_into(self) -> Result<U, OutOfBounds<U>>
fn try_convert_into(self) -> Result<U, OutOfBounds<U>>
OutOfBounds
error is returned which contains the unclamped color. Read more