diff options
author | Jason Macnak <natsu@google.com> | 2021-09-08 17:34:26 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-09-08 17:34:26 +0000 |
commit | 15721e363ddf230eb45281365a43d0235a28950d (patch) | |
tree | 3c7a84d825c70fcf8bfe8d1d0d29be91c32bd737 /src/image/layout.rs | |
parent | d7fde7d22818ce4ba369b5da19ba9953b76cce48 (diff) | |
parent | badf994436f0a0dcd313d61988172ecac5ad4acc (diff) | |
download | vulkano-15721e363ddf230eb45281365a43d0235a28950d.tar.gz |
Import vulkano rust crate (attempt #2) am: 08bdde554c am: 7f5097d6a2 am: badf994436
Original change: https://android-review.googlesource.com/c/platform/external/rust/crates/vulkano/+/1818913
Change-Id: Iee62c85b489f55475d4ad6d30f9cc58eb864779e
Diffstat (limited to 'src/image/layout.rs')
-rw-r--r-- | src/image/layout.rs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/image/layout.rs b/src/image/layout.rs new file mode 100644 index 0000000..2e29f58 --- /dev/null +++ b/src/image/layout.rs @@ -0,0 +1,60 @@ +// Copyright (c) 2016 The vulkano developers +// Licensed under the Apache License, Version 2.0 +// <LICENSE-APACHE or +// https://www.apache.org/licenses/LICENSE-2.0> or the MIT +// license <LICENSE-MIT or https://opensource.org/licenses/MIT>, +// at your option. All files in the project carrying such +// notice may not be copied, modified, or distributed except +// according to those terms. + +/// Layout of an image. +/// +/// > **Note**: In vulkano, image layouts are mostly a low-level detail. You can ignore them, +/// > unless you use an unsafe function that states in its documentation that you must take care of +/// > an image's layout. +/// +/// In the Vulkan API, each mipmap level of each array layer is in one of the layouts of this enum. +/// +/// Unless you use some sort of high-level shortcut function, an image always starts in either +/// the `Undefined` or the `Preinitialized` layout. +/// Before you can use an image for a given purpose, you must ensure that the image in question is +/// in the layout required for that purpose. For example if you want to write data to an image, you +/// must first transition the image to the `TransferDstOptimal` layout. The `General` layout can +/// also be used as a general-purpose fit-all layout, but using it will result in slower operations. +/// +/// Transitioning between layouts can only be done through a GPU-side operation that is part of +/// a command buffer. +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[repr(i32)] +pub enum ImageLayout { + Undefined = ash::vk::ImageLayout::UNDEFINED.as_raw(), + General = ash::vk::ImageLayout::GENERAL.as_raw(), + ColorAttachmentOptimal = ash::vk::ImageLayout::COLOR_ATTACHMENT_OPTIMAL.as_raw(), + DepthStencilAttachmentOptimal = ash::vk::ImageLayout::DEPTH_STENCIL_ATTACHMENT_OPTIMAL.as_raw(), + DepthStencilReadOnlyOptimal = ash::vk::ImageLayout::DEPTH_STENCIL_READ_ONLY_OPTIMAL.as_raw(), + ShaderReadOnlyOptimal = ash::vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL.as_raw(), + TransferSrcOptimal = ash::vk::ImageLayout::TRANSFER_SRC_OPTIMAL.as_raw(), + TransferDstOptimal = ash::vk::ImageLayout::TRANSFER_DST_OPTIMAL.as_raw(), + Preinitialized = ash::vk::ImageLayout::PREINITIALIZED.as_raw(), + PresentSrc = ash::vk::ImageLayout::PRESENT_SRC_KHR.as_raw(), +} + +impl From<ImageLayout> for ash::vk::ImageLayout { + #[inline] + fn from(val: ImageLayout) -> Self { + Self::from_raw(val as i32) + } +} + +/// The set of layouts to use for an image when used in descriptor of various kinds. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct ImageDescriptorLayouts { + /// The image layout to use in a descriptor as a storage image. + pub storage_image: ImageLayout, + /// The image layout to use in a descriptor as a combined image sampler. + pub combined_image_sampler: ImageLayout, + /// The image layout to use in a descriptor as a sampled image. + pub sampled_image: ImageLayout, + /// The image layout to use in a descriptor as an input attachment. + pub input_attachment: ImageLayout, +} |