Struct vulkano::image::sys::UnsafeImage
source · pub struct UnsafeImage { /* private fields */ }
Expand description
A storage for pixels or arbitrary data.
Safety
This type is not just unsafe but very unsafe. Don’t use it directly.
- You must manually bind memory to the image with
bind_memory
. The memory must respect the requirements returned bynew
. - The memory that you bind to the image must be manually kept alive.
- The queue family ownership must be manually enforced.
- The usage must be manually enforced.
- The image layout must be manually enforced and transitioned.
Implementations
sourceimpl UnsafeImage
impl UnsafeImage
sourcepub unsafe fn new<'a, Mi, I>(
device: Arc<Device>,
usage: ImageUsage,
format: Format,
dimensions: ImageDimensions,
num_samples: u32,
mipmaps: Mi,
sharing: Sharing<I>,
linear_tiling: bool,
preinitialized_layout: bool
) -> Result<(UnsafeImage, MemoryRequirements), ImageCreationError>where
Mi: Into<MipmapsCount>,
I: Iterator<Item = u32>,
pub unsafe fn new<'a, Mi, I>(
device: Arc<Device>,
usage: ImageUsage,
format: Format,
dimensions: ImageDimensions,
num_samples: u32,
mipmaps: Mi,
sharing: Sharing<I>,
linear_tiling: bool,
preinitialized_layout: bool
) -> Result<(UnsafeImage, MemoryRequirements), ImageCreationError>where
Mi: Into<MipmapsCount>,
I: Iterator<Item = u32>,
Creates a new image and allocates memory for it.
Panic
- Panics if one of the dimensions is 0.
- Panics if the number of mipmaps is 0.
- Panics if the number of samples is 0.
sourcepub unsafe fn from_raw(
device: Arc<Device>,
handle: u64,
usage: u32,
format: Format,
dimensions: ImageDimensions,
samples: u32,
mipmaps: u32
) -> UnsafeImage
pub unsafe fn from_raw(
device: Arc<Device>,
handle: u64,
usage: u32,
format: Format,
dimensions: ImageDimensions,
samples: u32,
mipmaps: u32
) -> UnsafeImage
Creates an image from a raw handle. The image won’t be destroyed.
This function is for example used at the swapchain’s initialization.
pub unsafe fn bind_memory(
&self,
memory: &DeviceMemory,
offset: usize
) -> Result<(), OomError>
pub fn device(&self) -> &Arc<Device>
pub fn format(&self) -> Format
pub fn mipmap_levels(&self) -> u32
pub fn dimensions(&self) -> ImageDimensions
pub fn samples(&self) -> u32
sourcepub fn key(&self) -> u64
pub fn key(&self) -> u64
Returns a key unique to each UnsafeImage
. Can be used for the conflicts_key
method.
sourcepub unsafe fn color_linear_layout(&self, mip_level: u32) -> LinearLayout
pub unsafe fn color_linear_layout(&self, mip_level: u32) -> LinearLayout
Queries the layout of an image in memory. Only valid for images with linear tiling.
This function is only valid for images with a color format. See the other similar functions for the other aspects.
The layout is invariant for each image. However it is not cached, as this would waste memory in the case of non-linear-tiling images. You are encouraged to store the layout somewhere in order to avoid calling this semi-expensive function at every single memory access.
Note that while Vulkan allows querying the array layers other than 0, it is redundant as you can easily calculate the position of any layer.
Panic
- Panics if the mipmap level is out of range.
Safety
- The image must not have a depth, stencil or depth-stencil format.
- The image must have been created with linear tiling.
sourcepub unsafe fn depth_linear_layout(&self, mip_level: u32) -> LinearLayout
pub unsafe fn depth_linear_layout(&self, mip_level: u32) -> LinearLayout
sourcepub unsafe fn stencil_linear_layout(&self, mip_level: u32) -> LinearLayout
pub unsafe fn stencil_linear_layout(&self, mip_level: u32) -> LinearLayout
sourcepub fn supports_blit_source(&self) -> bool
pub fn supports_blit_source(&self) -> bool
Returns true if the image can be used as a source for blits.
sourcepub fn supports_blit_destination(&self) -> bool
pub fn supports_blit_destination(&self) -> bool
Returns true if the image can be used as a destination for blits.
sourcepub fn supports_linear_filtering(&self) -> bool
pub fn supports_linear_filtering(&self) -> bool
Returns true if the image can be sampled with a linear filtering.
pub fn usage_transfer_source(&self) -> bool
pub fn usage_transfer_destination(&self) -> bool
pub fn usage_sampled(&self) -> bool
pub fn usage_storage(&self) -> bool
pub fn usage_color_attachment(&self) -> bool
pub fn usage_depth_stencil_attachment(&self) -> bool
pub fn usage_transient_attachment(&self) -> bool
pub fn usage_input_attachment(&self) -> bool
Trait Implementations
sourceimpl Debug for UnsafeImage
impl Debug for UnsafeImage
sourceimpl Drop for UnsafeImage
impl Drop for UnsafeImage
sourceimpl VulkanObject for UnsafeImage
impl VulkanObject for UnsafeImage
sourceconst TYPE: DebugReportObjectTypeEXT = 10u32
const TYPE: DebugReportObjectTypeEXT = 10u32
DebugReportObjectTypeEXT
of the internal Vulkan handle.