pub struct RenderPass { /* private fields */ }
Expand description

An object representing the discrete steps in which rendering is done.

A render pass in Vulkan is made up of three parts:

  • A list of attachments, which are image views that are inputs, outputs or intermediate stages in the rendering process.
  • One or more subpasses, which are the steps in which the rendering process, takes place, and the attachments that are used for each step.
  • Dependencies, which describe how the input and output data of each subpass is to be passed from one subpass to the next.
use vulkano::render_pass::{RenderPass, RenderPassCreateInfo, SubpassDescription};

let render_pass = RenderPass::new(
    device.clone(),
    RenderPassCreateInfo {
        subpasses: vec![SubpassDescription::default()],
        ..Default::default()
    },
).unwrap();

This example creates a render pass with no attachment and one single subpass that doesn’t draw on anything. While it’s sometimes useful, most of the time it’s not what you want.

The easiest way to create a “real” render pass is to use the single_pass_renderpass! macro.

use vulkano::format::Format;

let render_pass = single_pass_renderpass!(
    device.clone(),
    attachments: {
        // `foo` is a custom name we give to the first and only attachment.
        foo: {
            format: Format::R8G8B8A8_UNORM,
            samples: 1,
            load_op: Clear,
            store_op: Store,
        },
    },
    pass: {
        color: [foo],       // Repeat the attachment name here.
        depth_stencil: {},
    },
)
.unwrap();

See the documentation of the macro for more details. TODO: put link here

Implementations§

source§

impl RenderPass

source

pub fn new( device: Arc<Device>, create_info: RenderPassCreateInfo ) -> Result<Arc<RenderPass>, Validated<VulkanError>>

Creates a new RenderPass.

Panics
  • Panics if create_info.subpasses is empty.
  • Panics if any element of create_info.attachments has a format of None.
source

pub unsafe fn from_handle( device: Arc<Device>, handle: RenderPass, create_info: RenderPassCreateInfo ) -> Arc<RenderPass>

Creates a new RenderPass from a raw object handle.

Safety
  • handle must be a valid Vulkan object handle created from device.
  • create_info must match the info used to create the object.
source

pub fn flags(&self) -> RenderPassCreateFlags

Returns the flags that the render pass was created with.

source

pub fn attachments(&self) -> &[AttachmentDescription]

Returns the attachments of the render pass.

source

pub fn subpasses(&self) -> &[SubpassDescription]

Returns the subpasses of the render pass.

source

pub fn dependencies(&self) -> &[SubpassDependency]

Returns the dependencies of the render pass.

source

pub fn correlated_view_masks(&self) -> &[u32]

Returns the correlated view masks of the render pass.

source

pub fn views_used(&self) -> u32

If the render pass has multiview enabled, returns the number of views used by the render pass. Returns 0 if multiview is not enabled.

source

pub fn granularity(&self) -> [u32; 2]

Returns the granularity of this render pass.

If the render area of a render pass in a command buffer is a multiple of this granularity, then the performance will be optimal. Performances are always optimal for render areas that cover the whole framebuffer.

source

pub fn first_subpass(self: Arc<Self>) -> Subpass

Returns the first subpass of the render pass.

source

pub fn is_compatible_with(&self, other: &RenderPass) -> bool

Returns true if this render pass is compatible with the other render pass, as defined in the Render Pass Compatibility section of the Vulkan specs.

source

pub fn is_compatible_with_shader( &self, subpass: u32, shader_interface: &ShaderInterface ) -> bool

Returns true if the subpass of this description is compatible with the shader’s fragment output definition.

Trait Implementations§

source§

impl Debug for RenderPass

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl DeviceOwned for RenderPass

source§

fn device(&self) -> &Arc<Device>

Returns the device that owns self.
source§

impl Drop for RenderPass

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Hash for RenderPass

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for RenderPass

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl VulkanObject for RenderPass

§

type Handle = RenderPass

The type of the object.
source§

fn handle(&self) -> Self::Handle

Returns the raw Vulkan handle of the object.
source§

impl Eq for RenderPass

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DeviceOwnedVulkanObject for Twhere T: DeviceOwned + VulkanObject,

source§

fn set_debug_utils_object_name( &self, object_name: Option<&str> ) -> Result<(), VulkanError>

Assigns a human-readable name to the object for debugging purposes. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.