pub use self::{
auto::{
AutoCommandBufferBuilder, AutoCommandBufferBuilderContextError, BeginError,
BeginQueryError, BeginRenderPassError, BlitImageError, BuildError, ClearColorImageError,
CopyBufferError, CopyBufferImageError, CopyImageError, CopyQueryPoolResultsError,
DebugMarkerError, DispatchError, DispatchIndirectError, DrawError, DrawIndexedError,
DrawIndexedIndirectError, DrawIndirectError, EndQueryError, ExecuteCommandsError,
FillBufferError, PrimaryAutoCommandBuffer, ResetQueryPoolError, SecondaryAutoCommandBuffer,
UpdateBufferError, WriteTimestampError,
},
traits::{
CommandBufferExecError, CommandBufferExecFuture, PrimaryCommandBuffer,
SecondaryCommandBuffer,
},
};
use crate::{
query::{QueryControlFlags, QueryPipelineStatisticFlags},
render_pass::{Framebuffer, Subpass},
};
use bytemuck::{Pod, Zeroable};
use std::sync::Arc;
mod auto;
pub mod pool;
pub mod submit;
pub mod synced;
pub mod sys;
mod traits;
pub mod validity;
#[derive(Debug, Clone, Copy)]
pub enum ImageUninitializedSafe {
Safe,
Unsafe,
}
impl ImageUninitializedSafe {
pub fn is_safe(&self) -> bool {
match self {
Self::Safe => true,
Self::Unsafe => false,
}
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, Zeroable, Pod, PartialEq, Eq)]
pub struct DrawIndirectCommand {
pub vertex_count: u32,
pub instance_count: u32,
pub first_vertex: u32,
pub first_instance: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, Zeroable, Pod, PartialEq, Eq)]
pub struct DrawIndexedIndirectCommand {
pub index_count: u32,
pub instance_count: u32,
pub first_index: u32,
pub vertex_offset: u32,
pub first_instance: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, Zeroable, Pod, PartialEq, Eq)]
pub struct DispatchIndirectCommand {
pub x: u32,
pub y: u32,
pub z: u32,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[repr(i32)]
pub enum SubpassContents {
Inline = ash::vk::SubpassContents::INLINE.as_raw(),
SecondaryCommandBuffers = ash::vk::SubpassContents::SECONDARY_COMMAND_BUFFERS.as_raw(),
}
impl From<SubpassContents> for ash::vk::SubpassContents {
#[inline]
fn from(val: SubpassContents) -> Self {
Self::from_raw(val as i32)
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[repr(i32)]
pub enum CommandBufferLevel {
Primary = ash::vk::CommandBufferLevel::PRIMARY.as_raw(),
Secondary = ash::vk::CommandBufferLevel::SECONDARY.as_raw(),
}
impl From<CommandBufferLevel> for ash::vk::CommandBufferLevel {
#[inline]
fn from(val: CommandBufferLevel) -> Self {
Self::from_raw(val as i32)
}
}
#[derive(Clone, Debug)]
pub struct CommandBufferInheritanceInfo {
pub render_pass: Option<CommandBufferInheritanceRenderPassInfo>,
pub occlusion_query: Option<QueryControlFlags>,
pub query_statistics_flags: QueryPipelineStatisticFlags,
pub _ne: crate::NonExhaustive,
}
impl Default for CommandBufferInheritanceInfo {
#[inline]
fn default() -> Self {
Self {
render_pass: None,
occlusion_query: None,
query_statistics_flags: QueryPipelineStatisticFlags::none(),
_ne: crate::NonExhaustive(()),
}
}
}
#[derive(Clone, Debug)]
pub struct CommandBufferInheritanceRenderPassInfo {
pub subpass: Subpass,
pub framebuffer: Option<Arc<Framebuffer>>,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
#[repr(u32)]
pub enum CommandBufferUsage {
OneTimeSubmit = ash::vk::CommandBufferUsageFlags::ONE_TIME_SUBMIT.as_raw(),
MultipleSubmit = 0,
SimultaneousUse = ash::vk::CommandBufferUsageFlags::SIMULTANEOUS_USE.as_raw(),
}
impl From<CommandBufferUsage> for ash::vk::CommandBufferUsageFlags {
#[inline]
fn from(val: CommandBufferUsage) -> Self {
Self::from_raw(val as u32)
}
}