gfx_hal/command/structs.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
use crate::{buffer, image};
use std::ops::Range;
/// Specifies a source region and a destination
/// region in a buffer for copying. All values
/// are in units of bytes.
#[derive(Clone, Copy, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct BufferCopy {
/// Buffer region source offset.
pub src: buffer::Offset,
/// Buffer region destination offset.
pub dst: buffer::Offset,
/// Region size.
pub size: buffer::Offset,
}
/// Bundles together all the parameters needed to copy data from one `Image`
/// to another.
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ImageCopy {
/// The image subresource to copy from.
pub src_subresource: image::SubresourceLayers,
/// The source offset.
pub src_offset: image::Offset,
/// The image subresource to copy to.
pub dst_subresource: image::SubresourceLayers,
/// The destination offset.
pub dst_offset: image::Offset,
/// The extent of the region to copy.
pub extent: image::Extent,
}
/// Bundles together all the parameters needed to copy a buffer
/// to an image or vice-versa.
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct BufferImageCopy {
/// Buffer offset in bytes.
pub buffer_offset: buffer::Offset,
/// Width of a buffer 'row' in texels.
pub buffer_width: u32,
/// Height of a buffer 'image slice' in texels.
pub buffer_height: u32,
/// The image subresource.
pub image_layers: image::SubresourceLayers,
/// The offset of the portion of the image to copy.
pub image_offset: image::Offset,
/// Size of the portion of the image to copy.
pub image_extent: image::Extent,
}
/// Parameters for an image resolve operation,
/// where a multi-sampled image is copied into a single-sampled
/// image.
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ImageResolve {
/// Source image and layers.
pub src_subresource: image::SubresourceLayers,
/// Source image offset.
pub src_offset: image::Offset,
/// Destination image and layers.
pub dst_subresource: image::SubresourceLayers,
/// Destination image offset.
pub dst_offset: image::Offset,
/// Image extent.
pub extent: image::Extent,
}
/// Parameters for an image blit operation, where a portion of one image
/// is copied into another, possibly with scaling and filtering.
#[derive(Clone, Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct ImageBlit {
/// Source image and layers.
pub src_subresource: image::SubresourceLayers,
/// Source image bounds.
pub src_bounds: Range<image::Offset>,
/// Destination image and layers.
pub dst_subresource: image::SubresourceLayers,
/// Destination image bounds.
pub dst_bounds: Range<image::Offset>,
}