#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const LOD_CLAMP_NONE: f32 = 1000.0f32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const REMAINING_MIP_LEVELS: u32 = !0u32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const REMAINING_ARRAY_LAYERS: u32 = !0u32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const WHOLE_SIZE: u64 = !0u64;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const ATTACHMENT_UNUSED: u32 = !0u32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const TRUE: u32 = 1;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const FALSE: u32 = 0;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const QUEUE_FAMILY_IGNORED: u32 = !0u32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const SUBPASS_EXTERNAL: u32 = !0u32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const MAX_PHYSICAL_DEVICE_NAME_SIZE: u32 = 256;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const UUID_SIZE: u32 = 16;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const MAX_MEMORY_TYPES: u32 = 32;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const MAX_MEMORY_HEAPS: u32 = 16;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const MAX_EXTENSION_NAME_SIZE: u32 = 256;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const MAX_DESCRIPTION_SIZE: u32 = 256;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateInstance.html) · Core Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateInstance = unsafe extern "system" fn(
p_create_info: *const crate::vk1_0::InstanceCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_instance: *mut crate::vk1_0::Instance,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyInstance.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyInstance = unsafe extern "system" fn(
instance: crate::vk1_0::Instance,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumeratePhysicalDevices.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkEnumeratePhysicalDevices = unsafe extern "system" fn(
instance: crate::vk1_0::Instance,
p_physical_device_count: *mut u32,
p_physical_devices: *mut crate::vk1_0::PhysicalDevice,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceFeatures.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceFeatures = unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_features: *mut crate::vk1_0::PhysicalDeviceFeatures,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceFormatProperties = unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
p_format_properties: *mut crate::vk1_0::FormatProperties,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceImageFormatProperties =
unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
_type: crate::vk1_0::ImageType,
tiling: crate::vk1_0::ImageTiling,
usage: crate::vk1_0::ImageUsageFlags,
flags: crate::vk1_0::ImageCreateFlags,
p_image_format_properties: *mut crate::vk1_0::ImageFormatProperties,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceProperties = unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_properties: *mut crate::vk1_0::PhysicalDeviceProperties,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceQueueFamilyProperties =
unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_queue_family_property_count: *mut u32,
p_queue_family_properties: *mut crate::vk1_0::QueueFamilyProperties,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceMemoryProperties = unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_memory_properties: *mut crate::vk1_0::PhysicalDeviceMemoryProperties,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetInstanceProcAddr.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetInstanceProcAddr = unsafe extern "system" fn(
instance: crate::vk1_0::Instance,
p_name: *const std::os::raw::c_char,
) -> crate::vk1_0::PFN_vkVoidFunction;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceProcAddr.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetDeviceProcAddr = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_name: *const std::os::raw::c_char,
) -> crate::vk1_0::PFN_vkVoidFunction;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDevice.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateDevice = unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_create_info: *const crate::vk1_0::DeviceCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_device: *mut crate::vk1_0::Device,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDevice.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyDevice = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceExtensionProperties.html) · Core Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkEnumerateInstanceExtensionProperties =
unsafe extern "system" fn(
p_layer_name: *const std::os::raw::c_char,
p_property_count: *mut u32,
p_properties: *mut crate::vk1_0::ExtensionProperties,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateDeviceExtensionProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkEnumerateDeviceExtensionProperties =
unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_layer_name: *const std::os::raw::c_char,
p_property_count: *mut u32,
p_properties: *mut crate::vk1_0::ExtensionProperties,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceLayerProperties.html) · Core Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkEnumerateInstanceLayerProperties = unsafe extern "system" fn(
p_property_count: *mut u32,
p_properties: *mut crate::vk1_0::LayerProperties,
)
-> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateDeviceLayerProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkEnumerateDeviceLayerProperties = unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
p_property_count: *mut u32,
p_properties: *mut crate::vk1_0::LayerProperties,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceQueue.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetDeviceQueue = unsafe extern "system" fn(
device: crate::vk1_0::Device,
queue_family_index: u32,
queue_index: u32,
p_queue: *mut crate::vk1_0::Queue,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueSubmit.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkQueueSubmit = unsafe extern "system" fn(
queue: crate::vk1_0::Queue,
submit_count: u32,
p_submits: *const crate::vk1_0::SubmitInfo,
fence: crate::vk1_0::Fence,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueWaitIdle.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkQueueWaitIdle =
unsafe extern "system" fn(queue: crate::vk1_0::Queue) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDeviceWaitIdle.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDeviceWaitIdle =
unsafe extern "system" fn(device: crate::vk1_0::Device) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateMemory.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkAllocateMemory = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_allocate_info: *const crate::vk1_0::MemoryAllocateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_memory: *mut crate::vk1_0::DeviceMemory,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeMemory.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkFreeMemory = unsafe extern "system" fn(
device: crate::vk1_0::Device,
memory: crate::vk1_0::DeviceMemory,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMapMemory.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkMapMemory = unsafe extern "system" fn(
device: crate::vk1_0::Device,
memory: crate::vk1_0::DeviceMemory,
offset: crate::vk1_0::DeviceSize,
size: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::MemoryMapFlags,
pp_data: *mut *mut std::ffi::c_void,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUnmapMemory.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkUnmapMemory = unsafe extern "system" fn(
device: crate::vk1_0::Device,
memory: crate::vk1_0::DeviceMemory,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFlushMappedMemoryRanges.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkFlushMappedMemoryRanges = unsafe extern "system" fn(
device: crate::vk1_0::Device,
memory_range_count: u32,
p_memory_ranges: *const crate::vk1_0::MappedMemoryRange,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkInvalidateMappedMemoryRanges.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkInvalidateMappedMemoryRanges = unsafe extern "system" fn(
device: crate::vk1_0::Device,
memory_range_count: u32,
p_memory_ranges: *const crate::vk1_0::MappedMemoryRange,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceMemoryCommitment.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetDeviceMemoryCommitment = unsafe extern "system" fn(
device: crate::vk1_0::Device,
memory: crate::vk1_0::DeviceMemory,
p_committed_memory_in_bytes: *mut crate::vk1_0::DeviceSize,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindBufferMemory.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkBindBufferMemory = unsafe extern "system" fn(
device: crate::vk1_0::Device,
buffer: crate::vk1_0::Buffer,
memory: crate::vk1_0::DeviceMemory,
memory_offset: crate::vk1_0::DeviceSize,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindImageMemory.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkBindImageMemory = unsafe extern "system" fn(
device: crate::vk1_0::Device,
image: crate::vk1_0::Image,
memory: crate::vk1_0::DeviceMemory,
memory_offset: crate::vk1_0::DeviceSize,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferMemoryRequirements.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetBufferMemoryRequirements = unsafe extern "system" fn(
device: crate::vk1_0::Device,
buffer: crate::vk1_0::Buffer,
p_memory_requirements: *mut crate::vk1_0::MemoryRequirements,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageMemoryRequirements.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetImageMemoryRequirements = unsafe extern "system" fn(
device: crate::vk1_0::Device,
image: crate::vk1_0::Image,
p_memory_requirements: *mut crate::vk1_0::MemoryRequirements,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSparseMemoryRequirements.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetImageSparseMemoryRequirements = unsafe extern "system" fn(
device: crate::vk1_0::Device,
image: crate::vk1_0::Image,
p_sparse_memory_requirement_count: *mut u32,
p_sparse_memory_requirements: *mut crate::vk1_0::SparseImageMemoryRequirements,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html) · Instance Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPhysicalDeviceSparseImageFormatProperties =
unsafe extern "system" fn(
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
_type: crate::vk1_0::ImageType,
samples: crate::vk1_0::SampleCountFlagBits,
usage: crate::vk1_0::ImageUsageFlags,
tiling: crate::vk1_0::ImageTiling,
p_property_count: *mut u32,
p_properties: *mut crate::vk1_0::SparseImageFormatProperties,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueBindSparse.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkQueueBindSparse = unsafe extern "system" fn(
queue: crate::vk1_0::Queue,
bind_info_count: u32,
p_bind_info: *const crate::vk1_0::BindSparseInfo,
fence: crate::vk1_0::Fence,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFence.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateFence = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::FenceCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_fence: *mut crate::vk1_0::Fence,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFence.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyFence = unsafe extern "system" fn(
device: crate::vk1_0::Device,
fence: crate::vk1_0::Fence,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetFences.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkResetFences = unsafe extern "system" fn(
device: crate::vk1_0::Device,
fence_count: u32,
p_fences: *const crate::vk1_0::Fence,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetFenceStatus.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetFenceStatus = unsafe extern "system" fn(
device: crate::vk1_0::Device,
fence: crate::vk1_0::Fence,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkWaitForFences.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkWaitForFences = unsafe extern "system" fn(
device: crate::vk1_0::Device,
fence_count: u32,
p_fences: *const crate::vk1_0::Fence,
wait_all: crate::vk1_0::Bool32,
timeout: u64,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSemaphore.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateSemaphore = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::SemaphoreCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_semaphore: *mut crate::vk1_0::Semaphore,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySemaphore.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroySemaphore = unsafe extern "system" fn(
device: crate::vk1_0::Device,
semaphore: crate::vk1_0::Semaphore,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateEvent.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateEvent = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::EventCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_event: *mut crate::vk1_0::Event,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyEvent.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyEvent = unsafe extern "system" fn(
device: crate::vk1_0::Device,
event: crate::vk1_0::Event,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetEventStatus.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetEventStatus = unsafe extern "system" fn(
device: crate::vk1_0::Device,
event: crate::vk1_0::Event,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkSetEvent.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkSetEvent = unsafe extern "system" fn(
device: crate::vk1_0::Device,
event: crate::vk1_0::Event,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetEvent.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkResetEvent = unsafe extern "system" fn(
device: crate::vk1_0::Device,
event: crate::vk1_0::Event,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateQueryPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateQueryPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::QueryPoolCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_query_pool: *mut crate::vk1_0::QueryPool,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyQueryPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyQueryPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
query_pool: crate::vk1_0::QueryPool,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetQueryPoolResults.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetQueryPoolResults = unsafe extern "system" fn(
device: crate::vk1_0::Device,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
data_size: usize,
p_data: *mut std::ffi::c_void,
stride: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::QueryResultFlags,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateBuffer = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::BufferCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_buffer: *mut crate::vk1_0::Buffer,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyBuffer = unsafe extern "system" fn(
device: crate::vk1_0::Device,
buffer: crate::vk1_0::Buffer,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBufferView.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateBufferView = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::BufferViewCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_view: *mut crate::vk1_0::BufferView,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBufferView.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyBufferView = unsafe extern "system" fn(
device: crate::vk1_0::Device,
buffer_view: crate::vk1_0::BufferView,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateImage = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::ImageCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_image: *mut crate::vk1_0::Image,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyImage = unsafe extern "system" fn(
device: crate::vk1_0::Device,
image: crate::vk1_0::Image,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSubresourceLayout.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetImageSubresourceLayout = unsafe extern "system" fn(
device: crate::vk1_0::Device,
image: crate::vk1_0::Image,
p_subresource: *const crate::vk1_0::ImageSubresource,
p_layout: *mut crate::vk1_0::SubresourceLayout,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImageView.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateImageView = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::ImageViewCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_view: *mut crate::vk1_0::ImageView,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImageView.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyImageView = unsafe extern "system" fn(
device: crate::vk1_0::Device,
image_view: crate::vk1_0::ImageView,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateShaderModule.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateShaderModule = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::ShaderModuleCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_shader_module: *mut crate::vk1_0::ShaderModule,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyShaderModule.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyShaderModule = unsafe extern "system" fn(
device: crate::vk1_0::Device,
shader_module: crate::vk1_0::ShaderModule,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineCache.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreatePipelineCache = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::PipelineCacheCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_pipeline_cache: *mut crate::vk1_0::PipelineCache,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineCache.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyPipelineCache = unsafe extern "system" fn(
device: crate::vk1_0::Device,
pipeline_cache: crate::vk1_0::PipelineCache,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPipelineCacheData.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetPipelineCacheData = unsafe extern "system" fn(
device: crate::vk1_0::Device,
pipeline_cache: crate::vk1_0::PipelineCache,
p_data_size: *mut usize,
p_data: *mut std::ffi::c_void,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMergePipelineCaches.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkMergePipelineCaches = unsafe extern "system" fn(
device: crate::vk1_0::Device,
dst_cache: crate::vk1_0::PipelineCache,
src_cache_count: u32,
p_src_caches: *const crate::vk1_0::PipelineCache,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateGraphicsPipelines.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateGraphicsPipelines = unsafe extern "system" fn(
device: crate::vk1_0::Device,
pipeline_cache: crate::vk1_0::PipelineCache,
create_info_count: u32,
p_create_infos: *const crate::vk1_0::GraphicsPipelineCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_pipelines: *mut crate::vk1_0::Pipeline,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateComputePipelines.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateComputePipelines = unsafe extern "system" fn(
device: crate::vk1_0::Device,
pipeline_cache: crate::vk1_0::PipelineCache,
create_info_count: u32,
p_create_infos: *const crate::vk1_0::ComputePipelineCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_pipelines: *mut crate::vk1_0::Pipeline,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipeline.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyPipeline = unsafe extern "system" fn(
device: crate::vk1_0::Device,
pipeline: crate::vk1_0::Pipeline,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineLayout.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreatePipelineLayout = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::PipelineLayoutCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_pipeline_layout: *mut crate::vk1_0::PipelineLayout,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineLayout.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyPipelineLayout = unsafe extern "system" fn(
device: crate::vk1_0::Device,
pipeline_layout: crate::vk1_0::PipelineLayout,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSampler.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateSampler = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::SamplerCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_sampler: *mut crate::vk1_0::Sampler,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySampler.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroySampler = unsafe extern "system" fn(
device: crate::vk1_0::Device,
sampler: crate::vk1_0::Sampler,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorSetLayout.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateDescriptorSetLayout = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::DescriptorSetLayoutCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_set_layout: *mut crate::vk1_0::DescriptorSetLayout,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorSetLayout.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyDescriptorSetLayout = unsafe extern "system" fn(
device: crate::vk1_0::Device,
descriptor_set_layout: crate::vk1_0::DescriptorSetLayout,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateDescriptorPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::DescriptorPoolCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_descriptor_pool: *mut crate::vk1_0::DescriptorPool,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyDescriptorPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
descriptor_pool: crate::vk1_0::DescriptorPool,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetDescriptorPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkResetDescriptorPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
descriptor_pool: crate::vk1_0::DescriptorPool,
flags: crate::vk1_0::DescriptorPoolResetFlags,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateDescriptorSets.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkAllocateDescriptorSets = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_allocate_info: *const crate::vk1_0::DescriptorSetAllocateInfo,
p_descriptor_sets: *mut crate::vk1_0::DescriptorSet,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeDescriptorSets.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkFreeDescriptorSets = unsafe extern "system" fn(
device: crate::vk1_0::Device,
descriptor_pool: crate::vk1_0::DescriptorPool,
descriptor_set_count: u32,
p_descriptor_sets: *const crate::vk1_0::DescriptorSet,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUpdateDescriptorSets.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkUpdateDescriptorSets = unsafe extern "system" fn(
device: crate::vk1_0::Device,
descriptor_write_count: u32,
p_descriptor_writes: *const crate::vk1_0::WriteDescriptorSet,
descriptor_copy_count: u32,
p_descriptor_copies: *const crate::vk1_0::CopyDescriptorSet,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFramebuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateFramebuffer = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::FramebufferCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_framebuffer: *mut crate::vk1_0::Framebuffer,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFramebuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyFramebuffer = unsafe extern "system" fn(
device: crate::vk1_0::Device,
framebuffer: crate::vk1_0::Framebuffer,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateRenderPass.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateRenderPass = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::RenderPassCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_render_pass: *mut crate::vk1_0::RenderPass,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyRenderPass.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyRenderPass = unsafe extern "system" fn(
device: crate::vk1_0::Device,
render_pass: crate::vk1_0::RenderPass,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetRenderAreaGranularity.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkGetRenderAreaGranularity = unsafe extern "system" fn(
device: crate::vk1_0::Device,
render_pass: crate::vk1_0::RenderPass,
p_granularity: *mut crate::vk1_0::Extent2D,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateCommandPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCreateCommandPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_create_info: *const crate::vk1_0::CommandPoolCreateInfo,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
p_command_pool: *mut crate::vk1_0::CommandPool,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyCommandPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkDestroyCommandPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
command_pool: crate::vk1_0::CommandPool,
p_allocator: *const crate::vk1_0::AllocationCallbacks,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkResetCommandPool = unsafe extern "system" fn(
device: crate::vk1_0::Device,
command_pool: crate::vk1_0::CommandPool,
flags: crate::vk1_0::CommandPoolResetFlags,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateCommandBuffers.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkAllocateCommandBuffers = unsafe extern "system" fn(
device: crate::vk1_0::Device,
p_allocate_info: *const crate::vk1_0::CommandBufferAllocateInfo,
p_command_buffers: *mut crate::vk1_0::CommandBuffer,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeCommandBuffers.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkFreeCommandBuffers = unsafe extern "system" fn(
device: crate::vk1_0::Device,
command_pool: crate::vk1_0::CommandPool,
command_buffer_count: u32,
p_command_buffers: *const crate::vk1_0::CommandBuffer,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBeginCommandBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkBeginCommandBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
p_begin_info: *const crate::vk1_0::CommandBufferBeginInfo,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEndCommandBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkEndCommandBuffer =
unsafe extern "system" fn(command_buffer: crate::vk1_0::CommandBuffer) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkResetCommandBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
flags: crate::vk1_0::CommandBufferResetFlags,
) -> crate::vk1_0::Result;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindPipeline.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBindPipeline = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
pipeline: crate::vk1_0::Pipeline,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetViewport.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetViewport = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
first_viewport: u32,
viewport_count: u32,
p_viewports: *const crate::vk1_0::Viewport,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetScissor.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetScissor = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
first_scissor: u32,
scissor_count: u32,
p_scissors: *const crate::vk1_0::Rect2D,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetLineWidth.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetLineWidth = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
line_width: f32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBias.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetDepthBias = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
depth_bias_constant_factor: f32,
depth_bias_clamp: f32,
depth_bias_slope_factor: f32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetBlendConstants.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetBlendConstants = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
blend_constants: [f32; 4],
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBounds.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetDepthBounds = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
min_depth_bounds: f32,
max_depth_bounds: f32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilCompareMask.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetStencilCompareMask = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
compare_mask: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilWriteMask.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetStencilWriteMask = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
write_mask: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilReference.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetStencilReference = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
reference: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindDescriptorSets.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBindDescriptorSets = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
layout: crate::vk1_0::PipelineLayout,
first_set: u32,
descriptor_set_count: u32,
p_descriptor_sets: *const crate::vk1_0::DescriptorSet,
dynamic_offset_count: u32,
p_dynamic_offsets: *const u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindIndexBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBindIndexBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
index_type: crate::vk1_0::IndexType,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindVertexBuffers.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBindVertexBuffers = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
first_binding: u32,
binding_count: u32,
p_buffers: *const crate::vk1_0::Buffer,
p_offsets: *const crate::vk1_0::DeviceSize,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDraw.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdDraw = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
vertex_count: u32,
instance_count: u32,
first_vertex: u32,
first_instance: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexed.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdDrawIndexed = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
index_count: u32,
instance_count: u32,
first_index: u32,
vertex_offset: i32,
first_instance: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndirect.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdDrawIndirect = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
draw_count: u32,
stride: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexedIndirect.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdDrawIndexedIndirect = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
draw_count: u32,
stride: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatch.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdDispatch = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
group_count_x: u32,
group_count_y: u32,
group_count_z: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatchIndirect.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdDispatchIndirect = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdCopyBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_buffer: crate::vk1_0::Buffer,
dst_buffer: crate::vk1_0::Buffer,
region_count: u32,
p_regions: *const crate::vk1_0::BufferCopy,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdCopyImage = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
region_count: u32,
p_regions: *const crate::vk1_0::ImageCopy,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBlitImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBlitImage = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
region_count: u32,
p_regions: *const crate::vk1_0::ImageBlit,
filter: crate::vk1_0::Filter,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBufferToImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdCopyBufferToImage = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_buffer: crate::vk1_0::Buffer,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
region_count: u32,
p_regions: *const crate::vk1_0::BufferImageCopy,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImageToBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdCopyImageToBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_buffer: crate::vk1_0::Buffer,
region_count: u32,
p_regions: *const crate::vk1_0::BufferImageCopy,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdUpdateBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdUpdateBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
data_size: crate::vk1_0::DeviceSize,
p_data: *const std::ffi::c_void,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdFillBuffer.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdFillBuffer = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
size: crate::vk1_0::DeviceSize,
data: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearColorImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdClearColorImage = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
image: crate::vk1_0::Image,
image_layout: crate::vk1_0::ImageLayout,
p_color: *const crate::vk1_0::ClearColorValue,
range_count: u32,
p_ranges: *const crate::vk1_0::ImageSubresourceRange,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearDepthStencilImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdClearDepthStencilImage = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
image: crate::vk1_0::Image,
image_layout: crate::vk1_0::ImageLayout,
p_depth_stencil: *const crate::vk1_0::ClearDepthStencilValue,
range_count: u32,
p_ranges: *const crate::vk1_0::ImageSubresourceRange,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearAttachments.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdClearAttachments = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
attachment_count: u32,
p_attachments: *const crate::vk1_0::ClearAttachment,
rect_count: u32,
p_rects: *const crate::vk1_0::ClearRect,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResolveImage.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdResolveImage = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
region_count: u32,
p_regions: *const crate::vk1_0::ImageResolve,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetEvent.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetEvent = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
event: crate::vk1_0::Event,
stage_mask: crate::vk1_0::PipelineStageFlags,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetEvent.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdResetEvent = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
event: crate::vk1_0::Event,
stage_mask: crate::vk1_0::PipelineStageFlags,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWaitEvents.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdWaitEvents = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
event_count: u32,
p_events: *const crate::vk1_0::Event,
src_stage_mask: crate::vk1_0::PipelineStageFlags,
dst_stage_mask: crate::vk1_0::PipelineStageFlags,
memory_barrier_count: u32,
p_memory_barriers: *const crate::vk1_0::MemoryBarrier,
buffer_memory_barrier_count: u32,
p_buffer_memory_barriers: *const crate::vk1_0::BufferMemoryBarrier,
image_memory_barrier_count: u32,
p_image_memory_barriers: *const crate::vk1_0::ImageMemoryBarrier,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPipelineBarrier.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdPipelineBarrier = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
src_stage_mask: crate::vk1_0::PipelineStageFlags,
dst_stage_mask: crate::vk1_0::PipelineStageFlags,
dependency_flags: crate::vk1_0::DependencyFlags,
memory_barrier_count: u32,
p_memory_barriers: *const crate::vk1_0::MemoryBarrier,
buffer_memory_barrier_count: u32,
p_buffer_memory_barriers: *const crate::vk1_0::BufferMemoryBarrier,
image_memory_barrier_count: u32,
p_image_memory_barriers: *const crate::vk1_0::ImageMemoryBarrier,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginQuery.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBeginQuery = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
query: u32,
flags: crate::vk1_0::QueryControlFlags,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndQuery.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdEndQuery = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
query: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetQueryPool.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdResetQueryPool = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWriteTimestamp.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdWriteTimestamp = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_stage: crate::vk1_0::PipelineStageFlagBits,
query_pool: crate::vk1_0::QueryPool,
query: u32,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyQueryPoolResults.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdCopyQueryPoolResults = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
stride: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::QueryResultFlags,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPushConstants.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdPushConstants = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
layout: crate::vk1_0::PipelineLayout,
stage_flags: crate::vk1_0::ShaderStageFlags,
offset: u32,
size: u32,
p_values: *const std::ffi::c_void,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginRenderPass.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBeginRenderPass = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
p_render_pass_begin: *const crate::vk1_0::RenderPassBeginInfo,
contents: crate::vk1_0::SubpassContents,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdNextSubpass.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdNextSubpass = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
contents: crate::vk1_0::SubpassContents,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndRenderPass.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdEndRenderPass =
unsafe extern "system" fn(command_buffer: crate::vk1_0::CommandBuffer) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdExecuteCommands.html) · Device Command"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdExecuteCommands = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
command_buffer_count: u32,
p_command_buffers: *const crate::vk1_0::CommandBuffer,
) -> std::ffi::c_void;
#[doc = "Provides Core Commands for [`Vk10CoreLoaderExt`](trait.Vk10CoreLoaderExt.html)"]
pub struct Vk10CoreCommands {
pub create_instance: PFN_vkCreateInstance,
pub enumerate_instance_extension_properties: PFN_vkEnumerateInstanceExtensionProperties,
pub enumerate_instance_layer_properties: PFN_vkEnumerateInstanceLayerProperties,
}
impl Vk10CoreCommands {
#[inline]
pub fn load<T>(loader: &crate::CoreLoader<T>) -> Option<Vk10CoreCommands> {
unsafe {
Some(Vk10CoreCommands {
create_instance: std::mem::transmute(loader.symbol("vkCreateInstance")?),
enumerate_instance_extension_properties: std::mem::transmute(
loader.symbol("vkEnumerateInstanceExtensionProperties")?,
),
enumerate_instance_layer_properties: std::mem::transmute(
loader.symbol("vkEnumerateInstanceLayerProperties")?,
),
})
}
}
}
#[doc = "Provides high level command wrappers for [`Vk10CoreCommands`](struct.Vk10CoreCommands.html)"]
pub trait Vk10CoreLoaderExt {
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateInstance.html) · Core Command"]
unsafe fn create_instance(
&self,
create_info: &crate::vk1_0::InstanceCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
instance: Option<crate::vk1_0::Instance>,
) -> crate::utils::VulkanResult<crate::vk1_0::Instance>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceExtensionProperties.html) · Core Command"]
unsafe fn enumerate_instance_extension_properties(
&self,
layer_name: Option<&std::ffi::CStr>,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::ExtensionProperties>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceLayerProperties.html) · Core Command"]
unsafe fn enumerate_instance_layer_properties(
&self,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::LayerProperties>>;
}
impl<T> Vk10CoreLoaderExt for crate::CoreLoader<T> {
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateInstance.html) · Core Command"]
unsafe fn create_instance(
&self,
create_info: &crate::vk1_0::InstanceCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
instance: Option<crate::vk1_0::Instance>,
) -> crate::utils::VulkanResult<crate::vk1_0::Instance> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_instance;
let mut instance = instance.unwrap_or_else(|| Default::default());
let _val = function(
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut instance,
);
crate::utils::VulkanResult::new(_val, instance)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceExtensionProperties.html) · Core Command"]
unsafe fn enumerate_instance_extension_properties(
&self,
layer_name: Option<&std::ffi::CStr>,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::ExtensionProperties>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.enumerate_instance_extension_properties;
let mut property_count = property_count.unwrap_or_else(|| {
let mut val = Default::default();
function(
layer_name.map(|s| s.as_ptr()).unwrap_or(std::ptr::null()),
&mut val,
std::ptr::null_mut(),
);
val
});
let mut properties = vec![Default::default(); property_count as _];
let _val = function(
layer_name.map(|s| s.as_ptr()).unwrap_or(std::ptr::null()),
&mut property_count,
properties.as_mut_ptr(),
);
crate::utils::VulkanResult::new(_val, properties)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateInstanceLayerProperties.html) · Core Command"]
unsafe fn enumerate_instance_layer_properties(
&self,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::LayerProperties>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.enumerate_instance_layer_properties;
let mut property_count = property_count.unwrap_or_else(|| {
let mut val = Default::default();
function(&mut val, std::ptr::null_mut());
val
});
let mut properties = vec![Default::default(); property_count as _];
let _val = function(&mut property_count, properties.as_mut_ptr());
crate::utils::VulkanResult::new(_val, properties)
}
}
#[doc = "Provides Instance Commands for [`Vk10InstanceLoaderExt`](trait.Vk10InstanceLoaderExt.html)"]
pub struct Vk10InstanceCommands {
pub destroy_instance: PFN_vkDestroyInstance,
pub enumerate_physical_devices: PFN_vkEnumeratePhysicalDevices,
pub get_physical_device_features: PFN_vkGetPhysicalDeviceFeatures,
pub get_physical_device_format_properties: PFN_vkGetPhysicalDeviceFormatProperties,
pub get_physical_device_image_format_properties: PFN_vkGetPhysicalDeviceImageFormatProperties,
pub get_physical_device_properties: PFN_vkGetPhysicalDeviceProperties,
pub get_physical_device_queue_family_properties: PFN_vkGetPhysicalDeviceQueueFamilyProperties,
pub get_physical_device_memory_properties: PFN_vkGetPhysicalDeviceMemoryProperties,
pub get_instance_proc_addr: PFN_vkGetInstanceProcAddr,
pub create_device: PFN_vkCreateDevice,
pub enumerate_device_extension_properties: PFN_vkEnumerateDeviceExtensionProperties,
pub enumerate_device_layer_properties: PFN_vkEnumerateDeviceLayerProperties,
pub get_physical_device_sparse_image_format_properties:
PFN_vkGetPhysicalDeviceSparseImageFormatProperties,
}
impl Vk10InstanceCommands {
#[inline]
pub fn load(loader: &crate::InstanceLoader) -> Option<Vk10InstanceCommands> {
unsafe {
Some(Vk10InstanceCommands {
destroy_instance: std::mem::transmute(loader.symbol("vkDestroyInstance")?),
enumerate_physical_devices: std::mem::transmute(
loader.symbol("vkEnumeratePhysicalDevices")?,
),
get_physical_device_features: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceFeatures")?,
),
get_physical_device_format_properties: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceFormatProperties")?,
),
get_physical_device_image_format_properties: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceImageFormatProperties")?,
),
get_physical_device_properties: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceProperties")?,
),
get_physical_device_queue_family_properties: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceQueueFamilyProperties")?,
),
get_physical_device_memory_properties: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceMemoryProperties")?,
),
get_instance_proc_addr: std::mem::transmute(
loader.symbol("vkGetInstanceProcAddr")?,
),
create_device: std::mem::transmute(loader.symbol("vkCreateDevice")?),
enumerate_device_extension_properties: std::mem::transmute(
loader.symbol("vkEnumerateDeviceExtensionProperties")?,
),
enumerate_device_layer_properties: std::mem::transmute(
loader.symbol("vkEnumerateDeviceLayerProperties")?,
),
get_physical_device_sparse_image_format_properties: std::mem::transmute(
loader.symbol("vkGetPhysicalDeviceSparseImageFormatProperties")?,
),
})
}
}
}
#[doc = "Provides high level command wrappers for [`Vk10InstanceCommands`](struct.Vk10InstanceCommands.html)"]
pub trait Vk10InstanceLoaderExt {
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyInstance.html) · Instance Command"]
unsafe fn destroy_instance(&self, allocator: Option<&crate::vk1_0::AllocationCallbacks>) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumeratePhysicalDevices.html) · Instance Command"]
unsafe fn enumerate_physical_devices(
&self,
physical_device_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::PhysicalDevice>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceFeatures.html) · Instance Command"]
unsafe fn get_physical_device_features(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
features: Option<crate::vk1_0::PhysicalDeviceFeatures>,
) -> crate::vk1_0::PhysicalDeviceFeatures;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html) · Instance Command"]
unsafe fn get_physical_device_format_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
format_properties: Option<crate::vk1_0::FormatProperties>,
) -> crate::vk1_0::FormatProperties;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties.html) · Instance Command"]
unsafe fn get_physical_device_image_format_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
_type: crate::vk1_0::ImageType,
tiling: crate::vk1_0::ImageTiling,
usage: crate::vk1_0::ImageUsageFlags,
flags: crate::vk1_0::ImageCreateFlags,
image_format_properties: Option<crate::vk1_0::ImageFormatProperties>,
) -> crate::utils::VulkanResult<crate::vk1_0::ImageFormatProperties>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceProperties.html) · Instance Command"]
unsafe fn get_physical_device_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
properties: Option<crate::vk1_0::PhysicalDeviceProperties>,
) -> crate::vk1_0::PhysicalDeviceProperties;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html) · Instance Command"]
unsafe fn get_physical_device_queue_family_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
queue_family_property_count: Option<u32>,
) -> Vec<crate::vk1_0::QueueFamilyProperties>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html) · Instance Command"]
unsafe fn get_physical_device_memory_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
memory_properties: Option<crate::vk1_0::PhysicalDeviceMemoryProperties>,
) -> crate::vk1_0::PhysicalDeviceMemoryProperties;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetInstanceProcAddr.html) · Instance Command"]
unsafe fn get_instance_proc_addr(
&self,
name: Option<&std::ffi::CStr>,
) -> crate::vk1_0::PFN_vkVoidFunction;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDevice.html) · Instance Command"]
unsafe fn create_device(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
create_info: &crate::vk1_0::DeviceCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
device: Option<crate::vk1_0::Device>,
) -> crate::utils::VulkanResult<crate::vk1_0::Device>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateDeviceExtensionProperties.html) · Instance Command"]
unsafe fn enumerate_device_extension_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
layer_name: Option<&std::ffi::CStr>,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::ExtensionProperties>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateDeviceLayerProperties.html) · Instance Command"]
unsafe fn enumerate_device_layer_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::LayerProperties>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html) · Instance Command"]
unsafe fn get_physical_device_sparse_image_format_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
_type: crate::vk1_0::ImageType,
samples: crate::vk1_0::SampleCountFlagBits,
usage: crate::vk1_0::ImageUsageFlags,
tiling: crate::vk1_0::ImageTiling,
property_count: Option<u32>,
) -> Vec<crate::vk1_0::SparseImageFormatProperties>;
}
impl Vk10InstanceLoaderExt for crate::InstanceLoader {
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyInstance.html) · Instance Command"]
unsafe fn destroy_instance(&self, allocator: Option<&crate::vk1_0::AllocationCallbacks>) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_instance;
let _val = function(
self.handle,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumeratePhysicalDevices.html) · Instance Command"]
unsafe fn enumerate_physical_devices(
&self,
physical_device_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::PhysicalDevice>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.enumerate_physical_devices;
let mut physical_device_count = physical_device_count.unwrap_or_else(|| {
let mut val = Default::default();
function(self.handle, &mut val, std::ptr::null_mut());
val
});
let mut physical_devices = vec![Default::default(); physical_device_count as _];
let _val = function(
self.handle,
&mut physical_device_count,
physical_devices.as_mut_ptr(),
);
crate::utils::VulkanResult::new(_val, physical_devices)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceFeatures.html) · Instance Command"]
unsafe fn get_physical_device_features(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
features: Option<crate::vk1_0::PhysicalDeviceFeatures>,
) -> crate::vk1_0::PhysicalDeviceFeatures {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_features;
let mut features = features.unwrap_or_else(|| Default::default());
let _val = function(physical_device, &mut features);
features
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html) · Instance Command"]
unsafe fn get_physical_device_format_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
format_properties: Option<crate::vk1_0::FormatProperties>,
) -> crate::vk1_0::FormatProperties {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_format_properties;
let mut format_properties = format_properties.unwrap_or_else(|| Default::default());
let _val = function(physical_device, format, &mut format_properties);
format_properties
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties.html) · Instance Command"]
unsafe fn get_physical_device_image_format_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
_type: crate::vk1_0::ImageType,
tiling: crate::vk1_0::ImageTiling,
usage: crate::vk1_0::ImageUsageFlags,
flags: crate::vk1_0::ImageCreateFlags,
image_format_properties: Option<crate::vk1_0::ImageFormatProperties>,
) -> crate::utils::VulkanResult<crate::vk1_0::ImageFormatProperties> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_image_format_properties;
let mut image_format_properties =
image_format_properties.unwrap_or_else(|| Default::default());
let _val = function(
physical_device,
format,
_type,
tiling,
usage,
flags,
&mut image_format_properties,
);
crate::utils::VulkanResult::new(_val, image_format_properties)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceProperties.html) · Instance Command"]
unsafe fn get_physical_device_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
properties: Option<crate::vk1_0::PhysicalDeviceProperties>,
) -> crate::vk1_0::PhysicalDeviceProperties {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_properties;
let mut properties = properties.unwrap_or_else(|| Default::default());
let _val = function(physical_device, &mut properties);
properties
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html) · Instance Command"]
unsafe fn get_physical_device_queue_family_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
queue_family_property_count: Option<u32>,
) -> Vec<crate::vk1_0::QueueFamilyProperties> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_queue_family_properties;
let mut queue_family_property_count = queue_family_property_count.unwrap_or_else(|| {
let mut val = Default::default();
function(physical_device, &mut val, std::ptr::null_mut());
val
});
let mut queue_family_properties =
vec![Default::default(); queue_family_property_count as _];
let _val = function(
physical_device,
&mut queue_family_property_count,
queue_family_properties.as_mut_ptr(),
);
queue_family_properties
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html) · Instance Command"]
unsafe fn get_physical_device_memory_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
memory_properties: Option<crate::vk1_0::PhysicalDeviceMemoryProperties>,
) -> crate::vk1_0::PhysicalDeviceMemoryProperties {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_memory_properties;
let mut memory_properties = memory_properties.unwrap_or_else(|| Default::default());
let _val = function(physical_device, &mut memory_properties);
memory_properties
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetInstanceProcAddr.html) · Instance Command"]
unsafe fn get_instance_proc_addr(
&self,
name: Option<&std::ffi::CStr>,
) -> crate::vk1_0::PFN_vkVoidFunction {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_instance_proc_addr;
let _val = function(
self.handle,
name.map(|s| s.as_ptr()).unwrap_or(std::ptr::null()),
);
_val
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDevice.html) · Instance Command"]
unsafe fn create_device(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
create_info: &crate::vk1_0::DeviceCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
device: Option<crate::vk1_0::Device>,
) -> crate::utils::VulkanResult<crate::vk1_0::Device> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_device;
let mut device = device.unwrap_or_else(|| Default::default());
let _val = function(
physical_device,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut device,
);
crate::utils::VulkanResult::new(_val, device)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateDeviceExtensionProperties.html) · Instance Command"]
unsafe fn enumerate_device_extension_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
layer_name: Option<&std::ffi::CStr>,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::ExtensionProperties>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.enumerate_device_extension_properties;
let mut property_count = property_count.unwrap_or_else(|| {
let mut val = Default::default();
function(
physical_device,
layer_name.map(|s| s.as_ptr()).unwrap_or(std::ptr::null()),
&mut val,
std::ptr::null_mut(),
);
val
});
let mut properties = vec![Default::default(); property_count as _];
let _val = function(
physical_device,
layer_name.map(|s| s.as_ptr()).unwrap_or(std::ptr::null()),
&mut property_count,
properties.as_mut_ptr(),
);
crate::utils::VulkanResult::new(_val, properties)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEnumerateDeviceLayerProperties.html) · Instance Command"]
unsafe fn enumerate_device_layer_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
property_count: Option<u32>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::LayerProperties>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.enumerate_device_layer_properties;
let mut property_count = property_count.unwrap_or_else(|| {
let mut val = Default::default();
function(physical_device, &mut val, std::ptr::null_mut());
val
});
let mut properties = vec![Default::default(); property_count as _];
let _val = function(
physical_device,
&mut property_count,
properties.as_mut_ptr(),
);
crate::utils::VulkanResult::new(_val, properties)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html) · Instance Command"]
unsafe fn get_physical_device_sparse_image_format_properties(
&self,
physical_device: crate::vk1_0::PhysicalDevice,
format: crate::vk1_0::Format,
_type: crate::vk1_0::ImageType,
samples: crate::vk1_0::SampleCountFlagBits,
usage: crate::vk1_0::ImageUsageFlags,
tiling: crate::vk1_0::ImageTiling,
property_count: Option<u32>,
) -> Vec<crate::vk1_0::SparseImageFormatProperties> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_physical_device_sparse_image_format_properties;
let mut property_count = property_count.unwrap_or_else(|| {
let mut val = Default::default();
function(
physical_device,
format,
_type,
samples,
usage,
tiling,
&mut val,
std::ptr::null_mut(),
);
val
});
let mut properties = vec![Default::default(); property_count as _];
let _val = function(
physical_device,
format,
_type,
samples,
usage,
tiling,
&mut property_count,
properties.as_mut_ptr(),
);
properties
}
}
#[doc = "Provides Device Commands for [`Vk10DeviceLoaderExt`](trait.Vk10DeviceLoaderExt.html)"]
pub struct Vk10DeviceCommands {
pub get_device_proc_addr: PFN_vkGetDeviceProcAddr,
pub destroy_device: PFN_vkDestroyDevice,
pub get_device_queue: PFN_vkGetDeviceQueue,
pub queue_submit: PFN_vkQueueSubmit,
pub queue_wait_idle: PFN_vkQueueWaitIdle,
pub device_wait_idle: PFN_vkDeviceWaitIdle,
pub allocate_memory: PFN_vkAllocateMemory,
pub free_memory: PFN_vkFreeMemory,
pub map_memory: PFN_vkMapMemory,
pub unmap_memory: PFN_vkUnmapMemory,
pub flush_mapped_memory_ranges: PFN_vkFlushMappedMemoryRanges,
pub invalidate_mapped_memory_ranges: PFN_vkInvalidateMappedMemoryRanges,
pub get_device_memory_commitment: PFN_vkGetDeviceMemoryCommitment,
pub bind_buffer_memory: PFN_vkBindBufferMemory,
pub bind_image_memory: PFN_vkBindImageMemory,
pub get_buffer_memory_requirements: PFN_vkGetBufferMemoryRequirements,
pub get_image_memory_requirements: PFN_vkGetImageMemoryRequirements,
pub get_image_sparse_memory_requirements: PFN_vkGetImageSparseMemoryRequirements,
pub queue_bind_sparse: PFN_vkQueueBindSparse,
pub create_fence: PFN_vkCreateFence,
pub destroy_fence: PFN_vkDestroyFence,
pub reset_fences: PFN_vkResetFences,
pub get_fence_status: PFN_vkGetFenceStatus,
pub wait_for_fences: PFN_vkWaitForFences,
pub create_semaphore: PFN_vkCreateSemaphore,
pub destroy_semaphore: PFN_vkDestroySemaphore,
pub create_event: PFN_vkCreateEvent,
pub destroy_event: PFN_vkDestroyEvent,
pub get_event_status: PFN_vkGetEventStatus,
pub set_event: PFN_vkSetEvent,
pub reset_event: PFN_vkResetEvent,
pub create_query_pool: PFN_vkCreateQueryPool,
pub destroy_query_pool: PFN_vkDestroyQueryPool,
pub get_query_pool_results: PFN_vkGetQueryPoolResults,
pub create_buffer: PFN_vkCreateBuffer,
pub destroy_buffer: PFN_vkDestroyBuffer,
pub create_buffer_view: PFN_vkCreateBufferView,
pub destroy_buffer_view: PFN_vkDestroyBufferView,
pub create_image: PFN_vkCreateImage,
pub destroy_image: PFN_vkDestroyImage,
pub get_image_subresource_layout: PFN_vkGetImageSubresourceLayout,
pub create_image_view: PFN_vkCreateImageView,
pub destroy_image_view: PFN_vkDestroyImageView,
pub create_shader_module: PFN_vkCreateShaderModule,
pub destroy_shader_module: PFN_vkDestroyShaderModule,
pub create_pipeline_cache: PFN_vkCreatePipelineCache,
pub destroy_pipeline_cache: PFN_vkDestroyPipelineCache,
pub get_pipeline_cache_data: PFN_vkGetPipelineCacheData,
pub merge_pipeline_caches: PFN_vkMergePipelineCaches,
pub create_graphics_pipelines: PFN_vkCreateGraphicsPipelines,
pub create_compute_pipelines: PFN_vkCreateComputePipelines,
pub destroy_pipeline: PFN_vkDestroyPipeline,
pub create_pipeline_layout: PFN_vkCreatePipelineLayout,
pub destroy_pipeline_layout: PFN_vkDestroyPipelineLayout,
pub create_sampler: PFN_vkCreateSampler,
pub destroy_sampler: PFN_vkDestroySampler,
pub create_descriptor_set_layout: PFN_vkCreateDescriptorSetLayout,
pub destroy_descriptor_set_layout: PFN_vkDestroyDescriptorSetLayout,
pub create_descriptor_pool: PFN_vkCreateDescriptorPool,
pub destroy_descriptor_pool: PFN_vkDestroyDescriptorPool,
pub reset_descriptor_pool: PFN_vkResetDescriptorPool,
pub allocate_descriptor_sets: PFN_vkAllocateDescriptorSets,
pub free_descriptor_sets: PFN_vkFreeDescriptorSets,
pub update_descriptor_sets: PFN_vkUpdateDescriptorSets,
pub create_framebuffer: PFN_vkCreateFramebuffer,
pub destroy_framebuffer: PFN_vkDestroyFramebuffer,
pub create_render_pass: PFN_vkCreateRenderPass,
pub destroy_render_pass: PFN_vkDestroyRenderPass,
pub get_render_area_granularity: PFN_vkGetRenderAreaGranularity,
pub create_command_pool: PFN_vkCreateCommandPool,
pub destroy_command_pool: PFN_vkDestroyCommandPool,
pub reset_command_pool: PFN_vkResetCommandPool,
pub allocate_command_buffers: PFN_vkAllocateCommandBuffers,
pub free_command_buffers: PFN_vkFreeCommandBuffers,
pub begin_command_buffer: PFN_vkBeginCommandBuffer,
pub end_command_buffer: PFN_vkEndCommandBuffer,
pub reset_command_buffer: PFN_vkResetCommandBuffer,
pub cmd_bind_pipeline: PFN_vkCmdBindPipeline,
pub cmd_set_viewport: PFN_vkCmdSetViewport,
pub cmd_set_scissor: PFN_vkCmdSetScissor,
pub cmd_set_line_width: PFN_vkCmdSetLineWidth,
pub cmd_set_depth_bias: PFN_vkCmdSetDepthBias,
pub cmd_set_blend_constants: PFN_vkCmdSetBlendConstants,
pub cmd_set_depth_bounds: PFN_vkCmdSetDepthBounds,
pub cmd_set_stencil_compare_mask: PFN_vkCmdSetStencilCompareMask,
pub cmd_set_stencil_write_mask: PFN_vkCmdSetStencilWriteMask,
pub cmd_set_stencil_reference: PFN_vkCmdSetStencilReference,
pub cmd_bind_descriptor_sets: PFN_vkCmdBindDescriptorSets,
pub cmd_bind_index_buffer: PFN_vkCmdBindIndexBuffer,
pub cmd_bind_vertex_buffers: PFN_vkCmdBindVertexBuffers,
pub cmd_draw: PFN_vkCmdDraw,
pub cmd_draw_indexed: PFN_vkCmdDrawIndexed,
pub cmd_draw_indirect: PFN_vkCmdDrawIndirect,
pub cmd_draw_indexed_indirect: PFN_vkCmdDrawIndexedIndirect,
pub cmd_dispatch: PFN_vkCmdDispatch,
pub cmd_dispatch_indirect: PFN_vkCmdDispatchIndirect,
pub cmd_copy_buffer: PFN_vkCmdCopyBuffer,
pub cmd_copy_image: PFN_vkCmdCopyImage,
pub cmd_blit_image: PFN_vkCmdBlitImage,
pub cmd_copy_buffer_to_image: PFN_vkCmdCopyBufferToImage,
pub cmd_copy_image_to_buffer: PFN_vkCmdCopyImageToBuffer,
pub cmd_update_buffer: PFN_vkCmdUpdateBuffer,
pub cmd_fill_buffer: PFN_vkCmdFillBuffer,
pub cmd_clear_color_image: PFN_vkCmdClearColorImage,
pub cmd_clear_depth_stencil_image: PFN_vkCmdClearDepthStencilImage,
pub cmd_clear_attachments: PFN_vkCmdClearAttachments,
pub cmd_resolve_image: PFN_vkCmdResolveImage,
pub cmd_set_event: PFN_vkCmdSetEvent,
pub cmd_reset_event: PFN_vkCmdResetEvent,
pub cmd_wait_events: PFN_vkCmdWaitEvents,
pub cmd_pipeline_barrier: PFN_vkCmdPipelineBarrier,
pub cmd_begin_query: PFN_vkCmdBeginQuery,
pub cmd_end_query: PFN_vkCmdEndQuery,
pub cmd_reset_query_pool: PFN_vkCmdResetQueryPool,
pub cmd_write_timestamp: PFN_vkCmdWriteTimestamp,
pub cmd_copy_query_pool_results: PFN_vkCmdCopyQueryPoolResults,
pub cmd_push_constants: PFN_vkCmdPushConstants,
pub cmd_begin_render_pass: PFN_vkCmdBeginRenderPass,
pub cmd_next_subpass: PFN_vkCmdNextSubpass,
pub cmd_end_render_pass: PFN_vkCmdEndRenderPass,
pub cmd_execute_commands: PFN_vkCmdExecuteCommands,
}
impl Vk10DeviceCommands {
#[inline]
pub fn load(loader: &crate::DeviceLoader) -> Option<Vk10DeviceCommands> {
unsafe {
Some(Vk10DeviceCommands {
get_device_proc_addr: std::mem::transmute(loader.symbol("vkGetDeviceProcAddr")?),
destroy_device: std::mem::transmute(loader.symbol("vkDestroyDevice")?),
get_device_queue: std::mem::transmute(loader.symbol("vkGetDeviceQueue")?),
queue_submit: std::mem::transmute(loader.symbol("vkQueueSubmit")?),
queue_wait_idle: std::mem::transmute(loader.symbol("vkQueueWaitIdle")?),
device_wait_idle: std::mem::transmute(loader.symbol("vkDeviceWaitIdle")?),
allocate_memory: std::mem::transmute(loader.symbol("vkAllocateMemory")?),
free_memory: std::mem::transmute(loader.symbol("vkFreeMemory")?),
map_memory: std::mem::transmute(loader.symbol("vkMapMemory")?),
unmap_memory: std::mem::transmute(loader.symbol("vkUnmapMemory")?),
flush_mapped_memory_ranges: std::mem::transmute(
loader.symbol("vkFlushMappedMemoryRanges")?,
),
invalidate_mapped_memory_ranges: std::mem::transmute(
loader.symbol("vkInvalidateMappedMemoryRanges")?,
),
get_device_memory_commitment: std::mem::transmute(
loader.symbol("vkGetDeviceMemoryCommitment")?,
),
bind_buffer_memory: std::mem::transmute(loader.symbol("vkBindBufferMemory")?),
bind_image_memory: std::mem::transmute(loader.symbol("vkBindImageMemory")?),
get_buffer_memory_requirements: std::mem::transmute(
loader.symbol("vkGetBufferMemoryRequirements")?,
),
get_image_memory_requirements: std::mem::transmute(
loader.symbol("vkGetImageMemoryRequirements")?,
),
get_image_sparse_memory_requirements: std::mem::transmute(
loader.symbol("vkGetImageSparseMemoryRequirements")?,
),
queue_bind_sparse: std::mem::transmute(loader.symbol("vkQueueBindSparse")?),
create_fence: std::mem::transmute(loader.symbol("vkCreateFence")?),
destroy_fence: std::mem::transmute(loader.symbol("vkDestroyFence")?),
reset_fences: std::mem::transmute(loader.symbol("vkResetFences")?),
get_fence_status: std::mem::transmute(loader.symbol("vkGetFenceStatus")?),
wait_for_fences: std::mem::transmute(loader.symbol("vkWaitForFences")?),
create_semaphore: std::mem::transmute(loader.symbol("vkCreateSemaphore")?),
destroy_semaphore: std::mem::transmute(loader.symbol("vkDestroySemaphore")?),
create_event: std::mem::transmute(loader.symbol("vkCreateEvent")?),
destroy_event: std::mem::transmute(loader.symbol("vkDestroyEvent")?),
get_event_status: std::mem::transmute(loader.symbol("vkGetEventStatus")?),
set_event: std::mem::transmute(loader.symbol("vkSetEvent")?),
reset_event: std::mem::transmute(loader.symbol("vkResetEvent")?),
create_query_pool: std::mem::transmute(loader.symbol("vkCreateQueryPool")?),
destroy_query_pool: std::mem::transmute(loader.symbol("vkDestroyQueryPool")?),
get_query_pool_results: std::mem::transmute(
loader.symbol("vkGetQueryPoolResults")?,
),
create_buffer: std::mem::transmute(loader.symbol("vkCreateBuffer")?),
destroy_buffer: std::mem::transmute(loader.symbol("vkDestroyBuffer")?),
create_buffer_view: std::mem::transmute(loader.symbol("vkCreateBufferView")?),
destroy_buffer_view: std::mem::transmute(loader.symbol("vkDestroyBufferView")?),
create_image: std::mem::transmute(loader.symbol("vkCreateImage")?),
destroy_image: std::mem::transmute(loader.symbol("vkDestroyImage")?),
get_image_subresource_layout: std::mem::transmute(
loader.symbol("vkGetImageSubresourceLayout")?,
),
create_image_view: std::mem::transmute(loader.symbol("vkCreateImageView")?),
destroy_image_view: std::mem::transmute(loader.symbol("vkDestroyImageView")?),
create_shader_module: std::mem::transmute(loader.symbol("vkCreateShaderModule")?),
destroy_shader_module: std::mem::transmute(loader.symbol("vkDestroyShaderModule")?),
create_pipeline_cache: std::mem::transmute(loader.symbol("vkCreatePipelineCache")?),
destroy_pipeline_cache: std::mem::transmute(
loader.symbol("vkDestroyPipelineCache")?,
),
get_pipeline_cache_data: std::mem::transmute(
loader.symbol("vkGetPipelineCacheData")?,
),
merge_pipeline_caches: std::mem::transmute(loader.symbol("vkMergePipelineCaches")?),
create_graphics_pipelines: std::mem::transmute(
loader.symbol("vkCreateGraphicsPipelines")?,
),
create_compute_pipelines: std::mem::transmute(
loader.symbol("vkCreateComputePipelines")?,
),
destroy_pipeline: std::mem::transmute(loader.symbol("vkDestroyPipeline")?),
create_pipeline_layout: std::mem::transmute(
loader.symbol("vkCreatePipelineLayout")?,
),
destroy_pipeline_layout: std::mem::transmute(
loader.symbol("vkDestroyPipelineLayout")?,
),
create_sampler: std::mem::transmute(loader.symbol("vkCreateSampler")?),
destroy_sampler: std::mem::transmute(loader.symbol("vkDestroySampler")?),
create_descriptor_set_layout: std::mem::transmute(
loader.symbol("vkCreateDescriptorSetLayout")?,
),
destroy_descriptor_set_layout: std::mem::transmute(
loader.symbol("vkDestroyDescriptorSetLayout")?,
),
create_descriptor_pool: std::mem::transmute(
loader.symbol("vkCreateDescriptorPool")?,
),
destroy_descriptor_pool: std::mem::transmute(
loader.symbol("vkDestroyDescriptorPool")?,
),
reset_descriptor_pool: std::mem::transmute(loader.symbol("vkResetDescriptorPool")?),
allocate_descriptor_sets: std::mem::transmute(
loader.symbol("vkAllocateDescriptorSets")?,
),
free_descriptor_sets: std::mem::transmute(loader.symbol("vkFreeDescriptorSets")?),
update_descriptor_sets: std::mem::transmute(
loader.symbol("vkUpdateDescriptorSets")?,
),
create_framebuffer: std::mem::transmute(loader.symbol("vkCreateFramebuffer")?),
destroy_framebuffer: std::mem::transmute(loader.symbol("vkDestroyFramebuffer")?),
create_render_pass: std::mem::transmute(loader.symbol("vkCreateRenderPass")?),
destroy_render_pass: std::mem::transmute(loader.symbol("vkDestroyRenderPass")?),
get_render_area_granularity: std::mem::transmute(
loader.symbol("vkGetRenderAreaGranularity")?,
),
create_command_pool: std::mem::transmute(loader.symbol("vkCreateCommandPool")?),
destroy_command_pool: std::mem::transmute(loader.symbol("vkDestroyCommandPool")?),
reset_command_pool: std::mem::transmute(loader.symbol("vkResetCommandPool")?),
allocate_command_buffers: std::mem::transmute(
loader.symbol("vkAllocateCommandBuffers")?,
),
free_command_buffers: std::mem::transmute(loader.symbol("vkFreeCommandBuffers")?),
begin_command_buffer: std::mem::transmute(loader.symbol("vkBeginCommandBuffer")?),
end_command_buffer: std::mem::transmute(loader.symbol("vkEndCommandBuffer")?),
reset_command_buffer: std::mem::transmute(loader.symbol("vkResetCommandBuffer")?),
cmd_bind_pipeline: std::mem::transmute(loader.symbol("vkCmdBindPipeline")?),
cmd_set_viewport: std::mem::transmute(loader.symbol("vkCmdSetViewport")?),
cmd_set_scissor: std::mem::transmute(loader.symbol("vkCmdSetScissor")?),
cmd_set_line_width: std::mem::transmute(loader.symbol("vkCmdSetLineWidth")?),
cmd_set_depth_bias: std::mem::transmute(loader.symbol("vkCmdSetDepthBias")?),
cmd_set_blend_constants: std::mem::transmute(
loader.symbol("vkCmdSetBlendConstants")?,
),
cmd_set_depth_bounds: std::mem::transmute(loader.symbol("vkCmdSetDepthBounds")?),
cmd_set_stencil_compare_mask: std::mem::transmute(
loader.symbol("vkCmdSetStencilCompareMask")?,
),
cmd_set_stencil_write_mask: std::mem::transmute(
loader.symbol("vkCmdSetStencilWriteMask")?,
),
cmd_set_stencil_reference: std::mem::transmute(
loader.symbol("vkCmdSetStencilReference")?,
),
cmd_bind_descriptor_sets: std::mem::transmute(
loader.symbol("vkCmdBindDescriptorSets")?,
),
cmd_bind_index_buffer: std::mem::transmute(loader.symbol("vkCmdBindIndexBuffer")?),
cmd_bind_vertex_buffers: std::mem::transmute(
loader.symbol("vkCmdBindVertexBuffers")?,
),
cmd_draw: std::mem::transmute(loader.symbol("vkCmdDraw")?),
cmd_draw_indexed: std::mem::transmute(loader.symbol("vkCmdDrawIndexed")?),
cmd_draw_indirect: std::mem::transmute(loader.symbol("vkCmdDrawIndirect")?),
cmd_draw_indexed_indirect: std::mem::transmute(
loader.symbol("vkCmdDrawIndexedIndirect")?,
),
cmd_dispatch: std::mem::transmute(loader.symbol("vkCmdDispatch")?),
cmd_dispatch_indirect: std::mem::transmute(loader.symbol("vkCmdDispatchIndirect")?),
cmd_copy_buffer: std::mem::transmute(loader.symbol("vkCmdCopyBuffer")?),
cmd_copy_image: std::mem::transmute(loader.symbol("vkCmdCopyImage")?),
cmd_blit_image: std::mem::transmute(loader.symbol("vkCmdBlitImage")?),
cmd_copy_buffer_to_image: std::mem::transmute(
loader.symbol("vkCmdCopyBufferToImage")?,
),
cmd_copy_image_to_buffer: std::mem::transmute(
loader.symbol("vkCmdCopyImageToBuffer")?,
),
cmd_update_buffer: std::mem::transmute(loader.symbol("vkCmdUpdateBuffer")?),
cmd_fill_buffer: std::mem::transmute(loader.symbol("vkCmdFillBuffer")?),
cmd_clear_color_image: std::mem::transmute(loader.symbol("vkCmdClearColorImage")?),
cmd_clear_depth_stencil_image: std::mem::transmute(
loader.symbol("vkCmdClearDepthStencilImage")?,
),
cmd_clear_attachments: std::mem::transmute(loader.symbol("vkCmdClearAttachments")?),
cmd_resolve_image: std::mem::transmute(loader.symbol("vkCmdResolveImage")?),
cmd_set_event: std::mem::transmute(loader.symbol("vkCmdSetEvent")?),
cmd_reset_event: std::mem::transmute(loader.symbol("vkCmdResetEvent")?),
cmd_wait_events: std::mem::transmute(loader.symbol("vkCmdWaitEvents")?),
cmd_pipeline_barrier: std::mem::transmute(loader.symbol("vkCmdPipelineBarrier")?),
cmd_begin_query: std::mem::transmute(loader.symbol("vkCmdBeginQuery")?),
cmd_end_query: std::mem::transmute(loader.symbol("vkCmdEndQuery")?),
cmd_reset_query_pool: std::mem::transmute(loader.symbol("vkCmdResetQueryPool")?),
cmd_write_timestamp: std::mem::transmute(loader.symbol("vkCmdWriteTimestamp")?),
cmd_copy_query_pool_results: std::mem::transmute(
loader.symbol("vkCmdCopyQueryPoolResults")?,
),
cmd_push_constants: std::mem::transmute(loader.symbol("vkCmdPushConstants")?),
cmd_begin_render_pass: std::mem::transmute(loader.symbol("vkCmdBeginRenderPass")?),
cmd_next_subpass: std::mem::transmute(loader.symbol("vkCmdNextSubpass")?),
cmd_end_render_pass: std::mem::transmute(loader.symbol("vkCmdEndRenderPass")?),
cmd_execute_commands: std::mem::transmute(loader.symbol("vkCmdExecuteCommands")?),
})
}
}
}
#[doc = "Provides high level command wrappers for [`Vk10DeviceCommands`](struct.Vk10DeviceCommands.html)"]
pub trait Vk10DeviceLoaderExt {
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceProcAddr.html) · Device Command"]
unsafe fn get_device_proc_addr(
&self,
name: Option<&std::ffi::CStr>,
) -> crate::vk1_0::PFN_vkVoidFunction;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDevice.html) · Device Command"]
unsafe fn destroy_device(&self, allocator: Option<&crate::vk1_0::AllocationCallbacks>) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceQueue.html) · Device Command"]
unsafe fn get_device_queue(
&self,
queue_family_index: u32,
queue_index: u32,
queue: Option<crate::vk1_0::Queue>,
) -> crate::vk1_0::Queue;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueSubmit.html) · Device Command"]
unsafe fn queue_submit(
&self,
queue: crate::vk1_0::Queue,
submits: &[crate::vk1_0::SubmitInfoBuilder],
fence: crate::vk1_0::Fence,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueWaitIdle.html) · Device Command"]
unsafe fn queue_wait_idle(&self, queue: crate::vk1_0::Queue) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDeviceWaitIdle.html) · Device Command"]
unsafe fn device_wait_idle(&self) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateMemory.html) · Device Command"]
unsafe fn allocate_memory(
&self,
allocate_info: &crate::vk1_0::MemoryAllocateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
memory: Option<crate::vk1_0::DeviceMemory>,
) -> crate::utils::VulkanResult<crate::vk1_0::DeviceMemory>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeMemory.html) · Device Command"]
unsafe fn free_memory(
&self,
memory: crate::vk1_0::DeviceMemory,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMapMemory.html) · Device Command"]
unsafe fn map_memory(
&self,
memory: crate::vk1_0::DeviceMemory,
offset: crate::vk1_0::DeviceSize,
size: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::MemoryMapFlags,
data: *mut *mut std::ffi::c_void,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUnmapMemory.html) · Device Command"]
unsafe fn unmap_memory(&self, memory: crate::vk1_0::DeviceMemory) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFlushMappedMemoryRanges.html) · Device Command"]
unsafe fn flush_mapped_memory_ranges(
&self,
memory_ranges: &[crate::vk1_0::MappedMemoryRangeBuilder],
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkInvalidateMappedMemoryRanges.html) · Device Command"]
unsafe fn invalidate_mapped_memory_ranges(
&self,
memory_ranges: &[crate::vk1_0::MappedMemoryRangeBuilder],
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceMemoryCommitment.html) · Device Command"]
unsafe fn get_device_memory_commitment(
&self,
memory: crate::vk1_0::DeviceMemory,
committed_memory_in_bytes: Option<crate::vk1_0::DeviceSize>,
) -> crate::vk1_0::DeviceSize;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindBufferMemory.html) · Device Command"]
unsafe fn bind_buffer_memory(
&self,
buffer: crate::vk1_0::Buffer,
memory: crate::vk1_0::DeviceMemory,
memory_offset: crate::vk1_0::DeviceSize,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindImageMemory.html) · Device Command"]
unsafe fn bind_image_memory(
&self,
image: crate::vk1_0::Image,
memory: crate::vk1_0::DeviceMemory,
memory_offset: crate::vk1_0::DeviceSize,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferMemoryRequirements.html) · Device Command"]
unsafe fn get_buffer_memory_requirements(
&self,
buffer: crate::vk1_0::Buffer,
memory_requirements: Option<crate::vk1_0::MemoryRequirements>,
) -> crate::vk1_0::MemoryRequirements;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageMemoryRequirements.html) · Device Command"]
unsafe fn get_image_memory_requirements(
&self,
image: crate::vk1_0::Image,
memory_requirements: Option<crate::vk1_0::MemoryRequirements>,
) -> crate::vk1_0::MemoryRequirements;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSparseMemoryRequirements.html) · Device Command"]
unsafe fn get_image_sparse_memory_requirements(
&self,
image: crate::vk1_0::Image,
sparse_memory_requirement_count: Option<u32>,
) -> Vec<crate::vk1_0::SparseImageMemoryRequirements>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueBindSparse.html) · Device Command"]
unsafe fn queue_bind_sparse(
&self,
queue: crate::vk1_0::Queue,
bind_info: &[crate::vk1_0::BindSparseInfoBuilder],
fence: crate::vk1_0::Fence,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFence.html) · Device Command"]
unsafe fn create_fence(
&self,
create_info: &crate::vk1_0::FenceCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
fence: Option<crate::vk1_0::Fence>,
) -> crate::utils::VulkanResult<crate::vk1_0::Fence>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFence.html) · Device Command"]
unsafe fn destroy_fence(
&self,
fence: crate::vk1_0::Fence,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetFences.html) · Device Command"]
unsafe fn reset_fences(&self, fences: &[crate::vk1_0::Fence])
-> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetFenceStatus.html) · Device Command"]
unsafe fn get_fence_status(&self, fence: crate::vk1_0::Fence)
-> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkWaitForFences.html) · Device Command"]
unsafe fn wait_for_fences(
&self,
fences: &[crate::vk1_0::Fence],
wait_all: bool,
timeout: u64,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSemaphore.html) · Device Command"]
unsafe fn create_semaphore(
&self,
create_info: &crate::vk1_0::SemaphoreCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
semaphore: Option<crate::vk1_0::Semaphore>,
) -> crate::utils::VulkanResult<crate::vk1_0::Semaphore>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySemaphore.html) · Device Command"]
unsafe fn destroy_semaphore(
&self,
semaphore: crate::vk1_0::Semaphore,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateEvent.html) · Device Command"]
unsafe fn create_event(
&self,
create_info: &crate::vk1_0::EventCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
event: Option<crate::vk1_0::Event>,
) -> crate::utils::VulkanResult<crate::vk1_0::Event>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyEvent.html) · Device Command"]
unsafe fn destroy_event(
&self,
event: crate::vk1_0::Event,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetEventStatus.html) · Device Command"]
unsafe fn get_event_status(&self, event: crate::vk1_0::Event)
-> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkSetEvent.html) · Device Command"]
unsafe fn set_event(&self, event: crate::vk1_0::Event) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetEvent.html) · Device Command"]
unsafe fn reset_event(&self, event: crate::vk1_0::Event) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateQueryPool.html) · Device Command"]
unsafe fn create_query_pool(
&self,
create_info: &crate::vk1_0::QueryPoolCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
query_pool: Option<crate::vk1_0::QueryPool>,
) -> crate::utils::VulkanResult<crate::vk1_0::QueryPool>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyQueryPool.html) · Device Command"]
unsafe fn destroy_query_pool(
&self,
query_pool: crate::vk1_0::QueryPool,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetQueryPoolResults.html) · Device Command"]
unsafe fn get_query_pool_results(
&self,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
data_size: usize,
data: *mut std::ffi::c_void,
stride: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::QueryResultFlags,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBuffer.html) · Device Command"]
unsafe fn create_buffer(
&self,
create_info: &crate::vk1_0::BufferCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
buffer: Option<crate::vk1_0::Buffer>,
) -> crate::utils::VulkanResult<crate::vk1_0::Buffer>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBuffer.html) · Device Command"]
unsafe fn destroy_buffer(
&self,
buffer: crate::vk1_0::Buffer,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBufferView.html) · Device Command"]
unsafe fn create_buffer_view(
&self,
create_info: &crate::vk1_0::BufferViewCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
view: Option<crate::vk1_0::BufferView>,
) -> crate::utils::VulkanResult<crate::vk1_0::BufferView>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBufferView.html) · Device Command"]
unsafe fn destroy_buffer_view(
&self,
buffer_view: crate::vk1_0::BufferView,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImage.html) · Device Command"]
unsafe fn create_image(
&self,
create_info: &crate::vk1_0::ImageCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
image: Option<crate::vk1_0::Image>,
) -> crate::utils::VulkanResult<crate::vk1_0::Image>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImage.html) · Device Command"]
unsafe fn destroy_image(
&self,
image: crate::vk1_0::Image,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSubresourceLayout.html) · Device Command"]
unsafe fn get_image_subresource_layout(
&self,
image: crate::vk1_0::Image,
subresource: &crate::vk1_0::ImageSubresource,
layout: Option<crate::vk1_0::SubresourceLayout>,
) -> crate::vk1_0::SubresourceLayout;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImageView.html) · Device Command"]
unsafe fn create_image_view(
&self,
create_info: &crate::vk1_0::ImageViewCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
view: Option<crate::vk1_0::ImageView>,
) -> crate::utils::VulkanResult<crate::vk1_0::ImageView>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImageView.html) · Device Command"]
unsafe fn destroy_image_view(
&self,
image_view: crate::vk1_0::ImageView,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateShaderModule.html) · Device Command"]
unsafe fn create_shader_module(
&self,
create_info: &crate::vk1_0::ShaderModuleCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
shader_module: Option<crate::vk1_0::ShaderModule>,
) -> crate::utils::VulkanResult<crate::vk1_0::ShaderModule>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyShaderModule.html) · Device Command"]
unsafe fn destroy_shader_module(
&self,
shader_module: crate::vk1_0::ShaderModule,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineCache.html) · Device Command"]
unsafe fn create_pipeline_cache(
&self,
create_info: &crate::vk1_0::PipelineCacheCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
pipeline_cache: Option<crate::vk1_0::PipelineCache>,
) -> crate::utils::VulkanResult<crate::vk1_0::PipelineCache>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineCache.html) · Device Command"]
unsafe fn destroy_pipeline_cache(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPipelineCacheData.html) · Device Command"]
unsafe fn get_pipeline_cache_data(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
data_size: *mut usize,
data: *mut std::ffi::c_void,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMergePipelineCaches.html) · Device Command"]
unsafe fn merge_pipeline_caches(
&self,
dst_cache: crate::vk1_0::PipelineCache,
src_caches: &[crate::vk1_0::PipelineCache],
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateGraphicsPipelines.html) · Device Command"]
unsafe fn create_graphics_pipelines(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
create_infos: &[crate::vk1_0::GraphicsPipelineCreateInfoBuilder],
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::Pipeline>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateComputePipelines.html) · Device Command"]
unsafe fn create_compute_pipelines(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
create_infos: &[crate::vk1_0::ComputePipelineCreateInfoBuilder],
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::Pipeline>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipeline.html) · Device Command"]
unsafe fn destroy_pipeline(
&self,
pipeline: crate::vk1_0::Pipeline,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineLayout.html) · Device Command"]
unsafe fn create_pipeline_layout(
&self,
create_info: &crate::vk1_0::PipelineLayoutCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
pipeline_layout: Option<crate::vk1_0::PipelineLayout>,
) -> crate::utils::VulkanResult<crate::vk1_0::PipelineLayout>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineLayout.html) · Device Command"]
unsafe fn destroy_pipeline_layout(
&self,
pipeline_layout: crate::vk1_0::PipelineLayout,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSampler.html) · Device Command"]
unsafe fn create_sampler(
&self,
create_info: &crate::vk1_0::SamplerCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
sampler: Option<crate::vk1_0::Sampler>,
) -> crate::utils::VulkanResult<crate::vk1_0::Sampler>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySampler.html) · Device Command"]
unsafe fn destroy_sampler(
&self,
sampler: crate::vk1_0::Sampler,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorSetLayout.html) · Device Command"]
unsafe fn create_descriptor_set_layout(
&self,
create_info: &crate::vk1_0::DescriptorSetLayoutCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
set_layout: Option<crate::vk1_0::DescriptorSetLayout>,
) -> crate::utils::VulkanResult<crate::vk1_0::DescriptorSetLayout>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorSetLayout.html) · Device Command"]
unsafe fn destroy_descriptor_set_layout(
&self,
descriptor_set_layout: crate::vk1_0::DescriptorSetLayout,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorPool.html) · Device Command"]
unsafe fn create_descriptor_pool(
&self,
create_info: &crate::vk1_0::DescriptorPoolCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
descriptor_pool: Option<crate::vk1_0::DescriptorPool>,
) -> crate::utils::VulkanResult<crate::vk1_0::DescriptorPool>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorPool.html) · Device Command"]
unsafe fn destroy_descriptor_pool(
&self,
descriptor_pool: crate::vk1_0::DescriptorPool,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetDescriptorPool.html) · Device Command"]
unsafe fn reset_descriptor_pool(
&self,
descriptor_pool: crate::vk1_0::DescriptorPool,
flags: crate::vk1_0::DescriptorPoolResetFlags,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateDescriptorSets.html) · Device Command"]
unsafe fn allocate_descriptor_sets(
&self,
allocate_info: &crate::vk1_0::DescriptorSetAllocateInfo,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::DescriptorSet>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeDescriptorSets.html) · Device Command"]
unsafe fn free_descriptor_sets(
&self,
descriptor_pool: crate::vk1_0::DescriptorPool,
descriptor_sets: &[crate::vk1_0::DescriptorSet],
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUpdateDescriptorSets.html) · Device Command"]
unsafe fn update_descriptor_sets(
&self,
descriptor_writes: &[crate::vk1_0::WriteDescriptorSetBuilder],
descriptor_copies: &[crate::vk1_0::CopyDescriptorSetBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFramebuffer.html) · Device Command"]
unsafe fn create_framebuffer(
&self,
create_info: &crate::vk1_0::FramebufferCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
framebuffer: Option<crate::vk1_0::Framebuffer>,
) -> crate::utils::VulkanResult<crate::vk1_0::Framebuffer>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFramebuffer.html) · Device Command"]
unsafe fn destroy_framebuffer(
&self,
framebuffer: crate::vk1_0::Framebuffer,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateRenderPass.html) · Device Command"]
unsafe fn create_render_pass(
&self,
create_info: &crate::vk1_0::RenderPassCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
render_pass: Option<crate::vk1_0::RenderPass>,
) -> crate::utils::VulkanResult<crate::vk1_0::RenderPass>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyRenderPass.html) · Device Command"]
unsafe fn destroy_render_pass(
&self,
render_pass: crate::vk1_0::RenderPass,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetRenderAreaGranularity.html) · Device Command"]
unsafe fn get_render_area_granularity(
&self,
render_pass: crate::vk1_0::RenderPass,
granularity: Option<crate::vk1_0::Extent2D>,
) -> crate::vk1_0::Extent2D;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateCommandPool.html) · Device Command"]
unsafe fn create_command_pool(
&self,
create_info: &crate::vk1_0::CommandPoolCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
command_pool: Option<crate::vk1_0::CommandPool>,
) -> crate::utils::VulkanResult<crate::vk1_0::CommandPool>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyCommandPool.html) · Device Command"]
unsafe fn destroy_command_pool(
&self,
command_pool: crate::vk1_0::CommandPool,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandPool.html) · Device Command"]
unsafe fn reset_command_pool(
&self,
command_pool: crate::vk1_0::CommandPool,
flags: crate::vk1_0::CommandPoolResetFlags,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateCommandBuffers.html) · Device Command"]
unsafe fn allocate_command_buffers(
&self,
allocate_info: &crate::vk1_0::CommandBufferAllocateInfo,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::CommandBuffer>>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeCommandBuffers.html) · Device Command"]
unsafe fn free_command_buffers(
&self,
command_pool: crate::vk1_0::CommandPool,
command_buffers: &[crate::vk1_0::CommandBuffer],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBeginCommandBuffer.html) · Device Command"]
unsafe fn begin_command_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
begin_info: &crate::vk1_0::CommandBufferBeginInfo,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEndCommandBuffer.html) · Device Command"]
unsafe fn end_command_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandBuffer.html) · Device Command"]
unsafe fn reset_command_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
flags: crate::vk1_0::CommandBufferResetFlags,
) -> crate::utils::VulkanResult<()>;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindPipeline.html) · Device Command"]
unsafe fn cmd_bind_pipeline(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
pipeline: crate::vk1_0::Pipeline,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetViewport.html) · Device Command"]
unsafe fn cmd_set_viewport(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_viewport: u32,
viewports: &[crate::vk1_0::ViewportBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetScissor.html) · Device Command"]
unsafe fn cmd_set_scissor(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_scissor: u32,
scissors: &[crate::vk1_0::Rect2DBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetLineWidth.html) · Device Command"]
unsafe fn cmd_set_line_width(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
line_width: f32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBias.html) · Device Command"]
unsafe fn cmd_set_depth_bias(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
depth_bias_constant_factor: f32,
depth_bias_clamp: f32,
depth_bias_slope_factor: f32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetBlendConstants.html) · Device Command"]
unsafe fn cmd_set_blend_constants(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
blend_constants: [f32; 4],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBounds.html) · Device Command"]
unsafe fn cmd_set_depth_bounds(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
min_depth_bounds: f32,
max_depth_bounds: f32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilCompareMask.html) · Device Command"]
unsafe fn cmd_set_stencil_compare_mask(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
compare_mask: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilWriteMask.html) · Device Command"]
unsafe fn cmd_set_stencil_write_mask(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
write_mask: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilReference.html) · Device Command"]
unsafe fn cmd_set_stencil_reference(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
reference: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindDescriptorSets.html) · Device Command"]
unsafe fn cmd_bind_descriptor_sets(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
layout: crate::vk1_0::PipelineLayout,
first_set: u32,
descriptor_sets: &[crate::vk1_0::DescriptorSet],
dynamic_offsets: &[u32],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindIndexBuffer.html) · Device Command"]
unsafe fn cmd_bind_index_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
index_type: crate::vk1_0::IndexType,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindVertexBuffers.html) · Device Command"]
unsafe fn cmd_bind_vertex_buffers(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_binding: u32,
buffers: &[crate::vk1_0::Buffer],
offsets: &[crate::vk1_0::DeviceSize],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDraw.html) · Device Command"]
unsafe fn cmd_draw(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
vertex_count: u32,
instance_count: u32,
first_vertex: u32,
first_instance: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexed.html) · Device Command"]
unsafe fn cmd_draw_indexed(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
index_count: u32,
instance_count: u32,
first_index: u32,
vertex_offset: i32,
first_instance: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndirect.html) · Device Command"]
unsafe fn cmd_draw_indirect(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
draw_count: u32,
stride: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexedIndirect.html) · Device Command"]
unsafe fn cmd_draw_indexed_indirect(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
draw_count: u32,
stride: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatch.html) · Device Command"]
unsafe fn cmd_dispatch(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
group_count_x: u32,
group_count_y: u32,
group_count_z: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatchIndirect.html) · Device Command"]
unsafe fn cmd_dispatch_indirect(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBuffer.html) · Device Command"]
unsafe fn cmd_copy_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_buffer: crate::vk1_0::Buffer,
dst_buffer: crate::vk1_0::Buffer,
regions: &[crate::vk1_0::BufferCopyBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImage.html) · Device Command"]
unsafe fn cmd_copy_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::ImageCopyBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBlitImage.html) · Device Command"]
unsafe fn cmd_blit_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::ImageBlitBuilder],
filter: crate::vk1_0::Filter,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBufferToImage.html) · Device Command"]
unsafe fn cmd_copy_buffer_to_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_buffer: crate::vk1_0::Buffer,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::BufferImageCopyBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImageToBuffer.html) · Device Command"]
unsafe fn cmd_copy_image_to_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_buffer: crate::vk1_0::Buffer,
regions: &[crate::vk1_0::BufferImageCopyBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdUpdateBuffer.html) · Device Command"]
unsafe fn cmd_update_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
data_size: crate::vk1_0::DeviceSize,
data: *const std::ffi::c_void,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdFillBuffer.html) · Device Command"]
unsafe fn cmd_fill_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
size: crate::vk1_0::DeviceSize,
data: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearColorImage.html) · Device Command"]
unsafe fn cmd_clear_color_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
image: crate::vk1_0::Image,
image_layout: crate::vk1_0::ImageLayout,
color: &crate::vk1_0::ClearColorValue,
ranges: &[crate::vk1_0::ImageSubresourceRangeBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearDepthStencilImage.html) · Device Command"]
unsafe fn cmd_clear_depth_stencil_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
image: crate::vk1_0::Image,
image_layout: crate::vk1_0::ImageLayout,
depth_stencil: &crate::vk1_0::ClearDepthStencilValue,
ranges: &[crate::vk1_0::ImageSubresourceRangeBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearAttachments.html) · Device Command"]
unsafe fn cmd_clear_attachments(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
attachments: &[crate::vk1_0::ClearAttachmentBuilder],
rects: &[crate::vk1_0::ClearRectBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResolveImage.html) · Device Command"]
unsafe fn cmd_resolve_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::ImageResolveBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetEvent.html) · Device Command"]
unsafe fn cmd_set_event(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
event: crate::vk1_0::Event,
stage_mask: crate::vk1_0::PipelineStageFlags,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetEvent.html) · Device Command"]
unsafe fn cmd_reset_event(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
event: crate::vk1_0::Event,
stage_mask: crate::vk1_0::PipelineStageFlags,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWaitEvents.html) · Device Command"]
unsafe fn cmd_wait_events(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
events: &[crate::vk1_0::Event],
src_stage_mask: crate::vk1_0::PipelineStageFlags,
dst_stage_mask: crate::vk1_0::PipelineStageFlags,
memory_barriers: &[crate::vk1_0::MemoryBarrierBuilder],
buffer_memory_barriers: &[crate::vk1_0::BufferMemoryBarrierBuilder],
image_memory_barriers: &[crate::vk1_0::ImageMemoryBarrierBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPipelineBarrier.html) · Device Command"]
unsafe fn cmd_pipeline_barrier(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_stage_mask: crate::vk1_0::PipelineStageFlags,
dst_stage_mask: crate::vk1_0::PipelineStageFlags,
dependency_flags: crate::vk1_0::DependencyFlags,
memory_barriers: &[crate::vk1_0::MemoryBarrierBuilder],
buffer_memory_barriers: &[crate::vk1_0::BufferMemoryBarrierBuilder],
image_memory_barriers: &[crate::vk1_0::ImageMemoryBarrierBuilder],
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginQuery.html) · Device Command"]
unsafe fn cmd_begin_query(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
query: u32,
flags: crate::vk1_0::QueryControlFlags,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndQuery.html) · Device Command"]
unsafe fn cmd_end_query(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
query: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetQueryPool.html) · Device Command"]
unsafe fn cmd_reset_query_pool(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWriteTimestamp.html) · Device Command"]
unsafe fn cmd_write_timestamp(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_stage: crate::vk1_0::PipelineStageFlagBits,
query_pool: crate::vk1_0::QueryPool,
query: u32,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyQueryPoolResults.html) · Device Command"]
unsafe fn cmd_copy_query_pool_results(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
stride: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::QueryResultFlags,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPushConstants.html) · Device Command"]
unsafe fn cmd_push_constants(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
layout: crate::vk1_0::PipelineLayout,
stage_flags: crate::vk1_0::ShaderStageFlags,
offset: u32,
size: u32,
values: *const std::ffi::c_void,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginRenderPass.html) · Device Command"]
unsafe fn cmd_begin_render_pass(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
render_pass_begin: &crate::vk1_0::RenderPassBeginInfo,
contents: crate::vk1_0::SubpassContents,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdNextSubpass.html) · Device Command"]
unsafe fn cmd_next_subpass(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
contents: crate::vk1_0::SubpassContents,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndRenderPass.html) · Device Command"]
unsafe fn cmd_end_render_pass(&self, command_buffer: crate::vk1_0::CommandBuffer) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdExecuteCommands.html) · Device Command"]
unsafe fn cmd_execute_commands(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
command_buffers: &[crate::vk1_0::CommandBuffer],
) -> ();
}
impl Vk10DeviceLoaderExt for crate::DeviceLoader {
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceProcAddr.html) · Device Command"]
unsafe fn get_device_proc_addr(
&self,
name: Option<&std::ffi::CStr>,
) -> crate::vk1_0::PFN_vkVoidFunction {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_device_proc_addr;
let _val = function(
self.handle,
name.map(|s| s.as_ptr()).unwrap_or(std::ptr::null()),
);
_val
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDevice.html) · Device Command"]
unsafe fn destroy_device(&self, allocator: Option<&crate::vk1_0::AllocationCallbacks>) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_device;
let _val = function(
self.handle,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceQueue.html) · Device Command"]
unsafe fn get_device_queue(
&self,
queue_family_index: u32,
queue_index: u32,
queue: Option<crate::vk1_0::Queue>,
) -> crate::vk1_0::Queue {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_device_queue;
let mut queue = queue.unwrap_or_else(|| Default::default());
let _val = function(self.handle, queue_family_index, queue_index, &mut queue);
queue
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueSubmit.html) · Device Command"]
unsafe fn queue_submit(
&self,
queue: crate::vk1_0::Queue,
submits: &[crate::vk1_0::SubmitInfoBuilder],
fence: crate::vk1_0::Fence,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.queue_submit;
let submit_count = submits.len() as _;
let _val = function(queue, submit_count, submits.as_ptr() as _, fence);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueWaitIdle.html) · Device Command"]
unsafe fn queue_wait_idle(&self, queue: crate::vk1_0::Queue) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.queue_wait_idle;
let _val = function(queue);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDeviceWaitIdle.html) · Device Command"]
unsafe fn device_wait_idle(&self) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.device_wait_idle;
let _val = function(self.handle);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateMemory.html) · Device Command"]
unsafe fn allocate_memory(
&self,
allocate_info: &crate::vk1_0::MemoryAllocateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
memory: Option<crate::vk1_0::DeviceMemory>,
) -> crate::utils::VulkanResult<crate::vk1_0::DeviceMemory> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.allocate_memory;
let mut memory = memory.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
allocate_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut memory,
);
crate::utils::VulkanResult::new(_val, memory)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeMemory.html) · Device Command"]
unsafe fn free_memory(
&self,
memory: crate::vk1_0::DeviceMemory,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self.vk1_0.as_ref().expect("`vk1_0` not loaded").free_memory;
let _val = function(
self.handle,
memory,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMapMemory.html) · Device Command"]
unsafe fn map_memory(
&self,
memory: crate::vk1_0::DeviceMemory,
offset: crate::vk1_0::DeviceSize,
size: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::MemoryMapFlags,
data: *mut *mut std::ffi::c_void,
) -> crate::utils::VulkanResult<()> {
let function = self.vk1_0.as_ref().expect("`vk1_0` not loaded").map_memory;
let _val = function(self.handle, memory, offset, size, flags, data);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUnmapMemory.html) · Device Command"]
unsafe fn unmap_memory(&self, memory: crate::vk1_0::DeviceMemory) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.unmap_memory;
let _val = function(self.handle, memory);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFlushMappedMemoryRanges.html) · Device Command"]
unsafe fn flush_mapped_memory_ranges(
&self,
memory_ranges: &[crate::vk1_0::MappedMemoryRangeBuilder],
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.flush_mapped_memory_ranges;
let memory_range_count = memory_ranges.len() as _;
let _val = function(self.handle, memory_range_count, memory_ranges.as_ptr() as _);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkInvalidateMappedMemoryRanges.html) · Device Command"]
unsafe fn invalidate_mapped_memory_ranges(
&self,
memory_ranges: &[crate::vk1_0::MappedMemoryRangeBuilder],
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.invalidate_mapped_memory_ranges;
let memory_range_count = memory_ranges.len() as _;
let _val = function(self.handle, memory_range_count, memory_ranges.as_ptr() as _);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDeviceMemoryCommitment.html) · Device Command"]
unsafe fn get_device_memory_commitment(
&self,
memory: crate::vk1_0::DeviceMemory,
committed_memory_in_bytes: Option<crate::vk1_0::DeviceSize>,
) -> crate::vk1_0::DeviceSize {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_device_memory_commitment;
let mut committed_memory_in_bytes =
committed_memory_in_bytes.unwrap_or_else(|| Default::default());
let _val = function(self.handle, memory, &mut committed_memory_in_bytes);
committed_memory_in_bytes
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindBufferMemory.html) · Device Command"]
unsafe fn bind_buffer_memory(
&self,
buffer: crate::vk1_0::Buffer,
memory: crate::vk1_0::DeviceMemory,
memory_offset: crate::vk1_0::DeviceSize,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.bind_buffer_memory;
let _val = function(self.handle, buffer, memory, memory_offset);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBindImageMemory.html) · Device Command"]
unsafe fn bind_image_memory(
&self,
image: crate::vk1_0::Image,
memory: crate::vk1_0::DeviceMemory,
memory_offset: crate::vk1_0::DeviceSize,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.bind_image_memory;
let _val = function(self.handle, image, memory, memory_offset);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferMemoryRequirements.html) · Device Command"]
unsafe fn get_buffer_memory_requirements(
&self,
buffer: crate::vk1_0::Buffer,
memory_requirements: Option<crate::vk1_0::MemoryRequirements>,
) -> crate::vk1_0::MemoryRequirements {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_buffer_memory_requirements;
let mut memory_requirements = memory_requirements.unwrap_or_else(|| Default::default());
let _val = function(self.handle, buffer, &mut memory_requirements);
memory_requirements
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageMemoryRequirements.html) · Device Command"]
unsafe fn get_image_memory_requirements(
&self,
image: crate::vk1_0::Image,
memory_requirements: Option<crate::vk1_0::MemoryRequirements>,
) -> crate::vk1_0::MemoryRequirements {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_image_memory_requirements;
let mut memory_requirements = memory_requirements.unwrap_or_else(|| Default::default());
let _val = function(self.handle, image, &mut memory_requirements);
memory_requirements
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSparseMemoryRequirements.html) · Device Command"]
unsafe fn get_image_sparse_memory_requirements(
&self,
image: crate::vk1_0::Image,
sparse_memory_requirement_count: Option<u32>,
) -> Vec<crate::vk1_0::SparseImageMemoryRequirements> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_image_sparse_memory_requirements;
let mut sparse_memory_requirement_count =
sparse_memory_requirement_count.unwrap_or_else(|| {
let mut val = Default::default();
function(self.handle, image, &mut val, std::ptr::null_mut());
val
});
let mut sparse_memory_requirements =
vec![Default::default(); sparse_memory_requirement_count as _];
let _val = function(
self.handle,
image,
&mut sparse_memory_requirement_count,
sparse_memory_requirements.as_mut_ptr(),
);
sparse_memory_requirements
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkQueueBindSparse.html) · Device Command"]
unsafe fn queue_bind_sparse(
&self,
queue: crate::vk1_0::Queue,
bind_info: &[crate::vk1_0::BindSparseInfoBuilder],
fence: crate::vk1_0::Fence,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.queue_bind_sparse;
let bind_info_count = bind_info.len() as _;
let _val = function(queue, bind_info_count, bind_info.as_ptr() as _, fence);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFence.html) · Device Command"]
unsafe fn create_fence(
&self,
create_info: &crate::vk1_0::FenceCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
fence: Option<crate::vk1_0::Fence>,
) -> crate::utils::VulkanResult<crate::vk1_0::Fence> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_fence;
let mut fence = fence.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut fence,
);
crate::utils::VulkanResult::new(_val, fence)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFence.html) · Device Command"]
unsafe fn destroy_fence(
&self,
fence: crate::vk1_0::Fence,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_fence;
let _val = function(
self.handle,
fence,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetFences.html) · Device Command"]
unsafe fn reset_fences(
&self,
fences: &[crate::vk1_0::Fence],
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.reset_fences;
let fence_count = fences.len() as _;
let _val = function(self.handle, fence_count, fences.as_ptr() as _);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetFenceStatus.html) · Device Command"]
unsafe fn get_fence_status(
&self,
fence: crate::vk1_0::Fence,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_fence_status;
let _val = function(self.handle, fence);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkWaitForFences.html) · Device Command"]
unsafe fn wait_for_fences(
&self,
fences: &[crate::vk1_0::Fence],
wait_all: bool,
timeout: u64,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.wait_for_fences;
let fence_count = fences.len() as _;
let _val = function(
self.handle,
fence_count,
fences.as_ptr() as _,
wait_all as _,
timeout,
);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSemaphore.html) · Device Command"]
unsafe fn create_semaphore(
&self,
create_info: &crate::vk1_0::SemaphoreCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
semaphore: Option<crate::vk1_0::Semaphore>,
) -> crate::utils::VulkanResult<crate::vk1_0::Semaphore> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_semaphore;
let mut semaphore = semaphore.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut semaphore,
);
crate::utils::VulkanResult::new(_val, semaphore)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySemaphore.html) · Device Command"]
unsafe fn destroy_semaphore(
&self,
semaphore: crate::vk1_0::Semaphore,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_semaphore;
let _val = function(
self.handle,
semaphore,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateEvent.html) · Device Command"]
unsafe fn create_event(
&self,
create_info: &crate::vk1_0::EventCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
event: Option<crate::vk1_0::Event>,
) -> crate::utils::VulkanResult<crate::vk1_0::Event> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_event;
let mut event = event.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut event,
);
crate::utils::VulkanResult::new(_val, event)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyEvent.html) · Device Command"]
unsafe fn destroy_event(
&self,
event: crate::vk1_0::Event,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_event;
let _val = function(
self.handle,
event,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetEventStatus.html) · Device Command"]
unsafe fn get_event_status(
&self,
event: crate::vk1_0::Event,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_event_status;
let _val = function(self.handle, event);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkSetEvent.html) · Device Command"]
unsafe fn set_event(&self, event: crate::vk1_0::Event) -> crate::utils::VulkanResult<()> {
let function = self.vk1_0.as_ref().expect("`vk1_0` not loaded").set_event;
let _val = function(self.handle, event);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetEvent.html) · Device Command"]
unsafe fn reset_event(&self, event: crate::vk1_0::Event) -> crate::utils::VulkanResult<()> {
let function = self.vk1_0.as_ref().expect("`vk1_0` not loaded").reset_event;
let _val = function(self.handle, event);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateQueryPool.html) · Device Command"]
unsafe fn create_query_pool(
&self,
create_info: &crate::vk1_0::QueryPoolCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
query_pool: Option<crate::vk1_0::QueryPool>,
) -> crate::utils::VulkanResult<crate::vk1_0::QueryPool> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_query_pool;
let mut query_pool = query_pool.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut query_pool,
);
crate::utils::VulkanResult::new(_val, query_pool)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyQueryPool.html) · Device Command"]
unsafe fn destroy_query_pool(
&self,
query_pool: crate::vk1_0::QueryPool,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_query_pool;
let _val = function(
self.handle,
query_pool,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetQueryPoolResults.html) · Device Command"]
unsafe fn get_query_pool_results(
&self,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
data_size: usize,
data: *mut std::ffi::c_void,
stride: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::QueryResultFlags,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_query_pool_results;
let _val = function(
self.handle,
query_pool,
first_query,
query_count,
data_size,
data,
stride,
flags,
);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBuffer.html) · Device Command"]
unsafe fn create_buffer(
&self,
create_info: &crate::vk1_0::BufferCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
buffer: Option<crate::vk1_0::Buffer>,
) -> crate::utils::VulkanResult<crate::vk1_0::Buffer> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_buffer;
let mut buffer = buffer.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut buffer,
);
crate::utils::VulkanResult::new(_val, buffer)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBuffer.html) · Device Command"]
unsafe fn destroy_buffer(
&self,
buffer: crate::vk1_0::Buffer,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_buffer;
let _val = function(
self.handle,
buffer,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateBufferView.html) · Device Command"]
unsafe fn create_buffer_view(
&self,
create_info: &crate::vk1_0::BufferViewCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
view: Option<crate::vk1_0::BufferView>,
) -> crate::utils::VulkanResult<crate::vk1_0::BufferView> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_buffer_view;
let mut view = view.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut view,
);
crate::utils::VulkanResult::new(_val, view)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyBufferView.html) · Device Command"]
unsafe fn destroy_buffer_view(
&self,
buffer_view: crate::vk1_0::BufferView,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_buffer_view;
let _val = function(
self.handle,
buffer_view,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImage.html) · Device Command"]
unsafe fn create_image(
&self,
create_info: &crate::vk1_0::ImageCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
image: Option<crate::vk1_0::Image>,
) -> crate::utils::VulkanResult<crate::vk1_0::Image> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_image;
let mut image = image.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut image,
);
crate::utils::VulkanResult::new(_val, image)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImage.html) · Device Command"]
unsafe fn destroy_image(
&self,
image: crate::vk1_0::Image,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_image;
let _val = function(
self.handle,
image,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSubresourceLayout.html) · Device Command"]
unsafe fn get_image_subresource_layout(
&self,
image: crate::vk1_0::Image,
subresource: &crate::vk1_0::ImageSubresource,
layout: Option<crate::vk1_0::SubresourceLayout>,
) -> crate::vk1_0::SubresourceLayout {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_image_subresource_layout;
let mut layout = layout.unwrap_or_else(|| Default::default());
let _val = function(self.handle, image, subresource, &mut layout);
layout
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateImageView.html) · Device Command"]
unsafe fn create_image_view(
&self,
create_info: &crate::vk1_0::ImageViewCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
view: Option<crate::vk1_0::ImageView>,
) -> crate::utils::VulkanResult<crate::vk1_0::ImageView> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_image_view;
let mut view = view.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut view,
);
crate::utils::VulkanResult::new(_val, view)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyImageView.html) · Device Command"]
unsafe fn destroy_image_view(
&self,
image_view: crate::vk1_0::ImageView,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_image_view;
let _val = function(
self.handle,
image_view,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateShaderModule.html) · Device Command"]
unsafe fn create_shader_module(
&self,
create_info: &crate::vk1_0::ShaderModuleCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
shader_module: Option<crate::vk1_0::ShaderModule>,
) -> crate::utils::VulkanResult<crate::vk1_0::ShaderModule> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_shader_module;
let mut shader_module = shader_module.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut shader_module,
);
crate::utils::VulkanResult::new(_val, shader_module)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyShaderModule.html) · Device Command"]
unsafe fn destroy_shader_module(
&self,
shader_module: crate::vk1_0::ShaderModule,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_shader_module;
let _val = function(
self.handle,
shader_module,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineCache.html) · Device Command"]
unsafe fn create_pipeline_cache(
&self,
create_info: &crate::vk1_0::PipelineCacheCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
pipeline_cache: Option<crate::vk1_0::PipelineCache>,
) -> crate::utils::VulkanResult<crate::vk1_0::PipelineCache> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_pipeline_cache;
let mut pipeline_cache = pipeline_cache.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut pipeline_cache,
);
crate::utils::VulkanResult::new(_val, pipeline_cache)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineCache.html) · Device Command"]
unsafe fn destroy_pipeline_cache(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_pipeline_cache;
let _val = function(
self.handle,
pipeline_cache,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPipelineCacheData.html) · Device Command"]
unsafe fn get_pipeline_cache_data(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
data_size: *mut usize,
data: *mut std::ffi::c_void,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_pipeline_cache_data;
let _val = function(self.handle, pipeline_cache, data_size, data);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkMergePipelineCaches.html) · Device Command"]
unsafe fn merge_pipeline_caches(
&self,
dst_cache: crate::vk1_0::PipelineCache,
src_caches: &[crate::vk1_0::PipelineCache],
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.merge_pipeline_caches;
let src_cache_count = src_caches.len() as _;
let _val = function(
self.handle,
dst_cache,
src_cache_count,
src_caches.as_ptr() as _,
);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateGraphicsPipelines.html) · Device Command"]
unsafe fn create_graphics_pipelines(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
create_infos: &[crate::vk1_0::GraphicsPipelineCreateInfoBuilder],
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::Pipeline>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_graphics_pipelines;
let create_info_count = create_infos.len() as _;
let mut pipelines = vec![Default::default(); create_info_count as _];
let _val = function(
self.handle,
pipeline_cache,
create_info_count,
create_infos.as_ptr() as _,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
pipelines.as_mut_ptr(),
);
crate::utils::VulkanResult::new(_val, pipelines)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateComputePipelines.html) · Device Command"]
unsafe fn create_compute_pipelines(
&self,
pipeline_cache: crate::vk1_0::PipelineCache,
create_infos: &[crate::vk1_0::ComputePipelineCreateInfoBuilder],
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::Pipeline>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_compute_pipelines;
let create_info_count = create_infos.len() as _;
let mut pipelines = vec![Default::default(); create_info_count as _];
let _val = function(
self.handle,
pipeline_cache,
create_info_count,
create_infos.as_ptr() as _,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
pipelines.as_mut_ptr(),
);
crate::utils::VulkanResult::new(_val, pipelines)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipeline.html) · Device Command"]
unsafe fn destroy_pipeline(
&self,
pipeline: crate::vk1_0::Pipeline,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_pipeline;
let _val = function(
self.handle,
pipeline,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreatePipelineLayout.html) · Device Command"]
unsafe fn create_pipeline_layout(
&self,
create_info: &crate::vk1_0::PipelineLayoutCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
pipeline_layout: Option<crate::vk1_0::PipelineLayout>,
) -> crate::utils::VulkanResult<crate::vk1_0::PipelineLayout> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_pipeline_layout;
let mut pipeline_layout = pipeline_layout.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut pipeline_layout,
);
crate::utils::VulkanResult::new(_val, pipeline_layout)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyPipelineLayout.html) · Device Command"]
unsafe fn destroy_pipeline_layout(
&self,
pipeline_layout: crate::vk1_0::PipelineLayout,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_pipeline_layout;
let _val = function(
self.handle,
pipeline_layout,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateSampler.html) · Device Command"]
unsafe fn create_sampler(
&self,
create_info: &crate::vk1_0::SamplerCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
sampler: Option<crate::vk1_0::Sampler>,
) -> crate::utils::VulkanResult<crate::vk1_0::Sampler> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_sampler;
let mut sampler = sampler.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut sampler,
);
crate::utils::VulkanResult::new(_val, sampler)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroySampler.html) · Device Command"]
unsafe fn destroy_sampler(
&self,
sampler: crate::vk1_0::Sampler,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_sampler;
let _val = function(
self.handle,
sampler,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorSetLayout.html) · Device Command"]
unsafe fn create_descriptor_set_layout(
&self,
create_info: &crate::vk1_0::DescriptorSetLayoutCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
set_layout: Option<crate::vk1_0::DescriptorSetLayout>,
) -> crate::utils::VulkanResult<crate::vk1_0::DescriptorSetLayout> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_descriptor_set_layout;
let mut set_layout = set_layout.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut set_layout,
);
crate::utils::VulkanResult::new(_val, set_layout)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorSetLayout.html) · Device Command"]
unsafe fn destroy_descriptor_set_layout(
&self,
descriptor_set_layout: crate::vk1_0::DescriptorSetLayout,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_descriptor_set_layout;
let _val = function(
self.handle,
descriptor_set_layout,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateDescriptorPool.html) · Device Command"]
unsafe fn create_descriptor_pool(
&self,
create_info: &crate::vk1_0::DescriptorPoolCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
descriptor_pool: Option<crate::vk1_0::DescriptorPool>,
) -> crate::utils::VulkanResult<crate::vk1_0::DescriptorPool> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_descriptor_pool;
let mut descriptor_pool = descriptor_pool.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut descriptor_pool,
);
crate::utils::VulkanResult::new(_val, descriptor_pool)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyDescriptorPool.html) · Device Command"]
unsafe fn destroy_descriptor_pool(
&self,
descriptor_pool: crate::vk1_0::DescriptorPool,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_descriptor_pool;
let _val = function(
self.handle,
descriptor_pool,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetDescriptorPool.html) · Device Command"]
unsafe fn reset_descriptor_pool(
&self,
descriptor_pool: crate::vk1_0::DescriptorPool,
flags: crate::vk1_0::DescriptorPoolResetFlags,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.reset_descriptor_pool;
let _val = function(self.handle, descriptor_pool, flags);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateDescriptorSets.html) · Device Command"]
unsafe fn allocate_descriptor_sets(
&self,
allocate_info: &crate::vk1_0::DescriptorSetAllocateInfo,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::DescriptorSet>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.allocate_descriptor_sets;
let mut descriptor_sets = vec![Default::default(); allocate_info.descriptor_set_count as _];
let _val = function(self.handle, allocate_info, descriptor_sets.as_mut_ptr());
crate::utils::VulkanResult::new(_val, descriptor_sets)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeDescriptorSets.html) · Device Command"]
unsafe fn free_descriptor_sets(
&self,
descriptor_pool: crate::vk1_0::DescriptorPool,
descriptor_sets: &[crate::vk1_0::DescriptorSet],
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.free_descriptor_sets;
let descriptor_set_count = descriptor_sets.len() as _;
let _val = function(
self.handle,
descriptor_pool,
descriptor_set_count,
descriptor_sets.as_ptr() as _,
);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkUpdateDescriptorSets.html) · Device Command"]
unsafe fn update_descriptor_sets(
&self,
descriptor_writes: &[crate::vk1_0::WriteDescriptorSetBuilder],
descriptor_copies: &[crate::vk1_0::CopyDescriptorSetBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.update_descriptor_sets;
let descriptor_write_count = descriptor_writes.len() as _;
let descriptor_copy_count = descriptor_copies.len() as _;
let _val = function(
self.handle,
descriptor_write_count,
descriptor_writes.as_ptr() as _,
descriptor_copy_count,
descriptor_copies.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateFramebuffer.html) · Device Command"]
unsafe fn create_framebuffer(
&self,
create_info: &crate::vk1_0::FramebufferCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
framebuffer: Option<crate::vk1_0::Framebuffer>,
) -> crate::utils::VulkanResult<crate::vk1_0::Framebuffer> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_framebuffer;
let mut framebuffer = framebuffer.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut framebuffer,
);
crate::utils::VulkanResult::new(_val, framebuffer)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyFramebuffer.html) · Device Command"]
unsafe fn destroy_framebuffer(
&self,
framebuffer: crate::vk1_0::Framebuffer,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_framebuffer;
let _val = function(
self.handle,
framebuffer,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateRenderPass.html) · Device Command"]
unsafe fn create_render_pass(
&self,
create_info: &crate::vk1_0::RenderPassCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
render_pass: Option<crate::vk1_0::RenderPass>,
) -> crate::utils::VulkanResult<crate::vk1_0::RenderPass> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_render_pass;
let mut render_pass = render_pass.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut render_pass,
);
crate::utils::VulkanResult::new(_val, render_pass)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyRenderPass.html) · Device Command"]
unsafe fn destroy_render_pass(
&self,
render_pass: crate::vk1_0::RenderPass,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_render_pass;
let _val = function(
self.handle,
render_pass,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetRenderAreaGranularity.html) · Device Command"]
unsafe fn get_render_area_granularity(
&self,
render_pass: crate::vk1_0::RenderPass,
granularity: Option<crate::vk1_0::Extent2D>,
) -> crate::vk1_0::Extent2D {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.get_render_area_granularity;
let mut granularity = granularity.unwrap_or_else(|| Default::default());
let _val = function(self.handle, render_pass, &mut granularity);
granularity
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCreateCommandPool.html) · Device Command"]
unsafe fn create_command_pool(
&self,
create_info: &crate::vk1_0::CommandPoolCreateInfo,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
command_pool: Option<crate::vk1_0::CommandPool>,
) -> crate::utils::VulkanResult<crate::vk1_0::CommandPool> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.create_command_pool;
let mut command_pool = command_pool.unwrap_or_else(|| Default::default());
let _val = function(
self.handle,
create_info,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
&mut command_pool,
);
crate::utils::VulkanResult::new(_val, command_pool)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkDestroyCommandPool.html) · Device Command"]
unsafe fn destroy_command_pool(
&self,
command_pool: crate::vk1_0::CommandPool,
allocator: Option<&crate::vk1_0::AllocationCallbacks>,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.destroy_command_pool;
let _val = function(
self.handle,
command_pool,
if let Some(allocator) = allocator {
allocator
} else {
std::ptr::null()
},
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandPool.html) · Device Command"]
unsafe fn reset_command_pool(
&self,
command_pool: crate::vk1_0::CommandPool,
flags: crate::vk1_0::CommandPoolResetFlags,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.reset_command_pool;
let _val = function(self.handle, command_pool, flags);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkAllocateCommandBuffers.html) · Device Command"]
unsafe fn allocate_command_buffers(
&self,
allocate_info: &crate::vk1_0::CommandBufferAllocateInfo,
) -> crate::utils::VulkanResult<Vec<crate::vk1_0::CommandBuffer>> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.allocate_command_buffers;
let mut command_buffers = vec![Default::default(); allocate_info.command_buffer_count as _];
let _val = function(self.handle, allocate_info, command_buffers.as_mut_ptr());
crate::utils::VulkanResult::new(_val, command_buffers)
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkFreeCommandBuffers.html) · Device Command"]
unsafe fn free_command_buffers(
&self,
command_pool: crate::vk1_0::CommandPool,
command_buffers: &[crate::vk1_0::CommandBuffer],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.free_command_buffers;
let command_buffer_count = command_buffers.len() as _;
let _val = function(
self.handle,
command_pool,
command_buffer_count,
command_buffers.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkBeginCommandBuffer.html) · Device Command"]
unsafe fn begin_command_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
begin_info: &crate::vk1_0::CommandBufferBeginInfo,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.begin_command_buffer;
let _val = function(command_buffer, begin_info);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkEndCommandBuffer.html) · Device Command"]
unsafe fn end_command_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.end_command_buffer;
let _val = function(command_buffer);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkResetCommandBuffer.html) · Device Command"]
unsafe fn reset_command_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
flags: crate::vk1_0::CommandBufferResetFlags,
) -> crate::utils::VulkanResult<()> {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.reset_command_buffer;
let _val = function(command_buffer, flags);
crate::utils::VulkanResult::new(_val, ())
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindPipeline.html) · Device Command"]
unsafe fn cmd_bind_pipeline(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
pipeline: crate::vk1_0::Pipeline,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_bind_pipeline;
let _val = function(command_buffer, pipeline_bind_point, pipeline);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetViewport.html) · Device Command"]
unsafe fn cmd_set_viewport(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_viewport: u32,
viewports: &[crate::vk1_0::ViewportBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_viewport;
let viewport_count = viewports.len() as _;
let _val = function(
command_buffer,
first_viewport,
viewport_count,
viewports.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetScissor.html) · Device Command"]
unsafe fn cmd_set_scissor(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_scissor: u32,
scissors: &[crate::vk1_0::Rect2DBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_scissor;
let scissor_count = scissors.len() as _;
let _val = function(
command_buffer,
first_scissor,
scissor_count,
scissors.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetLineWidth.html) · Device Command"]
unsafe fn cmd_set_line_width(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
line_width: f32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_line_width;
let _val = function(command_buffer, line_width);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBias.html) · Device Command"]
unsafe fn cmd_set_depth_bias(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
depth_bias_constant_factor: f32,
depth_bias_clamp: f32,
depth_bias_slope_factor: f32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_depth_bias;
let _val = function(
command_buffer,
depth_bias_constant_factor,
depth_bias_clamp,
depth_bias_slope_factor,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetBlendConstants.html) · Device Command"]
unsafe fn cmd_set_blend_constants(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
blend_constants: [f32; 4],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_blend_constants;
let _val = function(command_buffer, blend_constants);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetDepthBounds.html) · Device Command"]
unsafe fn cmd_set_depth_bounds(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
min_depth_bounds: f32,
max_depth_bounds: f32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_depth_bounds;
let _val = function(command_buffer, min_depth_bounds, max_depth_bounds);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilCompareMask.html) · Device Command"]
unsafe fn cmd_set_stencil_compare_mask(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
compare_mask: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_stencil_compare_mask;
let _val = function(command_buffer, face_mask, compare_mask);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilWriteMask.html) · Device Command"]
unsafe fn cmd_set_stencil_write_mask(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
write_mask: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_stencil_write_mask;
let _val = function(command_buffer, face_mask, write_mask);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetStencilReference.html) · Device Command"]
unsafe fn cmd_set_stencil_reference(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
face_mask: crate::vk1_0::StencilFaceFlags,
reference: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_stencil_reference;
let _val = function(command_buffer, face_mask, reference);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindDescriptorSets.html) · Device Command"]
unsafe fn cmd_bind_descriptor_sets(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
layout: crate::vk1_0::PipelineLayout,
first_set: u32,
descriptor_sets: &[crate::vk1_0::DescriptorSet],
dynamic_offsets: &[u32],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_bind_descriptor_sets;
let descriptor_set_count = descriptor_sets.len() as _;
let dynamic_offset_count = dynamic_offsets.len() as _;
let _val = function(
command_buffer,
pipeline_bind_point,
layout,
first_set,
descriptor_set_count,
descriptor_sets.as_ptr() as _,
dynamic_offset_count,
dynamic_offsets.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindIndexBuffer.html) · Device Command"]
unsafe fn cmd_bind_index_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
index_type: crate::vk1_0::IndexType,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_bind_index_buffer;
let _val = function(command_buffer, buffer, offset, index_type);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindVertexBuffers.html) · Device Command"]
unsafe fn cmd_bind_vertex_buffers(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_binding: u32,
buffers: &[crate::vk1_0::Buffer],
offsets: &[crate::vk1_0::DeviceSize],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_bind_vertex_buffers;
let binding_count = buffers.len().min(offsets.len()) as _;
let _val = function(
command_buffer,
first_binding,
binding_count,
buffers.as_ptr() as _,
offsets.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDraw.html) · Device Command"]
unsafe fn cmd_draw(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
vertex_count: u32,
instance_count: u32,
first_vertex: u32,
first_instance: u32,
) -> () {
let function = self.vk1_0.as_ref().expect("`vk1_0` not loaded").cmd_draw;
let _val = function(
command_buffer,
vertex_count,
instance_count,
first_vertex,
first_instance,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexed.html) · Device Command"]
unsafe fn cmd_draw_indexed(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
index_count: u32,
instance_count: u32,
first_index: u32,
vertex_offset: i32,
first_instance: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_draw_indexed;
let _val = function(
command_buffer,
index_count,
instance_count,
first_index,
vertex_offset,
first_instance,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndirect.html) · Device Command"]
unsafe fn cmd_draw_indirect(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
draw_count: u32,
stride: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_draw_indirect;
let _val = function(command_buffer, buffer, offset, draw_count, stride);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawIndexedIndirect.html) · Device Command"]
unsafe fn cmd_draw_indexed_indirect(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
draw_count: u32,
stride: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_draw_indexed_indirect;
let _val = function(command_buffer, buffer, offset, draw_count, stride);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatch.html) · Device Command"]
unsafe fn cmd_dispatch(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
group_count_x: u32,
group_count_y: u32,
group_count_z: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_dispatch;
let _val = function(command_buffer, group_count_x, group_count_y, group_count_z);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDispatchIndirect.html) · Device Command"]
unsafe fn cmd_dispatch_indirect(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
buffer: crate::vk1_0::Buffer,
offset: crate::vk1_0::DeviceSize,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_dispatch_indirect;
let _val = function(command_buffer, buffer, offset);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBuffer.html) · Device Command"]
unsafe fn cmd_copy_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_buffer: crate::vk1_0::Buffer,
dst_buffer: crate::vk1_0::Buffer,
regions: &[crate::vk1_0::BufferCopyBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_copy_buffer;
let region_count = regions.len() as _;
let _val = function(
command_buffer,
src_buffer,
dst_buffer,
region_count,
regions.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImage.html) · Device Command"]
unsafe fn cmd_copy_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::ImageCopyBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_copy_image;
let region_count = regions.len() as _;
let _val = function(
command_buffer,
src_image,
src_image_layout,
dst_image,
dst_image_layout,
region_count,
regions.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBlitImage.html) · Device Command"]
unsafe fn cmd_blit_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::ImageBlitBuilder],
filter: crate::vk1_0::Filter,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_blit_image;
let region_count = regions.len() as _;
let _val = function(
command_buffer,
src_image,
src_image_layout,
dst_image,
dst_image_layout,
region_count,
regions.as_ptr() as _,
filter,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyBufferToImage.html) · Device Command"]
unsafe fn cmd_copy_buffer_to_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_buffer: crate::vk1_0::Buffer,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::BufferImageCopyBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_copy_buffer_to_image;
let region_count = regions.len() as _;
let _val = function(
command_buffer,
src_buffer,
dst_image,
dst_image_layout,
region_count,
regions.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyImageToBuffer.html) · Device Command"]
unsafe fn cmd_copy_image_to_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_buffer: crate::vk1_0::Buffer,
regions: &[crate::vk1_0::BufferImageCopyBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_copy_image_to_buffer;
let region_count = regions.len() as _;
let _val = function(
command_buffer,
src_image,
src_image_layout,
dst_buffer,
region_count,
regions.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdUpdateBuffer.html) · Device Command"]
unsafe fn cmd_update_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
data_size: crate::vk1_0::DeviceSize,
data: *const std::ffi::c_void,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_update_buffer;
let _val = function(command_buffer, dst_buffer, dst_offset, data_size, data);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdFillBuffer.html) · Device Command"]
unsafe fn cmd_fill_buffer(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
size: crate::vk1_0::DeviceSize,
data: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_fill_buffer;
let _val = function(command_buffer, dst_buffer, dst_offset, size, data);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearColorImage.html) · Device Command"]
unsafe fn cmd_clear_color_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
image: crate::vk1_0::Image,
image_layout: crate::vk1_0::ImageLayout,
color: &crate::vk1_0::ClearColorValue,
ranges: &[crate::vk1_0::ImageSubresourceRangeBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_clear_color_image;
let range_count = ranges.len() as _;
let _val = function(
command_buffer,
image,
image_layout,
color,
range_count,
ranges.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearDepthStencilImage.html) · Device Command"]
unsafe fn cmd_clear_depth_stencil_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
image: crate::vk1_0::Image,
image_layout: crate::vk1_0::ImageLayout,
depth_stencil: &crate::vk1_0::ClearDepthStencilValue,
ranges: &[crate::vk1_0::ImageSubresourceRangeBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_clear_depth_stencil_image;
let range_count = ranges.len() as _;
let _val = function(
command_buffer,
image,
image_layout,
depth_stencil,
range_count,
ranges.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdClearAttachments.html) · Device Command"]
unsafe fn cmd_clear_attachments(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
attachments: &[crate::vk1_0::ClearAttachmentBuilder],
rects: &[crate::vk1_0::ClearRectBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_clear_attachments;
let attachment_count = attachments.len() as _;
let rect_count = rects.len() as _;
let _val = function(
command_buffer,
attachment_count,
attachments.as_ptr() as _,
rect_count,
rects.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResolveImage.html) · Device Command"]
unsafe fn cmd_resolve_image(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_image: crate::vk1_0::Image,
src_image_layout: crate::vk1_0::ImageLayout,
dst_image: crate::vk1_0::Image,
dst_image_layout: crate::vk1_0::ImageLayout,
regions: &[crate::vk1_0::ImageResolveBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_resolve_image;
let region_count = regions.len() as _;
let _val = function(
command_buffer,
src_image,
src_image_layout,
dst_image,
dst_image_layout,
region_count,
regions.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetEvent.html) · Device Command"]
unsafe fn cmd_set_event(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
event: crate::vk1_0::Event,
stage_mask: crate::vk1_0::PipelineStageFlags,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_set_event;
let _val = function(command_buffer, event, stage_mask);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetEvent.html) · Device Command"]
unsafe fn cmd_reset_event(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
event: crate::vk1_0::Event,
stage_mask: crate::vk1_0::PipelineStageFlags,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_reset_event;
let _val = function(command_buffer, event, stage_mask);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWaitEvents.html) · Device Command"]
unsafe fn cmd_wait_events(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
events: &[crate::vk1_0::Event],
src_stage_mask: crate::vk1_0::PipelineStageFlags,
dst_stage_mask: crate::vk1_0::PipelineStageFlags,
memory_barriers: &[crate::vk1_0::MemoryBarrierBuilder],
buffer_memory_barriers: &[crate::vk1_0::BufferMemoryBarrierBuilder],
image_memory_barriers: &[crate::vk1_0::ImageMemoryBarrierBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_wait_events;
let event_count = events.len() as _;
let memory_barrier_count = memory_barriers.len() as _;
let buffer_memory_barrier_count = buffer_memory_barriers.len() as _;
let image_memory_barrier_count = image_memory_barriers.len() as _;
let _val = function(
command_buffer,
event_count,
events.as_ptr() as _,
src_stage_mask,
dst_stage_mask,
memory_barrier_count,
memory_barriers.as_ptr() as _,
buffer_memory_barrier_count,
buffer_memory_barriers.as_ptr() as _,
image_memory_barrier_count,
image_memory_barriers.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPipelineBarrier.html) · Device Command"]
unsafe fn cmd_pipeline_barrier(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
src_stage_mask: crate::vk1_0::PipelineStageFlags,
dst_stage_mask: crate::vk1_0::PipelineStageFlags,
dependency_flags: crate::vk1_0::DependencyFlags,
memory_barriers: &[crate::vk1_0::MemoryBarrierBuilder],
buffer_memory_barriers: &[crate::vk1_0::BufferMemoryBarrierBuilder],
image_memory_barriers: &[crate::vk1_0::ImageMemoryBarrierBuilder],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_pipeline_barrier;
let memory_barrier_count = memory_barriers.len() as _;
let buffer_memory_barrier_count = buffer_memory_barriers.len() as _;
let image_memory_barrier_count = image_memory_barriers.len() as _;
let _val = function(
command_buffer,
src_stage_mask,
dst_stage_mask,
dependency_flags,
memory_barrier_count,
memory_barriers.as_ptr() as _,
buffer_memory_barrier_count,
buffer_memory_barriers.as_ptr() as _,
image_memory_barrier_count,
image_memory_barriers.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginQuery.html) · Device Command"]
unsafe fn cmd_begin_query(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
query: u32,
flags: crate::vk1_0::QueryControlFlags,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_begin_query;
let _val = function(command_buffer, query_pool, query, flags);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndQuery.html) · Device Command"]
unsafe fn cmd_end_query(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
query: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_end_query;
let _val = function(command_buffer, query_pool, query);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdResetQueryPool.html) · Device Command"]
unsafe fn cmd_reset_query_pool(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_reset_query_pool;
let _val = function(command_buffer, query_pool, first_query, query_count);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdWriteTimestamp.html) · Device Command"]
unsafe fn cmd_write_timestamp(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
pipeline_stage: crate::vk1_0::PipelineStageFlagBits,
query_pool: crate::vk1_0::QueryPool,
query: u32,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_write_timestamp;
let _val = function(command_buffer, pipeline_stage, query_pool, query);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdCopyQueryPoolResults.html) · Device Command"]
unsafe fn cmd_copy_query_pool_results(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
query_pool: crate::vk1_0::QueryPool,
first_query: u32,
query_count: u32,
dst_buffer: crate::vk1_0::Buffer,
dst_offset: crate::vk1_0::DeviceSize,
stride: crate::vk1_0::DeviceSize,
flags: crate::vk1_0::QueryResultFlags,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_copy_query_pool_results;
let _val = function(
command_buffer,
query_pool,
first_query,
query_count,
dst_buffer,
dst_offset,
stride,
flags,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdPushConstants.html) · Device Command"]
unsafe fn cmd_push_constants(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
layout: crate::vk1_0::PipelineLayout,
stage_flags: crate::vk1_0::ShaderStageFlags,
offset: u32,
size: u32,
values: *const std::ffi::c_void,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_push_constants;
let _val = function(command_buffer, layout, stage_flags, offset, size, values);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBeginRenderPass.html) · Device Command"]
unsafe fn cmd_begin_render_pass(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
render_pass_begin: &crate::vk1_0::RenderPassBeginInfo,
contents: crate::vk1_0::SubpassContents,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_begin_render_pass;
let _val = function(command_buffer, render_pass_begin, contents);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdNextSubpass.html) · Device Command"]
unsafe fn cmd_next_subpass(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
contents: crate::vk1_0::SubpassContents,
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_next_subpass;
let _val = function(command_buffer, contents);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdEndRenderPass.html) · Device Command"]
unsafe fn cmd_end_render_pass(&self, command_buffer: crate::vk1_0::CommandBuffer) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_end_render_pass;
let _val = function(command_buffer);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdExecuteCommands.html) · Device Command"]
unsafe fn cmd_execute_commands(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
command_buffers: &[crate::vk1_0::CommandBuffer],
) -> () {
let function = self
.vk1_0
.as_ref()
.expect("`vk1_0` not loaded")
.cmd_execute_commands;
let command_buffer_count = command_buffers.len() as _;
let _val = function(
command_buffer,
command_buffer_count,
command_buffers.as_ptr() as _,
);
()
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct InstanceCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::InstanceCreateFlags,
pub p_application_info: *const crate::vk1_0::ApplicationInfo,
pub enabled_layer_count: u32,
pub pp_enabled_layer_names: *const *const std::os::raw::c_char,
pub enabled_extension_count: u32,
pub pp_enabled_extension_names: *const *const std::os::raw::c_char,
}
impl InstanceCreateInfo {
#[inline]
pub fn builder<'a>(self) -> InstanceCreateInfoBuilder<'a> {
InstanceCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for InstanceCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("InstanceCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("p_application_info", &self.p_application_info)
.field("enabled_layer_count", &self.enabled_layer_count)
.field("pp_enabled_layer_names", &self.pp_enabled_layer_names)
.field("enabled_extension_count", &self.enabled_extension_count)
.field(
"pp_enabled_extension_names",
&self.pp_enabled_extension_names,
)
.finish()
}
}
impl Default for InstanceCreateInfo {
fn default() -> InstanceCreateInfo {
InstanceCreateInfo {
s_type: crate::vk1_0::StructureType::INSTANCE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
p_application_info: std::ptr::null(),
enabled_layer_count: Default::default(),
pp_enabled_layer_names: std::ptr::null(),
enabled_extension_count: Default::default(),
pp_enabled_extension_names: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateInfo.html) · Builder of [`InstanceCreateInfo`](struct.InstanceCreateInfo.html)"]
#[repr(transparent)]
pub struct InstanceCreateInfoBuilder<'a>(InstanceCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> InstanceCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> InstanceCreateInfoBuilder<'a> {
InstanceCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::InstanceCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn application_info(mut self, application_info: &'a crate::vk1_0::ApplicationInfo) -> Self {
self.0.p_application_info = application_info;
self
}
#[allow(unused_mut)]
#[inline]
pub fn enabled_layer_names(
mut self,
enabled_layer_names: &'a [*const std::os::raw::c_char],
) -> Self {
self.0.enabled_layer_count = enabled_layer_names.len() as _;
self.0.pp_enabled_layer_names = enabled_layer_names.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn enabled_extension_names(
mut self,
enabled_extension_names: &'a [*const std::os::raw::c_char],
) -> Self {
self.0.enabled_extension_count = enabled_extension_names.len() as _;
self.0.pp_enabled_extension_names = enabled_extension_names.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> InstanceCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for InstanceCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for InstanceCreateInfoBuilder<'a> {
type Target = InstanceCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for InstanceCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStructureType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct StructureType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl StructureType {
pub const APPLICATION_INFO: Self = Self(0);
pub const INSTANCE_CREATE_INFO: Self = Self(1);
pub const DEVICE_QUEUE_CREATE_INFO: Self = Self(2);
pub const DEVICE_CREATE_INFO: Self = Self(3);
pub const SUBMIT_INFO: Self = Self(4);
pub const MEMORY_ALLOCATE_INFO: Self = Self(5);
pub const MAPPED_MEMORY_RANGE: Self = Self(6);
pub const BIND_SPARSE_INFO: Self = Self(7);
pub const FENCE_CREATE_INFO: Self = Self(8);
pub const SEMAPHORE_CREATE_INFO: Self = Self(9);
pub const EVENT_CREATE_INFO: Self = Self(10);
pub const QUERY_POOL_CREATE_INFO: Self = Self(11);
pub const BUFFER_CREATE_INFO: Self = Self(12);
pub const BUFFER_VIEW_CREATE_INFO: Self = Self(13);
pub const IMAGE_CREATE_INFO: Self = Self(14);
pub const IMAGE_VIEW_CREATE_INFO: Self = Self(15);
pub const SHADER_MODULE_CREATE_INFO: Self = Self(16);
pub const PIPELINE_CACHE_CREATE_INFO: Self = Self(17);
pub const PIPELINE_SHADER_STAGE_CREATE_INFO: Self = Self(18);
pub const PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO: Self = Self(19);
pub const PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO: Self = Self(20);
pub const PIPELINE_TESSELLATION_STATE_CREATE_INFO: Self = Self(21);
pub const PIPELINE_VIEWPORT_STATE_CREATE_INFO: Self = Self(22);
pub const PIPELINE_RASTERIZATION_STATE_CREATE_INFO: Self = Self(23);
pub const PIPELINE_MULTISAMPLE_STATE_CREATE_INFO: Self = Self(24);
pub const PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO: Self = Self(25);
pub const PIPELINE_COLOR_BLEND_STATE_CREATE_INFO: Self = Self(26);
pub const PIPELINE_DYNAMIC_STATE_CREATE_INFO: Self = Self(27);
pub const GRAPHICS_PIPELINE_CREATE_INFO: Self = Self(28);
pub const COMPUTE_PIPELINE_CREATE_INFO: Self = Self(29);
pub const PIPELINE_LAYOUT_CREATE_INFO: Self = Self(30);
pub const SAMPLER_CREATE_INFO: Self = Self(31);
pub const DESCRIPTOR_SET_LAYOUT_CREATE_INFO: Self = Self(32);
pub const DESCRIPTOR_POOL_CREATE_INFO: Self = Self(33);
pub const DESCRIPTOR_SET_ALLOCATE_INFO: Self = Self(34);
pub const WRITE_DESCRIPTOR_SET: Self = Self(35);
pub const COPY_DESCRIPTOR_SET: Self = Self(36);
pub const FRAMEBUFFER_CREATE_INFO: Self = Self(37);
pub const RENDER_PASS_CREATE_INFO: Self = Self(38);
pub const COMMAND_POOL_CREATE_INFO: Self = Self(39);
pub const COMMAND_BUFFER_ALLOCATE_INFO: Self = Self(40);
pub const COMMAND_BUFFER_INHERITANCE_INFO: Self = Self(41);
pub const COMMAND_BUFFER_BEGIN_INFO: Self = Self(42);
pub const RENDER_PASS_BEGIN_INFO: Self = Self(43);
pub const BUFFER_MEMORY_BARRIER: Self = Self(44);
pub const IMAGE_MEMORY_BARRIER: Self = Self(45);
pub const MEMORY_BARRIER: Self = Self(46);
pub const LOADER_INSTANCE_CREATE_INFO: Self = Self(47);
pub const LOADER_DEVICE_CREATE_INFO: Self = Self(48);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SUBGROUP_PROPERTIES: Self = Self(1000094000);
pub const BIND_BUFFER_MEMORY_INFO: Self = Self(1000157000);
pub const BIND_IMAGE_MEMORY_INFO: Self = Self(1000157001);
pub const PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES: Self = Self(1000083000);
pub const MEMORY_DEDICATED_REQUIREMENTS: Self = Self(1000127000);
pub const MEMORY_DEDICATED_ALLOCATE_INFO: Self = Self(1000127001);
pub const MEMORY_ALLOCATE_FLAGS_INFO: Self = Self(1000060000);
pub const DEVICE_GROUP_RENDER_PASS_BEGIN_INFO: Self = Self(1000060003);
pub const DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO: Self = Self(1000060004);
pub const DEVICE_GROUP_SUBMIT_INFO: Self = Self(1000060005);
pub const DEVICE_GROUP_BIND_SPARSE_INFO: Self = Self(1000060006);
pub const BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO: Self = Self(1000060013);
pub const BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO: Self = Self(1000060014);
pub const PHYSICAL_DEVICE_GROUP_PROPERTIES: Self = Self(1000070000);
pub const DEVICE_GROUP_DEVICE_CREATE_INFO: Self = Self(1000070001);
pub const BUFFER_MEMORY_REQUIREMENTS_INFO_2: Self = Self(1000146000);
pub const IMAGE_MEMORY_REQUIREMENTS_INFO_2: Self = Self(1000146001);
pub const IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2: Self = Self(1000146002);
pub const MEMORY_REQUIREMENTS_2: Self = Self(1000146003);
pub const SPARSE_IMAGE_MEMORY_REQUIREMENTS_2: Self = Self(1000146004);
pub const PHYSICAL_DEVICE_FEATURES_2: Self = Self(1000059000);
pub const PHYSICAL_DEVICE_PROPERTIES_2: Self = Self(1000059001);
pub const FORMAT_PROPERTIES_2: Self = Self(1000059002);
pub const IMAGE_FORMAT_PROPERTIES_2: Self = Self(1000059003);
pub const PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2: Self = Self(1000059004);
pub const QUEUE_FAMILY_PROPERTIES_2: Self = Self(1000059005);
pub const PHYSICAL_DEVICE_MEMORY_PROPERTIES_2: Self = Self(1000059006);
pub const SPARSE_IMAGE_FORMAT_PROPERTIES_2: Self = Self(1000059007);
pub const PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2: Self = Self(1000059008);
pub const PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: Self = Self(1000117000);
pub const RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO: Self = Self(1000117001);
pub const IMAGE_VIEW_USAGE_CREATE_INFO: Self = Self(1000117002);
pub const PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO: Self = Self(1000117003);
pub const RENDER_PASS_MULTIVIEW_CREATE_INFO: Self = Self(1000053000);
pub const PHYSICAL_DEVICE_MULTIVIEW_FEATURES: Self = Self(1000053001);
pub const PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES: Self = Self(1000053002);
pub const PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES: Self = Self(1000120000);
pub const PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES: Self =
Self::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
pub const PROTECTED_SUBMIT_INFO: Self = Self(1000145000);
pub const PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES: Self = Self(1000145001);
pub const PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES: Self = Self(1000145002);
pub const DEVICE_QUEUE_INFO_2: Self = Self(1000145003);
pub const SAMPLER_YCBCR_CONVERSION_CREATE_INFO: Self = Self(1000156000);
pub const SAMPLER_YCBCR_CONVERSION_INFO: Self = Self(1000156001);
pub const BIND_IMAGE_PLANE_MEMORY_INFO: Self = Self(1000156002);
pub const IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO: Self = Self(1000156003);
pub const PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES: Self = Self(1000156004);
pub const SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES: Self = Self(1000156005);
pub const DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO: Self = Self(1000085000);
pub const PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO: Self = Self(1000071000);
pub const EXTERNAL_IMAGE_FORMAT_PROPERTIES: Self = Self(1000071001);
pub const PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO: Self = Self(1000071002);
pub const EXTERNAL_BUFFER_PROPERTIES: Self = Self(1000071003);
pub const PHYSICAL_DEVICE_ID_PROPERTIES: Self = Self(1000071004);
pub const EXTERNAL_MEMORY_BUFFER_CREATE_INFO: Self = Self(1000072000);
pub const EXTERNAL_MEMORY_IMAGE_CREATE_INFO: Self = Self(1000072001);
pub const EXPORT_MEMORY_ALLOCATE_INFO: Self = Self(1000072002);
pub const PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO: Self = Self(1000112000);
pub const EXTERNAL_FENCE_PROPERTIES: Self = Self(1000112001);
pub const EXPORT_FENCE_CREATE_INFO: Self = Self(1000113000);
pub const EXPORT_SEMAPHORE_CREATE_INFO: Self = Self(1000077000);
pub const PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO: Self = Self(1000076000);
pub const EXTERNAL_SEMAPHORE_PROPERTIES: Self = Self(1000076001);
pub const PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES: Self = Self(1000168000);
pub const DESCRIPTOR_SET_LAYOUT_SUPPORT: Self = Self(1000168001);
pub const PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES: Self = Self(1000063000);
pub const PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES: Self =
Self::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_VULKAN_1_1_FEATURES: Self = Self(49);
pub const PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES: Self = Self(50);
pub const PHYSICAL_DEVICE_VULKAN_1_2_FEATURES: Self = Self(51);
pub const PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES: Self = Self(52);
pub const IMAGE_FORMAT_LIST_CREATE_INFO: Self = Self(1000147000);
pub const ATTACHMENT_DESCRIPTION_2: Self = Self(1000109000);
pub const ATTACHMENT_REFERENCE_2: Self = Self(1000109001);
pub const SUBPASS_DESCRIPTION_2: Self = Self(1000109002);
pub const SUBPASS_DEPENDENCY_2: Self = Self(1000109003);
pub const RENDER_PASS_CREATE_INFO_2: Self = Self(1000109004);
pub const SUBPASS_BEGIN_INFO: Self = Self(1000109005);
pub const SUBPASS_END_INFO: Self = Self(1000109006);
pub const PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES: Self = Self(1000177000);
pub const PHYSICAL_DEVICE_DRIVER_PROPERTIES: Self = Self(1000196000);
pub const PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES: Self = Self(1000180000);
pub const PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES: Self = Self(1000082000);
pub const PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES: Self = Self(1000197000);
pub const DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: Self = Self(1000161000);
pub const PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES: Self = Self(1000161001);
pub const PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES: Self = Self(1000161002);
pub const DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: Self = Self(1000161003);
pub const DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: Self = Self(1000161004);
pub const PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES: Self = Self(1000199000);
pub const SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE: Self = Self(1000199001);
pub const PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES: Self = Self(1000221000);
pub const IMAGE_STENCIL_USAGE_CREATE_INFO: Self = Self(1000246000);
pub const PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES: Self = Self(1000130000);
pub const SAMPLER_REDUCTION_MODE_CREATE_INFO: Self = Self(1000130001);
pub const PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES: Self = Self(1000211000);
pub const PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES: Self = Self(1000108000);
pub const FRAMEBUFFER_ATTACHMENTS_CREATE_INFO: Self = Self(1000108001);
pub const FRAMEBUFFER_ATTACHMENT_IMAGE_INFO: Self = Self(1000108002);
pub const RENDER_PASS_ATTACHMENT_BEGIN_INFO: Self = Self(1000108003);
pub const PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES: Self = Self(1000253000);
pub const PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES: Self = Self(1000175000);
pub const PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES: Self = Self(1000241000);
pub const ATTACHMENT_REFERENCE_STENCIL_LAYOUT: Self = Self(1000241001);
pub const ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT: Self = Self(1000241002);
pub const PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES: Self = Self(1000261000);
pub const PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES: Self = Self(1000207000);
pub const PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES: Self = Self(1000207001);
pub const SEMAPHORE_TYPE_CREATE_INFO: Self = Self(1000207002);
pub const TIMELINE_SEMAPHORE_SUBMIT_INFO: Self = Self(1000207003);
pub const SEMAPHORE_WAIT_INFO: Self = Self(1000207004);
pub const SEMAPHORE_SIGNAL_INFO: Self = Self(1000207005);
pub const PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES: Self = Self(1000257000);
pub const BUFFER_DEVICE_ADDRESS_INFO: Self = Self(1000244001);
pub const BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO: Self = Self(1000257002);
pub const MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO: Self = Self(1000257003);
pub const DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO: Self = Self(1000257004);
}
#[doc = "[Part of `extensions::amd_device_coherent_memory`](../extensions/amd_device_coherent_memory/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD: Self = Self(1000229000);
}
#[doc = "[Part of `extensions::amd_display_native_hdr`](../extensions/amd_display_native_hdr/index.html)"]
impl StructureType {
pub const DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD: Self = Self(1000213000);
pub const SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD: Self = Self(1000213001);
}
#[doc = "[Part of `extensions::amd_memory_overallocation_behavior`](../extensions/amd_memory_overallocation_behavior/index.html)"]
impl StructureType {
pub const DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: Self = Self(1000189000);
}
#[doc = "[Part of `extensions::amd_pipeline_compiler_control`](../extensions/amd_pipeline_compiler_control/index.html)"]
impl StructureType {
pub const PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD: Self = Self(1000183000);
}
#[doc = "[Part of `extensions::amd_rasterization_order`](../extensions/amd_rasterization_order/index.html)"]
impl StructureType {
pub const PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD: Self = Self(1000018000);
}
#[doc = "[Part of `extensions::amd_shader_core_properties`](../extensions/amd_shader_core_properties/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD: Self = Self(1000185000);
}
#[doc = "[Part of `extensions::amd_shader_core_properties2`](../extensions/amd_shader_core_properties2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: Self = Self(1000227000);
}
#[doc = "[Part of `extensions::amd_texture_gather_bias_lod`](../extensions/amd_texture_gather_bias_lod/index.html)"]
impl StructureType {
pub const TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD: Self = Self(1000041000);
}
#[doc = "[Part of `extensions::android_external_memory_android_hardware_buffer`](../extensions/android_external_memory_android_hardware_buffer/index.html)"]
impl StructureType {
pub const ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: Self = Self(1000129000);
pub const ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID: Self = Self(1000129001);
pub const ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: Self = Self(1000129002);
pub const IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: Self = Self(1000129003);
pub const MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID: Self = Self(1000129004);
pub const EXTERNAL_FORMAT_ANDROID: Self = Self(1000129005);
}
#[doc = "[Part of `extensions::ext_astc_decode_mode`](../extensions/ext_astc_decode_mode/index.html)"]
impl StructureType {
pub const IMAGE_VIEW_ASTC_DECODE_MODE_EXT: Self = Self(1000067000);
pub const PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT: Self = Self(1000067001);
}
#[doc = "[Part of `extensions::ext_blend_operation_advanced`](../extensions/ext_blend_operation_advanced/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: Self = Self(1000148000);
pub const PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: Self = Self(1000148001);
pub const PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT: Self = Self(1000148002);
}
#[doc = "[Part of `extensions::ext_buffer_device_address`](../extensions/ext_buffer_device_address/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT: Self = Self(1000244000);
pub const PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT: Self =
Self::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
pub const BUFFER_DEVICE_ADDRESS_INFO_EXT: Self = Self::BUFFER_DEVICE_ADDRESS_INFO;
pub const BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT: Self = Self(1000244002);
}
#[doc = "[Part of `extensions::ext_calibrated_timestamps`](../extensions/ext_calibrated_timestamps/index.html)"]
impl StructureType {
pub const CALIBRATED_TIMESTAMP_INFO_EXT: Self = Self(1000184000);
}
#[doc = "[Part of `extensions::ext_conditional_rendering`](../extensions/ext_conditional_rendering/index.html)"]
impl StructureType {
pub const COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT: Self = Self(1000081000);
pub const PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT: Self = Self(1000081001);
pub const CONDITIONAL_RENDERING_BEGIN_INFO_EXT: Self = Self(1000081002);
}
#[doc = "[Part of `extensions::ext_conservative_rasterization`](../extensions/ext_conservative_rasterization/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT: Self = Self(1000101000);
pub const PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT: Self = Self(1000101001);
}
#[doc = "[Part of `extensions::ext_custom_border_color`](../extensions/ext_custom_border_color/index.html)"]
impl StructureType {
pub const SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT: Self = Self(1000287000);
pub const PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT: Self = Self(1000287001);
pub const PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: Self = Self(1000287002);
}
#[doc = "[Part of `extensions::ext_debug_marker`](../extensions/ext_debug_marker/index.html)"]
impl StructureType {
pub const DEBUG_MARKER_OBJECT_NAME_INFO_EXT: Self = Self(1000022000);
pub const DEBUG_MARKER_OBJECT_TAG_INFO_EXT: Self = Self(1000022001);
pub const DEBUG_MARKER_MARKER_INFO_EXT: Self = Self(1000022002);
}
#[doc = "[Part of `extensions::ext_debug_report`](../extensions/ext_debug_report/index.html)"]
impl StructureType {
pub const DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: Self = Self(1000011000);
pub const DEBUG_REPORT_CREATE_INFO_EXT: Self = Self::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
}
#[doc = "[Part of `extensions::ext_debug_utils`](../extensions/ext_debug_utils/index.html)"]
impl StructureType {
pub const DEBUG_UTILS_OBJECT_NAME_INFO_EXT: Self = Self(1000128000);
pub const DEBUG_UTILS_OBJECT_TAG_INFO_EXT: Self = Self(1000128001);
pub const DEBUG_UTILS_LABEL_EXT: Self = Self(1000128002);
pub const DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT: Self = Self(1000128003);
pub const DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: Self = Self(1000128004);
}
#[doc = "[Part of `extensions::ext_depth_clip_enable`](../extensions/ext_depth_clip_enable/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT: Self = Self(1000102000);
pub const PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT: Self = Self(1000102001);
}
#[doc = "[Part of `extensions::ext_descriptor_indexing`](../extensions/ext_descriptor_indexing/index.html)"]
impl StructureType {
pub const DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: Self =
Self::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO;
pub const PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT: Self =
Self::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
pub const PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT: Self =
Self::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
pub const DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT: Self =
Self::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO;
pub const DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT: Self =
Self::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT;
}
#[doc = "[Part of `extensions::ext_discard_rectangles`](../extensions/ext_discard_rectangles/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT: Self = Self(1000099000);
pub const PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT: Self = Self(1000099001);
}
#[doc = "[Part of `extensions::ext_display_control`](../extensions/ext_display_control/index.html)"]
impl StructureType {
pub const DISPLAY_POWER_INFO_EXT: Self = Self(1000091000);
pub const DEVICE_EVENT_INFO_EXT: Self = Self(1000091001);
pub const DISPLAY_EVENT_INFO_EXT: Self = Self(1000091002);
pub const SWAPCHAIN_COUNTER_CREATE_INFO_EXT: Self = Self(1000091003);
}
#[doc = "[Part of `extensions::ext_display_surface_counter`](../extensions/ext_display_surface_counter/index.html)"]
impl StructureType {
pub const SURFACE_CAPABILITIES_2_EXT: Self = Self(1000090000);
pub const SURFACE_CAPABILITIES2_EXT: Self = Self::SURFACE_CAPABILITIES_2_EXT;
}
#[doc = "[Part of `extensions::ext_external_memory_host`](../extensions/ext_external_memory_host/index.html)"]
impl StructureType {
pub const IMPORT_MEMORY_HOST_POINTER_INFO_EXT: Self = Self(1000178000);
pub const MEMORY_HOST_POINTER_PROPERTIES_EXT: Self = Self(1000178001);
pub const PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: Self = Self(1000178002);
}
#[doc = "[Part of `extensions::ext_filter_cubic`](../extensions/ext_filter_cubic/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT: Self = Self(1000170000);
pub const FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT: Self = Self(1000170001);
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT: Self = Self(1000218000);
pub const PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT: Self = Self(1000218001);
pub const RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT: Self = Self(1000218002);
}
#[doc = "[Part of `extensions::ext_fragment_shader_interlock`](../extensions/ext_fragment_shader_interlock/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: Self = Self(1000251000);
}
#[doc = "[Part of `extensions::ext_full_screen_exclusive`](../extensions/ext_full_screen_exclusive/index.html)"]
impl StructureType {
pub const SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: Self = Self(1000255000);
pub const SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: Self = Self(1000255002);
pub const SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: Self = Self(1000255001);
}
#[doc = "[Part of `extensions::ext_global_priority`](../extensions/ext_global_priority/index.html)"]
impl StructureType {
pub const DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT: Self = Self(1000174000);
}
#[doc = "[Part of `extensions::ext_hdr_metadata`](../extensions/ext_hdr_metadata/index.html)"]
impl StructureType {
pub const HDR_METADATA_EXT: Self = Self(1000105000);
}
#[doc = "[Part of `extensions::ext_headless_surface`](../extensions/ext_headless_surface/index.html)"]
impl StructureType {
pub const HEADLESS_SURFACE_CREATE_INFO_EXT: Self = Self(1000256000);
}
#[doc = "[Part of `extensions::ext_host_query_reset`](../extensions/ext_host_query_reset/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: Self =
Self::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
}
#[doc = "[Part of `extensions::ext_image_drm_format_modifier`](../extensions/ext_image_drm_format_modifier/index.html)"]
impl StructureType {
pub const DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT: Self = Self(1000158000);
pub const DRM_FORMAT_MODIFIER_PROPERTIES_EXT: Self = Self(1000158001);
pub const PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: Self = Self(1000158002);
pub const IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT: Self = Self(1000158003);
pub const IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT: Self = Self(1000158004);
pub const IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT: Self = Self(1000158005);
}
#[doc = "[Part of `extensions::ext_index_type_uint8`](../extensions/ext_index_type_uint8/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT: Self = Self(1000265000);
}
#[doc = "[Part of `extensions::ext_inline_uniform_block`](../extensions/ext_inline_uniform_block/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT: Self = Self(1000138000);
pub const PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT: Self = Self(1000138001);
pub const WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT: Self = Self(1000138002);
pub const DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT: Self = Self(1000138003);
}
#[doc = "[Part of `extensions::ext_line_rasterization`](../extensions/ext_line_rasterization/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT: Self = Self(1000259000);
pub const PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT: Self = Self(1000259001);
pub const PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT: Self = Self(1000259002);
}
#[doc = "[Part of `extensions::ext_memory_budget`](../extensions/ext_memory_budget/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT: Self = Self(1000237000);
}
#[doc = "[Part of `extensions::ext_memory_priority`](../extensions/ext_memory_priority/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT: Self = Self(1000238000);
pub const MEMORY_PRIORITY_ALLOCATE_INFO_EXT: Self = Self(1000238001);
}
#[doc = "[Part of `extensions::ext_metal_surface`](../extensions/ext_metal_surface/index.html)"]
impl StructureType {
pub const METAL_SURFACE_CREATE_INFO_EXT: Self = Self(1000217000);
}
#[doc = "[Part of `extensions::ext_pci_bus_info`](../extensions/ext_pci_bus_info/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: Self = Self(1000212000);
}
#[doc = "[Part of `extensions::ext_pipeline_creation_cache_control`](../extensions/ext_pipeline_creation_cache_control/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT: Self = Self(1000297000);
}
#[doc = "[Part of `extensions::ext_pipeline_creation_feedback`](../extensions/ext_pipeline_creation_feedback/index.html)"]
impl StructureType {
pub const PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT: Self = Self(1000192000);
}
#[doc = "[Part of `extensions::ext_private_data`](../extensions/ext_private_data/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: Self = Self(1000295000);
pub const DEVICE_PRIVATE_DATA_CREATE_INFO_EXT: Self = Self(1000295001);
pub const PRIVATE_DATA_SLOT_CREATE_INFO_EXT: Self = Self(1000295002);
}
#[doc = "[Part of `extensions::ext_robustness2`](../extensions/ext_robustness2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: Self = Self(1000286000);
pub const PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: Self = Self(1000286001);
}
#[doc = "[Part of `extensions::ext_sample_locations`](../extensions/ext_sample_locations/index.html)"]
impl StructureType {
pub const SAMPLE_LOCATIONS_INFO_EXT: Self = Self(1000143000);
pub const RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT: Self = Self(1000143001);
pub const PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT: Self = Self(1000143002);
pub const PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: Self = Self(1000143003);
pub const MULTISAMPLE_PROPERTIES_EXT: Self = Self(1000143004);
}
#[doc = "[Part of `extensions::ext_sampler_filter_minmax`](../extensions/ext_sampler_filter_minmax/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT: Self =
Self::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
pub const SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT: Self =
Self::SAMPLER_REDUCTION_MODE_CREATE_INFO;
}
#[doc = "[Part of `extensions::ext_scalar_block_layout`](../extensions/ext_scalar_block_layout/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT: Self =
Self::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
}
#[doc = "[Part of `extensions::ext_separate_stencil_usage`](../extensions/ext_separate_stencil_usage/index.html)"]
impl StructureType {
pub const IMAGE_STENCIL_USAGE_CREATE_INFO_EXT: Self = Self::IMAGE_STENCIL_USAGE_CREATE_INFO;
}
#[doc = "[Part of `extensions::ext_shader_demote_to_helper_invocation`](../extensions/ext_shader_demote_to_helper_invocation/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: Self =
Self(1000276000);
}
#[doc = "[Part of `extensions::ext_subgroup_size_control`](../extensions/ext_subgroup_size_control/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT: Self = Self(1000225000);
pub const PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT: Self = Self(1000225001);
pub const PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT: Self = Self(1000225002);
}
#[doc = "[Part of `extensions::ext_texel_buffer_alignment`](../extensions/ext_texel_buffer_alignment/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: Self = Self(1000281000);
pub const PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT: Self = Self(1000281001);
}
#[doc = "[Part of `extensions::ext_texture_compression_astc_hdr`](../extensions/ext_texture_compression_astc_hdr/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT: Self = Self(1000066000);
}
#[doc = "[Part of `extensions::ext_tooling_info`](../extensions/ext_tooling_info/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT: Self = Self(1000245000);
}
#[doc = "[Part of `extensions::ext_transform_feedback`](../extensions/ext_transform_feedback/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: Self = Self(1000028000);
pub const PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT: Self = Self(1000028001);
pub const PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT: Self = Self(1000028002);
}
#[doc = "[Part of `extensions::ext_validation_cache`](../extensions/ext_validation_cache/index.html)"]
impl StructureType {
pub const VALIDATION_CACHE_CREATE_INFO_EXT: Self = Self(1000160000);
pub const SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT: Self = Self(1000160001);
}
#[doc = "[Part of `extensions::ext_validation_features`](../extensions/ext_validation_features/index.html)"]
impl StructureType {
pub const VALIDATION_FEATURES_EXT: Self = Self(1000247000);
}
#[doc = "[Part of `extensions::ext_validation_flags`](../extensions/ext_validation_flags/index.html)"]
impl StructureType {
pub const VALIDATION_FLAGS_EXT: Self = Self(1000061000);
}
#[doc = "[Part of `extensions::ext_vertex_attribute_divisor`](../extensions/ext_vertex_attribute_divisor/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: Self = Self(1000190000);
pub const PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT: Self = Self(1000190001);
pub const PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT: Self = Self(1000190002);
}
#[doc = "[Part of `extensions::ext_ycbcr_image_arrays`](../extensions/ext_ycbcr_image_arrays/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT: Self = Self(1000252000);
}
#[doc = "[Part of `extensions::fuchsia_imagepipe_surface`](../extensions/fuchsia_imagepipe_surface/index.html)"]
impl StructureType {
pub const IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA: Self = Self(1000214000);
}
#[doc = "[Part of `extensions::ggp_frame_token`](../extensions/ggp_frame_token/index.html)"]
impl StructureType {
pub const PRESENT_FRAME_TOKEN_GGP: Self = Self(1000191000);
}
#[doc = "[Part of `extensions::ggp_stream_descriptor_surface`](../extensions/ggp_stream_descriptor_surface/index.html)"]
impl StructureType {
pub const STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP: Self = Self(1000049000);
}
#[doc = "[Part of `extensions::google_display_timing`](../extensions/google_display_timing/index.html)"]
impl StructureType {
pub const PRESENT_TIMES_INFO_GOOGLE: Self = Self(1000092000);
}
#[doc = "[Part of `extensions::intel_performance_query`](../extensions/intel_performance_query/index.html)"]
impl StructureType {
pub const QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL: Self = Self(1000210000);
pub const QUERY_POOL_CREATE_INFO_INTEL: Self =
Self::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL;
pub const INITIALIZE_PERFORMANCE_API_INFO_INTEL: Self = Self(1000210001);
pub const PERFORMANCE_MARKER_INFO_INTEL: Self = Self(1000210002);
pub const PERFORMANCE_STREAM_MARKER_INFO_INTEL: Self = Self(1000210003);
pub const PERFORMANCE_OVERRIDE_INFO_INTEL: Self = Self(1000210004);
pub const PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL: Self = Self(1000210005);
}
#[doc = "[Part of `extensions::intel_shader_integer_functions2`](../extensions/intel_shader_integer_functions2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: Self = Self(1000209000);
}
#[doc = "[Part of `extensions::khr_16bit_storage`](../extensions/khr_16bit_storage/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
}
#[doc = "[Part of `extensions::khr_8bit_storage`](../extensions/khr_8bit_storage/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
}
#[doc = "[Part of `extensions::khr_android_surface`](../extensions/khr_android_surface/index.html)"]
impl StructureType {
pub const ANDROID_SURFACE_CREATE_INFO_KHR: Self = Self(1000008000);
}
#[doc = "[Part of `extensions::khr_bind_memory2`](../extensions/khr_bind_memory2/index.html)"]
impl StructureType {
pub const BIND_BUFFER_MEMORY_INFO_KHR: Self = Self::BIND_BUFFER_MEMORY_INFO;
pub const BIND_IMAGE_MEMORY_INFO_KHR: Self = Self::BIND_IMAGE_MEMORY_INFO;
}
#[doc = "[Part of `extensions::khr_buffer_device_address`](../extensions/khr_buffer_device_address/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
pub const BUFFER_DEVICE_ADDRESS_INFO_KHR: Self = Self::BUFFER_DEVICE_ADDRESS_INFO;
pub const BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR: Self =
Self::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO;
pub const MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR: Self =
Self::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO;
pub const DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR: Self =
Self::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO;
}
#[doc = "[Part of `extensions::khr_create_renderpass2`](../extensions/khr_create_renderpass2/index.html)"]
impl StructureType {
pub const ATTACHMENT_DESCRIPTION_2_KHR: Self = Self::ATTACHMENT_DESCRIPTION_2;
pub const ATTACHMENT_REFERENCE_2_KHR: Self = Self::ATTACHMENT_REFERENCE_2;
pub const SUBPASS_DESCRIPTION_2_KHR: Self = Self::SUBPASS_DESCRIPTION_2;
pub const SUBPASS_DEPENDENCY_2_KHR: Self = Self::SUBPASS_DEPENDENCY_2;
pub const RENDER_PASS_CREATE_INFO_2_KHR: Self = Self::RENDER_PASS_CREATE_INFO_2;
pub const SUBPASS_BEGIN_INFO_KHR: Self = Self::SUBPASS_BEGIN_INFO;
pub const SUBPASS_END_INFO_KHR: Self = Self::SUBPASS_END_INFO;
}
#[doc = "[Part of `extensions::khr_dedicated_allocation`](../extensions/khr_dedicated_allocation/index.html)"]
impl StructureType {
pub const MEMORY_DEDICATED_REQUIREMENTS_KHR: Self = Self::MEMORY_DEDICATED_REQUIREMENTS;
pub const MEMORY_DEDICATED_ALLOCATE_INFO_KHR: Self = Self::MEMORY_DEDICATED_ALLOCATE_INFO;
}
#[doc = "[Part of `extensions::khr_deferred_host_operations`](../extensions/khr_deferred_host_operations/index.html)"]
impl StructureType {
pub const DEFERRED_OPERATION_INFO_KHR: Self = Self(1000268000);
}
#[doc = "[Part of `extensions::khr_depth_stencil_resolve`](../extensions/khr_depth_stencil_resolve/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR: Self =
Self::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
pub const SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR: Self =
Self::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE;
}
#[doc = "[Part of `extensions::khr_descriptor_update_template`](../extensions/khr_descriptor_update_template/index.html)"]
impl StructureType {
pub const DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR: Self =
Self::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO;
}
#[doc = "[Part of `extensions::khr_device_group`](../extensions/khr_device_group/index.html)"]
impl StructureType {
pub const MEMORY_ALLOCATE_FLAGS_INFO_KHR: Self = Self::MEMORY_ALLOCATE_FLAGS_INFO;
pub const DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR: Self =
Self::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO;
pub const DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR: Self =
Self::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO;
pub const DEVICE_GROUP_SUBMIT_INFO_KHR: Self = Self::DEVICE_GROUP_SUBMIT_INFO;
pub const DEVICE_GROUP_BIND_SPARSE_INFO_KHR: Self = Self::DEVICE_GROUP_BIND_SPARSE_INFO;
pub const BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR: Self =
Self::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO;
pub const BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR: Self =
Self::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO;
pub const DEVICE_GROUP_PRESENT_CAPABILITIES_KHR: Self = Self(1000060007);
pub const IMAGE_SWAPCHAIN_CREATE_INFO_KHR: Self = Self(1000060008);
pub const BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR: Self = Self(1000060009);
pub const ACQUIRE_NEXT_IMAGE_INFO_KHR: Self = Self(1000060010);
pub const DEVICE_GROUP_PRESENT_INFO_KHR: Self = Self(1000060011);
pub const DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR: Self = Self(1000060012);
}
#[doc = "[Part of `extensions::khr_device_group_creation`](../extensions/khr_device_group_creation/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR: Self = Self::PHYSICAL_DEVICE_GROUP_PROPERTIES;
pub const DEVICE_GROUP_DEVICE_CREATE_INFO_KHR: Self = Self::DEVICE_GROUP_DEVICE_CREATE_INFO;
}
#[doc = "[Part of `extensions::khr_display`](../extensions/khr_display/index.html)"]
impl StructureType {
pub const DISPLAY_MODE_CREATE_INFO_KHR: Self = Self(1000002000);
pub const DISPLAY_SURFACE_CREATE_INFO_KHR: Self = Self(1000002001);
}
#[doc = "[Part of `extensions::khr_display_swapchain`](../extensions/khr_display_swapchain/index.html)"]
impl StructureType {
pub const DISPLAY_PRESENT_INFO_KHR: Self = Self(1000003000);
}
#[doc = "[Part of `extensions::khr_driver_properties`](../extensions/khr_driver_properties/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR: Self = Self::PHYSICAL_DEVICE_DRIVER_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_external_fence`](../extensions/khr_external_fence/index.html)"]
impl StructureType {
pub const EXPORT_FENCE_CREATE_INFO_KHR: Self = Self::EXPORT_FENCE_CREATE_INFO;
}
#[doc = "[Part of `extensions::khr_external_fence_capabilities`](../extensions/khr_external_fence_capabilities/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR: Self =
Self::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO;
pub const EXTERNAL_FENCE_PROPERTIES_KHR: Self = Self::EXTERNAL_FENCE_PROPERTIES;
pub const PHYSICAL_DEVICE_ID_PROPERTIES_KHR: Self = Self::PHYSICAL_DEVICE_ID_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_external_fence_fd`](../extensions/khr_external_fence_fd/index.html)"]
impl StructureType {
pub const IMPORT_FENCE_FD_INFO_KHR: Self = Self(1000115000);
pub const FENCE_GET_FD_INFO_KHR: Self = Self(1000115001);
}
#[doc = "[Part of `extensions::khr_external_fence_win32`](../extensions/khr_external_fence_win32/index.html)"]
impl StructureType {
pub const IMPORT_FENCE_WIN32_HANDLE_INFO_KHR: Self = Self(1000114000);
pub const EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: Self = Self(1000114001);
pub const FENCE_GET_WIN32_HANDLE_INFO_KHR: Self = Self(1000114002);
}
#[doc = "[Part of `extensions::khr_external_memory`](../extensions/khr_external_memory/index.html)"]
impl StructureType {
pub const EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR: Self =
Self::EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
pub const EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR: Self = Self::EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
pub const EXPORT_MEMORY_ALLOCATE_INFO_KHR: Self = Self::EXPORT_MEMORY_ALLOCATE_INFO;
}
#[doc = "[Part of `extensions::khr_external_memory_capabilities`](../extensions/khr_external_memory_capabilities/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR: Self =
Self::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO;
pub const EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR: Self = Self::EXTERNAL_IMAGE_FORMAT_PROPERTIES;
pub const PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR: Self =
Self::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO;
pub const EXTERNAL_BUFFER_PROPERTIES_KHR: Self = Self::EXTERNAL_BUFFER_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_external_memory_fd`](../extensions/khr_external_memory_fd/index.html)"]
impl StructureType {
pub const IMPORT_MEMORY_FD_INFO_KHR: Self = Self(1000074000);
pub const MEMORY_FD_PROPERTIES_KHR: Self = Self(1000074001);
pub const MEMORY_GET_FD_INFO_KHR: Self = Self(1000074002);
}
#[doc = "[Part of `extensions::khr_external_memory_win32`](../extensions/khr_external_memory_win32/index.html)"]
impl StructureType {
pub const IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: Self = Self(1000073000);
pub const EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: Self = Self(1000073001);
pub const MEMORY_WIN32_HANDLE_PROPERTIES_KHR: Self = Self(1000073002);
pub const MEMORY_GET_WIN32_HANDLE_INFO_KHR: Self = Self(1000073003);
}
#[doc = "[Part of `extensions::khr_external_semaphore`](../extensions/khr_external_semaphore/index.html)"]
impl StructureType {
pub const EXPORT_SEMAPHORE_CREATE_INFO_KHR: Self = Self::EXPORT_SEMAPHORE_CREATE_INFO;
}
#[doc = "[Part of `extensions::khr_external_semaphore_capabilities`](../extensions/khr_external_semaphore_capabilities/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR: Self =
Self::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO;
pub const EXTERNAL_SEMAPHORE_PROPERTIES_KHR: Self = Self::EXTERNAL_SEMAPHORE_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_external_semaphore_fd`](../extensions/khr_external_semaphore_fd/index.html)"]
impl StructureType {
pub const IMPORT_SEMAPHORE_FD_INFO_KHR: Self = Self(1000079000);
pub const SEMAPHORE_GET_FD_INFO_KHR: Self = Self(1000079001);
}
#[doc = "[Part of `extensions::khr_external_semaphore_win32`](../extensions/khr_external_semaphore_win32/index.html)"]
impl StructureType {
pub const IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: Self = Self(1000078000);
pub const EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: Self = Self(1000078001);
pub const D3D12_FENCE_SUBMIT_INFO_KHR: Self = Self(1000078002);
pub const SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR: Self = Self(1000078003);
}
#[doc = "[Part of `extensions::khr_get_display_properties2`](../extensions/khr_get_display_properties2/index.html)"]
impl StructureType {
pub const DISPLAY_PROPERTIES_2_KHR: Self = Self(1000121000);
pub const DISPLAY_PLANE_PROPERTIES_2_KHR: Self = Self(1000121001);
pub const DISPLAY_MODE_PROPERTIES_2_KHR: Self = Self(1000121002);
pub const DISPLAY_PLANE_INFO_2_KHR: Self = Self(1000121003);
pub const DISPLAY_PLANE_CAPABILITIES_2_KHR: Self = Self(1000121004);
}
#[doc = "[Part of `extensions::khr_get_memory_requirements2`](../extensions/khr_get_memory_requirements2/index.html)"]
impl StructureType {
pub const BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR: Self = Self::BUFFER_MEMORY_REQUIREMENTS_INFO_2;
pub const IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR: Self = Self::IMAGE_MEMORY_REQUIREMENTS_INFO_2;
pub const IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR: Self =
Self::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2;
pub const MEMORY_REQUIREMENTS_2_KHR: Self = Self::MEMORY_REQUIREMENTS_2;
pub const SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR: Self =
Self::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2;
}
#[doc = "[Part of `extensions::khr_get_physical_device_properties2`](../extensions/khr_get_physical_device_properties2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_FEATURES_2_KHR: Self = Self::PHYSICAL_DEVICE_FEATURES_2;
pub const PHYSICAL_DEVICE_PROPERTIES_2_KHR: Self = Self::PHYSICAL_DEVICE_PROPERTIES_2;
pub const FORMAT_PROPERTIES_2_KHR: Self = Self::FORMAT_PROPERTIES_2;
pub const IMAGE_FORMAT_PROPERTIES_2_KHR: Self = Self::IMAGE_FORMAT_PROPERTIES_2;
pub const PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR: Self =
Self::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2;
pub const QUEUE_FAMILY_PROPERTIES_2_KHR: Self = Self::QUEUE_FAMILY_PROPERTIES_2;
pub const PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR: Self =
Self::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2;
pub const SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR: Self = Self::SPARSE_IMAGE_FORMAT_PROPERTIES_2;
pub const PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR: Self =
Self::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2;
}
#[doc = "[Part of `extensions::khr_get_surface_capabilities2`](../extensions/khr_get_surface_capabilities2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SURFACE_INFO_2_KHR: Self = Self(1000119000);
pub const SURFACE_CAPABILITIES_2_KHR: Self = Self(1000119001);
pub const SURFACE_FORMAT_2_KHR: Self = Self(1000119002);
}
#[doc = "[Part of `extensions::khr_image_format_list`](../extensions/khr_image_format_list/index.html)"]
impl StructureType {
pub const IMAGE_FORMAT_LIST_CREATE_INFO_KHR: Self = Self::IMAGE_FORMAT_LIST_CREATE_INFO;
}
#[doc = "[Part of `extensions::khr_imageless_framebuffer`](../extensions/khr_imageless_framebuffer/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
pub const FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR: Self =
Self::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO;
pub const FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR: Self = Self::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO;
pub const RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR: Self = Self::RENDER_PASS_ATTACHMENT_BEGIN_INFO;
}
#[doc = "[Part of `extensions::khr_incremental_present`](../extensions/khr_incremental_present/index.html)"]
impl StructureType {
pub const PRESENT_REGIONS_KHR: Self = Self(1000084000);
}
#[doc = "[Part of `extensions::khr_maintenance2`](../extensions/khr_maintenance2/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR: Self =
Self::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
pub const RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR: Self =
Self::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO;
pub const IMAGE_VIEW_USAGE_CREATE_INFO_KHR: Self = Self::IMAGE_VIEW_USAGE_CREATE_INFO;
pub const PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR: Self =
Self::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO;
}
#[doc = "[Part of `extensions::khr_maintenance3`](../extensions/khr_maintenance3/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR: Self =
Self::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
pub const DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR: Self = Self::DESCRIPTOR_SET_LAYOUT_SUPPORT;
}
#[doc = "[Part of `extensions::khr_multiview`](../extensions/khr_multiview/index.html)"]
impl StructureType {
pub const RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR: Self = Self::RENDER_PASS_MULTIVIEW_CREATE_INFO;
pub const PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
pub const PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR: Self =
Self::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_performance_query`](../extensions/khr_performance_query/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: Self = Self(1000116000);
pub const PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: Self = Self(1000116001);
pub const QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR: Self = Self(1000116002);
pub const PERFORMANCE_QUERY_SUBMIT_INFO_KHR: Self = Self(1000116003);
pub const ACQUIRE_PROFILING_LOCK_INFO_KHR: Self = Self(1000116004);
pub const PERFORMANCE_COUNTER_KHR: Self = Self(1000116005);
pub const PERFORMANCE_COUNTER_DESCRIPTION_KHR: Self = Self(1000116006);
}
#[doc = "[Part of `extensions::khr_pipeline_executable_properties`](../extensions/khr_pipeline_executable_properties/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR: Self = Self(1000269000);
pub const PIPELINE_INFO_KHR: Self = Self(1000269001);
pub const PIPELINE_EXECUTABLE_PROPERTIES_KHR: Self = Self(1000269002);
pub const PIPELINE_EXECUTABLE_INFO_KHR: Self = Self(1000269003);
pub const PIPELINE_EXECUTABLE_STATISTIC_KHR: Self = Self(1000269004);
pub const PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR: Self = Self(1000269005);
}
#[doc = "[Part of `extensions::khr_pipeline_library`](../extensions/khr_pipeline_library/index.html)"]
impl StructureType {
pub const PIPELINE_LIBRARY_CREATE_INFO_KHR: Self = Self(1000290000);
}
#[doc = "[Part of `extensions::khr_push_descriptor`](../extensions/khr_push_descriptor/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR: Self = Self(1000080000);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl StructureType {
pub const BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR: Self = Self(1000165006);
pub const WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: Self = Self(1000165007);
pub const ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR: Self = Self(1000150000);
pub const ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR: Self = Self(1000150001);
pub const ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR: Self = Self(1000150002);
pub const ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR: Self = Self(1000150003);
pub const ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR: Self = Self(1000150004);
pub const ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR: Self = Self(1000150005);
pub const ACCELERATION_STRUCTURE_GEOMETRY_KHR: Self = Self(1000150006);
pub const ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR: Self = Self(1000150008);
pub const ACCELERATION_STRUCTURE_VERSION_KHR: Self = Self(1000150009);
pub const COPY_ACCELERATION_STRUCTURE_INFO_KHR: Self = Self(1000150010);
pub const COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR: Self = Self(1000150011);
pub const COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR: Self = Self(1000150012);
pub const PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR: Self = Self(1000150013);
pub const PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR: Self = Self(1000150014);
pub const RAY_TRACING_PIPELINE_CREATE_INFO_KHR: Self = Self(1000150015);
pub const RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR: Self = Self(1000150016);
pub const ACCELERATION_STRUCTURE_CREATE_INFO_KHR: Self = Self(1000150017);
pub const RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR: Self = Self(1000150018);
}
#[doc = "[Part of `extensions::khr_sampler_ycbcr_conversion`](../extensions/khr_sampler_ycbcr_conversion/index.html)"]
impl StructureType {
pub const SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR: Self =
Self::SAMPLER_YCBCR_CONVERSION_CREATE_INFO;
pub const SAMPLER_YCBCR_CONVERSION_INFO_KHR: Self = Self::SAMPLER_YCBCR_CONVERSION_INFO;
pub const BIND_IMAGE_PLANE_MEMORY_INFO_KHR: Self = Self::BIND_IMAGE_PLANE_MEMORY_INFO;
pub const IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR: Self =
Self::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO;
pub const PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
pub const SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR: Self =
Self::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_separate_depth_stencil_layouts`](../extensions/khr_separate_depth_stencil_layouts/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
pub const ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR: Self =
Self::ATTACHMENT_REFERENCE_STENCIL_LAYOUT;
pub const ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR: Self =
Self::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT;
}
#[doc = "[Part of `extensions::khr_shader_atomic_int64`](../extensions/khr_shader_atomic_int64/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
}
#[doc = "[Part of `extensions::khr_shader_clock`](../extensions/khr_shader_clock/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR: Self = Self(1000181000);
}
#[doc = "[Part of `extensions::khr_shader_float16_int8`](../extensions/khr_shader_float16_int8/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
pub const PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
}
#[doc = "[Part of `extensions::khr_shader_float_controls`](../extensions/khr_shader_float_controls/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR: Self =
Self::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
}
#[doc = "[Part of `extensions::khr_shader_subgroup_extended_types`](../extensions/khr_shader_subgroup_extended_types/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
}
#[doc = "[Part of `extensions::khr_shared_presentable_image`](../extensions/khr_shared_presentable_image/index.html)"]
impl StructureType {
pub const SHARED_PRESENT_SURFACE_CAPABILITIES_KHR: Self = Self(1000111000);
}
#[doc = "[Part of `extensions::khr_surface_protected_capabilities`](../extensions/khr_surface_protected_capabilities/index.html)"]
impl StructureType {
pub const SURFACE_PROTECTED_CAPABILITIES_KHR: Self = Self(1000239000);
}
#[doc = "[Part of `extensions::khr_swapchain`](../extensions/khr_swapchain/index.html)"]
impl StructureType {
pub const SWAPCHAIN_CREATE_INFO_KHR: Self = Self(1000001000);
pub const PRESENT_INFO_KHR: Self = Self(1000001001);
}
#[doc = "[Part of `extensions::khr_timeline_semaphore`](../extensions/khr_timeline_semaphore/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
pub const PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR: Self =
Self::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
pub const SEMAPHORE_TYPE_CREATE_INFO_KHR: Self = Self::SEMAPHORE_TYPE_CREATE_INFO;
pub const TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR: Self = Self::TIMELINE_SEMAPHORE_SUBMIT_INFO;
pub const SEMAPHORE_WAIT_INFO_KHR: Self = Self::SEMAPHORE_WAIT_INFO;
pub const SEMAPHORE_SIGNAL_INFO_KHR: Self = Self::SEMAPHORE_SIGNAL_INFO;
}
#[doc = "[Part of `extensions::khr_uniform_buffer_standard_layout`](../extensions/khr_uniform_buffer_standard_layout/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
}
#[doc = "[Part of `extensions::khr_variable_pointers`](../extensions/khr_variable_pointers/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
pub const PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR;
}
#[doc = "[Part of `extensions::khr_vulkan_memory_model`](../extensions/khr_vulkan_memory_model/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR: Self =
Self::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
}
#[doc = "[Part of `extensions::khr_wayland_surface`](../extensions/khr_wayland_surface/index.html)"]
impl StructureType {
pub const WAYLAND_SURFACE_CREATE_INFO_KHR: Self = Self(1000006000);
}
#[doc = "[Part of `extensions::khr_win32_keyed_mutex`](../extensions/khr_win32_keyed_mutex/index.html)"]
impl StructureType {
pub const WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: Self = Self(1000075000);
}
#[doc = "[Part of `extensions::khr_win32_surface`](../extensions/khr_win32_surface/index.html)"]
impl StructureType {
pub const WIN32_SURFACE_CREATE_INFO_KHR: Self = Self(1000009000);
}
#[doc = "[Part of `extensions::khr_xcb_surface`](../extensions/khr_xcb_surface/index.html)"]
impl StructureType {
pub const XCB_SURFACE_CREATE_INFO_KHR: Self = Self(1000005000);
}
#[doc = "[Part of `extensions::khr_xlib_surface`](../extensions/khr_xlib_surface/index.html)"]
impl StructureType {
pub const XLIB_SURFACE_CREATE_INFO_KHR: Self = Self(1000004000);
}
#[doc = "[Part of `extensions::mvk_ios_surface`](../extensions/mvk_ios_surface/index.html)"]
impl StructureType {
pub const IOS_SURFACE_CREATE_INFO_MVK: Self = Self(1000122000);
}
#[doc = "[Part of `extensions::mvk_macos_surface`](../extensions/mvk_macos_surface/index.html)"]
impl StructureType {
pub const MACOS_SURFACE_CREATE_INFO_MVK: Self = Self(1000123000);
}
#[doc = "[Part of `extensions::nn_vi_surface`](../extensions/nn_vi_surface/index.html)"]
impl StructureType {
pub const VI_SURFACE_CREATE_INFO_NN: Self = Self(1000062000);
}
#[doc = "[Part of `extensions::nvx_image_view_handle`](../extensions/nvx_image_view_handle/index.html)"]
impl StructureType {
pub const IMAGE_VIEW_HANDLE_INFO_NVX: Self = Self(1000030000);
pub const IMAGE_VIEW_ADDRESS_PROPERTIES_NVX: Self = Self(1000030001);
}
#[doc = "[Part of `extensions::nvx_multiview_per_view_attributes`](../extensions/nvx_multiview_per_view_attributes/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: Self = Self(1000097000);
}
#[doc = "[Part of `extensions::nv_clip_space_w_scaling`](../extensions/nv_clip_space_w_scaling/index.html)"]
impl StructureType {
pub const PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: Self = Self(1000087000);
}
#[doc = "[Part of `extensions::nv_compute_shader_derivatives`](../extensions/nv_compute_shader_derivatives/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: Self = Self(1000201000);
}
#[doc = "[Part of `extensions::nv_cooperative_matrix`](../extensions/nv_cooperative_matrix/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV: Self = Self(1000249000);
pub const COOPERATIVE_MATRIX_PROPERTIES_NV: Self = Self(1000249001);
pub const PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV: Self = Self(1000249002);
}
#[doc = "[Part of `extensions::nv_corner_sampled_image`](../extensions/nv_corner_sampled_image/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV: Self = Self(1000050000);
}
#[doc = "[Part of `extensions::nv_coverage_reduction_mode`](../extensions/nv_coverage_reduction_mode/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV: Self = Self(1000250000);
pub const PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV: Self = Self(1000250001);
pub const FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV: Self = Self(1000250002);
}
#[doc = "[Part of `extensions::nv_dedicated_allocation`](../extensions/nv_dedicated_allocation/index.html)"]
impl StructureType {
pub const DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV: Self = Self(1000026000);
pub const DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV: Self = Self(1000026001);
pub const DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV: Self = Self(1000026002);
}
#[doc = "[Part of `extensions::nv_dedicated_allocation_image_aliasing`](../extensions/nv_dedicated_allocation_image_aliasing/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: Self =
Self(1000240000);
}
#[doc = "[Part of `extensions::nv_device_diagnostic_checkpoints`](../extensions/nv_device_diagnostic_checkpoints/index.html)"]
impl StructureType {
pub const CHECKPOINT_DATA_NV: Self = Self(1000206000);
pub const QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: Self = Self(1000206001);
}
#[doc = "[Part of `extensions::nv_device_diagnostics_config`](../extensions/nv_device_diagnostics_config/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV: Self = Self(1000300000);
pub const DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV: Self = Self(1000300001);
}
#[doc = "[Part of `extensions::nv_device_generated_commands`](../extensions/nv_device_generated_commands/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV: Self = Self(1000277000);
pub const GRAPHICS_SHADER_GROUP_CREATE_INFO_NV: Self = Self(1000277001);
pub const GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV: Self = Self(1000277002);
pub const INDIRECT_COMMANDS_LAYOUT_TOKEN_NV: Self = Self(1000277003);
pub const INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV: Self = Self(1000277004);
pub const GENERATED_COMMANDS_INFO_NV: Self = Self(1000277005);
pub const GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV: Self = Self(1000277006);
pub const PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV: Self = Self(1000277007);
}
#[doc = "[Part of `extensions::nv_external_memory`](../extensions/nv_external_memory/index.html)"]
impl StructureType {
pub const EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV: Self = Self(1000056000);
pub const EXPORT_MEMORY_ALLOCATE_INFO_NV: Self = Self(1000056001);
}
#[doc = "[Part of `extensions::nv_external_memory_win32`](../extensions/nv_external_memory_win32/index.html)"]
impl StructureType {
pub const IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: Self = Self(1000057000);
pub const EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: Self = Self(1000057001);
}
#[doc = "[Part of `extensions::nv_fragment_coverage_to_color`](../extensions/nv_fragment_coverage_to_color/index.html)"]
impl StructureType {
pub const PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV: Self = Self(1000149000);
}
#[doc = "[Part of `extensions::nv_fragment_shader_barycentric`](../extensions/nv_fragment_shader_barycentric/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV: Self = Self(1000203000);
}
#[doc = "[Part of `extensions::nv_framebuffer_mixed_samples`](../extensions/nv_framebuffer_mixed_samples/index.html)"]
impl StructureType {
pub const PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV: Self = Self(1000152000);
}
#[doc = "[Part of `extensions::nv_mesh_shader`](../extensions/nv_mesh_shader/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: Self = Self(1000202000);
pub const PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: Self = Self(1000202001);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl StructureType {
pub const RAY_TRACING_PIPELINE_CREATE_INFO_NV: Self = Self(1000165000);
pub const ACCELERATION_STRUCTURE_CREATE_INFO_NV: Self = Self(1000165001);
pub const GEOMETRY_NV: Self = Self(1000165003);
pub const GEOMETRY_TRIANGLES_NV: Self = Self(1000165004);
pub const GEOMETRY_AABB_NV: Self = Self(1000165005);
pub const BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV: Self =
Self::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR;
pub const WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV: Self =
Self::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR;
pub const ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV: Self = Self(1000165008);
pub const PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: Self = Self(1000165009);
pub const RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV: Self = Self(1000165011);
pub const ACCELERATION_STRUCTURE_INFO_NV: Self = Self(1000165012);
}
#[doc = "[Part of `extensions::nv_representative_fragment_test`](../extensions/nv_representative_fragment_test/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: Self = Self(1000166000);
pub const PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV: Self = Self(1000166001);
}
#[doc = "[Part of `extensions::nv_scissor_exclusive`](../extensions/nv_scissor_exclusive/index.html)"]
impl StructureType {
pub const PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: Self = Self(1000205000);
pub const PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: Self = Self(1000205002);
}
#[doc = "[Part of `extensions::nv_shader_image_footprint`](../extensions/nv_shader_image_footprint/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV: Self = Self(1000204000);
}
#[doc = "[Part of `extensions::nv_shader_sm_builtins`](../extensions/nv_shader_sm_builtins/index.html)"]
impl StructureType {
pub const PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: Self = Self(1000154000);
pub const PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV: Self = Self(1000154001);
}
#[doc = "[Part of `extensions::nv_shading_rate_image`](../extensions/nv_shading_rate_image/index.html)"]
impl StructureType {
pub const PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: Self = Self(1000164000);
pub const PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV: Self = Self(1000164001);
pub const PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV: Self = Self(1000164002);
pub const PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV: Self = Self(1000164005);
}
#[doc = "[Part of `extensions::nv_viewport_swizzle`](../extensions/nv_viewport_swizzle/index.html)"]
impl StructureType {
pub const PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: Self = Self(1000098000);
}
#[doc = "[Part of `extensions::nv_win32_keyed_mutex`](../extensions/nv_win32_keyed_mutex/index.html)"]
impl StructureType {
pub const WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: Self = Self(1000058000);
}
#[doc = "[Part of `extensions::qcom_render_pass_transform`](../extensions/qcom_render_pass_transform/index.html)"]
impl StructureType {
pub const COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM: Self = Self(1000282000);
pub const RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM: Self = Self(1000282001);
}
impl std::fmt::Debug for StructureType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::APPLICATION_INFO => "APPLICATION_INFO",
&Self::INSTANCE_CREATE_INFO => "INSTANCE_CREATE_INFO",
&Self::DEVICE_QUEUE_CREATE_INFO => "DEVICE_QUEUE_CREATE_INFO",
&Self::DEVICE_CREATE_INFO => "DEVICE_CREATE_INFO",
&Self::SUBMIT_INFO => "SUBMIT_INFO",
&Self::MEMORY_ALLOCATE_INFO => "MEMORY_ALLOCATE_INFO",
&Self::MAPPED_MEMORY_RANGE => "MAPPED_MEMORY_RANGE",
&Self::BIND_SPARSE_INFO => "BIND_SPARSE_INFO",
&Self::FENCE_CREATE_INFO => "FENCE_CREATE_INFO",
&Self::SEMAPHORE_CREATE_INFO => "SEMAPHORE_CREATE_INFO",
&Self::EVENT_CREATE_INFO => "EVENT_CREATE_INFO",
&Self::QUERY_POOL_CREATE_INFO => "QUERY_POOL_CREATE_INFO",
&Self::BUFFER_CREATE_INFO => "BUFFER_CREATE_INFO",
&Self::BUFFER_VIEW_CREATE_INFO => "BUFFER_VIEW_CREATE_INFO",
&Self::IMAGE_CREATE_INFO => "IMAGE_CREATE_INFO",
&Self::IMAGE_VIEW_CREATE_INFO => "IMAGE_VIEW_CREATE_INFO",
&Self::SHADER_MODULE_CREATE_INFO => "SHADER_MODULE_CREATE_INFO",
&Self::PIPELINE_CACHE_CREATE_INFO => "PIPELINE_CACHE_CREATE_INFO",
&Self::PIPELINE_SHADER_STAGE_CREATE_INFO => "PIPELINE_SHADER_STAGE_CREATE_INFO",
&Self::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO => {
"PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
}
&Self::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO => {
"PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
}
&Self::PIPELINE_TESSELLATION_STATE_CREATE_INFO => {
"PIPELINE_TESSELLATION_STATE_CREATE_INFO"
}
&Self::PIPELINE_VIEWPORT_STATE_CREATE_INFO => "PIPELINE_VIEWPORT_STATE_CREATE_INFO",
&Self::PIPELINE_RASTERIZATION_STATE_CREATE_INFO => {
"PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
}
&Self::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO => {
"PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
}
&Self::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO => {
"PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
}
&Self::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO => {
"PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
}
&Self::PIPELINE_DYNAMIC_STATE_CREATE_INFO => "PIPELINE_DYNAMIC_STATE_CREATE_INFO",
&Self::GRAPHICS_PIPELINE_CREATE_INFO => "GRAPHICS_PIPELINE_CREATE_INFO",
&Self::COMPUTE_PIPELINE_CREATE_INFO => "COMPUTE_PIPELINE_CREATE_INFO",
&Self::PIPELINE_LAYOUT_CREATE_INFO => "PIPELINE_LAYOUT_CREATE_INFO",
&Self::SAMPLER_CREATE_INFO => "SAMPLER_CREATE_INFO",
&Self::DESCRIPTOR_SET_LAYOUT_CREATE_INFO => "DESCRIPTOR_SET_LAYOUT_CREATE_INFO",
&Self::DESCRIPTOR_POOL_CREATE_INFO => "DESCRIPTOR_POOL_CREATE_INFO",
&Self::DESCRIPTOR_SET_ALLOCATE_INFO => "DESCRIPTOR_SET_ALLOCATE_INFO",
&Self::WRITE_DESCRIPTOR_SET => "WRITE_DESCRIPTOR_SET",
&Self::COPY_DESCRIPTOR_SET => "COPY_DESCRIPTOR_SET",
&Self::FRAMEBUFFER_CREATE_INFO => "FRAMEBUFFER_CREATE_INFO",
&Self::RENDER_PASS_CREATE_INFO => "RENDER_PASS_CREATE_INFO",
&Self::COMMAND_POOL_CREATE_INFO => "COMMAND_POOL_CREATE_INFO",
&Self::COMMAND_BUFFER_ALLOCATE_INFO => "COMMAND_BUFFER_ALLOCATE_INFO",
&Self::COMMAND_BUFFER_INHERITANCE_INFO => "COMMAND_BUFFER_INHERITANCE_INFO",
&Self::COMMAND_BUFFER_BEGIN_INFO => "COMMAND_BUFFER_BEGIN_INFO",
&Self::RENDER_PASS_BEGIN_INFO => "RENDER_PASS_BEGIN_INFO",
&Self::BUFFER_MEMORY_BARRIER => "BUFFER_MEMORY_BARRIER",
&Self::IMAGE_MEMORY_BARRIER => "IMAGE_MEMORY_BARRIER",
&Self::MEMORY_BARRIER => "MEMORY_BARRIER",
&Self::LOADER_INSTANCE_CREATE_INFO => "LOADER_INSTANCE_CREATE_INFO",
&Self::LOADER_DEVICE_CREATE_INFO => "LOADER_DEVICE_CREATE_INFO",
&Self::PHYSICAL_DEVICE_SUBGROUP_PROPERTIES => "PHYSICAL_DEVICE_SUBGROUP_PROPERTIES",
&Self::BIND_BUFFER_MEMORY_INFO => "BIND_BUFFER_MEMORY_INFO",
&Self::BIND_IMAGE_MEMORY_INFO => "BIND_IMAGE_MEMORY_INFO",
&Self::PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES => {
"PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"
}
&Self::MEMORY_DEDICATED_REQUIREMENTS => "MEMORY_DEDICATED_REQUIREMENTS",
&Self::MEMORY_DEDICATED_ALLOCATE_INFO => "MEMORY_DEDICATED_ALLOCATE_INFO",
&Self::MEMORY_ALLOCATE_FLAGS_INFO => "MEMORY_ALLOCATE_FLAGS_INFO",
&Self::DEVICE_GROUP_RENDER_PASS_BEGIN_INFO => "DEVICE_GROUP_RENDER_PASS_BEGIN_INFO",
&Self::DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO => {
"DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"
}
&Self::DEVICE_GROUP_SUBMIT_INFO => "DEVICE_GROUP_SUBMIT_INFO",
&Self::DEVICE_GROUP_BIND_SPARSE_INFO => "DEVICE_GROUP_BIND_SPARSE_INFO",
&Self::BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO => "BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO",
&Self::BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO => "BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO",
&Self::PHYSICAL_DEVICE_GROUP_PROPERTIES => "PHYSICAL_DEVICE_GROUP_PROPERTIES",
&Self::DEVICE_GROUP_DEVICE_CREATE_INFO => "DEVICE_GROUP_DEVICE_CREATE_INFO",
&Self::BUFFER_MEMORY_REQUIREMENTS_INFO_2 => "BUFFER_MEMORY_REQUIREMENTS_INFO_2",
&Self::IMAGE_MEMORY_REQUIREMENTS_INFO_2 => "IMAGE_MEMORY_REQUIREMENTS_INFO_2",
&Self::IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 => {
"IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"
}
&Self::MEMORY_REQUIREMENTS_2 => "MEMORY_REQUIREMENTS_2",
&Self::SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 => "SPARSE_IMAGE_MEMORY_REQUIREMENTS_2",
&Self::PHYSICAL_DEVICE_FEATURES_2 => "PHYSICAL_DEVICE_FEATURES_2",
&Self::PHYSICAL_DEVICE_PROPERTIES_2 => "PHYSICAL_DEVICE_PROPERTIES_2",
&Self::FORMAT_PROPERTIES_2 => "FORMAT_PROPERTIES_2",
&Self::IMAGE_FORMAT_PROPERTIES_2 => "IMAGE_FORMAT_PROPERTIES_2",
&Self::PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 => "PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2",
&Self::QUEUE_FAMILY_PROPERTIES_2 => "QUEUE_FAMILY_PROPERTIES_2",
&Self::PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 => "PHYSICAL_DEVICE_MEMORY_PROPERTIES_2",
&Self::SPARSE_IMAGE_FORMAT_PROPERTIES_2 => "SPARSE_IMAGE_FORMAT_PROPERTIES_2",
&Self::PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 => {
"PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"
}
&Self::PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES => {
"PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"
}
&Self::RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO => {
"RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"
}
&Self::IMAGE_VIEW_USAGE_CREATE_INFO => "IMAGE_VIEW_USAGE_CREATE_INFO",
&Self::PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO => {
"PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"
}
&Self::RENDER_PASS_MULTIVIEW_CREATE_INFO => "RENDER_PASS_MULTIVIEW_CREATE_INFO",
&Self::PHYSICAL_DEVICE_MULTIVIEW_FEATURES => "PHYSICAL_DEVICE_MULTIVIEW_FEATURES",
&Self::PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES => "PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES",
&Self::PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES => {
"PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"
}
&Self::PROTECTED_SUBMIT_INFO => "PROTECTED_SUBMIT_INFO",
&Self::PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES => {
"PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"
}
&Self::PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES => {
"PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"
}
&Self::DEVICE_QUEUE_INFO_2 => "DEVICE_QUEUE_INFO_2",
&Self::SAMPLER_YCBCR_CONVERSION_CREATE_INFO => "SAMPLER_YCBCR_CONVERSION_CREATE_INFO",
&Self::SAMPLER_YCBCR_CONVERSION_INFO => "SAMPLER_YCBCR_CONVERSION_INFO",
&Self::BIND_IMAGE_PLANE_MEMORY_INFO => "BIND_IMAGE_PLANE_MEMORY_INFO",
&Self::IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO => "IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO",
&Self::PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES => {
"PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"
}
&Self::SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES => {
"SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"
}
&Self::DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO => {
"DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"
}
&Self::PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO => {
"PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"
}
&Self::EXTERNAL_IMAGE_FORMAT_PROPERTIES => "EXTERNAL_IMAGE_FORMAT_PROPERTIES",
&Self::PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO => "PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO",
&Self::EXTERNAL_BUFFER_PROPERTIES => "EXTERNAL_BUFFER_PROPERTIES",
&Self::PHYSICAL_DEVICE_ID_PROPERTIES => "PHYSICAL_DEVICE_ID_PROPERTIES",
&Self::EXTERNAL_MEMORY_BUFFER_CREATE_INFO => "EXTERNAL_MEMORY_BUFFER_CREATE_INFO",
&Self::EXTERNAL_MEMORY_IMAGE_CREATE_INFO => "EXTERNAL_MEMORY_IMAGE_CREATE_INFO",
&Self::EXPORT_MEMORY_ALLOCATE_INFO => "EXPORT_MEMORY_ALLOCATE_INFO",
&Self::PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO => "PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO",
&Self::EXTERNAL_FENCE_PROPERTIES => "EXTERNAL_FENCE_PROPERTIES",
&Self::EXPORT_FENCE_CREATE_INFO => "EXPORT_FENCE_CREATE_INFO",
&Self::EXPORT_SEMAPHORE_CREATE_INFO => "EXPORT_SEMAPHORE_CREATE_INFO",
&Self::PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO => {
"PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"
}
&Self::EXTERNAL_SEMAPHORE_PROPERTIES => "EXTERNAL_SEMAPHORE_PROPERTIES",
&Self::PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES => {
"PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"
}
&Self::DESCRIPTOR_SET_LAYOUT_SUPPORT => "DESCRIPTOR_SET_LAYOUT_SUPPORT",
&Self::PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES => {
"PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"
}
&Self::PHYSICAL_DEVICE_VULKAN_1_1_FEATURES => "PHYSICAL_DEVICE_VULKAN_1_1_FEATURES",
&Self::PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES => "PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES",
&Self::PHYSICAL_DEVICE_VULKAN_1_2_FEATURES => "PHYSICAL_DEVICE_VULKAN_1_2_FEATURES",
&Self::PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES => "PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES",
&Self::IMAGE_FORMAT_LIST_CREATE_INFO => "IMAGE_FORMAT_LIST_CREATE_INFO",
&Self::ATTACHMENT_DESCRIPTION_2 => "ATTACHMENT_DESCRIPTION_2",
&Self::ATTACHMENT_REFERENCE_2 => "ATTACHMENT_REFERENCE_2",
&Self::SUBPASS_DESCRIPTION_2 => "SUBPASS_DESCRIPTION_2",
&Self::SUBPASS_DEPENDENCY_2 => "SUBPASS_DEPENDENCY_2",
&Self::RENDER_PASS_CREATE_INFO_2 => "RENDER_PASS_CREATE_INFO_2",
&Self::SUBPASS_BEGIN_INFO => "SUBPASS_BEGIN_INFO",
&Self::SUBPASS_END_INFO => "SUBPASS_END_INFO",
&Self::PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES => "PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES",
&Self::PHYSICAL_DEVICE_DRIVER_PROPERTIES => "PHYSICAL_DEVICE_DRIVER_PROPERTIES",
&Self::PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES => {
"PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"
}
&Self::PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES => {
"PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"
}
&Self::PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES => {
"PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"
}
&Self::DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO => {
"DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"
}
&Self::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES => {
"PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"
}
&Self::PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES => {
"PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"
}
&Self::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO => {
"DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"
}
&Self::DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT => {
"DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"
}
&Self::PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES => {
"PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"
}
&Self::SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE => {
"SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"
}
&Self::PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES => {
"PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"
}
&Self::IMAGE_STENCIL_USAGE_CREATE_INFO => "IMAGE_STENCIL_USAGE_CREATE_INFO",
&Self::PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES => {
"PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"
}
&Self::SAMPLER_REDUCTION_MODE_CREATE_INFO => "SAMPLER_REDUCTION_MODE_CREATE_INFO",
&Self::PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES => {
"PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"
}
&Self::PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES => {
"PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"
}
&Self::FRAMEBUFFER_ATTACHMENTS_CREATE_INFO => "FRAMEBUFFER_ATTACHMENTS_CREATE_INFO",
&Self::FRAMEBUFFER_ATTACHMENT_IMAGE_INFO => "FRAMEBUFFER_ATTACHMENT_IMAGE_INFO",
&Self::RENDER_PASS_ATTACHMENT_BEGIN_INFO => "RENDER_PASS_ATTACHMENT_BEGIN_INFO",
&Self::PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES => {
"PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"
}
&Self::PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES => {
"PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"
}
&Self::PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES => {
"PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"
}
&Self::ATTACHMENT_REFERENCE_STENCIL_LAYOUT => "ATTACHMENT_REFERENCE_STENCIL_LAYOUT",
&Self::ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT => "ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT",
&Self::PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES => {
"PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"
}
&Self::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES => {
"PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"
}
&Self::PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES => {
"PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"
}
&Self::SEMAPHORE_TYPE_CREATE_INFO => "SEMAPHORE_TYPE_CREATE_INFO",
&Self::TIMELINE_SEMAPHORE_SUBMIT_INFO => "TIMELINE_SEMAPHORE_SUBMIT_INFO",
&Self::SEMAPHORE_WAIT_INFO => "SEMAPHORE_WAIT_INFO",
&Self::SEMAPHORE_SIGNAL_INFO => "SEMAPHORE_SIGNAL_INFO",
&Self::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES => {
"PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"
}
&Self::BUFFER_DEVICE_ADDRESS_INFO => "BUFFER_DEVICE_ADDRESS_INFO",
&Self::BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO => {
"BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"
}
&Self::MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO => {
"MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"
}
&Self::DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO => {
"DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"
}
&Self::PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD => {
"PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"
}
&Self::DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD => {
"DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"
}
&Self::SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD => {
"SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"
}
&Self::DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD => {
"DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"
}
&Self::PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD => {
"PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"
}
&Self::PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD => {
"PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"
}
&Self::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD => {
"PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"
}
&Self::PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD => {
"PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"
}
&Self::TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD => {
"TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"
}
&Self::ANDROID_HARDWARE_BUFFER_USAGE_ANDROID => "ANDROID_HARDWARE_BUFFER_USAGE_ANDROID",
&Self::ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID => {
"ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"
}
&Self::ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID => {
"ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"
}
&Self::IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID => {
"IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
}
&Self::MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID => {
"MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"
}
&Self::EXTERNAL_FORMAT_ANDROID => "EXTERNAL_FORMAT_ANDROID",
&Self::IMAGE_VIEW_ASTC_DECODE_MODE_EXT => "IMAGE_VIEW_ASTC_DECODE_MODE_EXT",
&Self::PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT => {
"PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT => {
"PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"
}
&Self::PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT => {
"PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT => {
"PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"
}
&Self::BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT => "BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT",
&Self::CALIBRATED_TIMESTAMP_INFO_EXT => "CALIBRATED_TIMESTAMP_INFO_EXT",
&Self::COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT => {
"COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT => {
"PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"
}
&Self::CONDITIONAL_RENDERING_BEGIN_INFO_EXT => "CONDITIONAL_RENDERING_BEGIN_INFO_EXT",
&Self::PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"
}
&Self::PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT => {
"PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"
}
&Self::SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT => {
"SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT => {
"PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"
}
&Self::DEBUG_MARKER_OBJECT_NAME_INFO_EXT => "DEBUG_MARKER_OBJECT_NAME_INFO_EXT",
&Self::DEBUG_MARKER_OBJECT_TAG_INFO_EXT => "DEBUG_MARKER_OBJECT_TAG_INFO_EXT",
&Self::DEBUG_MARKER_MARKER_INFO_EXT => "DEBUG_MARKER_MARKER_INFO_EXT",
&Self::DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT => "DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT",
&Self::DEBUG_UTILS_OBJECT_NAME_INFO_EXT => "DEBUG_UTILS_OBJECT_NAME_INFO_EXT",
&Self::DEBUG_UTILS_OBJECT_TAG_INFO_EXT => "DEBUG_UTILS_OBJECT_TAG_INFO_EXT",
&Self::DEBUG_UTILS_LABEL_EXT => "DEBUG_UTILS_LABEL_EXT",
&Self::DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT => {
"DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"
}
&Self::DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT => "DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT",
&Self::PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT => {
"PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"
}
&Self::PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT => {
"PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"
}
&Self::PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT => {
"PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"
}
&Self::DISPLAY_POWER_INFO_EXT => "DISPLAY_POWER_INFO_EXT",
&Self::DEVICE_EVENT_INFO_EXT => "DEVICE_EVENT_INFO_EXT",
&Self::DISPLAY_EVENT_INFO_EXT => "DISPLAY_EVENT_INFO_EXT",
&Self::SWAPCHAIN_COUNTER_CREATE_INFO_EXT => "SWAPCHAIN_COUNTER_CREATE_INFO_EXT",
&Self::SURFACE_CAPABILITIES_2_EXT => "SURFACE_CAPABILITIES_2_EXT",
&Self::IMPORT_MEMORY_HOST_POINTER_INFO_EXT => "IMPORT_MEMORY_HOST_POINTER_INFO_EXT",
&Self::MEMORY_HOST_POINTER_PROPERTIES_EXT => "MEMORY_HOST_POINTER_PROPERTIES_EXT",
&Self::PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT => {
"PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"
}
&Self::FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT => {
"FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT => {
"PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"
}
&Self::RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT => {
"RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT => {
"PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"
}
&Self::SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT => {
"SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"
}
&Self::SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT => {
"SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"
}
&Self::SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT => {
"SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"
}
&Self::DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT => {
"DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"
}
&Self::HDR_METADATA_EXT => "HDR_METADATA_EXT",
&Self::HEADLESS_SURFACE_CREATE_INFO_EXT => "HEADLESS_SURFACE_CREATE_INFO_EXT",
&Self::DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT => {
"DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"
}
&Self::DRM_FORMAT_MODIFIER_PROPERTIES_EXT => "DRM_FORMAT_MODIFIER_PROPERTIES_EXT",
&Self::PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT => {
"PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"
}
&Self::IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT => {
"IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"
}
&Self::IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT => {
"IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"
}
&Self::IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT => {
"IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT => {
"PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT => {
"PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"
}
&Self::WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT => {
"WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"
}
&Self::DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT => {
"DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT => {
"PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"
}
&Self::PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT => {
"PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT => {
"PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"
}
&Self::MEMORY_PRIORITY_ALLOCATE_INFO_EXT => "MEMORY_PRIORITY_ALLOCATE_INFO_EXT",
&Self::METAL_SURFACE_CREATE_INFO_EXT => "METAL_SURFACE_CREATE_INFO_EXT",
&Self::PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT => {
"PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"
}
&Self::PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT => {
"PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT => {
"PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"
}
&Self::DEVICE_PRIVATE_DATA_CREATE_INFO_EXT => "DEVICE_PRIVATE_DATA_CREATE_INFO_EXT",
&Self::PRIVATE_DATA_SLOT_CREATE_INFO_EXT => "PRIVATE_DATA_SLOT_CREATE_INFO_EXT",
&Self::PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT => {
"PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT"
}
&Self::SAMPLE_LOCATIONS_INFO_EXT => "SAMPLE_LOCATIONS_INFO_EXT",
&Self::RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT => {
"RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"
}
&Self::PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT => {
"PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"
}
&Self::MULTISAMPLE_PROPERTIES_EXT => "MULTISAMPLE_PROPERTIES_EXT",
&Self::PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT => {
"PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"
}
&Self::PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT => {
"PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT => {
"PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT => {
"PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"
}
&Self::PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT => {
"PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT => "PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT",
&Self::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT => {
"PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"
}
&Self::PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT => {
"PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"
}
&Self::VALIDATION_CACHE_CREATE_INFO_EXT => "VALIDATION_CACHE_CREATE_INFO_EXT",
&Self::SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT => {
"SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"
}
&Self::VALIDATION_FEATURES_EXT => "VALIDATION_FEATURES_EXT",
&Self::VALIDATION_FLAGS_EXT => "VALIDATION_FLAGS_EXT",
&Self::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT => {
"PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"
}
&Self::PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT => {
"PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"
}
&Self::PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT => {
"PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"
}
&Self::PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT => {
"PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"
}
&Self::IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA => "IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA",
&Self::PRESENT_FRAME_TOKEN_GGP => "PRESENT_FRAME_TOKEN_GGP",
&Self::STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP => {
"STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"
}
&Self::PRESENT_TIMES_INFO_GOOGLE => "PRESENT_TIMES_INFO_GOOGLE",
&Self::QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL => {
"QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL"
}
&Self::INITIALIZE_PERFORMANCE_API_INFO_INTEL => "INITIALIZE_PERFORMANCE_API_INFO_INTEL",
&Self::PERFORMANCE_MARKER_INFO_INTEL => "PERFORMANCE_MARKER_INFO_INTEL",
&Self::PERFORMANCE_STREAM_MARKER_INFO_INTEL => "PERFORMANCE_STREAM_MARKER_INFO_INTEL",
&Self::PERFORMANCE_OVERRIDE_INFO_INTEL => "PERFORMANCE_OVERRIDE_INFO_INTEL",
&Self::PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL => {
"PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"
}
&Self::PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL => {
"PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"
}
&Self::ANDROID_SURFACE_CREATE_INFO_KHR => "ANDROID_SURFACE_CREATE_INFO_KHR",
&Self::DEFERRED_OPERATION_INFO_KHR => "DEFERRED_OPERATION_INFO_KHR",
&Self::DEVICE_GROUP_PRESENT_CAPABILITIES_KHR => "DEVICE_GROUP_PRESENT_CAPABILITIES_KHR",
&Self::IMAGE_SWAPCHAIN_CREATE_INFO_KHR => "IMAGE_SWAPCHAIN_CREATE_INFO_KHR",
&Self::BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR => "BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR",
&Self::ACQUIRE_NEXT_IMAGE_INFO_KHR => "ACQUIRE_NEXT_IMAGE_INFO_KHR",
&Self::DEVICE_GROUP_PRESENT_INFO_KHR => "DEVICE_GROUP_PRESENT_INFO_KHR",
&Self::DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR => {
"DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"
}
&Self::DISPLAY_MODE_CREATE_INFO_KHR => "DISPLAY_MODE_CREATE_INFO_KHR",
&Self::DISPLAY_SURFACE_CREATE_INFO_KHR => "DISPLAY_SURFACE_CREATE_INFO_KHR",
&Self::DISPLAY_PRESENT_INFO_KHR => "DISPLAY_PRESENT_INFO_KHR",
&Self::IMPORT_FENCE_FD_INFO_KHR => "IMPORT_FENCE_FD_INFO_KHR",
&Self::FENCE_GET_FD_INFO_KHR => "FENCE_GET_FD_INFO_KHR",
&Self::IMPORT_FENCE_WIN32_HANDLE_INFO_KHR => "IMPORT_FENCE_WIN32_HANDLE_INFO_KHR",
&Self::EXPORT_FENCE_WIN32_HANDLE_INFO_KHR => "EXPORT_FENCE_WIN32_HANDLE_INFO_KHR",
&Self::FENCE_GET_WIN32_HANDLE_INFO_KHR => "FENCE_GET_WIN32_HANDLE_INFO_KHR",
&Self::IMPORT_MEMORY_FD_INFO_KHR => "IMPORT_MEMORY_FD_INFO_KHR",
&Self::MEMORY_FD_PROPERTIES_KHR => "MEMORY_FD_PROPERTIES_KHR",
&Self::MEMORY_GET_FD_INFO_KHR => "MEMORY_GET_FD_INFO_KHR",
&Self::IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR => "IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR",
&Self::EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR => "EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR",
&Self::MEMORY_WIN32_HANDLE_PROPERTIES_KHR => "MEMORY_WIN32_HANDLE_PROPERTIES_KHR",
&Self::MEMORY_GET_WIN32_HANDLE_INFO_KHR => "MEMORY_GET_WIN32_HANDLE_INFO_KHR",
&Self::IMPORT_SEMAPHORE_FD_INFO_KHR => "IMPORT_SEMAPHORE_FD_INFO_KHR",
&Self::SEMAPHORE_GET_FD_INFO_KHR => "SEMAPHORE_GET_FD_INFO_KHR",
&Self::IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR => {
"IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
}
&Self::EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR => {
"EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"
}
&Self::D3D12_FENCE_SUBMIT_INFO_KHR => "D3D12_FENCE_SUBMIT_INFO_KHR",
&Self::SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR => "SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR",
&Self::DISPLAY_PROPERTIES_2_KHR => "DISPLAY_PROPERTIES_2_KHR",
&Self::DISPLAY_PLANE_PROPERTIES_2_KHR => "DISPLAY_PLANE_PROPERTIES_2_KHR",
&Self::DISPLAY_MODE_PROPERTIES_2_KHR => "DISPLAY_MODE_PROPERTIES_2_KHR",
&Self::DISPLAY_PLANE_INFO_2_KHR => "DISPLAY_PLANE_INFO_2_KHR",
&Self::DISPLAY_PLANE_CAPABILITIES_2_KHR => "DISPLAY_PLANE_CAPABILITIES_2_KHR",
&Self::PHYSICAL_DEVICE_SURFACE_INFO_2_KHR => "PHYSICAL_DEVICE_SURFACE_INFO_2_KHR",
&Self::SURFACE_CAPABILITIES_2_KHR => "SURFACE_CAPABILITIES_2_KHR",
&Self::SURFACE_FORMAT_2_KHR => "SURFACE_FORMAT_2_KHR",
&Self::PRESENT_REGIONS_KHR => "PRESENT_REGIONS_KHR",
&Self::PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR => {
"PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"
}
&Self::PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR => {
"PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"
}
&Self::QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR => {
"QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"
}
&Self::PERFORMANCE_QUERY_SUBMIT_INFO_KHR => "PERFORMANCE_QUERY_SUBMIT_INFO_KHR",
&Self::ACQUIRE_PROFILING_LOCK_INFO_KHR => "ACQUIRE_PROFILING_LOCK_INFO_KHR",
&Self::PERFORMANCE_COUNTER_KHR => "PERFORMANCE_COUNTER_KHR",
&Self::PERFORMANCE_COUNTER_DESCRIPTION_KHR => "PERFORMANCE_COUNTER_DESCRIPTION_KHR",
&Self::PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR => {
"PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"
}
&Self::PIPELINE_INFO_KHR => "PIPELINE_INFO_KHR",
&Self::PIPELINE_EXECUTABLE_PROPERTIES_KHR => "PIPELINE_EXECUTABLE_PROPERTIES_KHR",
&Self::PIPELINE_EXECUTABLE_INFO_KHR => "PIPELINE_EXECUTABLE_INFO_KHR",
&Self::PIPELINE_EXECUTABLE_STATISTIC_KHR => "PIPELINE_EXECUTABLE_STATISTIC_KHR",
&Self::PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR => {
"PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"
}
&Self::PIPELINE_LIBRARY_CREATE_INFO_KHR => "PIPELINE_LIBRARY_CREATE_INFO_KHR",
&Self::PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR => {
"PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"
}
&Self::BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR => {
"BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR"
}
&Self::WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR => {
"WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR"
}
&Self::ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR => {
"ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR"
}
&Self::ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR => {
"ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR"
}
&Self::ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR => {
"ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR"
}
&Self::ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR => {
"ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR"
}
&Self::ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR => {
"ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR"
}
&Self::ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR => {
"ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR"
}
&Self::ACCELERATION_STRUCTURE_GEOMETRY_KHR => "ACCELERATION_STRUCTURE_GEOMETRY_KHR",
&Self::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR => {
"ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR"
}
&Self::ACCELERATION_STRUCTURE_VERSION_KHR => "ACCELERATION_STRUCTURE_VERSION_KHR",
&Self::COPY_ACCELERATION_STRUCTURE_INFO_KHR => "COPY_ACCELERATION_STRUCTURE_INFO_KHR",
&Self::COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR => {
"COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR"
}
&Self::COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR => {
"COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR"
}
&Self::PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR => {
"PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR"
}
&Self::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR => {
"PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR"
}
&Self::RAY_TRACING_PIPELINE_CREATE_INFO_KHR => "RAY_TRACING_PIPELINE_CREATE_INFO_KHR",
&Self::RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR => {
"RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR"
}
&Self::ACCELERATION_STRUCTURE_CREATE_INFO_KHR => {
"ACCELERATION_STRUCTURE_CREATE_INFO_KHR"
}
&Self::RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR => {
"RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR"
}
&Self::PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR => {
"PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"
}
&Self::SHARED_PRESENT_SURFACE_CAPABILITIES_KHR => {
"SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"
}
&Self::SURFACE_PROTECTED_CAPABILITIES_KHR => "SURFACE_PROTECTED_CAPABILITIES_KHR",
&Self::SWAPCHAIN_CREATE_INFO_KHR => "SWAPCHAIN_CREATE_INFO_KHR",
&Self::PRESENT_INFO_KHR => "PRESENT_INFO_KHR",
&Self::WAYLAND_SURFACE_CREATE_INFO_KHR => "WAYLAND_SURFACE_CREATE_INFO_KHR",
&Self::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR => {
"WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"
}
&Self::WIN32_SURFACE_CREATE_INFO_KHR => "WIN32_SURFACE_CREATE_INFO_KHR",
&Self::XCB_SURFACE_CREATE_INFO_KHR => "XCB_SURFACE_CREATE_INFO_KHR",
&Self::XLIB_SURFACE_CREATE_INFO_KHR => "XLIB_SURFACE_CREATE_INFO_KHR",
&Self::IOS_SURFACE_CREATE_INFO_MVK => "IOS_SURFACE_CREATE_INFO_MVK",
&Self::MACOS_SURFACE_CREATE_INFO_MVK => "MACOS_SURFACE_CREATE_INFO_MVK",
&Self::VI_SURFACE_CREATE_INFO_NN => "VI_SURFACE_CREATE_INFO_NN",
&Self::IMAGE_VIEW_HANDLE_INFO_NVX => "IMAGE_VIEW_HANDLE_INFO_NVX",
&Self::IMAGE_VIEW_ADDRESS_PROPERTIES_NVX => "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX",
&Self::PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX => {
"PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"
}
&Self::PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV => {
"PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV => {
"PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV => {
"PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"
}
&Self::COOPERATIVE_MATRIX_PROPERTIES_NV => "COOPERATIVE_MATRIX_PROPERTIES_NV",
&Self::PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV => {
"PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"
}
&Self::PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV => {
"PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV => {
"PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"
}
&Self::PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV => {
"PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"
}
&Self::FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV => {
"FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"
}
&Self::DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV => {
"DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"
}
&Self::DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV => {
"DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"
}
&Self::DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV => {
"DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV => {
"PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"
}
&Self::CHECKPOINT_DATA_NV => "CHECKPOINT_DATA_NV",
&Self::QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV => "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV",
&Self::PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV => {
"PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"
}
&Self::DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV => {
"DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV => {
"PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"
}
&Self::GRAPHICS_SHADER_GROUP_CREATE_INFO_NV => "GRAPHICS_SHADER_GROUP_CREATE_INFO_NV",
&Self::GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV => {
"GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV"
}
&Self::INDIRECT_COMMANDS_LAYOUT_TOKEN_NV => "INDIRECT_COMMANDS_LAYOUT_TOKEN_NV",
&Self::INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV => {
"INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV"
}
&Self::GENERATED_COMMANDS_INFO_NV => "GENERATED_COMMANDS_INFO_NV",
&Self::GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV => {
"GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV"
}
&Self::PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV => {
"PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV"
}
&Self::EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV => "EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV",
&Self::EXPORT_MEMORY_ALLOCATE_INFO_NV => "EXPORT_MEMORY_ALLOCATE_INFO_NV",
&Self::IMPORT_MEMORY_WIN32_HANDLE_INFO_NV => "IMPORT_MEMORY_WIN32_HANDLE_INFO_NV",
&Self::EXPORT_MEMORY_WIN32_HANDLE_INFO_NV => "EXPORT_MEMORY_WIN32_HANDLE_INFO_NV",
&Self::PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV => {
"PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV => {
"PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"
}
&Self::PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV => {
"PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV => {
"PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV => {
"PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"
}
&Self::RAY_TRACING_PIPELINE_CREATE_INFO_NV => "RAY_TRACING_PIPELINE_CREATE_INFO_NV",
&Self::ACCELERATION_STRUCTURE_CREATE_INFO_NV => "ACCELERATION_STRUCTURE_CREATE_INFO_NV",
&Self::GEOMETRY_NV => "GEOMETRY_NV",
&Self::GEOMETRY_TRIANGLES_NV => "GEOMETRY_TRIANGLES_NV",
&Self::GEOMETRY_AABB_NV => "GEOMETRY_AABB_NV",
&Self::ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV => {
"ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"
}
&Self::PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV => {
"PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"
}
&Self::RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV => {
"RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"
}
&Self::ACCELERATION_STRUCTURE_INFO_NV => "ACCELERATION_STRUCTURE_INFO_NV",
&Self::PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV => {
"PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"
}
&Self::PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV => {
"PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"
}
&Self::PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV => {
"PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV => {
"PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV => {
"PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV => {
"PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV => {
"PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"
}
&Self::PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV => {
"PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"
}
&Self::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV => {
"PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"
}
&Self::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV => {
"PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"
}
&Self::PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV => {
"PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"
}
&Self::PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV => {
"PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"
}
&Self::WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV => {
"WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"
}
&Self::COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM => {
"COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"
}
&Self::RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM => "RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM",
_ => "(unknown)",
})
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`InstanceCreateFlags`](struct.InstanceCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct InstanceCreateFlagBits(pub u32);
impl InstanceCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> InstanceCreateFlags {
InstanceCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for InstanceCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstanceCreateFlags.html) · Flags of [`InstanceCreateFlagBits`](struct.InstanceCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct InstanceCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkApplicationInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ApplicationInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub p_application_name: *const std::os::raw::c_char,
pub application_version: u32,
pub p_engine_name: *const std::os::raw::c_char,
pub engine_version: u32,
pub api_version: u32,
}
impl ApplicationInfo {
#[inline]
pub fn builder<'a>(self) -> ApplicationInfoBuilder<'a> {
ApplicationInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ApplicationInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ApplicationInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("p_application_name", &self.p_application_name)
.field("application_version", &self.application_version)
.field("p_engine_name", &self.p_engine_name)
.field("engine_version", &self.engine_version)
.field("api_version", &self.api_version)
.finish()
}
}
impl Default for ApplicationInfo {
fn default() -> ApplicationInfo {
ApplicationInfo {
s_type: crate::vk1_0::StructureType::APPLICATION_INFO,
p_next: std::ptr::null(),
p_application_name: std::ptr::null(),
application_version: Default::default(),
p_engine_name: std::ptr::null(),
engine_version: Default::default(),
api_version: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkApplicationInfo.html) · Builder of [`ApplicationInfo`](struct.ApplicationInfo.html)"]
#[repr(transparent)]
pub struct ApplicationInfoBuilder<'a>(ApplicationInfo, std::marker::PhantomData<&'a ()>);
impl<'a> ApplicationInfoBuilder<'a> {
#[inline]
pub fn new() -> ApplicationInfoBuilder<'a> {
ApplicationInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn application_name(mut self, application_name: &'a std::ffi::CStr) -> Self {
self.0.p_application_name = application_name.as_ptr();
self
}
#[allow(unused_mut)]
#[inline]
pub fn application_version(mut self, application_version: u32) -> Self {
self.0.application_version = application_version;
self
}
#[allow(unused_mut)]
#[inline]
pub fn engine_name(mut self, engine_name: &'a std::ffi::CStr) -> Self {
self.0.p_engine_name = engine_name.as_ptr();
self
}
#[allow(unused_mut)]
#[inline]
pub fn engine_version(mut self, engine_version: u32) -> Self {
self.0.engine_version = engine_version;
self
}
#[allow(unused_mut)]
#[inline]
pub fn api_version(mut self, api_version: u32) -> Self {
self.0.api_version = api_version;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ApplicationInfo {
self.0
}
}
impl<'a> std::fmt::Debug for ApplicationInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ApplicationInfoBuilder<'a> {
type Target = ApplicationInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ApplicationInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAllocationCallbacks.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct AllocationCallbacks {
pub p_user_data: *mut std::ffi::c_void,
pub pfn_allocation: Option<crate::vk1_0::PFN_vkAllocationFunction>,
pub pfn_reallocation: Option<crate::vk1_0::PFN_vkReallocationFunction>,
pub pfn_free: Option<crate::vk1_0::PFN_vkFreeFunction>,
pub pfn_internal_allocation: Option<crate::vk1_0::PFN_vkInternalAllocationNotification>,
pub pfn_internal_free: Option<crate::vk1_0::PFN_vkInternalFreeNotification>,
}
impl AllocationCallbacks {
#[inline]
pub fn builder<'a>(self) -> AllocationCallbacksBuilder<'a> {
AllocationCallbacksBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for AllocationCallbacks {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("AllocationCallbacks")
.field("p_user_data", &self.p_user_data)
.field("pfn_allocation", &unsafe {
std::mem::transmute::<_, *mut ()>(self.pfn_allocation)
})
.field("pfn_reallocation", &unsafe {
std::mem::transmute::<_, *mut ()>(self.pfn_reallocation)
})
.field("pfn_free", &unsafe {
std::mem::transmute::<_, *mut ()>(self.pfn_free)
})
.field("pfn_internal_allocation", &unsafe {
std::mem::transmute::<_, *mut ()>(self.pfn_internal_allocation)
})
.field("pfn_internal_free", &unsafe {
std::mem::transmute::<_, *mut ()>(self.pfn_internal_free)
})
.finish()
}
}
impl Default for AllocationCallbacks {
fn default() -> AllocationCallbacks {
AllocationCallbacks {
p_user_data: std::ptr::null_mut(),
pfn_allocation: Default::default(),
pfn_reallocation: Default::default(),
pfn_free: Default::default(),
pfn_internal_allocation: Default::default(),
pfn_internal_free: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAllocationCallbacks.html) · Builder of [`AllocationCallbacks`](struct.AllocationCallbacks.html)"]
#[repr(transparent)]
pub struct AllocationCallbacksBuilder<'a>(AllocationCallbacks, std::marker::PhantomData<&'a ()>);
impl<'a> AllocationCallbacksBuilder<'a> {
#[inline]
pub fn new() -> AllocationCallbacksBuilder<'a> {
AllocationCallbacksBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn user_data(mut self, user_data: &'a mut std::ffi::c_void) -> Self {
self.0.p_user_data = user_data;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pfn_allocation(
mut self,
pfn_allocation: Option<crate::vk1_0::PFN_vkAllocationFunction>,
) -> Self {
self.0.pfn_allocation = pfn_allocation;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pfn_reallocation(
mut self,
pfn_reallocation: Option<crate::vk1_0::PFN_vkReallocationFunction>,
) -> Self {
self.0.pfn_reallocation = pfn_reallocation;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pfn_free(mut self, pfn_free: Option<crate::vk1_0::PFN_vkFreeFunction>) -> Self {
self.0.pfn_free = pfn_free;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pfn_internal_allocation(
mut self,
pfn_internal_allocation: Option<crate::vk1_0::PFN_vkInternalAllocationNotification>,
) -> Self {
self.0.pfn_internal_allocation = pfn_internal_allocation;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pfn_internal_free(
mut self,
pfn_internal_free: Option<crate::vk1_0::PFN_vkInternalFreeNotification>,
) -> Self {
self.0.pfn_internal_free = pfn_internal_free;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> AllocationCallbacks {
self.0
}
}
impl<'a> std::fmt::Debug for AllocationCallbacksBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for AllocationCallbacksBuilder<'a> {
type Target = AllocationCallbacks;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for AllocationCallbacksBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkAllocationFunction.html) · Application defined function"]
#[allow(non_camel_case_types)]
pub type PFN_vkAllocationFunction = unsafe extern "system" fn(
p_user_data: *mut std::ffi::c_void,
size: usize,
alignment: usize,
allocation_scope: crate::vk1_0::SystemAllocationScope,
) -> *const std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSystemAllocationScope.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SystemAllocationScope(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SystemAllocationScope {
pub const COMMAND: Self = Self(0);
pub const OBJECT: Self = Self(1);
pub const CACHE: Self = Self(2);
pub const DEVICE: Self = Self(3);
pub const INSTANCE: Self = Self(4);
}
impl std::fmt::Debug for SystemAllocationScope {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::COMMAND => "COMMAND",
&Self::OBJECT => "OBJECT",
&Self::CACHE => "CACHE",
&Self::DEVICE => "DEVICE",
&Self::INSTANCE => "INSTANCE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkReallocationFunction.html) · Application defined function"]
#[allow(non_camel_case_types)]
pub type PFN_vkReallocationFunction = unsafe extern "system" fn(
p_user_data: *mut std::ffi::c_void,
p_original: *mut std::ffi::c_void,
size: usize,
alignment: usize,
allocation_scope: crate::vk1_0::SystemAllocationScope,
) -> *const std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkFreeFunction.html) · Application defined function"]
#[allow(non_camel_case_types)]
pub type PFN_vkFreeFunction = unsafe extern "system" fn(
p_user_data: *mut std::ffi::c_void,
p_memory: *mut std::ffi::c_void,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkInternalAllocationNotification.html) · Application defined function"]
#[allow(non_camel_case_types)]
pub type PFN_vkInternalAllocationNotification = unsafe extern "system" fn(
p_user_data: *mut std::ffi::c_void,
size: usize,
allocation_type: crate::vk1_0::InternalAllocationType,
allocation_scope: crate::vk1_0::SystemAllocationScope,
) -> std::ffi::c_void;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInternalAllocationType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct InternalAllocationType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl InternalAllocationType {
pub const EXECUTABLE: Self = Self(0);
}
impl std::fmt::Debug for InternalAllocationType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::EXECUTABLE => "EXECUTABLE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkInternalFreeNotification.html) · Application defined function"]
#[allow(non_camel_case_types)]
pub type PFN_vkInternalFreeNotification = unsafe extern "system" fn(
p_user_data: *mut std::ffi::c_void,
size: usize,
allocation_type: crate::vk1_0::InternalAllocationType,
allocation_scope: crate::vk1_0::SystemAllocationScope,
) -> std::ffi::c_void;
crate :: handle ! ( Instance , INSTANCE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkInstance.html) · Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkResult.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct Result(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl Result {
pub const SUCCESS: Self = Self(0);
pub const NOT_READY: Self = Self(1);
pub const TIMEOUT: Self = Self(2);
pub const EVENT_SET: Self = Self(3);
pub const EVENT_RESET: Self = Self(4);
pub const INCOMPLETE: Self = Self(5);
pub const ERROR_OUT_OF_HOST_MEMORY: Self = Self(-1);
pub const ERROR_OUT_OF_DEVICE_MEMORY: Self = Self(-2);
pub const ERROR_INITIALIZATION_FAILED: Self = Self(-3);
pub const ERROR_DEVICE_LOST: Self = Self(-4);
pub const ERROR_MEMORY_MAP_FAILED: Self = Self(-5);
pub const ERROR_LAYER_NOT_PRESENT: Self = Self(-6);
pub const ERROR_EXTENSION_NOT_PRESENT: Self = Self(-7);
pub const ERROR_FEATURE_NOT_PRESENT: Self = Self(-8);
pub const ERROR_INCOMPATIBLE_DRIVER: Self = Self(-9);
pub const ERROR_TOO_MANY_OBJECTS: Self = Self(-10);
pub const ERROR_FORMAT_NOT_SUPPORTED: Self = Self(-11);
pub const ERROR_FRAGMENTED_POOL: Self = Self(-12);
pub const ERROR_UNKNOWN: Self = Self(-13);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl Result {
pub const ERROR_OUT_OF_POOL_MEMORY: Self = Self(-1000069000);
pub const ERROR_INVALID_EXTERNAL_HANDLE: Self = Self(-1000072003);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl Result {
pub const ERROR_FRAGMENTATION: Self = Self(-1000161000);
pub const ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS: Self = Self(-1000257000);
}
#[doc = "[Part of `extensions::ext_buffer_device_address`](../extensions/ext_buffer_device_address/index.html)"]
impl Result {
pub const ERROR_INVALID_DEVICE_ADDRESS_EXT: Self = Self::ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS;
}
#[doc = "[Part of `extensions::ext_debug_report`](../extensions/ext_debug_report/index.html)"]
impl Result {
pub const ERROR_VALIDATION_FAILED_EXT: Self = Self(-1000011001);
}
#[doc = "[Part of `extensions::ext_descriptor_indexing`](../extensions/ext_descriptor_indexing/index.html)"]
impl Result {
pub const ERROR_FRAGMENTATION_EXT: Self = Self::ERROR_FRAGMENTATION;
}
#[doc = "[Part of `extensions::ext_full_screen_exclusive`](../extensions/ext_full_screen_exclusive/index.html)"]
impl Result {
pub const ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: Self = Self(-1000255000);
}
#[doc = "[Part of `extensions::ext_global_priority`](../extensions/ext_global_priority/index.html)"]
impl Result {
pub const ERROR_NOT_PERMITTED_EXT: Self = Self(-1000174001);
}
#[doc = "[Part of `extensions::ext_image_drm_format_modifier`](../extensions/ext_image_drm_format_modifier/index.html)"]
impl Result {
pub const ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT: Self = Self(-1000158000);
}
#[doc = "[Part of `extensions::ext_pipeline_creation_cache_control`](../extensions/ext_pipeline_creation_cache_control/index.html)"]
impl Result {
pub const PIPELINE_COMPILE_REQUIRED_EXT: Self = Self(1000297000);
pub const ERROR_PIPELINE_COMPILE_REQUIRED_EXT: Self = Self::PIPELINE_COMPILE_REQUIRED_EXT;
}
#[doc = "[Part of `extensions::khr_buffer_device_address`](../extensions/khr_buffer_device_address/index.html)"]
impl Result {
pub const ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR: Self =
Self::ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS;
}
#[doc = "[Part of `extensions::khr_deferred_host_operations`](../extensions/khr_deferred_host_operations/index.html)"]
impl Result {
pub const THREAD_IDLE_KHR: Self = Self(1000268000);
pub const THREAD_DONE_KHR: Self = Self(1000268001);
pub const OPERATION_DEFERRED_KHR: Self = Self(1000268002);
pub const OPERATION_NOT_DEFERRED_KHR: Self = Self(1000268003);
}
#[doc = "[Part of `extensions::khr_display_swapchain`](../extensions/khr_display_swapchain/index.html)"]
impl Result {
pub const ERROR_INCOMPATIBLE_DISPLAY_KHR: Self = Self(-1000003001);
}
#[doc = "[Part of `extensions::khr_external_memory`](../extensions/khr_external_memory/index.html)"]
impl Result {
pub const ERROR_INVALID_EXTERNAL_HANDLE_KHR: Self = Self::ERROR_INVALID_EXTERNAL_HANDLE;
}
#[doc = "[Part of `extensions::khr_maintenance1`](../extensions/khr_maintenance1/index.html)"]
impl Result {
pub const ERROR_OUT_OF_POOL_MEMORY_KHR: Self = Self::ERROR_OUT_OF_POOL_MEMORY;
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl Result {
pub const ERROR_INCOMPATIBLE_VERSION_KHR: Self = Self(-1000150000);
}
#[doc = "[Part of `extensions::khr_surface`](../extensions/khr_surface/index.html)"]
impl Result {
pub const ERROR_SURFACE_LOST_KHR: Self = Self(-1000000000);
pub const ERROR_NATIVE_WINDOW_IN_USE_KHR: Self = Self(-1000000001);
}
#[doc = "[Part of `extensions::khr_swapchain`](../extensions/khr_swapchain/index.html)"]
impl Result {
pub const SUBOPTIMAL_KHR: Self = Self(1000001003);
pub const ERROR_OUT_OF_DATE_KHR: Self = Self(-1000001004);
}
#[doc = "[Part of `extensions::nv_glsl_shader`](../extensions/nv_glsl_shader/index.html)"]
impl Result {
pub const ERROR_INVALID_SHADER_NV: Self = Self(-1000012000);
}
impl std::fmt::Debug for Result {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SUCCESS => "SUCCESS",
&Self::NOT_READY => "NOT_READY",
&Self::TIMEOUT => "TIMEOUT",
&Self::EVENT_SET => "EVENT_SET",
&Self::EVENT_RESET => "EVENT_RESET",
&Self::INCOMPLETE => "INCOMPLETE",
&Self::ERROR_OUT_OF_HOST_MEMORY => "ERROR_OUT_OF_HOST_MEMORY",
&Self::ERROR_OUT_OF_DEVICE_MEMORY => "ERROR_OUT_OF_DEVICE_MEMORY",
&Self::ERROR_INITIALIZATION_FAILED => "ERROR_INITIALIZATION_FAILED",
&Self::ERROR_DEVICE_LOST => "ERROR_DEVICE_LOST",
&Self::ERROR_MEMORY_MAP_FAILED => "ERROR_MEMORY_MAP_FAILED",
&Self::ERROR_LAYER_NOT_PRESENT => "ERROR_LAYER_NOT_PRESENT",
&Self::ERROR_EXTENSION_NOT_PRESENT => "ERROR_EXTENSION_NOT_PRESENT",
&Self::ERROR_FEATURE_NOT_PRESENT => "ERROR_FEATURE_NOT_PRESENT",
&Self::ERROR_INCOMPATIBLE_DRIVER => "ERROR_INCOMPATIBLE_DRIVER",
&Self::ERROR_TOO_MANY_OBJECTS => "ERROR_TOO_MANY_OBJECTS",
&Self::ERROR_FORMAT_NOT_SUPPORTED => "ERROR_FORMAT_NOT_SUPPORTED",
&Self::ERROR_FRAGMENTED_POOL => "ERROR_FRAGMENTED_POOL",
&Self::ERROR_UNKNOWN => "ERROR_UNKNOWN",
&Self::ERROR_OUT_OF_POOL_MEMORY => "ERROR_OUT_OF_POOL_MEMORY",
&Self::ERROR_INVALID_EXTERNAL_HANDLE => "ERROR_INVALID_EXTERNAL_HANDLE",
&Self::ERROR_FRAGMENTATION => "ERROR_FRAGMENTATION",
&Self::ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS => "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS",
&Self::ERROR_VALIDATION_FAILED_EXT => "ERROR_VALIDATION_FAILED_EXT",
&Self::ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT => {
"ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"
}
&Self::ERROR_NOT_PERMITTED_EXT => "ERROR_NOT_PERMITTED_EXT",
&Self::ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT => {
"ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"
}
&Self::PIPELINE_COMPILE_REQUIRED_EXT => "PIPELINE_COMPILE_REQUIRED_EXT",
&Self::THREAD_IDLE_KHR => "THREAD_IDLE_KHR",
&Self::THREAD_DONE_KHR => "THREAD_DONE_KHR",
&Self::OPERATION_DEFERRED_KHR => "OPERATION_DEFERRED_KHR",
&Self::OPERATION_NOT_DEFERRED_KHR => "OPERATION_NOT_DEFERRED_KHR",
&Self::ERROR_INCOMPATIBLE_DISPLAY_KHR => "ERROR_INCOMPATIBLE_DISPLAY_KHR",
&Self::ERROR_INCOMPATIBLE_VERSION_KHR => "ERROR_INCOMPATIBLE_VERSION_KHR",
&Self::ERROR_SURFACE_LOST_KHR => "ERROR_SURFACE_LOST_KHR",
&Self::ERROR_NATIVE_WINDOW_IN_USE_KHR => "ERROR_NATIVE_WINDOW_IN_USE_KHR",
&Self::SUBOPTIMAL_KHR => "SUBOPTIMAL_KHR",
&Self::ERROR_OUT_OF_DATE_KHR => "ERROR_OUT_OF_DATE_KHR",
&Self::ERROR_INVALID_SHADER_NV => "ERROR_INVALID_SHADER_NV",
_ => "(unknown)",
})
}
}
crate :: handle ! ( PhysicalDevice , PHYSICAL_DEVICE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDevice.html) · Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceFeatures {
pub robust_buffer_access: crate::vk1_0::Bool32,
pub full_draw_index_uint32: crate::vk1_0::Bool32,
pub image_cube_array: crate::vk1_0::Bool32,
pub independent_blend: crate::vk1_0::Bool32,
pub geometry_shader: crate::vk1_0::Bool32,
pub tessellation_shader: crate::vk1_0::Bool32,
pub sample_rate_shading: crate::vk1_0::Bool32,
pub dual_src_blend: crate::vk1_0::Bool32,
pub logic_op: crate::vk1_0::Bool32,
pub multi_draw_indirect: crate::vk1_0::Bool32,
pub draw_indirect_first_instance: crate::vk1_0::Bool32,
pub depth_clamp: crate::vk1_0::Bool32,
pub depth_bias_clamp: crate::vk1_0::Bool32,
pub fill_mode_non_solid: crate::vk1_0::Bool32,
pub depth_bounds: crate::vk1_0::Bool32,
pub wide_lines: crate::vk1_0::Bool32,
pub large_points: crate::vk1_0::Bool32,
pub alpha_to_one: crate::vk1_0::Bool32,
pub multi_viewport: crate::vk1_0::Bool32,
pub sampler_anisotropy: crate::vk1_0::Bool32,
pub texture_compression_etc2: crate::vk1_0::Bool32,
pub texture_compression_astc_ldr: crate::vk1_0::Bool32,
pub texture_compression_bc: crate::vk1_0::Bool32,
pub occlusion_query_precise: crate::vk1_0::Bool32,
pub pipeline_statistics_query: crate::vk1_0::Bool32,
pub vertex_pipeline_stores_and_atomics: crate::vk1_0::Bool32,
pub fragment_stores_and_atomics: crate::vk1_0::Bool32,
pub shader_tessellation_and_geometry_point_size: crate::vk1_0::Bool32,
pub shader_image_gather_extended: crate::vk1_0::Bool32,
pub shader_storage_image_extended_formats: crate::vk1_0::Bool32,
pub shader_storage_image_multisample: crate::vk1_0::Bool32,
pub shader_storage_image_read_without_format: crate::vk1_0::Bool32,
pub shader_storage_image_write_without_format: crate::vk1_0::Bool32,
pub shader_uniform_buffer_array_dynamic_indexing: crate::vk1_0::Bool32,
pub shader_sampled_image_array_dynamic_indexing: crate::vk1_0::Bool32,
pub shader_storage_buffer_array_dynamic_indexing: crate::vk1_0::Bool32,
pub shader_storage_image_array_dynamic_indexing: crate::vk1_0::Bool32,
pub shader_clip_distance: crate::vk1_0::Bool32,
pub shader_cull_distance: crate::vk1_0::Bool32,
pub shader_float64: crate::vk1_0::Bool32,
pub shader_int64: crate::vk1_0::Bool32,
pub shader_int16: crate::vk1_0::Bool32,
pub shader_resource_residency: crate::vk1_0::Bool32,
pub shader_resource_min_lod: crate::vk1_0::Bool32,
pub sparse_binding: crate::vk1_0::Bool32,
pub sparse_residency_buffer: crate::vk1_0::Bool32,
pub sparse_residency_image2_d: crate::vk1_0::Bool32,
pub sparse_residency_image3_d: crate::vk1_0::Bool32,
pub sparse_residency2_samples: crate::vk1_0::Bool32,
pub sparse_residency4_samples: crate::vk1_0::Bool32,
pub sparse_residency8_samples: crate::vk1_0::Bool32,
pub sparse_residency16_samples: crate::vk1_0::Bool32,
pub sparse_residency_aliased: crate::vk1_0::Bool32,
pub variable_multisample_rate: crate::vk1_0::Bool32,
pub inherited_queries: crate::vk1_0::Bool32,
}
impl PhysicalDeviceFeatures {
#[inline]
pub fn builder<'a>(self) -> PhysicalDeviceFeaturesBuilder<'a> {
PhysicalDeviceFeaturesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PhysicalDeviceFeatures {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PhysicalDeviceFeatures")
.field("robust_buffer_access", &(self.robust_buffer_access != 0))
.field(
"full_draw_index_uint32",
&(self.full_draw_index_uint32 != 0),
)
.field("image_cube_array", &(self.image_cube_array != 0))
.field("independent_blend", &(self.independent_blend != 0))
.field("geometry_shader", &(self.geometry_shader != 0))
.field("tessellation_shader", &(self.tessellation_shader != 0))
.field("sample_rate_shading", &(self.sample_rate_shading != 0))
.field("dual_src_blend", &(self.dual_src_blend != 0))
.field("logic_op", &(self.logic_op != 0))
.field("multi_draw_indirect", &(self.multi_draw_indirect != 0))
.field(
"draw_indirect_first_instance",
&(self.draw_indirect_first_instance != 0),
)
.field("depth_clamp", &(self.depth_clamp != 0))
.field("depth_bias_clamp", &(self.depth_bias_clamp != 0))
.field("fill_mode_non_solid", &(self.fill_mode_non_solid != 0))
.field("depth_bounds", &(self.depth_bounds != 0))
.field("wide_lines", &(self.wide_lines != 0))
.field("large_points", &(self.large_points != 0))
.field("alpha_to_one", &(self.alpha_to_one != 0))
.field("multi_viewport", &(self.multi_viewport != 0))
.field("sampler_anisotropy", &(self.sampler_anisotropy != 0))
.field(
"texture_compression_etc2",
&(self.texture_compression_etc2 != 0),
)
.field(
"texture_compression_astc_ldr",
&(self.texture_compression_astc_ldr != 0),
)
.field(
"texture_compression_bc",
&(self.texture_compression_bc != 0),
)
.field(
"occlusion_query_precise",
&(self.occlusion_query_precise != 0),
)
.field(
"pipeline_statistics_query",
&(self.pipeline_statistics_query != 0),
)
.field(
"vertex_pipeline_stores_and_atomics",
&(self.vertex_pipeline_stores_and_atomics != 0),
)
.field(
"fragment_stores_and_atomics",
&(self.fragment_stores_and_atomics != 0),
)
.field(
"shader_tessellation_and_geometry_point_size",
&(self.shader_tessellation_and_geometry_point_size != 0),
)
.field(
"shader_image_gather_extended",
&(self.shader_image_gather_extended != 0),
)
.field(
"shader_storage_image_extended_formats",
&(self.shader_storage_image_extended_formats != 0),
)
.field(
"shader_storage_image_multisample",
&(self.shader_storage_image_multisample != 0),
)
.field(
"shader_storage_image_read_without_format",
&(self.shader_storage_image_read_without_format != 0),
)
.field(
"shader_storage_image_write_without_format",
&(self.shader_storage_image_write_without_format != 0),
)
.field(
"shader_uniform_buffer_array_dynamic_indexing",
&(self.shader_uniform_buffer_array_dynamic_indexing != 0),
)
.field(
"shader_sampled_image_array_dynamic_indexing",
&(self.shader_sampled_image_array_dynamic_indexing != 0),
)
.field(
"shader_storage_buffer_array_dynamic_indexing",
&(self.shader_storage_buffer_array_dynamic_indexing != 0),
)
.field(
"shader_storage_image_array_dynamic_indexing",
&(self.shader_storage_image_array_dynamic_indexing != 0),
)
.field("shader_clip_distance", &(self.shader_clip_distance != 0))
.field("shader_cull_distance", &(self.shader_cull_distance != 0))
.field("shader_float64", &(self.shader_float64 != 0))
.field("shader_int64", &(self.shader_int64 != 0))
.field("shader_int16", &(self.shader_int16 != 0))
.field(
"shader_resource_residency",
&(self.shader_resource_residency != 0),
)
.field(
"shader_resource_min_lod",
&(self.shader_resource_min_lod != 0),
)
.field("sparse_binding", &(self.sparse_binding != 0))
.field(
"sparse_residency_buffer",
&(self.sparse_residency_buffer != 0),
)
.field(
"sparse_residency_image2_d",
&(self.sparse_residency_image2_d != 0),
)
.field(
"sparse_residency_image3_d",
&(self.sparse_residency_image3_d != 0),
)
.field(
"sparse_residency2_samples",
&(self.sparse_residency2_samples != 0),
)
.field(
"sparse_residency4_samples",
&(self.sparse_residency4_samples != 0),
)
.field(
"sparse_residency8_samples",
&(self.sparse_residency8_samples != 0),
)
.field(
"sparse_residency16_samples",
&(self.sparse_residency16_samples != 0),
)
.field(
"sparse_residency_aliased",
&(self.sparse_residency_aliased != 0),
)
.field(
"variable_multisample_rate",
&(self.variable_multisample_rate != 0),
)
.field("inherited_queries", &(self.inherited_queries != 0))
.finish()
}
}
impl Default for PhysicalDeviceFeatures {
fn default() -> PhysicalDeviceFeatures {
PhysicalDeviceFeatures {
robust_buffer_access: Default::default(),
full_draw_index_uint32: Default::default(),
image_cube_array: Default::default(),
independent_blend: Default::default(),
geometry_shader: Default::default(),
tessellation_shader: Default::default(),
sample_rate_shading: Default::default(),
dual_src_blend: Default::default(),
logic_op: Default::default(),
multi_draw_indirect: Default::default(),
draw_indirect_first_instance: Default::default(),
depth_clamp: Default::default(),
depth_bias_clamp: Default::default(),
fill_mode_non_solid: Default::default(),
depth_bounds: Default::default(),
wide_lines: Default::default(),
large_points: Default::default(),
alpha_to_one: Default::default(),
multi_viewport: Default::default(),
sampler_anisotropy: Default::default(),
texture_compression_etc2: Default::default(),
texture_compression_astc_ldr: Default::default(),
texture_compression_bc: Default::default(),
occlusion_query_precise: Default::default(),
pipeline_statistics_query: Default::default(),
vertex_pipeline_stores_and_atomics: Default::default(),
fragment_stores_and_atomics: Default::default(),
shader_tessellation_and_geometry_point_size: Default::default(),
shader_image_gather_extended: Default::default(),
shader_storage_image_extended_formats: Default::default(),
shader_storage_image_multisample: Default::default(),
shader_storage_image_read_without_format: Default::default(),
shader_storage_image_write_without_format: Default::default(),
shader_uniform_buffer_array_dynamic_indexing: Default::default(),
shader_sampled_image_array_dynamic_indexing: Default::default(),
shader_storage_buffer_array_dynamic_indexing: Default::default(),
shader_storage_image_array_dynamic_indexing: Default::default(),
shader_clip_distance: Default::default(),
shader_cull_distance: Default::default(),
shader_float64: Default::default(),
shader_int64: Default::default(),
shader_int16: Default::default(),
shader_resource_residency: Default::default(),
shader_resource_min_lod: Default::default(),
sparse_binding: Default::default(),
sparse_residency_buffer: Default::default(),
sparse_residency_image2_d: Default::default(),
sparse_residency_image3_d: Default::default(),
sparse_residency2_samples: Default::default(),
sparse_residency4_samples: Default::default(),
sparse_residency8_samples: Default::default(),
sparse_residency16_samples: Default::default(),
sparse_residency_aliased: Default::default(),
variable_multisample_rate: Default::default(),
inherited_queries: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceFeatures.html) · Builder of [`PhysicalDeviceFeatures`](struct.PhysicalDeviceFeatures.html)"]
#[repr(transparent)]
pub struct PhysicalDeviceFeaturesBuilder<'a>(
PhysicalDeviceFeatures,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceFeaturesBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceFeaturesBuilder<'a> {
PhysicalDeviceFeaturesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn robust_buffer_access(mut self, robust_buffer_access: bool) -> Self {
self.0.robust_buffer_access = robust_buffer_access as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn full_draw_index_uint32(mut self, full_draw_index_uint32: bool) -> Self {
self.0.full_draw_index_uint32 = full_draw_index_uint32 as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_cube_array(mut self, image_cube_array: bool) -> Self {
self.0.image_cube_array = image_cube_array as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn independent_blend(mut self, independent_blend: bool) -> Self {
self.0.independent_blend = independent_blend as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn geometry_shader(mut self, geometry_shader: bool) -> Self {
self.0.geometry_shader = geometry_shader as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn tessellation_shader(mut self, tessellation_shader: bool) -> Self {
self.0.tessellation_shader = tessellation_shader as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sample_rate_shading(mut self, sample_rate_shading: bool) -> Self {
self.0.sample_rate_shading = sample_rate_shading as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dual_src_blend(mut self, dual_src_blend: bool) -> Self {
self.0.dual_src_blend = dual_src_blend as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn logic_op(mut self, logic_op: bool) -> Self {
self.0.logic_op = logic_op as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn multi_draw_indirect(mut self, multi_draw_indirect: bool) -> Self {
self.0.multi_draw_indirect = multi_draw_indirect as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn draw_indirect_first_instance(mut self, draw_indirect_first_instance: bool) -> Self {
self.0.draw_indirect_first_instance = draw_indirect_first_instance as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_clamp(mut self, depth_clamp: bool) -> Self {
self.0.depth_clamp = depth_clamp as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bias_clamp(mut self, depth_bias_clamp: bool) -> Self {
self.0.depth_bias_clamp = depth_bias_clamp as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn fill_mode_non_solid(mut self, fill_mode_non_solid: bool) -> Self {
self.0.fill_mode_non_solid = fill_mode_non_solid as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bounds(mut self, depth_bounds: bool) -> Self {
self.0.depth_bounds = depth_bounds as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn wide_lines(mut self, wide_lines: bool) -> Self {
self.0.wide_lines = wide_lines as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn large_points(mut self, large_points: bool) -> Self {
self.0.large_points = large_points as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn alpha_to_one(mut self, alpha_to_one: bool) -> Self {
self.0.alpha_to_one = alpha_to_one as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn multi_viewport(mut self, multi_viewport: bool) -> Self {
self.0.multi_viewport = multi_viewport as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sampler_anisotropy(mut self, sampler_anisotropy: bool) -> Self {
self.0.sampler_anisotropy = sampler_anisotropy as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn texture_compression_etc2(mut self, texture_compression_etc2: bool) -> Self {
self.0.texture_compression_etc2 = texture_compression_etc2 as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn texture_compression_astc_ldr(mut self, texture_compression_astc_ldr: bool) -> Self {
self.0.texture_compression_astc_ldr = texture_compression_astc_ldr as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn texture_compression_bc(mut self, texture_compression_bc: bool) -> Self {
self.0.texture_compression_bc = texture_compression_bc as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn occlusion_query_precise(mut self, occlusion_query_precise: bool) -> Self {
self.0.occlusion_query_precise = occlusion_query_precise as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pipeline_statistics_query(mut self, pipeline_statistics_query: bool) -> Self {
self.0.pipeline_statistics_query = pipeline_statistics_query as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn vertex_pipeline_stores_and_atomics(
mut self,
vertex_pipeline_stores_and_atomics: bool,
) -> Self {
self.0.vertex_pipeline_stores_and_atomics = vertex_pipeline_stores_and_atomics as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn fragment_stores_and_atomics(mut self, fragment_stores_and_atomics: bool) -> Self {
self.0.fragment_stores_and_atomics = fragment_stores_and_atomics as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_tessellation_and_geometry_point_size(
mut self,
shader_tessellation_and_geometry_point_size: bool,
) -> Self {
self.0.shader_tessellation_and_geometry_point_size =
shader_tessellation_and_geometry_point_size as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_image_gather_extended(mut self, shader_image_gather_extended: bool) -> Self {
self.0.shader_image_gather_extended = shader_image_gather_extended as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_storage_image_extended_formats(
mut self,
shader_storage_image_extended_formats: bool,
) -> Self {
self.0.shader_storage_image_extended_formats = shader_storage_image_extended_formats as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_storage_image_multisample(
mut self,
shader_storage_image_multisample: bool,
) -> Self {
self.0.shader_storage_image_multisample = shader_storage_image_multisample as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_storage_image_read_without_format(
mut self,
shader_storage_image_read_without_format: bool,
) -> Self {
self.0.shader_storage_image_read_without_format =
shader_storage_image_read_without_format as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_storage_image_write_without_format(
mut self,
shader_storage_image_write_without_format: bool,
) -> Self {
self.0.shader_storage_image_write_without_format =
shader_storage_image_write_without_format as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_uniform_buffer_array_dynamic_indexing(
mut self,
shader_uniform_buffer_array_dynamic_indexing: bool,
) -> Self {
self.0.shader_uniform_buffer_array_dynamic_indexing =
shader_uniform_buffer_array_dynamic_indexing as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_sampled_image_array_dynamic_indexing(
mut self,
shader_sampled_image_array_dynamic_indexing: bool,
) -> Self {
self.0.shader_sampled_image_array_dynamic_indexing =
shader_sampled_image_array_dynamic_indexing as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_storage_buffer_array_dynamic_indexing(
mut self,
shader_storage_buffer_array_dynamic_indexing: bool,
) -> Self {
self.0.shader_storage_buffer_array_dynamic_indexing =
shader_storage_buffer_array_dynamic_indexing as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_storage_image_array_dynamic_indexing(
mut self,
shader_storage_image_array_dynamic_indexing: bool,
) -> Self {
self.0.shader_storage_image_array_dynamic_indexing =
shader_storage_image_array_dynamic_indexing as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_clip_distance(mut self, shader_clip_distance: bool) -> Self {
self.0.shader_clip_distance = shader_clip_distance as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_cull_distance(mut self, shader_cull_distance: bool) -> Self {
self.0.shader_cull_distance = shader_cull_distance as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_float64(mut self, shader_float64: bool) -> Self {
self.0.shader_float64 = shader_float64 as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_int64(mut self, shader_int64: bool) -> Self {
self.0.shader_int64 = shader_int64 as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_int16(mut self, shader_int16: bool) -> Self {
self.0.shader_int16 = shader_int16 as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_resource_residency(mut self, shader_resource_residency: bool) -> Self {
self.0.shader_resource_residency = shader_resource_residency as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn shader_resource_min_lod(mut self, shader_resource_min_lod: bool) -> Self {
self.0.shader_resource_min_lod = shader_resource_min_lod as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_binding(mut self, sparse_binding: bool) -> Self {
self.0.sparse_binding = sparse_binding as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency_buffer(mut self, sparse_residency_buffer: bool) -> Self {
self.0.sparse_residency_buffer = sparse_residency_buffer as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency_image2_d(mut self, sparse_residency_image2_d: bool) -> Self {
self.0.sparse_residency_image2_d = sparse_residency_image2_d as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency_image3_d(mut self, sparse_residency_image3_d: bool) -> Self {
self.0.sparse_residency_image3_d = sparse_residency_image3_d as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency2_samples(mut self, sparse_residency2_samples: bool) -> Self {
self.0.sparse_residency2_samples = sparse_residency2_samples as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency4_samples(mut self, sparse_residency4_samples: bool) -> Self {
self.0.sparse_residency4_samples = sparse_residency4_samples as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency8_samples(mut self, sparse_residency8_samples: bool) -> Self {
self.0.sparse_residency8_samples = sparse_residency8_samples as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency16_samples(mut self, sparse_residency16_samples: bool) -> Self {
self.0.sparse_residency16_samples = sparse_residency16_samples as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_residency_aliased(mut self, sparse_residency_aliased: bool) -> Self {
self.0.sparse_residency_aliased = sparse_residency_aliased as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn variable_multisample_rate(mut self, variable_multisample_rate: bool) -> Self {
self.0.variable_multisample_rate = variable_multisample_rate as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn inherited_queries(mut self, inherited_queries: bool) -> Self {
self.0.inherited_queries = inherited_queries as u32;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PhysicalDeviceFeatures {
self.0
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceFeaturesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PhysicalDeviceFeaturesBuilder<'a> {
type Target = PhysicalDeviceFeatures;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDeviceFeaturesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBool32.html) · Base Type"]
pub type Bool32 = u32;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormat.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct Format(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl Format {
pub const UNDEFINED: Self = Self(0);
pub const R4G4_UNORM_PACK8: Self = Self(1);
pub const R4G4B4A4_UNORM_PACK16: Self = Self(2);
pub const B4G4R4A4_UNORM_PACK16: Self = Self(3);
pub const R5G6B5_UNORM_PACK16: Self = Self(4);
pub const B5G6R5_UNORM_PACK16: Self = Self(5);
pub const R5G5B5A1_UNORM_PACK16: Self = Self(6);
pub const B5G5R5A1_UNORM_PACK16: Self = Self(7);
pub const A1R5G5B5_UNORM_PACK16: Self = Self(8);
pub const R8_UNORM: Self = Self(9);
pub const R8_SNORM: Self = Self(10);
pub const R8_USCALED: Self = Self(11);
pub const R8_SSCALED: Self = Self(12);
pub const R8_UINT: Self = Self(13);
pub const R8_SINT: Self = Self(14);
pub const R8_SRGB: Self = Self(15);
pub const R8G8_UNORM: Self = Self(16);
pub const R8G8_SNORM: Self = Self(17);
pub const R8G8_USCALED: Self = Self(18);
pub const R8G8_SSCALED: Self = Self(19);
pub const R8G8_UINT: Self = Self(20);
pub const R8G8_SINT: Self = Self(21);
pub const R8G8_SRGB: Self = Self(22);
pub const R8G8B8_UNORM: Self = Self(23);
pub const R8G8B8_SNORM: Self = Self(24);
pub const R8G8B8_USCALED: Self = Self(25);
pub const R8G8B8_SSCALED: Self = Self(26);
pub const R8G8B8_UINT: Self = Self(27);
pub const R8G8B8_SINT: Self = Self(28);
pub const R8G8B8_SRGB: Self = Self(29);
pub const B8G8R8_UNORM: Self = Self(30);
pub const B8G8R8_SNORM: Self = Self(31);
pub const B8G8R8_USCALED: Self = Self(32);
pub const B8G8R8_SSCALED: Self = Self(33);
pub const B8G8R8_UINT: Self = Self(34);
pub const B8G8R8_SINT: Self = Self(35);
pub const B8G8R8_SRGB: Self = Self(36);
pub const R8G8B8A8_UNORM: Self = Self(37);
pub const R8G8B8A8_SNORM: Self = Self(38);
pub const R8G8B8A8_USCALED: Self = Self(39);
pub const R8G8B8A8_SSCALED: Self = Self(40);
pub const R8G8B8A8_UINT: Self = Self(41);
pub const R8G8B8A8_SINT: Self = Self(42);
pub const R8G8B8A8_SRGB: Self = Self(43);
pub const B8G8R8A8_UNORM: Self = Self(44);
pub const B8G8R8A8_SNORM: Self = Self(45);
pub const B8G8R8A8_USCALED: Self = Self(46);
pub const B8G8R8A8_SSCALED: Self = Self(47);
pub const B8G8R8A8_UINT: Self = Self(48);
pub const B8G8R8A8_SINT: Self = Self(49);
pub const B8G8R8A8_SRGB: Self = Self(50);
pub const A8B8G8R8_UNORM_PACK32: Self = Self(51);
pub const A8B8G8R8_SNORM_PACK32: Self = Self(52);
pub const A8B8G8R8_USCALED_PACK32: Self = Self(53);
pub const A8B8G8R8_SSCALED_PACK32: Self = Self(54);
pub const A8B8G8R8_UINT_PACK32: Self = Self(55);
pub const A8B8G8R8_SINT_PACK32: Self = Self(56);
pub const A8B8G8R8_SRGB_PACK32: Self = Self(57);
pub const A2R10G10B10_UNORM_PACK32: Self = Self(58);
pub const A2R10G10B10_SNORM_PACK32: Self = Self(59);
pub const A2R10G10B10_USCALED_PACK32: Self = Self(60);
pub const A2R10G10B10_SSCALED_PACK32: Self = Self(61);
pub const A2R10G10B10_UINT_PACK32: Self = Self(62);
pub const A2R10G10B10_SINT_PACK32: Self = Self(63);
pub const A2B10G10R10_UNORM_PACK32: Self = Self(64);
pub const A2B10G10R10_SNORM_PACK32: Self = Self(65);
pub const A2B10G10R10_USCALED_PACK32: Self = Self(66);
pub const A2B10G10R10_SSCALED_PACK32: Self = Self(67);
pub const A2B10G10R10_UINT_PACK32: Self = Self(68);
pub const A2B10G10R10_SINT_PACK32: Self = Self(69);
pub const R16_UNORM: Self = Self(70);
pub const R16_SNORM: Self = Self(71);
pub const R16_USCALED: Self = Self(72);
pub const R16_SSCALED: Self = Self(73);
pub const R16_UINT: Self = Self(74);
pub const R16_SINT: Self = Self(75);
pub const R16_SFLOAT: Self = Self(76);
pub const R16G16_UNORM: Self = Self(77);
pub const R16G16_SNORM: Self = Self(78);
pub const R16G16_USCALED: Self = Self(79);
pub const R16G16_SSCALED: Self = Self(80);
pub const R16G16_UINT: Self = Self(81);
pub const R16G16_SINT: Self = Self(82);
pub const R16G16_SFLOAT: Self = Self(83);
pub const R16G16B16_UNORM: Self = Self(84);
pub const R16G16B16_SNORM: Self = Self(85);
pub const R16G16B16_USCALED: Self = Self(86);
pub const R16G16B16_SSCALED: Self = Self(87);
pub const R16G16B16_UINT: Self = Self(88);
pub const R16G16B16_SINT: Self = Self(89);
pub const R16G16B16_SFLOAT: Self = Self(90);
pub const R16G16B16A16_UNORM: Self = Self(91);
pub const R16G16B16A16_SNORM: Self = Self(92);
pub const R16G16B16A16_USCALED: Self = Self(93);
pub const R16G16B16A16_SSCALED: Self = Self(94);
pub const R16G16B16A16_UINT: Self = Self(95);
pub const R16G16B16A16_SINT: Self = Self(96);
pub const R16G16B16A16_SFLOAT: Self = Self(97);
pub const R32_UINT: Self = Self(98);
pub const R32_SINT: Self = Self(99);
pub const R32_SFLOAT: Self = Self(100);
pub const R32G32_UINT: Self = Self(101);
pub const R32G32_SINT: Self = Self(102);
pub const R32G32_SFLOAT: Self = Self(103);
pub const R32G32B32_UINT: Self = Self(104);
pub const R32G32B32_SINT: Self = Self(105);
pub const R32G32B32_SFLOAT: Self = Self(106);
pub const R32G32B32A32_UINT: Self = Self(107);
pub const R32G32B32A32_SINT: Self = Self(108);
pub const R32G32B32A32_SFLOAT: Self = Self(109);
pub const R64_UINT: Self = Self(110);
pub const R64_SINT: Self = Self(111);
pub const R64_SFLOAT: Self = Self(112);
pub const R64G64_UINT: Self = Self(113);
pub const R64G64_SINT: Self = Self(114);
pub const R64G64_SFLOAT: Self = Self(115);
pub const R64G64B64_UINT: Self = Self(116);
pub const R64G64B64_SINT: Self = Self(117);
pub const R64G64B64_SFLOAT: Self = Self(118);
pub const R64G64B64A64_UINT: Self = Self(119);
pub const R64G64B64A64_SINT: Self = Self(120);
pub const R64G64B64A64_SFLOAT: Self = Self(121);
pub const B10G11R11_UFLOAT_PACK32: Self = Self(122);
pub const E5B9G9R9_UFLOAT_PACK32: Self = Self(123);
pub const D16_UNORM: Self = Self(124);
pub const X8_D24_UNORM_PACK32: Self = Self(125);
pub const D32_SFLOAT: Self = Self(126);
pub const S8_UINT: Self = Self(127);
pub const D16_UNORM_S8_UINT: Self = Self(128);
pub const D24_UNORM_S8_UINT: Self = Self(129);
pub const D32_SFLOAT_S8_UINT: Self = Self(130);
pub const BC1_RGB_UNORM_BLOCK: Self = Self(131);
pub const BC1_RGB_SRGB_BLOCK: Self = Self(132);
pub const BC1_RGBA_UNORM_BLOCK: Self = Self(133);
pub const BC1_RGBA_SRGB_BLOCK: Self = Self(134);
pub const BC2_UNORM_BLOCK: Self = Self(135);
pub const BC2_SRGB_BLOCK: Self = Self(136);
pub const BC3_UNORM_BLOCK: Self = Self(137);
pub const BC3_SRGB_BLOCK: Self = Self(138);
pub const BC4_UNORM_BLOCK: Self = Self(139);
pub const BC4_SNORM_BLOCK: Self = Self(140);
pub const BC5_UNORM_BLOCK: Self = Self(141);
pub const BC5_SNORM_BLOCK: Self = Self(142);
pub const BC6H_UFLOAT_BLOCK: Self = Self(143);
pub const BC6H_SFLOAT_BLOCK: Self = Self(144);
pub const BC7_UNORM_BLOCK: Self = Self(145);
pub const BC7_SRGB_BLOCK: Self = Self(146);
pub const ETC2_R8G8B8_UNORM_BLOCK: Self = Self(147);
pub const ETC2_R8G8B8_SRGB_BLOCK: Self = Self(148);
pub const ETC2_R8G8B8A1_UNORM_BLOCK: Self = Self(149);
pub const ETC2_R8G8B8A1_SRGB_BLOCK: Self = Self(150);
pub const ETC2_R8G8B8A8_UNORM_BLOCK: Self = Self(151);
pub const ETC2_R8G8B8A8_SRGB_BLOCK: Self = Self(152);
pub const EAC_R11_UNORM_BLOCK: Self = Self(153);
pub const EAC_R11_SNORM_BLOCK: Self = Self(154);
pub const EAC_R11G11_UNORM_BLOCK: Self = Self(155);
pub const EAC_R11G11_SNORM_BLOCK: Self = Self(156);
pub const ASTC_4X4_UNORM_BLOCK: Self = Self(157);
pub const ASTC_4X4_SRGB_BLOCK: Self = Self(158);
pub const ASTC_5X4_UNORM_BLOCK: Self = Self(159);
pub const ASTC_5X4_SRGB_BLOCK: Self = Self(160);
pub const ASTC_5X5_UNORM_BLOCK: Self = Self(161);
pub const ASTC_5X5_SRGB_BLOCK: Self = Self(162);
pub const ASTC_6X5_UNORM_BLOCK: Self = Self(163);
pub const ASTC_6X5_SRGB_BLOCK: Self = Self(164);
pub const ASTC_6X6_UNORM_BLOCK: Self = Self(165);
pub const ASTC_6X6_SRGB_BLOCK: Self = Self(166);
pub const ASTC_8X5_UNORM_BLOCK: Self = Self(167);
pub const ASTC_8X5_SRGB_BLOCK: Self = Self(168);
pub const ASTC_8X6_UNORM_BLOCK: Self = Self(169);
pub const ASTC_8X6_SRGB_BLOCK: Self = Self(170);
pub const ASTC_8X8_UNORM_BLOCK: Self = Self(171);
pub const ASTC_8X8_SRGB_BLOCK: Self = Self(172);
pub const ASTC_10X5_UNORM_BLOCK: Self = Self(173);
pub const ASTC_10X5_SRGB_BLOCK: Self = Self(174);
pub const ASTC_10X6_UNORM_BLOCK: Self = Self(175);
pub const ASTC_10X6_SRGB_BLOCK: Self = Self(176);
pub const ASTC_10X8_UNORM_BLOCK: Self = Self(177);
pub const ASTC_10X8_SRGB_BLOCK: Self = Self(178);
pub const ASTC_10X10_UNORM_BLOCK: Self = Self(179);
pub const ASTC_10X10_SRGB_BLOCK: Self = Self(180);
pub const ASTC_12X10_UNORM_BLOCK: Self = Self(181);
pub const ASTC_12X10_SRGB_BLOCK: Self = Self(182);
pub const ASTC_12X12_UNORM_BLOCK: Self = Self(183);
pub const ASTC_12X12_SRGB_BLOCK: Self = Self(184);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl Format {
pub const G8B8G8R8_422_UNORM: Self = Self(1000156000);
pub const B8G8R8G8_422_UNORM: Self = Self(1000156001);
pub const G8_B8_R8_3PLANE_420_UNORM: Self = Self(1000156002);
pub const G8_B8R8_2PLANE_420_UNORM: Self = Self(1000156003);
pub const G8_B8_R8_3PLANE_422_UNORM: Self = Self(1000156004);
pub const G8_B8R8_2PLANE_422_UNORM: Self = Self(1000156005);
pub const G8_B8_R8_3PLANE_444_UNORM: Self = Self(1000156006);
pub const R10X6_UNORM_PACK16: Self = Self(1000156007);
pub const R10X6G10X6_UNORM_2PACK16: Self = Self(1000156008);
pub const R10X6G10X6B10X6A10X6_UNORM_4PACK16: Self = Self(1000156009);
pub const G10X6B10X6G10X6R10X6_422_UNORM_4PACK16: Self = Self(1000156010);
pub const B10X6G10X6R10X6G10X6_422_UNORM_4PACK16: Self = Self(1000156011);
pub const G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16: Self = Self(1000156012);
pub const G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16: Self = Self(1000156013);
pub const G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16: Self = Self(1000156014);
pub const G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16: Self = Self(1000156015);
pub const G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16: Self = Self(1000156016);
pub const R12X4_UNORM_PACK16: Self = Self(1000156017);
pub const R12X4G12X4_UNORM_2PACK16: Self = Self(1000156018);
pub const R12X4G12X4B12X4A12X4_UNORM_4PACK16: Self = Self(1000156019);
pub const G12X4B12X4G12X4R12X4_422_UNORM_4PACK16: Self = Self(1000156020);
pub const B12X4G12X4R12X4G12X4_422_UNORM_4PACK16: Self = Self(1000156021);
pub const G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16: Self = Self(1000156022);
pub const G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16: Self = Self(1000156023);
pub const G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16: Self = Self(1000156024);
pub const G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16: Self = Self(1000156025);
pub const G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16: Self = Self(1000156026);
pub const G16B16G16R16_422_UNORM: Self = Self(1000156027);
pub const B16G16R16G16_422_UNORM: Self = Self(1000156028);
pub const G16_B16_R16_3PLANE_420_UNORM: Self = Self(1000156029);
pub const G16_B16R16_2PLANE_420_UNORM: Self = Self(1000156030);
pub const G16_B16_R16_3PLANE_422_UNORM: Self = Self(1000156031);
pub const G16_B16R16_2PLANE_422_UNORM: Self = Self(1000156032);
pub const G16_B16_R16_3PLANE_444_UNORM: Self = Self(1000156033);
}
#[doc = "[Part of `extensions::ext_texture_compression_astc_hdr`](../extensions/ext_texture_compression_astc_hdr/index.html)"]
impl Format {
pub const ASTC_4X4_SFLOAT_BLOCK_EXT: Self = Self(1000066000);
pub const ASTC_5X4_SFLOAT_BLOCK_EXT: Self = Self(1000066001);
pub const ASTC_5X5_SFLOAT_BLOCK_EXT: Self = Self(1000066002);
pub const ASTC_6X5_SFLOAT_BLOCK_EXT: Self = Self(1000066003);
pub const ASTC_6X6_SFLOAT_BLOCK_EXT: Self = Self(1000066004);
pub const ASTC_8X5_SFLOAT_BLOCK_EXT: Self = Self(1000066005);
pub const ASTC_8X6_SFLOAT_BLOCK_EXT: Self = Self(1000066006);
pub const ASTC_8X8_SFLOAT_BLOCK_EXT: Self = Self(1000066007);
pub const ASTC_10X5_SFLOAT_BLOCK_EXT: Self = Self(1000066008);
pub const ASTC_10X6_SFLOAT_BLOCK_EXT: Self = Self(1000066009);
pub const ASTC_10X8_SFLOAT_BLOCK_EXT: Self = Self(1000066010);
pub const ASTC_10X10_SFLOAT_BLOCK_EXT: Self = Self(1000066011);
pub const ASTC_12X10_SFLOAT_BLOCK_EXT: Self = Self(1000066012);
pub const ASTC_12X12_SFLOAT_BLOCK_EXT: Self = Self(1000066013);
}
#[doc = "[Part of `extensions::img_format_pvrtc`](../extensions/img_format_pvrtc/index.html)"]
impl Format {
pub const PVRTC1_2BPP_UNORM_BLOCK_IMG: Self = Self(1000054000);
pub const PVRTC1_4BPP_UNORM_BLOCK_IMG: Self = Self(1000054001);
pub const PVRTC2_2BPP_UNORM_BLOCK_IMG: Self = Self(1000054002);
pub const PVRTC2_4BPP_UNORM_BLOCK_IMG: Self = Self(1000054003);
pub const PVRTC1_2BPP_SRGB_BLOCK_IMG: Self = Self(1000054004);
pub const PVRTC1_4BPP_SRGB_BLOCK_IMG: Self = Self(1000054005);
pub const PVRTC2_2BPP_SRGB_BLOCK_IMG: Self = Self(1000054006);
pub const PVRTC2_4BPP_SRGB_BLOCK_IMG: Self = Self(1000054007);
}
#[doc = "[Part of `extensions::khr_sampler_ycbcr_conversion`](../extensions/khr_sampler_ycbcr_conversion/index.html)"]
impl Format {
pub const G8B8G8R8_422_UNORM_KHR: Self = Self::G8B8G8R8_422_UNORM;
pub const B8G8R8G8_422_UNORM_KHR: Self = Self::B8G8R8G8_422_UNORM;
pub const G8_B8_R8_3PLANE_420_UNORM_KHR: Self = Self::G8_B8_R8_3PLANE_420_UNORM;
pub const G8_B8R8_2PLANE_420_UNORM_KHR: Self = Self::G8_B8R8_2PLANE_420_UNORM;
pub const G8_B8_R8_3PLANE_422_UNORM_KHR: Self = Self::G8_B8_R8_3PLANE_422_UNORM;
pub const G8_B8R8_2PLANE_422_UNORM_KHR: Self = Self::G8_B8R8_2PLANE_422_UNORM;
pub const G8_B8_R8_3PLANE_444_UNORM_KHR: Self = Self::G8_B8_R8_3PLANE_444_UNORM;
pub const R10X6_UNORM_PACK16_KHR: Self = Self::R10X6_UNORM_PACK16;
pub const R10X6G10X6_UNORM_2PACK16_KHR: Self = Self::R10X6G10X6_UNORM_2PACK16;
pub const R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR: Self =
Self::R10X6G10X6B10X6A10X6_UNORM_4PACK16;
pub const G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR: Self =
Self::G10X6B10X6G10X6R10X6_422_UNORM_4PACK16;
pub const B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR: Self =
Self::B10X6G10X6R10X6G10X6_422_UNORM_4PACK16;
pub const G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR: Self =
Self::G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16;
pub const G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR: Self =
Self::G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16;
pub const G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR: Self =
Self::G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16;
pub const G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR: Self =
Self::G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16;
pub const G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR: Self =
Self::G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16;
pub const R12X4_UNORM_PACK16_KHR: Self = Self::R12X4_UNORM_PACK16;
pub const R12X4G12X4_UNORM_2PACK16_KHR: Self = Self::R12X4G12X4_UNORM_2PACK16;
pub const R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR: Self =
Self::R12X4G12X4B12X4A12X4_UNORM_4PACK16;
pub const G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR: Self =
Self::G12X4B12X4G12X4R12X4_422_UNORM_4PACK16;
pub const B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR: Self =
Self::B12X4G12X4R12X4G12X4_422_UNORM_4PACK16;
pub const G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR: Self =
Self::G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16;
pub const G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR: Self =
Self::G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16;
pub const G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR: Self =
Self::G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16;
pub const G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR: Self =
Self::G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16;
pub const G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR: Self =
Self::G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16;
pub const G16B16G16R16_422_UNORM_KHR: Self = Self::G16B16G16R16_422_UNORM;
pub const B16G16R16G16_422_UNORM_KHR: Self = Self::B16G16R16G16_422_UNORM;
pub const G16_B16_R16_3PLANE_420_UNORM_KHR: Self = Self::G16_B16_R16_3PLANE_420_UNORM;
pub const G16_B16R16_2PLANE_420_UNORM_KHR: Self = Self::G16_B16R16_2PLANE_420_UNORM;
pub const G16_B16_R16_3PLANE_422_UNORM_KHR: Self = Self::G16_B16_R16_3PLANE_422_UNORM;
pub const G16_B16R16_2PLANE_422_UNORM_KHR: Self = Self::G16_B16R16_2PLANE_422_UNORM;
pub const G16_B16_R16_3PLANE_444_UNORM_KHR: Self = Self::G16_B16_R16_3PLANE_444_UNORM;
}
impl std::fmt::Debug for Format {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::UNDEFINED => "UNDEFINED",
&Self::R4G4_UNORM_PACK8 => "R4G4_UNORM_PACK8",
&Self::R4G4B4A4_UNORM_PACK16 => "R4G4B4A4_UNORM_PACK16",
&Self::B4G4R4A4_UNORM_PACK16 => "B4G4R4A4_UNORM_PACK16",
&Self::R5G6B5_UNORM_PACK16 => "R5G6B5_UNORM_PACK16",
&Self::B5G6R5_UNORM_PACK16 => "B5G6R5_UNORM_PACK16",
&Self::R5G5B5A1_UNORM_PACK16 => "R5G5B5A1_UNORM_PACK16",
&Self::B5G5R5A1_UNORM_PACK16 => "B5G5R5A1_UNORM_PACK16",
&Self::A1R5G5B5_UNORM_PACK16 => "A1R5G5B5_UNORM_PACK16",
&Self::R8_UNORM => "R8_UNORM",
&Self::R8_SNORM => "R8_SNORM",
&Self::R8_USCALED => "R8_USCALED",
&Self::R8_SSCALED => "R8_SSCALED",
&Self::R8_UINT => "R8_UINT",
&Self::R8_SINT => "R8_SINT",
&Self::R8_SRGB => "R8_SRGB",
&Self::R8G8_UNORM => "R8G8_UNORM",
&Self::R8G8_SNORM => "R8G8_SNORM",
&Self::R8G8_USCALED => "R8G8_USCALED",
&Self::R8G8_SSCALED => "R8G8_SSCALED",
&Self::R8G8_UINT => "R8G8_UINT",
&Self::R8G8_SINT => "R8G8_SINT",
&Self::R8G8_SRGB => "R8G8_SRGB",
&Self::R8G8B8_UNORM => "R8G8B8_UNORM",
&Self::R8G8B8_SNORM => "R8G8B8_SNORM",
&Self::R8G8B8_USCALED => "R8G8B8_USCALED",
&Self::R8G8B8_SSCALED => "R8G8B8_SSCALED",
&Self::R8G8B8_UINT => "R8G8B8_UINT",
&Self::R8G8B8_SINT => "R8G8B8_SINT",
&Self::R8G8B8_SRGB => "R8G8B8_SRGB",
&Self::B8G8R8_UNORM => "B8G8R8_UNORM",
&Self::B8G8R8_SNORM => "B8G8R8_SNORM",
&Self::B8G8R8_USCALED => "B8G8R8_USCALED",
&Self::B8G8R8_SSCALED => "B8G8R8_SSCALED",
&Self::B8G8R8_UINT => "B8G8R8_UINT",
&Self::B8G8R8_SINT => "B8G8R8_SINT",
&Self::B8G8R8_SRGB => "B8G8R8_SRGB",
&Self::R8G8B8A8_UNORM => "R8G8B8A8_UNORM",
&Self::R8G8B8A8_SNORM => "R8G8B8A8_SNORM",
&Self::R8G8B8A8_USCALED => "R8G8B8A8_USCALED",
&Self::R8G8B8A8_SSCALED => "R8G8B8A8_SSCALED",
&Self::R8G8B8A8_UINT => "R8G8B8A8_UINT",
&Self::R8G8B8A8_SINT => "R8G8B8A8_SINT",
&Self::R8G8B8A8_SRGB => "R8G8B8A8_SRGB",
&Self::B8G8R8A8_UNORM => "B8G8R8A8_UNORM",
&Self::B8G8R8A8_SNORM => "B8G8R8A8_SNORM",
&Self::B8G8R8A8_USCALED => "B8G8R8A8_USCALED",
&Self::B8G8R8A8_SSCALED => "B8G8R8A8_SSCALED",
&Self::B8G8R8A8_UINT => "B8G8R8A8_UINT",
&Self::B8G8R8A8_SINT => "B8G8R8A8_SINT",
&Self::B8G8R8A8_SRGB => "B8G8R8A8_SRGB",
&Self::A8B8G8R8_UNORM_PACK32 => "A8B8G8R8_UNORM_PACK32",
&Self::A8B8G8R8_SNORM_PACK32 => "A8B8G8R8_SNORM_PACK32",
&Self::A8B8G8R8_USCALED_PACK32 => "A8B8G8R8_USCALED_PACK32",
&Self::A8B8G8R8_SSCALED_PACK32 => "A8B8G8R8_SSCALED_PACK32",
&Self::A8B8G8R8_UINT_PACK32 => "A8B8G8R8_UINT_PACK32",
&Self::A8B8G8R8_SINT_PACK32 => "A8B8G8R8_SINT_PACK32",
&Self::A8B8G8R8_SRGB_PACK32 => "A8B8G8R8_SRGB_PACK32",
&Self::A2R10G10B10_UNORM_PACK32 => "A2R10G10B10_UNORM_PACK32",
&Self::A2R10G10B10_SNORM_PACK32 => "A2R10G10B10_SNORM_PACK32",
&Self::A2R10G10B10_USCALED_PACK32 => "A2R10G10B10_USCALED_PACK32",
&Self::A2R10G10B10_SSCALED_PACK32 => "A2R10G10B10_SSCALED_PACK32",
&Self::A2R10G10B10_UINT_PACK32 => "A2R10G10B10_UINT_PACK32",
&Self::A2R10G10B10_SINT_PACK32 => "A2R10G10B10_SINT_PACK32",
&Self::A2B10G10R10_UNORM_PACK32 => "A2B10G10R10_UNORM_PACK32",
&Self::A2B10G10R10_SNORM_PACK32 => "A2B10G10R10_SNORM_PACK32",
&Self::A2B10G10R10_USCALED_PACK32 => "A2B10G10R10_USCALED_PACK32",
&Self::A2B10G10R10_SSCALED_PACK32 => "A2B10G10R10_SSCALED_PACK32",
&Self::A2B10G10R10_UINT_PACK32 => "A2B10G10R10_UINT_PACK32",
&Self::A2B10G10R10_SINT_PACK32 => "A2B10G10R10_SINT_PACK32",
&Self::R16_UNORM => "R16_UNORM",
&Self::R16_SNORM => "R16_SNORM",
&Self::R16_USCALED => "R16_USCALED",
&Self::R16_SSCALED => "R16_SSCALED",
&Self::R16_UINT => "R16_UINT",
&Self::R16_SINT => "R16_SINT",
&Self::R16_SFLOAT => "R16_SFLOAT",
&Self::R16G16_UNORM => "R16G16_UNORM",
&Self::R16G16_SNORM => "R16G16_SNORM",
&Self::R16G16_USCALED => "R16G16_USCALED",
&Self::R16G16_SSCALED => "R16G16_SSCALED",
&Self::R16G16_UINT => "R16G16_UINT",
&Self::R16G16_SINT => "R16G16_SINT",
&Self::R16G16_SFLOAT => "R16G16_SFLOAT",
&Self::R16G16B16_UNORM => "R16G16B16_UNORM",
&Self::R16G16B16_SNORM => "R16G16B16_SNORM",
&Self::R16G16B16_USCALED => "R16G16B16_USCALED",
&Self::R16G16B16_SSCALED => "R16G16B16_SSCALED",
&Self::R16G16B16_UINT => "R16G16B16_UINT",
&Self::R16G16B16_SINT => "R16G16B16_SINT",
&Self::R16G16B16_SFLOAT => "R16G16B16_SFLOAT",
&Self::R16G16B16A16_UNORM => "R16G16B16A16_UNORM",
&Self::R16G16B16A16_SNORM => "R16G16B16A16_SNORM",
&Self::R16G16B16A16_USCALED => "R16G16B16A16_USCALED",
&Self::R16G16B16A16_SSCALED => "R16G16B16A16_SSCALED",
&Self::R16G16B16A16_UINT => "R16G16B16A16_UINT",
&Self::R16G16B16A16_SINT => "R16G16B16A16_SINT",
&Self::R16G16B16A16_SFLOAT => "R16G16B16A16_SFLOAT",
&Self::R32_UINT => "R32_UINT",
&Self::R32_SINT => "R32_SINT",
&Self::R32_SFLOAT => "R32_SFLOAT",
&Self::R32G32_UINT => "R32G32_UINT",
&Self::R32G32_SINT => "R32G32_SINT",
&Self::R32G32_SFLOAT => "R32G32_SFLOAT",
&Self::R32G32B32_UINT => "R32G32B32_UINT",
&Self::R32G32B32_SINT => "R32G32B32_SINT",
&Self::R32G32B32_SFLOAT => "R32G32B32_SFLOAT",
&Self::R32G32B32A32_UINT => "R32G32B32A32_UINT",
&Self::R32G32B32A32_SINT => "R32G32B32A32_SINT",
&Self::R32G32B32A32_SFLOAT => "R32G32B32A32_SFLOAT",
&Self::R64_UINT => "R64_UINT",
&Self::R64_SINT => "R64_SINT",
&Self::R64_SFLOAT => "R64_SFLOAT",
&Self::R64G64_UINT => "R64G64_UINT",
&Self::R64G64_SINT => "R64G64_SINT",
&Self::R64G64_SFLOAT => "R64G64_SFLOAT",
&Self::R64G64B64_UINT => "R64G64B64_UINT",
&Self::R64G64B64_SINT => "R64G64B64_SINT",
&Self::R64G64B64_SFLOAT => "R64G64B64_SFLOAT",
&Self::R64G64B64A64_UINT => "R64G64B64A64_UINT",
&Self::R64G64B64A64_SINT => "R64G64B64A64_SINT",
&Self::R64G64B64A64_SFLOAT => "R64G64B64A64_SFLOAT",
&Self::B10G11R11_UFLOAT_PACK32 => "B10G11R11_UFLOAT_PACK32",
&Self::E5B9G9R9_UFLOAT_PACK32 => "E5B9G9R9_UFLOAT_PACK32",
&Self::D16_UNORM => "D16_UNORM",
&Self::X8_D24_UNORM_PACK32 => "X8_D24_UNORM_PACK32",
&Self::D32_SFLOAT => "D32_SFLOAT",
&Self::S8_UINT => "S8_UINT",
&Self::D16_UNORM_S8_UINT => "D16_UNORM_S8_UINT",
&Self::D24_UNORM_S8_UINT => "D24_UNORM_S8_UINT",
&Self::D32_SFLOAT_S8_UINT => "D32_SFLOAT_S8_UINT",
&Self::BC1_RGB_UNORM_BLOCK => "BC1_RGB_UNORM_BLOCK",
&Self::BC1_RGB_SRGB_BLOCK => "BC1_RGB_SRGB_BLOCK",
&Self::BC1_RGBA_UNORM_BLOCK => "BC1_RGBA_UNORM_BLOCK",
&Self::BC1_RGBA_SRGB_BLOCK => "BC1_RGBA_SRGB_BLOCK",
&Self::BC2_UNORM_BLOCK => "BC2_UNORM_BLOCK",
&Self::BC2_SRGB_BLOCK => "BC2_SRGB_BLOCK",
&Self::BC3_UNORM_BLOCK => "BC3_UNORM_BLOCK",
&Self::BC3_SRGB_BLOCK => "BC3_SRGB_BLOCK",
&Self::BC4_UNORM_BLOCK => "BC4_UNORM_BLOCK",
&Self::BC4_SNORM_BLOCK => "BC4_SNORM_BLOCK",
&Self::BC5_UNORM_BLOCK => "BC5_UNORM_BLOCK",
&Self::BC5_SNORM_BLOCK => "BC5_SNORM_BLOCK",
&Self::BC6H_UFLOAT_BLOCK => "BC6H_UFLOAT_BLOCK",
&Self::BC6H_SFLOAT_BLOCK => "BC6H_SFLOAT_BLOCK",
&Self::BC7_UNORM_BLOCK => "BC7_UNORM_BLOCK",
&Self::BC7_SRGB_BLOCK => "BC7_SRGB_BLOCK",
&Self::ETC2_R8G8B8_UNORM_BLOCK => "ETC2_R8G8B8_UNORM_BLOCK",
&Self::ETC2_R8G8B8_SRGB_BLOCK => "ETC2_R8G8B8_SRGB_BLOCK",
&Self::ETC2_R8G8B8A1_UNORM_BLOCK => "ETC2_R8G8B8A1_UNORM_BLOCK",
&Self::ETC2_R8G8B8A1_SRGB_BLOCK => "ETC2_R8G8B8A1_SRGB_BLOCK",
&Self::ETC2_R8G8B8A8_UNORM_BLOCK => "ETC2_R8G8B8A8_UNORM_BLOCK",
&Self::ETC2_R8G8B8A8_SRGB_BLOCK => "ETC2_R8G8B8A8_SRGB_BLOCK",
&Self::EAC_R11_UNORM_BLOCK => "EAC_R11_UNORM_BLOCK",
&Self::EAC_R11_SNORM_BLOCK => "EAC_R11_SNORM_BLOCK",
&Self::EAC_R11G11_UNORM_BLOCK => "EAC_R11G11_UNORM_BLOCK",
&Self::EAC_R11G11_SNORM_BLOCK => "EAC_R11G11_SNORM_BLOCK",
&Self::ASTC_4X4_UNORM_BLOCK => "ASTC_4X4_UNORM_BLOCK",
&Self::ASTC_4X4_SRGB_BLOCK => "ASTC_4X4_SRGB_BLOCK",
&Self::ASTC_5X4_UNORM_BLOCK => "ASTC_5X4_UNORM_BLOCK",
&Self::ASTC_5X4_SRGB_BLOCK => "ASTC_5X4_SRGB_BLOCK",
&Self::ASTC_5X5_UNORM_BLOCK => "ASTC_5X5_UNORM_BLOCK",
&Self::ASTC_5X5_SRGB_BLOCK => "ASTC_5X5_SRGB_BLOCK",
&Self::ASTC_6X5_UNORM_BLOCK => "ASTC_6X5_UNORM_BLOCK",
&Self::ASTC_6X5_SRGB_BLOCK => "ASTC_6X5_SRGB_BLOCK",
&Self::ASTC_6X6_UNORM_BLOCK => "ASTC_6X6_UNORM_BLOCK",
&Self::ASTC_6X6_SRGB_BLOCK => "ASTC_6X6_SRGB_BLOCK",
&Self::ASTC_8X5_UNORM_BLOCK => "ASTC_8X5_UNORM_BLOCK",
&Self::ASTC_8X5_SRGB_BLOCK => "ASTC_8X5_SRGB_BLOCK",
&Self::ASTC_8X6_UNORM_BLOCK => "ASTC_8X6_UNORM_BLOCK",
&Self::ASTC_8X6_SRGB_BLOCK => "ASTC_8X6_SRGB_BLOCK",
&Self::ASTC_8X8_UNORM_BLOCK => "ASTC_8X8_UNORM_BLOCK",
&Self::ASTC_8X8_SRGB_BLOCK => "ASTC_8X8_SRGB_BLOCK",
&Self::ASTC_10X5_UNORM_BLOCK => "ASTC_10X5_UNORM_BLOCK",
&Self::ASTC_10X5_SRGB_BLOCK => "ASTC_10X5_SRGB_BLOCK",
&Self::ASTC_10X6_UNORM_BLOCK => "ASTC_10X6_UNORM_BLOCK",
&Self::ASTC_10X6_SRGB_BLOCK => "ASTC_10X6_SRGB_BLOCK",
&Self::ASTC_10X8_UNORM_BLOCK => "ASTC_10X8_UNORM_BLOCK",
&Self::ASTC_10X8_SRGB_BLOCK => "ASTC_10X8_SRGB_BLOCK",
&Self::ASTC_10X10_UNORM_BLOCK => "ASTC_10X10_UNORM_BLOCK",
&Self::ASTC_10X10_SRGB_BLOCK => "ASTC_10X10_SRGB_BLOCK",
&Self::ASTC_12X10_UNORM_BLOCK => "ASTC_12X10_UNORM_BLOCK",
&Self::ASTC_12X10_SRGB_BLOCK => "ASTC_12X10_SRGB_BLOCK",
&Self::ASTC_12X12_UNORM_BLOCK => "ASTC_12X12_UNORM_BLOCK",
&Self::ASTC_12X12_SRGB_BLOCK => "ASTC_12X12_SRGB_BLOCK",
&Self::G8B8G8R8_422_UNORM => "G8B8G8R8_422_UNORM",
&Self::B8G8R8G8_422_UNORM => "B8G8R8G8_422_UNORM",
&Self::G8_B8_R8_3PLANE_420_UNORM => "G8_B8_R8_3PLANE_420_UNORM",
&Self::G8_B8R8_2PLANE_420_UNORM => "G8_B8R8_2PLANE_420_UNORM",
&Self::G8_B8_R8_3PLANE_422_UNORM => "G8_B8_R8_3PLANE_422_UNORM",
&Self::G8_B8R8_2PLANE_422_UNORM => "G8_B8R8_2PLANE_422_UNORM",
&Self::G8_B8_R8_3PLANE_444_UNORM => "G8_B8_R8_3PLANE_444_UNORM",
&Self::R10X6_UNORM_PACK16 => "R10X6_UNORM_PACK16",
&Self::R10X6G10X6_UNORM_2PACK16 => "R10X6G10X6_UNORM_2PACK16",
&Self::R10X6G10X6B10X6A10X6_UNORM_4PACK16 => "R10X6G10X6B10X6A10X6_UNORM_4PACK16",
&Self::G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 => {
"G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"
}
&Self::B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 => {
"B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"
}
&Self::G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 => {
"G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"
}
&Self::G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 => {
"G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"
}
&Self::G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 => {
"G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"
}
&Self::G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 => {
"G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"
}
&Self::G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 => {
"G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"
}
&Self::R12X4_UNORM_PACK16 => "R12X4_UNORM_PACK16",
&Self::R12X4G12X4_UNORM_2PACK16 => "R12X4G12X4_UNORM_2PACK16",
&Self::R12X4G12X4B12X4A12X4_UNORM_4PACK16 => "R12X4G12X4B12X4A12X4_UNORM_4PACK16",
&Self::G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 => {
"G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"
}
&Self::B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 => {
"B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"
}
&Self::G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 => {
"G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"
}
&Self::G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 => {
"G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"
}
&Self::G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 => {
"G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"
}
&Self::G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 => {
"G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"
}
&Self::G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 => {
"G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"
}
&Self::G16B16G16R16_422_UNORM => "G16B16G16R16_422_UNORM",
&Self::B16G16R16G16_422_UNORM => "B16G16R16G16_422_UNORM",
&Self::G16_B16_R16_3PLANE_420_UNORM => "G16_B16_R16_3PLANE_420_UNORM",
&Self::G16_B16R16_2PLANE_420_UNORM => "G16_B16R16_2PLANE_420_UNORM",
&Self::G16_B16_R16_3PLANE_422_UNORM => "G16_B16_R16_3PLANE_422_UNORM",
&Self::G16_B16R16_2PLANE_422_UNORM => "G16_B16R16_2PLANE_422_UNORM",
&Self::G16_B16_R16_3PLANE_444_UNORM => "G16_B16_R16_3PLANE_444_UNORM",
&Self::ASTC_4X4_SFLOAT_BLOCK_EXT => "ASTC_4X4_SFLOAT_BLOCK_EXT",
&Self::ASTC_5X4_SFLOAT_BLOCK_EXT => "ASTC_5X4_SFLOAT_BLOCK_EXT",
&Self::ASTC_5X5_SFLOAT_BLOCK_EXT => "ASTC_5X5_SFLOAT_BLOCK_EXT",
&Self::ASTC_6X5_SFLOAT_BLOCK_EXT => "ASTC_6X5_SFLOAT_BLOCK_EXT",
&Self::ASTC_6X6_SFLOAT_BLOCK_EXT => "ASTC_6X6_SFLOAT_BLOCK_EXT",
&Self::ASTC_8X5_SFLOAT_BLOCK_EXT => "ASTC_8X5_SFLOAT_BLOCK_EXT",
&Self::ASTC_8X6_SFLOAT_BLOCK_EXT => "ASTC_8X6_SFLOAT_BLOCK_EXT",
&Self::ASTC_8X8_SFLOAT_BLOCK_EXT => "ASTC_8X8_SFLOAT_BLOCK_EXT",
&Self::ASTC_10X5_SFLOAT_BLOCK_EXT => "ASTC_10X5_SFLOAT_BLOCK_EXT",
&Self::ASTC_10X6_SFLOAT_BLOCK_EXT => "ASTC_10X6_SFLOAT_BLOCK_EXT",
&Self::ASTC_10X8_SFLOAT_BLOCK_EXT => "ASTC_10X8_SFLOAT_BLOCK_EXT",
&Self::ASTC_10X10_SFLOAT_BLOCK_EXT => "ASTC_10X10_SFLOAT_BLOCK_EXT",
&Self::ASTC_12X10_SFLOAT_BLOCK_EXT => "ASTC_12X10_SFLOAT_BLOCK_EXT",
&Self::ASTC_12X12_SFLOAT_BLOCK_EXT => "ASTC_12X12_SFLOAT_BLOCK_EXT",
&Self::PVRTC1_2BPP_UNORM_BLOCK_IMG => "PVRTC1_2BPP_UNORM_BLOCK_IMG",
&Self::PVRTC1_4BPP_UNORM_BLOCK_IMG => "PVRTC1_4BPP_UNORM_BLOCK_IMG",
&Self::PVRTC2_2BPP_UNORM_BLOCK_IMG => "PVRTC2_2BPP_UNORM_BLOCK_IMG",
&Self::PVRTC2_4BPP_UNORM_BLOCK_IMG => "PVRTC2_4BPP_UNORM_BLOCK_IMG",
&Self::PVRTC1_2BPP_SRGB_BLOCK_IMG => "PVRTC1_2BPP_SRGB_BLOCK_IMG",
&Self::PVRTC1_4BPP_SRGB_BLOCK_IMG => "PVRTC1_4BPP_SRGB_BLOCK_IMG",
&Self::PVRTC2_2BPP_SRGB_BLOCK_IMG => "PVRTC2_2BPP_SRGB_BLOCK_IMG",
&Self::PVRTC2_4BPP_SRGB_BLOCK_IMG => "PVRTC2_4BPP_SRGB_BLOCK_IMG",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct FormatProperties {
pub linear_tiling_features: crate::vk1_0::FormatFeatureFlags,
pub optimal_tiling_features: crate::vk1_0::FormatFeatureFlags,
pub buffer_features: crate::vk1_0::FormatFeatureFlags,
}
impl FormatProperties {
#[inline]
pub fn builder<'a>(self) -> FormatPropertiesBuilder<'a> {
FormatPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for FormatProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("FormatProperties")
.field("linear_tiling_features", &self.linear_tiling_features)
.field("optimal_tiling_features", &self.optimal_tiling_features)
.field("buffer_features", &self.buffer_features)
.finish()
}
}
impl Default for FormatProperties {
fn default() -> FormatProperties {
FormatProperties {
linear_tiling_features: Default::default(),
optimal_tiling_features: Default::default(),
buffer_features: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatProperties.html) · Builder of [`FormatProperties`](struct.FormatProperties.html)"]
#[repr(transparent)]
pub struct FormatPropertiesBuilder<'a>(FormatProperties, std::marker::PhantomData<&'a ()>);
impl<'a> FormatPropertiesBuilder<'a> {
#[inline]
pub fn new() -> FormatPropertiesBuilder<'a> {
FormatPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn linear_tiling_features(
mut self,
linear_tiling_features: crate::vk1_0::FormatFeatureFlags,
) -> Self {
self.0.linear_tiling_features = linear_tiling_features;
self
}
#[allow(unused_mut)]
#[inline]
pub fn optimal_tiling_features(
mut self,
optimal_tiling_features: crate::vk1_0::FormatFeatureFlags,
) -> Self {
self.0.optimal_tiling_features = optimal_tiling_features;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_features(mut self, buffer_features: crate::vk1_0::FormatFeatureFlags) -> Self {
self.0.buffer_features = buffer_features;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> FormatProperties {
self.0
}
}
impl<'a> std::fmt::Debug for FormatPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for FormatPropertiesBuilder<'a> {
type Target = FormatProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for FormatPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatFeatureFlagBits.html) · Flag Bits of [`FormatFeatureFlags`](struct.FormatFeatureFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct FormatFeatureFlagBits(pub u32);
impl FormatFeatureFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> FormatFeatureFlags {
FormatFeatureFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl FormatFeatureFlagBits {
pub const SAMPLED_IMAGE: Self = Self(0x00000001);
pub const STORAGE_IMAGE: Self = Self(0x00000002);
pub const STORAGE_IMAGE_ATOMIC: Self = Self(0x00000004);
pub const UNIFORM_TEXEL_BUFFER: Self = Self(0x00000008);
pub const STORAGE_TEXEL_BUFFER: Self = Self(0x00000010);
pub const STORAGE_TEXEL_BUFFER_ATOMIC: Self = Self(0x00000020);
pub const VERTEX_BUFFER: Self = Self(0x00000040);
pub const COLOR_ATTACHMENT: Self = Self(0x00000080);
pub const COLOR_ATTACHMENT_BLEND: Self = Self(0x00000100);
pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0x00000200);
pub const BLIT_SRC: Self = Self(0x00000400);
pub const BLIT_DST: Self = Self(0x00000800);
pub const SAMPLED_IMAGE_FILTER_LINEAR: Self = Self(0x00001000);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl FormatFeatureFlagBits {
pub const TRANSFER_SRC: Self = Self(0x00004000);
pub const TRANSFER_DST: Self = Self(0x00008000);
pub const MIDPOINT_CHROMA_SAMPLES: Self = Self(0x00020000);
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER: Self = Self(0x00040000);
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER: Self =
Self(0x00080000);
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT: Self =
Self(0x00100000);
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE: Self =
Self(0x00200000);
pub const DISJOINT: Self = Self(0x00400000);
pub const COSITED_CHROMA_SAMPLES: Self = Self(0x00800000);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl FormatFeatureFlagBits {
pub const SAMPLED_IMAGE_FILTER_MINMAX: Self = Self(0x00010000);
}
#[doc = "[Part of `extensions::ext_filter_cubic`](../extensions/ext_filter_cubic/index.html)"]
impl FormatFeatureFlagBits {
pub const SAMPLED_IMAGE_FILTER_CUBIC_EXT: Self = Self::SAMPLED_IMAGE_FILTER_CUBIC_IMG;
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl FormatFeatureFlagBits {
pub const FRAGMENT_DENSITY_MAP_EXT: Self = Self(0x01000000);
}
#[doc = "[Part of `extensions::ext_sampler_filter_minmax`](../extensions/ext_sampler_filter_minmax/index.html)"]
impl FormatFeatureFlagBits {
pub const SAMPLED_IMAGE_FILTER_MINMAX_EXT: Self = Self::SAMPLED_IMAGE_FILTER_MINMAX;
}
#[doc = "[Part of `extensions::img_filter_cubic`](../extensions/img_filter_cubic/index.html)"]
impl FormatFeatureFlagBits {
pub const SAMPLED_IMAGE_FILTER_CUBIC_IMG: Self = Self(0x00002000);
}
#[doc = "[Part of `extensions::khr_maintenance1`](../extensions/khr_maintenance1/index.html)"]
impl FormatFeatureFlagBits {
pub const TRANSFER_SRC_KHR: Self = Self::TRANSFER_SRC;
pub const TRANSFER_DST_KHR: Self = Self::TRANSFER_DST;
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl FormatFeatureFlagBits {
pub const ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR: Self = Self(0x20000000);
}
#[doc = "[Part of `extensions::khr_sampler_ycbcr_conversion`](../extensions/khr_sampler_ycbcr_conversion/index.html)"]
impl FormatFeatureFlagBits {
pub const MIDPOINT_CHROMA_SAMPLES_KHR: Self = Self::MIDPOINT_CHROMA_SAMPLES;
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_KHR: Self =
Self::SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER;
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_KHR: Self =
Self::SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER;
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_KHR: Self =
Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT;
pub const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_KHR: Self =
Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE;
pub const DISJOINT_KHR: Self = Self::DISJOINT;
pub const COSITED_CHROMA_SAMPLES_KHR: Self = Self::COSITED_CHROMA_SAMPLES;
}
impl std::fmt::Debug for FormatFeatureFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SAMPLED_IMAGE => "SAMPLED_IMAGE",
&Self::STORAGE_IMAGE => "STORAGE_IMAGE",
&Self::STORAGE_IMAGE_ATOMIC => "STORAGE_IMAGE_ATOMIC",
&Self::UNIFORM_TEXEL_BUFFER => "UNIFORM_TEXEL_BUFFER",
&Self::STORAGE_TEXEL_BUFFER => "STORAGE_TEXEL_BUFFER",
&Self::STORAGE_TEXEL_BUFFER_ATOMIC => "STORAGE_TEXEL_BUFFER_ATOMIC",
&Self::VERTEX_BUFFER => "VERTEX_BUFFER",
&Self::COLOR_ATTACHMENT => "COLOR_ATTACHMENT",
&Self::COLOR_ATTACHMENT_BLEND => "COLOR_ATTACHMENT_BLEND",
&Self::DEPTH_STENCIL_ATTACHMENT => "DEPTH_STENCIL_ATTACHMENT",
&Self::BLIT_SRC => "BLIT_SRC",
&Self::BLIT_DST => "BLIT_DST",
&Self::SAMPLED_IMAGE_FILTER_LINEAR => "SAMPLED_IMAGE_FILTER_LINEAR",
&Self::TRANSFER_SRC => "TRANSFER_SRC",
&Self::TRANSFER_DST => "TRANSFER_DST",
&Self::MIDPOINT_CHROMA_SAMPLES => "MIDPOINT_CHROMA_SAMPLES",
&Self::SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER => {
"SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER"
}
&Self::SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER => {
"SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER"
}
&Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT => {
"SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT"
}
&Self::SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE => {
"SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE"
}
&Self::DISJOINT => "DISJOINT",
&Self::COSITED_CHROMA_SAMPLES => "COSITED_CHROMA_SAMPLES",
&Self::SAMPLED_IMAGE_FILTER_MINMAX => "SAMPLED_IMAGE_FILTER_MINMAX",
&Self::FRAGMENT_DENSITY_MAP_EXT => "FRAGMENT_DENSITY_MAP_EXT",
&Self::SAMPLED_IMAGE_FILTER_CUBIC_IMG => "SAMPLED_IMAGE_FILTER_CUBIC_IMG",
&Self::ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR => {
"ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR"
}
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFormatFeatureFlags.html) · Flags of [`FormatFeatureFlagBits`](struct.FormatFeatureFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct FormatFeatureFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const SAMPLED_IMAGE = FormatFeatureFlagBits :: SAMPLED_IMAGE . 0 ; const STORAGE_IMAGE = FormatFeatureFlagBits :: STORAGE_IMAGE . 0 ; const STORAGE_IMAGE_ATOMIC = FormatFeatureFlagBits :: STORAGE_IMAGE_ATOMIC . 0 ; const UNIFORM_TEXEL_BUFFER = FormatFeatureFlagBits :: UNIFORM_TEXEL_BUFFER . 0 ; const STORAGE_TEXEL_BUFFER = FormatFeatureFlagBits :: STORAGE_TEXEL_BUFFER . 0 ; const STORAGE_TEXEL_BUFFER_ATOMIC = FormatFeatureFlagBits :: STORAGE_TEXEL_BUFFER_ATOMIC . 0 ; const VERTEX_BUFFER = FormatFeatureFlagBits :: VERTEX_BUFFER . 0 ; const COLOR_ATTACHMENT = FormatFeatureFlagBits :: COLOR_ATTACHMENT . 0 ; const COLOR_ATTACHMENT_BLEND = FormatFeatureFlagBits :: COLOR_ATTACHMENT_BLEND . 0 ; const DEPTH_STENCIL_ATTACHMENT = FormatFeatureFlagBits :: DEPTH_STENCIL_ATTACHMENT . 0 ; const BLIT_SRC = FormatFeatureFlagBits :: BLIT_SRC . 0 ; const BLIT_DST = FormatFeatureFlagBits :: BLIT_DST . 0 ; const SAMPLED_IMAGE_FILTER_LINEAR = FormatFeatureFlagBits :: SAMPLED_IMAGE_FILTER_LINEAR . 0 ; const TRANSFER_SRC = FormatFeatureFlagBits :: TRANSFER_SRC . 0 ; const TRANSFER_DST = FormatFeatureFlagBits :: TRANSFER_DST . 0 ; const MIDPOINT_CHROMA_SAMPLES = FormatFeatureFlagBits :: MIDPOINT_CHROMA_SAMPLES . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE . 0 ; const DISJOINT = FormatFeatureFlagBits :: DISJOINT . 0 ; const COSITED_CHROMA_SAMPLES = FormatFeatureFlagBits :: COSITED_CHROMA_SAMPLES . 0 ; const SAMPLED_IMAGE_FILTER_MINMAX = FormatFeatureFlagBits :: SAMPLED_IMAGE_FILTER_MINMAX . 0 ; const SAMPLED_IMAGE_FILTER_CUBIC_EXT = FormatFeatureFlagBits :: SAMPLED_IMAGE_FILTER_CUBIC_EXT . 0 ; const FRAGMENT_DENSITY_MAP_EXT = FormatFeatureFlagBits :: FRAGMENT_DENSITY_MAP_EXT . 0 ; const SAMPLED_IMAGE_FILTER_MINMAX_EXT = FormatFeatureFlagBits :: SAMPLED_IMAGE_FILTER_MINMAX_EXT . 0 ; const SAMPLED_IMAGE_FILTER_CUBIC_IMG = FormatFeatureFlagBits :: SAMPLED_IMAGE_FILTER_CUBIC_IMG . 0 ; const TRANSFER_SRC_KHR = FormatFeatureFlagBits :: TRANSFER_SRC_KHR . 0 ; const TRANSFER_DST_KHR = FormatFeatureFlagBits :: TRANSFER_DST_KHR . 0 ; const ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR = FormatFeatureFlagBits :: ACCELERATION_STRUCTURE_VERTEX_BUFFER_KHR . 0 ; const MIDPOINT_CHROMA_SAMPLES_KHR = FormatFeatureFlagBits :: MIDPOINT_CHROMA_SAMPLES_KHR . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_KHR = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_KHR . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_KHR = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_KHR . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_KHR = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_KHR . 0 ; const SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_KHR = FormatFeatureFlagBits :: SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_KHR . 0 ; const DISJOINT_KHR = FormatFeatureFlagBits :: DISJOINT_KHR . 0 ; const COSITED_CHROMA_SAMPLES_KHR = FormatFeatureFlagBits :: COSITED_CHROMA_SAMPLES_KHR . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageType {
pub const _1D: Self = Self(0);
pub const _2D: Self = Self(1);
pub const _3D: Self = Self(2);
}
impl std::fmt::Debug for ImageType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::_1D => "1D",
&Self::_2D => "2D",
&Self::_3D => "3D",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageTiling.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageTiling(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageTiling {
pub const OPTIMAL: Self = Self(0);
pub const LINEAR: Self = Self(1);
}
#[doc = "[Part of `extensions::ext_image_drm_format_modifier`](../extensions/ext_image_drm_format_modifier/index.html)"]
impl ImageTiling {
pub const DRM_FORMAT_MODIFIER_EXT: Self = Self(1000158000);
}
impl std::fmt::Debug for ImageTiling {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::OPTIMAL => "OPTIMAL",
&Self::LINEAR => "LINEAR",
&Self::DRM_FORMAT_MODIFIER_EXT => "DRM_FORMAT_MODIFIER_EXT",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageUsageFlagBits.html) · Flag Bits of [`ImageUsageFlags`](struct.ImageUsageFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageUsageFlagBits(pub u32);
impl ImageUsageFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ImageUsageFlags {
ImageUsageFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageUsageFlagBits {
pub const TRANSFER_SRC: Self = Self(0x00000001);
pub const TRANSFER_DST: Self = Self(0x00000002);
pub const SAMPLED: Self = Self(0x00000004);
pub const STORAGE: Self = Self(0x00000008);
pub const COLOR_ATTACHMENT: Self = Self(0x00000010);
pub const DEPTH_STENCIL_ATTACHMENT: Self = Self(0x00000020);
pub const TRANSIENT_ATTACHMENT: Self = Self(0x00000040);
pub const INPUT_ATTACHMENT: Self = Self(0x00000080);
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl ImageUsageFlagBits {
pub const FRAGMENT_DENSITY_MAP_EXT: Self = Self(0x00000200);
}
#[doc = "[Part of `extensions::nv_shading_rate_image`](../extensions/nv_shading_rate_image/index.html)"]
impl ImageUsageFlagBits {
pub const SHADING_RATE_IMAGE_NV: Self = Self(0x00000100);
}
impl std::fmt::Debug for ImageUsageFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::TRANSFER_SRC => "TRANSFER_SRC",
&Self::TRANSFER_DST => "TRANSFER_DST",
&Self::SAMPLED => "SAMPLED",
&Self::STORAGE => "STORAGE",
&Self::COLOR_ATTACHMENT => "COLOR_ATTACHMENT",
&Self::DEPTH_STENCIL_ATTACHMENT => "DEPTH_STENCIL_ATTACHMENT",
&Self::TRANSIENT_ATTACHMENT => "TRANSIENT_ATTACHMENT",
&Self::INPUT_ATTACHMENT => "INPUT_ATTACHMENT",
&Self::FRAGMENT_DENSITY_MAP_EXT => "FRAGMENT_DENSITY_MAP_EXT",
&Self::SHADING_RATE_IMAGE_NV => "SHADING_RATE_IMAGE_NV",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageUsageFlags.html) · Flags of [`ImageUsageFlagBits`](struct.ImageUsageFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ImageUsageFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const TRANSFER_SRC = ImageUsageFlagBits :: TRANSFER_SRC . 0 ; const TRANSFER_DST = ImageUsageFlagBits :: TRANSFER_DST . 0 ; const SAMPLED = ImageUsageFlagBits :: SAMPLED . 0 ; const STORAGE = ImageUsageFlagBits :: STORAGE . 0 ; const COLOR_ATTACHMENT = ImageUsageFlagBits :: COLOR_ATTACHMENT . 0 ; const DEPTH_STENCIL_ATTACHMENT = ImageUsageFlagBits :: DEPTH_STENCIL_ATTACHMENT . 0 ; const TRANSIENT_ATTACHMENT = ImageUsageFlagBits :: TRANSIENT_ATTACHMENT . 0 ; const INPUT_ATTACHMENT = ImageUsageFlagBits :: INPUT_ATTACHMENT . 0 ; const FRAGMENT_DENSITY_MAP_EXT = ImageUsageFlagBits :: FRAGMENT_DENSITY_MAP_EXT . 0 ; const SHADING_RATE_IMAGE_NV = ImageUsageFlagBits :: SHADING_RATE_IMAGE_NV . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCreateFlagBits.html) · Flag Bits of [`ImageCreateFlags`](struct.ImageCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageCreateFlagBits(pub u32);
impl ImageCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ImageCreateFlags {
ImageCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageCreateFlagBits {
pub const SPARSE_BINDING: Self = Self(0x00000001);
pub const SPARSE_RESIDENCY: Self = Self(0x00000002);
pub const SPARSE_ALIASED: Self = Self(0x00000004);
pub const MUTABLE_FORMAT: Self = Self(0x00000008);
pub const CUBE_COMPATIBLE: Self = Self(0x00000010);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl ImageCreateFlagBits {
pub const ALIAS: Self = Self(0x00000400);
pub const SPLIT_INSTANCE_BIND_REGIONS: Self = Self(0x00000040);
pub const _2D_ARRAY_COMPATIBLE: Self = Self(0x00000020);
pub const BLOCK_TEXEL_VIEW_COMPATIBLE: Self = Self(0x00000080);
pub const EXTENDED_USAGE: Self = Self(0x00000100);
pub const PROTECTED: Self = Self(0x00000800);
pub const DISJOINT: Self = Self(0x00000200);
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl ImageCreateFlagBits {
pub const SUBSAMPLED_EXT: Self = Self(0x00004000);
}
#[doc = "[Part of `extensions::ext_sample_locations`](../extensions/ext_sample_locations/index.html)"]
impl ImageCreateFlagBits {
pub const SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT: Self = Self(0x00001000);
}
#[doc = "[Part of `extensions::khr_bind_memory2`](../extensions/khr_bind_memory2/index.html)"]
impl ImageCreateFlagBits {
pub const ALIAS_KHR: Self = Self::ALIAS;
}
#[doc = "[Part of `extensions::khr_device_group`](../extensions/khr_device_group/index.html)"]
impl ImageCreateFlagBits {
pub const SPLIT_INSTANCE_BIND_REGIONS_KHR: Self = Self::SPLIT_INSTANCE_BIND_REGIONS;
}
#[doc = "[Part of `extensions::khr_maintenance1`](../extensions/khr_maintenance1/index.html)"]
impl ImageCreateFlagBits {
pub const _2D_ARRAY_COMPATIBLE_KHR: Self = Self::_2D_ARRAY_COMPATIBLE;
}
#[doc = "[Part of `extensions::khr_maintenance2`](../extensions/khr_maintenance2/index.html)"]
impl ImageCreateFlagBits {
pub const BLOCK_TEXEL_VIEW_COMPATIBLE_KHR: Self = Self::BLOCK_TEXEL_VIEW_COMPATIBLE;
pub const EXTENDED_USAGE_KHR: Self = Self::EXTENDED_USAGE;
}
#[doc = "[Part of `extensions::khr_sampler_ycbcr_conversion`](../extensions/khr_sampler_ycbcr_conversion/index.html)"]
impl ImageCreateFlagBits {
pub const DISJOINT_KHR: Self = Self::DISJOINT;
}
#[doc = "[Part of `extensions::nv_corner_sampled_image`](../extensions/nv_corner_sampled_image/index.html)"]
impl ImageCreateFlagBits {
pub const CORNER_SAMPLED_NV: Self = Self(0x00002000);
}
impl std::fmt::Debug for ImageCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SPARSE_BINDING => "SPARSE_BINDING",
&Self::SPARSE_RESIDENCY => "SPARSE_RESIDENCY",
&Self::SPARSE_ALIASED => "SPARSE_ALIASED",
&Self::MUTABLE_FORMAT => "MUTABLE_FORMAT",
&Self::CUBE_COMPATIBLE => "CUBE_COMPATIBLE",
&Self::ALIAS => "ALIAS",
&Self::SPLIT_INSTANCE_BIND_REGIONS => "SPLIT_INSTANCE_BIND_REGIONS",
&Self::_2D_ARRAY_COMPATIBLE => "_2D_ARRAY_COMPATIBLE",
&Self::BLOCK_TEXEL_VIEW_COMPATIBLE => "BLOCK_TEXEL_VIEW_COMPATIBLE",
&Self::EXTENDED_USAGE => "EXTENDED_USAGE",
&Self::PROTECTED => "PROTECTED",
&Self::DISJOINT => "DISJOINT",
&Self::SUBSAMPLED_EXT => "SUBSAMPLED_EXT",
&Self::SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT => "SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT",
&Self::CORNER_SAMPLED_NV => "CORNER_SAMPLED_NV",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCreateFlags.html) · Flags of [`ImageCreateFlagBits`](struct.ImageCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ImageCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const SPARSE_BINDING = ImageCreateFlagBits :: SPARSE_BINDING . 0 ; const SPARSE_RESIDENCY = ImageCreateFlagBits :: SPARSE_RESIDENCY . 0 ; const SPARSE_ALIASED = ImageCreateFlagBits :: SPARSE_ALIASED . 0 ; const MUTABLE_FORMAT = ImageCreateFlagBits :: MUTABLE_FORMAT . 0 ; const CUBE_COMPATIBLE = ImageCreateFlagBits :: CUBE_COMPATIBLE . 0 ; const ALIAS = ImageCreateFlagBits :: ALIAS . 0 ; const SPLIT_INSTANCE_BIND_REGIONS = ImageCreateFlagBits :: SPLIT_INSTANCE_BIND_REGIONS . 0 ; const _2D_ARRAY_COMPATIBLE = ImageCreateFlagBits :: _2D_ARRAY_COMPATIBLE . 0 ; const BLOCK_TEXEL_VIEW_COMPATIBLE = ImageCreateFlagBits :: BLOCK_TEXEL_VIEW_COMPATIBLE . 0 ; const EXTENDED_USAGE = ImageCreateFlagBits :: EXTENDED_USAGE . 0 ; const PROTECTED = ImageCreateFlagBits :: PROTECTED . 0 ; const DISJOINT = ImageCreateFlagBits :: DISJOINT . 0 ; const SUBSAMPLED_EXT = ImageCreateFlagBits :: SUBSAMPLED_EXT . 0 ; const SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT = ImageCreateFlagBits :: SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT . 0 ; const ALIAS_KHR = ImageCreateFlagBits :: ALIAS_KHR . 0 ; const SPLIT_INSTANCE_BIND_REGIONS_KHR = ImageCreateFlagBits :: SPLIT_INSTANCE_BIND_REGIONS_KHR . 0 ; const _2D_ARRAY_COMPATIBLE_KHR = ImageCreateFlagBits :: _2D_ARRAY_COMPATIBLE_KHR . 0 ; const BLOCK_TEXEL_VIEW_COMPATIBLE_KHR = ImageCreateFlagBits :: BLOCK_TEXEL_VIEW_COMPATIBLE_KHR . 0 ; const EXTENDED_USAGE_KHR = ImageCreateFlagBits :: EXTENDED_USAGE_KHR . 0 ; const DISJOINT_KHR = ImageCreateFlagBits :: DISJOINT_KHR . 0 ; const CORNER_SAMPLED_NV = ImageCreateFlagBits :: CORNER_SAMPLED_NV . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageFormatProperties {
pub max_extent: crate::vk1_0::Extent3D,
pub max_mip_levels: u32,
pub max_array_layers: u32,
pub sample_counts: crate::vk1_0::SampleCountFlags,
pub max_resource_size: crate::vk1_0::DeviceSize,
}
impl ImageFormatProperties {
#[inline]
pub fn builder<'a>(self) -> ImageFormatPropertiesBuilder<'a> {
ImageFormatPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageFormatProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageFormatProperties")
.field("max_extent", &self.max_extent)
.field("max_mip_levels", &self.max_mip_levels)
.field("max_array_layers", &self.max_array_layers)
.field("sample_counts", &self.sample_counts)
.field("max_resource_size", &self.max_resource_size)
.finish()
}
}
impl Default for ImageFormatProperties {
fn default() -> ImageFormatProperties {
ImageFormatProperties {
max_extent: Default::default(),
max_mip_levels: Default::default(),
max_array_layers: Default::default(),
sample_counts: Default::default(),
max_resource_size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageFormatProperties.html) · Builder of [`ImageFormatProperties`](struct.ImageFormatProperties.html)"]
#[repr(transparent)]
pub struct ImageFormatPropertiesBuilder<'a>(
ImageFormatProperties,
std::marker::PhantomData<&'a ()>,
);
impl<'a> ImageFormatPropertiesBuilder<'a> {
#[inline]
pub fn new() -> ImageFormatPropertiesBuilder<'a> {
ImageFormatPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn max_extent(mut self, max_extent: crate::vk1_0::Extent3D) -> Self {
self.0.max_extent = max_extent;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_mip_levels(mut self, max_mip_levels: u32) -> Self {
self.0.max_mip_levels = max_mip_levels;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_array_layers(mut self, max_array_layers: u32) -> Self {
self.0.max_array_layers = max_array_layers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sample_counts(mut self, sample_counts: crate::vk1_0::SampleCountFlags) -> Self {
self.0.sample_counts = sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_resource_size(mut self, max_resource_size: crate::vk1_0::DeviceSize) -> Self {
self.0.max_resource_size = max_resource_size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageFormatProperties {
self.0
}
}
impl<'a> std::fmt::Debug for ImageFormatPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageFormatPropertiesBuilder<'a> {
type Target = ImageFormatProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageFormatPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent3D.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Extent3D {
pub width: u32,
pub height: u32,
pub depth: u32,
}
impl Extent3D {
#[inline]
pub fn builder<'a>(self) -> Extent3DBuilder<'a> {
Extent3DBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for Extent3D {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("Extent3D")
.field("width", &self.width)
.field("height", &self.height)
.field("depth", &self.depth)
.finish()
}
}
impl Default for Extent3D {
fn default() -> Extent3D {
Extent3D {
width: Default::default(),
height: Default::default(),
depth: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent3D.html) · Builder of [`Extent3D`](struct.Extent3D.html)"]
#[repr(transparent)]
pub struct Extent3DBuilder<'a>(Extent3D, std::marker::PhantomData<&'a ()>);
impl<'a> Extent3DBuilder<'a> {
#[inline]
pub fn new() -> Extent3DBuilder<'a> {
Extent3DBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn width(mut self, width: u32) -> Self {
self.0.width = width;
self
}
#[allow(unused_mut)]
#[inline]
pub fn height(mut self, height: u32) -> Self {
self.0.height = height;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth(mut self, depth: u32) -> Self {
self.0.depth = depth;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> Extent3D {
self.0
}
}
impl<'a> std::fmt::Debug for Extent3DBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for Extent3DBuilder<'a> {
type Target = Extent3D;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for Extent3DBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleCountFlagBits.html) · Flag Bits of [`SampleCountFlags`](struct.SampleCountFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SampleCountFlagBits(pub u32);
impl SampleCountFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> SampleCountFlags {
SampleCountFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SampleCountFlagBits {
pub const _1: Self = Self(0x00000001);
pub const _2: Self = Self(0x00000002);
pub const _4: Self = Self(0x00000004);
pub const _8: Self = Self(0x00000008);
pub const _16: Self = Self(0x00000010);
pub const _32: Self = Self(0x00000020);
pub const _64: Self = Self(0x00000040);
}
impl std::fmt::Debug for SampleCountFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::_1 => "_1",
&Self::_2 => "_2",
&Self::_4 => "_4",
&Self::_8 => "_8",
&Self::_16 => "_16",
&Self::_32 => "_32",
&Self::_64 => "_64",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleCountFlags.html) · Flags of [`SampleCountFlagBits`](struct.SampleCountFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct SampleCountFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const _1 = SampleCountFlagBits :: _1 . 0 ; const _2 = SampleCountFlagBits :: _2 . 0 ; const _4 = SampleCountFlagBits :: _4 . 0 ; const _8 = SampleCountFlagBits :: _8 . 0 ; const _16 = SampleCountFlagBits :: _16 . 0 ; const _32 = SampleCountFlagBits :: _32 . 0 ; const _64 = SampleCountFlagBits :: _64 . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceSize.html) · Base Type"]
pub type DeviceSize = u64;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceProperties {
pub api_version: u32,
pub driver_version: u32,
pub vendor_id: u32,
pub device_id: u32,
pub device_type: crate::vk1_0::PhysicalDeviceType,
pub device_name: [std::os::raw::c_char; crate::vk1_0::MAX_PHYSICAL_DEVICE_NAME_SIZE as usize],
pub pipeline_cache_uuid: [u8; crate::vk1_0::UUID_SIZE as usize],
pub limits: crate::vk1_0::PhysicalDeviceLimits,
pub sparse_properties: crate::vk1_0::PhysicalDeviceSparseProperties,
}
impl PhysicalDeviceProperties {
#[inline]
pub fn builder<'a>(self) -> PhysicalDevicePropertiesBuilder<'a> {
PhysicalDevicePropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PhysicalDeviceProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PhysicalDeviceProperties")
.field("api_version", &self.api_version)
.field("driver_version", &self.driver_version)
.field("vendor_id", &self.vendor_id)
.field("device_id", &self.device_id)
.field("device_type", &self.device_type)
.field("device_name", &unsafe {
std::ffi::CStr::from_ptr(self.device_name.as_ptr() as _)
})
.field("pipeline_cache_uuid", &self.pipeline_cache_uuid)
.field("limits", &self.limits)
.field("sparse_properties", &self.sparse_properties)
.finish()
}
}
impl Default for PhysicalDeviceProperties {
fn default() -> PhysicalDeviceProperties {
PhysicalDeviceProperties {
api_version: Default::default(),
driver_version: Default::default(),
vendor_id: Default::default(),
device_id: Default::default(),
device_type: Default::default(),
device_name: unsafe { std::mem::zeroed() },
pipeline_cache_uuid: Default::default(),
limits: Default::default(),
sparse_properties: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceProperties.html) · Builder of [`PhysicalDeviceProperties`](struct.PhysicalDeviceProperties.html)"]
#[repr(transparent)]
pub struct PhysicalDevicePropertiesBuilder<'a>(
PhysicalDeviceProperties,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDevicePropertiesBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDevicePropertiesBuilder<'a> {
PhysicalDevicePropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn api_version(mut self, api_version: u32) -> Self {
self.0.api_version = api_version;
self
}
#[allow(unused_mut)]
#[inline]
pub fn driver_version(mut self, driver_version: u32) -> Self {
self.0.driver_version = driver_version;
self
}
#[allow(unused_mut)]
#[inline]
pub fn vendor_id(mut self, vendor_id: u32) -> Self {
self.0.vendor_id = vendor_id;
self
}
#[allow(unused_mut)]
#[inline]
pub fn device_id(mut self, device_id: u32) -> Self {
self.0.device_id = device_id;
self
}
#[allow(unused_mut)]
#[inline]
pub fn device_type(mut self, device_type: crate::vk1_0::PhysicalDeviceType) -> Self {
self.0.device_type = device_type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn device_name(
mut self,
device_name: [std::os::raw::c_char; crate::vk1_0::MAX_PHYSICAL_DEVICE_NAME_SIZE as usize],
) -> Self {
self.0.device_name = device_name;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pipeline_cache_uuid(
mut self,
pipeline_cache_uuid: [u8; crate::vk1_0::UUID_SIZE as usize],
) -> Self {
self.0.pipeline_cache_uuid = pipeline_cache_uuid;
self
}
#[allow(unused_mut)]
#[inline]
pub fn limits(mut self, limits: crate::vk1_0::PhysicalDeviceLimits) -> Self {
self.0.limits = limits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_properties(
mut self,
sparse_properties: crate::vk1_0::PhysicalDeviceSparseProperties,
) -> Self {
self.0.sparse_properties = sparse_properties;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PhysicalDeviceProperties {
self.0
}
}
impl<'a> std::fmt::Debug for PhysicalDevicePropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PhysicalDevicePropertiesBuilder<'a> {
type Target = PhysicalDeviceProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDevicePropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PhysicalDeviceType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PhysicalDeviceType {
pub const OTHER: Self = Self(0);
pub const INTEGRATED_GPU: Self = Self(1);
pub const DISCRETE_GPU: Self = Self(2);
pub const VIRTUAL_GPU: Self = Self(3);
pub const CPU: Self = Self(4);
}
impl std::fmt::Debug for PhysicalDeviceType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::OTHER => "OTHER",
&Self::INTEGRATED_GPU => "INTEGRATED_GPU",
&Self::DISCRETE_GPU => "DISCRETE_GPU",
&Self::VIRTUAL_GPU => "VIRTUAL_GPU",
&Self::CPU => "CPU",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLimits.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceLimits {
pub max_image_dimension1_d: u32,
pub max_image_dimension2_d: u32,
pub max_image_dimension3_d: u32,
pub max_image_dimension_cube: u32,
pub max_image_array_layers: u32,
pub max_texel_buffer_elements: u32,
pub max_uniform_buffer_range: u32,
pub max_storage_buffer_range: u32,
pub max_push_constants_size: u32,
pub max_memory_allocation_count: u32,
pub max_sampler_allocation_count: u32,
pub buffer_image_granularity: crate::vk1_0::DeviceSize,
pub sparse_address_space_size: crate::vk1_0::DeviceSize,
pub max_bound_descriptor_sets: u32,
pub max_per_stage_descriptor_samplers: u32,
pub max_per_stage_descriptor_uniform_buffers: u32,
pub max_per_stage_descriptor_storage_buffers: u32,
pub max_per_stage_descriptor_sampled_images: u32,
pub max_per_stage_descriptor_storage_images: u32,
pub max_per_stage_descriptor_input_attachments: u32,
pub max_per_stage_resources: u32,
pub max_descriptor_set_samplers: u32,
pub max_descriptor_set_uniform_buffers: u32,
pub max_descriptor_set_uniform_buffers_dynamic: u32,
pub max_descriptor_set_storage_buffers: u32,
pub max_descriptor_set_storage_buffers_dynamic: u32,
pub max_descriptor_set_sampled_images: u32,
pub max_descriptor_set_storage_images: u32,
pub max_descriptor_set_input_attachments: u32,
pub max_vertex_input_attributes: u32,
pub max_vertex_input_bindings: u32,
pub max_vertex_input_attribute_offset: u32,
pub max_vertex_input_binding_stride: u32,
pub max_vertex_output_components: u32,
pub max_tessellation_generation_level: u32,
pub max_tessellation_patch_size: u32,
pub max_tessellation_control_per_vertex_input_components: u32,
pub max_tessellation_control_per_vertex_output_components: u32,
pub max_tessellation_control_per_patch_output_components: u32,
pub max_tessellation_control_total_output_components: u32,
pub max_tessellation_evaluation_input_components: u32,
pub max_tessellation_evaluation_output_components: u32,
pub max_geometry_shader_invocations: u32,
pub max_geometry_input_components: u32,
pub max_geometry_output_components: u32,
pub max_geometry_output_vertices: u32,
pub max_geometry_total_output_components: u32,
pub max_fragment_input_components: u32,
pub max_fragment_output_attachments: u32,
pub max_fragment_dual_src_attachments: u32,
pub max_fragment_combined_output_resources: u32,
pub max_compute_shared_memory_size: u32,
pub max_compute_work_group_count: [u32; 3],
pub max_compute_work_group_invocations: u32,
pub max_compute_work_group_size: [u32; 3],
pub sub_pixel_precision_bits: u32,
pub sub_texel_precision_bits: u32,
pub mipmap_precision_bits: u32,
pub max_draw_indexed_index_value: u32,
pub max_draw_indirect_count: u32,
pub max_sampler_lod_bias: f32,
pub max_sampler_anisotropy: f32,
pub max_viewports: u32,
pub max_viewport_dimensions: [u32; 2],
pub viewport_bounds_range: [f32; 2],
pub viewport_sub_pixel_bits: u32,
pub min_memory_map_alignment: usize,
pub min_texel_buffer_offset_alignment: crate::vk1_0::DeviceSize,
pub min_uniform_buffer_offset_alignment: crate::vk1_0::DeviceSize,
pub min_storage_buffer_offset_alignment: crate::vk1_0::DeviceSize,
pub min_texel_offset: i32,
pub max_texel_offset: u32,
pub min_texel_gather_offset: i32,
pub max_texel_gather_offset: u32,
pub min_interpolation_offset: f32,
pub max_interpolation_offset: f32,
pub sub_pixel_interpolation_offset_bits: u32,
pub max_framebuffer_width: u32,
pub max_framebuffer_height: u32,
pub max_framebuffer_layers: u32,
pub framebuffer_color_sample_counts: crate::vk1_0::SampleCountFlags,
pub framebuffer_depth_sample_counts: crate::vk1_0::SampleCountFlags,
pub framebuffer_stencil_sample_counts: crate::vk1_0::SampleCountFlags,
pub framebuffer_no_attachments_sample_counts: crate::vk1_0::SampleCountFlags,
pub max_color_attachments: u32,
pub sampled_image_color_sample_counts: crate::vk1_0::SampleCountFlags,
pub sampled_image_integer_sample_counts: crate::vk1_0::SampleCountFlags,
pub sampled_image_depth_sample_counts: crate::vk1_0::SampleCountFlags,
pub sampled_image_stencil_sample_counts: crate::vk1_0::SampleCountFlags,
pub storage_image_sample_counts: crate::vk1_0::SampleCountFlags,
pub max_sample_mask_words: u32,
pub timestamp_compute_and_graphics: crate::vk1_0::Bool32,
pub timestamp_period: f32,
pub max_clip_distances: u32,
pub max_cull_distances: u32,
pub max_combined_clip_and_cull_distances: u32,
pub discrete_queue_priorities: u32,
pub point_size_range: [f32; 2],
pub line_width_range: [f32; 2],
pub point_size_granularity: f32,
pub line_width_granularity: f32,
pub strict_lines: crate::vk1_0::Bool32,
pub standard_sample_locations: crate::vk1_0::Bool32,
pub optimal_buffer_copy_offset_alignment: crate::vk1_0::DeviceSize,
pub optimal_buffer_copy_row_pitch_alignment: crate::vk1_0::DeviceSize,
pub non_coherent_atom_size: crate::vk1_0::DeviceSize,
}
impl PhysicalDeviceLimits {
#[inline]
pub fn builder<'a>(self) -> PhysicalDeviceLimitsBuilder<'a> {
PhysicalDeviceLimitsBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PhysicalDeviceLimits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PhysicalDeviceLimits")
.field("max_image_dimension1_d", &self.max_image_dimension1_d)
.field("max_image_dimension2_d", &self.max_image_dimension2_d)
.field("max_image_dimension3_d", &self.max_image_dimension3_d)
.field("max_image_dimension_cube", &self.max_image_dimension_cube)
.field("max_image_array_layers", &self.max_image_array_layers)
.field("max_texel_buffer_elements", &self.max_texel_buffer_elements)
.field("max_uniform_buffer_range", &self.max_uniform_buffer_range)
.field("max_storage_buffer_range", &self.max_storage_buffer_range)
.field("max_push_constants_size", &self.max_push_constants_size)
.field(
"max_memory_allocation_count",
&self.max_memory_allocation_count,
)
.field(
"max_sampler_allocation_count",
&self.max_sampler_allocation_count,
)
.field("buffer_image_granularity", &self.buffer_image_granularity)
.field("sparse_address_space_size", &self.sparse_address_space_size)
.field("max_bound_descriptor_sets", &self.max_bound_descriptor_sets)
.field(
"max_per_stage_descriptor_samplers",
&self.max_per_stage_descriptor_samplers,
)
.field(
"max_per_stage_descriptor_uniform_buffers",
&self.max_per_stage_descriptor_uniform_buffers,
)
.field(
"max_per_stage_descriptor_storage_buffers",
&self.max_per_stage_descriptor_storage_buffers,
)
.field(
"max_per_stage_descriptor_sampled_images",
&self.max_per_stage_descriptor_sampled_images,
)
.field(
"max_per_stage_descriptor_storage_images",
&self.max_per_stage_descriptor_storage_images,
)
.field(
"max_per_stage_descriptor_input_attachments",
&self.max_per_stage_descriptor_input_attachments,
)
.field("max_per_stage_resources", &self.max_per_stage_resources)
.field(
"max_descriptor_set_samplers",
&self.max_descriptor_set_samplers,
)
.field(
"max_descriptor_set_uniform_buffers",
&self.max_descriptor_set_uniform_buffers,
)
.field(
"max_descriptor_set_uniform_buffers_dynamic",
&self.max_descriptor_set_uniform_buffers_dynamic,
)
.field(
"max_descriptor_set_storage_buffers",
&self.max_descriptor_set_storage_buffers,
)
.field(
"max_descriptor_set_storage_buffers_dynamic",
&self.max_descriptor_set_storage_buffers_dynamic,
)
.field(
"max_descriptor_set_sampled_images",
&self.max_descriptor_set_sampled_images,
)
.field(
"max_descriptor_set_storage_images",
&self.max_descriptor_set_storage_images,
)
.field(
"max_descriptor_set_input_attachments",
&self.max_descriptor_set_input_attachments,
)
.field(
"max_vertex_input_attributes",
&self.max_vertex_input_attributes,
)
.field("max_vertex_input_bindings", &self.max_vertex_input_bindings)
.field(
"max_vertex_input_attribute_offset",
&self.max_vertex_input_attribute_offset,
)
.field(
"max_vertex_input_binding_stride",
&self.max_vertex_input_binding_stride,
)
.field(
"max_vertex_output_components",
&self.max_vertex_output_components,
)
.field(
"max_tessellation_generation_level",
&self.max_tessellation_generation_level,
)
.field(
"max_tessellation_patch_size",
&self.max_tessellation_patch_size,
)
.field(
"max_tessellation_control_per_vertex_input_components",
&self.max_tessellation_control_per_vertex_input_components,
)
.field(
"max_tessellation_control_per_vertex_output_components",
&self.max_tessellation_control_per_vertex_output_components,
)
.field(
"max_tessellation_control_per_patch_output_components",
&self.max_tessellation_control_per_patch_output_components,
)
.field(
"max_tessellation_control_total_output_components",
&self.max_tessellation_control_total_output_components,
)
.field(
"max_tessellation_evaluation_input_components",
&self.max_tessellation_evaluation_input_components,
)
.field(
"max_tessellation_evaluation_output_components",
&self.max_tessellation_evaluation_output_components,
)
.field(
"max_geometry_shader_invocations",
&self.max_geometry_shader_invocations,
)
.field(
"max_geometry_input_components",
&self.max_geometry_input_components,
)
.field(
"max_geometry_output_components",
&self.max_geometry_output_components,
)
.field(
"max_geometry_output_vertices",
&self.max_geometry_output_vertices,
)
.field(
"max_geometry_total_output_components",
&self.max_geometry_total_output_components,
)
.field(
"max_fragment_input_components",
&self.max_fragment_input_components,
)
.field(
"max_fragment_output_attachments",
&self.max_fragment_output_attachments,
)
.field(
"max_fragment_dual_src_attachments",
&self.max_fragment_dual_src_attachments,
)
.field(
"max_fragment_combined_output_resources",
&self.max_fragment_combined_output_resources,
)
.field(
"max_compute_shared_memory_size",
&self.max_compute_shared_memory_size,
)
.field(
"max_compute_work_group_count",
&self.max_compute_work_group_count,
)
.field(
"max_compute_work_group_invocations",
&self.max_compute_work_group_invocations,
)
.field(
"max_compute_work_group_size",
&self.max_compute_work_group_size,
)
.field("sub_pixel_precision_bits", &self.sub_pixel_precision_bits)
.field("sub_texel_precision_bits", &self.sub_texel_precision_bits)
.field("mipmap_precision_bits", &self.mipmap_precision_bits)
.field(
"max_draw_indexed_index_value",
&self.max_draw_indexed_index_value,
)
.field("max_draw_indirect_count", &self.max_draw_indirect_count)
.field("max_sampler_lod_bias", &self.max_sampler_lod_bias)
.field("max_sampler_anisotropy", &self.max_sampler_anisotropy)
.field("max_viewports", &self.max_viewports)
.field("max_viewport_dimensions", &self.max_viewport_dimensions)
.field("viewport_bounds_range", &self.viewport_bounds_range)
.field("viewport_sub_pixel_bits", &self.viewport_sub_pixel_bits)
.field("min_memory_map_alignment", &self.min_memory_map_alignment)
.field(
"min_texel_buffer_offset_alignment",
&self.min_texel_buffer_offset_alignment,
)
.field(
"min_uniform_buffer_offset_alignment",
&self.min_uniform_buffer_offset_alignment,
)
.field(
"min_storage_buffer_offset_alignment",
&self.min_storage_buffer_offset_alignment,
)
.field("min_texel_offset", &self.min_texel_offset)
.field("max_texel_offset", &self.max_texel_offset)
.field("min_texel_gather_offset", &self.min_texel_gather_offset)
.field("max_texel_gather_offset", &self.max_texel_gather_offset)
.field("min_interpolation_offset", &self.min_interpolation_offset)
.field("max_interpolation_offset", &self.max_interpolation_offset)
.field(
"sub_pixel_interpolation_offset_bits",
&self.sub_pixel_interpolation_offset_bits,
)
.field("max_framebuffer_width", &self.max_framebuffer_width)
.field("max_framebuffer_height", &self.max_framebuffer_height)
.field("max_framebuffer_layers", &self.max_framebuffer_layers)
.field(
"framebuffer_color_sample_counts",
&self.framebuffer_color_sample_counts,
)
.field(
"framebuffer_depth_sample_counts",
&self.framebuffer_depth_sample_counts,
)
.field(
"framebuffer_stencil_sample_counts",
&self.framebuffer_stencil_sample_counts,
)
.field(
"framebuffer_no_attachments_sample_counts",
&self.framebuffer_no_attachments_sample_counts,
)
.field("max_color_attachments", &self.max_color_attachments)
.field(
"sampled_image_color_sample_counts",
&self.sampled_image_color_sample_counts,
)
.field(
"sampled_image_integer_sample_counts",
&self.sampled_image_integer_sample_counts,
)
.field(
"sampled_image_depth_sample_counts",
&self.sampled_image_depth_sample_counts,
)
.field(
"sampled_image_stencil_sample_counts",
&self.sampled_image_stencil_sample_counts,
)
.field(
"storage_image_sample_counts",
&self.storage_image_sample_counts,
)
.field("max_sample_mask_words", &self.max_sample_mask_words)
.field(
"timestamp_compute_and_graphics",
&(self.timestamp_compute_and_graphics != 0),
)
.field("timestamp_period", &self.timestamp_period)
.field("max_clip_distances", &self.max_clip_distances)
.field("max_cull_distances", &self.max_cull_distances)
.field(
"max_combined_clip_and_cull_distances",
&self.max_combined_clip_and_cull_distances,
)
.field("discrete_queue_priorities", &self.discrete_queue_priorities)
.field("point_size_range", &self.point_size_range)
.field("line_width_range", &self.line_width_range)
.field("point_size_granularity", &self.point_size_granularity)
.field("line_width_granularity", &self.line_width_granularity)
.field("strict_lines", &(self.strict_lines != 0))
.field(
"standard_sample_locations",
&(self.standard_sample_locations != 0),
)
.field(
"optimal_buffer_copy_offset_alignment",
&self.optimal_buffer_copy_offset_alignment,
)
.field(
"optimal_buffer_copy_row_pitch_alignment",
&self.optimal_buffer_copy_row_pitch_alignment,
)
.field("non_coherent_atom_size", &self.non_coherent_atom_size)
.finish()
}
}
impl Default for PhysicalDeviceLimits {
fn default() -> PhysicalDeviceLimits {
PhysicalDeviceLimits {
max_image_dimension1_d: Default::default(),
max_image_dimension2_d: Default::default(),
max_image_dimension3_d: Default::default(),
max_image_dimension_cube: Default::default(),
max_image_array_layers: Default::default(),
max_texel_buffer_elements: Default::default(),
max_uniform_buffer_range: Default::default(),
max_storage_buffer_range: Default::default(),
max_push_constants_size: Default::default(),
max_memory_allocation_count: Default::default(),
max_sampler_allocation_count: Default::default(),
buffer_image_granularity: Default::default(),
sparse_address_space_size: Default::default(),
max_bound_descriptor_sets: Default::default(),
max_per_stage_descriptor_samplers: Default::default(),
max_per_stage_descriptor_uniform_buffers: Default::default(),
max_per_stage_descriptor_storage_buffers: Default::default(),
max_per_stage_descriptor_sampled_images: Default::default(),
max_per_stage_descriptor_storage_images: Default::default(),
max_per_stage_descriptor_input_attachments: Default::default(),
max_per_stage_resources: Default::default(),
max_descriptor_set_samplers: Default::default(),
max_descriptor_set_uniform_buffers: Default::default(),
max_descriptor_set_uniform_buffers_dynamic: Default::default(),
max_descriptor_set_storage_buffers: Default::default(),
max_descriptor_set_storage_buffers_dynamic: Default::default(),
max_descriptor_set_sampled_images: Default::default(),
max_descriptor_set_storage_images: Default::default(),
max_descriptor_set_input_attachments: Default::default(),
max_vertex_input_attributes: Default::default(),
max_vertex_input_bindings: Default::default(),
max_vertex_input_attribute_offset: Default::default(),
max_vertex_input_binding_stride: Default::default(),
max_vertex_output_components: Default::default(),
max_tessellation_generation_level: Default::default(),
max_tessellation_patch_size: Default::default(),
max_tessellation_control_per_vertex_input_components: Default::default(),
max_tessellation_control_per_vertex_output_components: Default::default(),
max_tessellation_control_per_patch_output_components: Default::default(),
max_tessellation_control_total_output_components: Default::default(),
max_tessellation_evaluation_input_components: Default::default(),
max_tessellation_evaluation_output_components: Default::default(),
max_geometry_shader_invocations: Default::default(),
max_geometry_input_components: Default::default(),
max_geometry_output_components: Default::default(),
max_geometry_output_vertices: Default::default(),
max_geometry_total_output_components: Default::default(),
max_fragment_input_components: Default::default(),
max_fragment_output_attachments: Default::default(),
max_fragment_dual_src_attachments: Default::default(),
max_fragment_combined_output_resources: Default::default(),
max_compute_shared_memory_size: Default::default(),
max_compute_work_group_count: Default::default(),
max_compute_work_group_invocations: Default::default(),
max_compute_work_group_size: Default::default(),
sub_pixel_precision_bits: Default::default(),
sub_texel_precision_bits: Default::default(),
mipmap_precision_bits: Default::default(),
max_draw_indexed_index_value: Default::default(),
max_draw_indirect_count: Default::default(),
max_sampler_lod_bias: Default::default(),
max_sampler_anisotropy: Default::default(),
max_viewports: Default::default(),
max_viewport_dimensions: Default::default(),
viewport_bounds_range: Default::default(),
viewport_sub_pixel_bits: Default::default(),
min_memory_map_alignment: Default::default(),
min_texel_buffer_offset_alignment: Default::default(),
min_uniform_buffer_offset_alignment: Default::default(),
min_storage_buffer_offset_alignment: Default::default(),
min_texel_offset: Default::default(),
max_texel_offset: Default::default(),
min_texel_gather_offset: Default::default(),
max_texel_gather_offset: Default::default(),
min_interpolation_offset: Default::default(),
max_interpolation_offset: Default::default(),
sub_pixel_interpolation_offset_bits: Default::default(),
max_framebuffer_width: Default::default(),
max_framebuffer_height: Default::default(),
max_framebuffer_layers: Default::default(),
framebuffer_color_sample_counts: Default::default(),
framebuffer_depth_sample_counts: Default::default(),
framebuffer_stencil_sample_counts: Default::default(),
framebuffer_no_attachments_sample_counts: Default::default(),
max_color_attachments: Default::default(),
sampled_image_color_sample_counts: Default::default(),
sampled_image_integer_sample_counts: Default::default(),
sampled_image_depth_sample_counts: Default::default(),
sampled_image_stencil_sample_counts: Default::default(),
storage_image_sample_counts: Default::default(),
max_sample_mask_words: Default::default(),
timestamp_compute_and_graphics: Default::default(),
timestamp_period: Default::default(),
max_clip_distances: Default::default(),
max_cull_distances: Default::default(),
max_combined_clip_and_cull_distances: Default::default(),
discrete_queue_priorities: Default::default(),
point_size_range: Default::default(),
line_width_range: Default::default(),
point_size_granularity: Default::default(),
line_width_granularity: Default::default(),
strict_lines: Default::default(),
standard_sample_locations: Default::default(),
optimal_buffer_copy_offset_alignment: Default::default(),
optimal_buffer_copy_row_pitch_alignment: Default::default(),
non_coherent_atom_size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceLimits.html) · Builder of [`PhysicalDeviceLimits`](struct.PhysicalDeviceLimits.html)"]
#[repr(transparent)]
pub struct PhysicalDeviceLimitsBuilder<'a>(PhysicalDeviceLimits, std::marker::PhantomData<&'a ()>);
impl<'a> PhysicalDeviceLimitsBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceLimitsBuilder<'a> {
PhysicalDeviceLimitsBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn max_image_dimension1_d(mut self, max_image_dimension1_d: u32) -> Self {
self.0.max_image_dimension1_d = max_image_dimension1_d;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_image_dimension2_d(mut self, max_image_dimension2_d: u32) -> Self {
self.0.max_image_dimension2_d = max_image_dimension2_d;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_image_dimension3_d(mut self, max_image_dimension3_d: u32) -> Self {
self.0.max_image_dimension3_d = max_image_dimension3_d;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_image_dimension_cube(mut self, max_image_dimension_cube: u32) -> Self {
self.0.max_image_dimension_cube = max_image_dimension_cube;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_image_array_layers(mut self, max_image_array_layers: u32) -> Self {
self.0.max_image_array_layers = max_image_array_layers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_texel_buffer_elements(mut self, max_texel_buffer_elements: u32) -> Self {
self.0.max_texel_buffer_elements = max_texel_buffer_elements;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_uniform_buffer_range(mut self, max_uniform_buffer_range: u32) -> Self {
self.0.max_uniform_buffer_range = max_uniform_buffer_range;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_storage_buffer_range(mut self, max_storage_buffer_range: u32) -> Self {
self.0.max_storage_buffer_range = max_storage_buffer_range;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_push_constants_size(mut self, max_push_constants_size: u32) -> Self {
self.0.max_push_constants_size = max_push_constants_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_memory_allocation_count(mut self, max_memory_allocation_count: u32) -> Self {
self.0.max_memory_allocation_count = max_memory_allocation_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_sampler_allocation_count(mut self, max_sampler_allocation_count: u32) -> Self {
self.0.max_sampler_allocation_count = max_sampler_allocation_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_image_granularity(
mut self,
buffer_image_granularity: crate::vk1_0::DeviceSize,
) -> Self {
self.0.buffer_image_granularity = buffer_image_granularity;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sparse_address_space_size(
mut self,
sparse_address_space_size: crate::vk1_0::DeviceSize,
) -> Self {
self.0.sparse_address_space_size = sparse_address_space_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_bound_descriptor_sets(mut self, max_bound_descriptor_sets: u32) -> Self {
self.0.max_bound_descriptor_sets = max_bound_descriptor_sets;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_descriptor_samplers(
mut self,
max_per_stage_descriptor_samplers: u32,
) -> Self {
self.0.max_per_stage_descriptor_samplers = max_per_stage_descriptor_samplers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_descriptor_uniform_buffers(
mut self,
max_per_stage_descriptor_uniform_buffers: u32,
) -> Self {
self.0.max_per_stage_descriptor_uniform_buffers = max_per_stage_descriptor_uniform_buffers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_descriptor_storage_buffers(
mut self,
max_per_stage_descriptor_storage_buffers: u32,
) -> Self {
self.0.max_per_stage_descriptor_storage_buffers = max_per_stage_descriptor_storage_buffers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_descriptor_sampled_images(
mut self,
max_per_stage_descriptor_sampled_images: u32,
) -> Self {
self.0.max_per_stage_descriptor_sampled_images = max_per_stage_descriptor_sampled_images;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_descriptor_storage_images(
mut self,
max_per_stage_descriptor_storage_images: u32,
) -> Self {
self.0.max_per_stage_descriptor_storage_images = max_per_stage_descriptor_storage_images;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_descriptor_input_attachments(
mut self,
max_per_stage_descriptor_input_attachments: u32,
) -> Self {
self.0.max_per_stage_descriptor_input_attachments =
max_per_stage_descriptor_input_attachments;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_per_stage_resources(mut self, max_per_stage_resources: u32) -> Self {
self.0.max_per_stage_resources = max_per_stage_resources;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_samplers(mut self, max_descriptor_set_samplers: u32) -> Self {
self.0.max_descriptor_set_samplers = max_descriptor_set_samplers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_uniform_buffers(
mut self,
max_descriptor_set_uniform_buffers: u32,
) -> Self {
self.0.max_descriptor_set_uniform_buffers = max_descriptor_set_uniform_buffers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_uniform_buffers_dynamic(
mut self,
max_descriptor_set_uniform_buffers_dynamic: u32,
) -> Self {
self.0.max_descriptor_set_uniform_buffers_dynamic =
max_descriptor_set_uniform_buffers_dynamic;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_storage_buffers(
mut self,
max_descriptor_set_storage_buffers: u32,
) -> Self {
self.0.max_descriptor_set_storage_buffers = max_descriptor_set_storage_buffers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_storage_buffers_dynamic(
mut self,
max_descriptor_set_storage_buffers_dynamic: u32,
) -> Self {
self.0.max_descriptor_set_storage_buffers_dynamic =
max_descriptor_set_storage_buffers_dynamic;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_sampled_images(
mut self,
max_descriptor_set_sampled_images: u32,
) -> Self {
self.0.max_descriptor_set_sampled_images = max_descriptor_set_sampled_images;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_storage_images(
mut self,
max_descriptor_set_storage_images: u32,
) -> Self {
self.0.max_descriptor_set_storage_images = max_descriptor_set_storage_images;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_descriptor_set_input_attachments(
mut self,
max_descriptor_set_input_attachments: u32,
) -> Self {
self.0.max_descriptor_set_input_attachments = max_descriptor_set_input_attachments;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_vertex_input_attributes(mut self, max_vertex_input_attributes: u32) -> Self {
self.0.max_vertex_input_attributes = max_vertex_input_attributes;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_vertex_input_bindings(mut self, max_vertex_input_bindings: u32) -> Self {
self.0.max_vertex_input_bindings = max_vertex_input_bindings;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_vertex_input_attribute_offset(
mut self,
max_vertex_input_attribute_offset: u32,
) -> Self {
self.0.max_vertex_input_attribute_offset = max_vertex_input_attribute_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_vertex_input_binding_stride(mut self, max_vertex_input_binding_stride: u32) -> Self {
self.0.max_vertex_input_binding_stride = max_vertex_input_binding_stride;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_vertex_output_components(mut self, max_vertex_output_components: u32) -> Self {
self.0.max_vertex_output_components = max_vertex_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_generation_level(
mut self,
max_tessellation_generation_level: u32,
) -> Self {
self.0.max_tessellation_generation_level = max_tessellation_generation_level;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_patch_size(mut self, max_tessellation_patch_size: u32) -> Self {
self.0.max_tessellation_patch_size = max_tessellation_patch_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_control_per_vertex_input_components(
mut self,
max_tessellation_control_per_vertex_input_components: u32,
) -> Self {
self.0.max_tessellation_control_per_vertex_input_components =
max_tessellation_control_per_vertex_input_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_control_per_vertex_output_components(
mut self,
max_tessellation_control_per_vertex_output_components: u32,
) -> Self {
self.0.max_tessellation_control_per_vertex_output_components =
max_tessellation_control_per_vertex_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_control_per_patch_output_components(
mut self,
max_tessellation_control_per_patch_output_components: u32,
) -> Self {
self.0.max_tessellation_control_per_patch_output_components =
max_tessellation_control_per_patch_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_control_total_output_components(
mut self,
max_tessellation_control_total_output_components: u32,
) -> Self {
self.0.max_tessellation_control_total_output_components =
max_tessellation_control_total_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_evaluation_input_components(
mut self,
max_tessellation_evaluation_input_components: u32,
) -> Self {
self.0.max_tessellation_evaluation_input_components =
max_tessellation_evaluation_input_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_tessellation_evaluation_output_components(
mut self,
max_tessellation_evaluation_output_components: u32,
) -> Self {
self.0.max_tessellation_evaluation_output_components =
max_tessellation_evaluation_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_geometry_shader_invocations(mut self, max_geometry_shader_invocations: u32) -> Self {
self.0.max_geometry_shader_invocations = max_geometry_shader_invocations;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_geometry_input_components(mut self, max_geometry_input_components: u32) -> Self {
self.0.max_geometry_input_components = max_geometry_input_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_geometry_output_components(mut self, max_geometry_output_components: u32) -> Self {
self.0.max_geometry_output_components = max_geometry_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_geometry_output_vertices(mut self, max_geometry_output_vertices: u32) -> Self {
self.0.max_geometry_output_vertices = max_geometry_output_vertices;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_geometry_total_output_components(
mut self,
max_geometry_total_output_components: u32,
) -> Self {
self.0.max_geometry_total_output_components = max_geometry_total_output_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_fragment_input_components(mut self, max_fragment_input_components: u32) -> Self {
self.0.max_fragment_input_components = max_fragment_input_components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_fragment_output_attachments(mut self, max_fragment_output_attachments: u32) -> Self {
self.0.max_fragment_output_attachments = max_fragment_output_attachments;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_fragment_dual_src_attachments(
mut self,
max_fragment_dual_src_attachments: u32,
) -> Self {
self.0.max_fragment_dual_src_attachments = max_fragment_dual_src_attachments;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_fragment_combined_output_resources(
mut self,
max_fragment_combined_output_resources: u32,
) -> Self {
self.0.max_fragment_combined_output_resources = max_fragment_combined_output_resources;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_compute_shared_memory_size(mut self, max_compute_shared_memory_size: u32) -> Self {
self.0.max_compute_shared_memory_size = max_compute_shared_memory_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_compute_work_group_count(mut self, max_compute_work_group_count: [u32; 3]) -> Self {
self.0.max_compute_work_group_count = max_compute_work_group_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_compute_work_group_invocations(
mut self,
max_compute_work_group_invocations: u32,
) -> Self {
self.0.max_compute_work_group_invocations = max_compute_work_group_invocations;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_compute_work_group_size(mut self, max_compute_work_group_size: [u32; 3]) -> Self {
self.0.max_compute_work_group_size = max_compute_work_group_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sub_pixel_precision_bits(mut self, sub_pixel_precision_bits: u32) -> Self {
self.0.sub_pixel_precision_bits = sub_pixel_precision_bits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sub_texel_precision_bits(mut self, sub_texel_precision_bits: u32) -> Self {
self.0.sub_texel_precision_bits = sub_texel_precision_bits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mipmap_precision_bits(mut self, mipmap_precision_bits: u32) -> Self {
self.0.mipmap_precision_bits = mipmap_precision_bits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_draw_indexed_index_value(mut self, max_draw_indexed_index_value: u32) -> Self {
self.0.max_draw_indexed_index_value = max_draw_indexed_index_value;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_draw_indirect_count(mut self, max_draw_indirect_count: u32) -> Self {
self.0.max_draw_indirect_count = max_draw_indirect_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_sampler_lod_bias(mut self, max_sampler_lod_bias: f32) -> Self {
self.0.max_sampler_lod_bias = max_sampler_lod_bias;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_sampler_anisotropy(mut self, max_sampler_anisotropy: f32) -> Self {
self.0.max_sampler_anisotropy = max_sampler_anisotropy;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_viewports(mut self, max_viewports: u32) -> Self {
self.0.max_viewports = max_viewports;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_viewport_dimensions(mut self, max_viewport_dimensions: [u32; 2]) -> Self {
self.0.max_viewport_dimensions = max_viewport_dimensions;
self
}
#[allow(unused_mut)]
#[inline]
pub fn viewport_bounds_range(mut self, viewport_bounds_range: [f32; 2]) -> Self {
self.0.viewport_bounds_range = viewport_bounds_range;
self
}
#[allow(unused_mut)]
#[inline]
pub fn viewport_sub_pixel_bits(mut self, viewport_sub_pixel_bits: u32) -> Self {
self.0.viewport_sub_pixel_bits = viewport_sub_pixel_bits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_memory_map_alignment(mut self, min_memory_map_alignment: usize) -> Self {
self.0.min_memory_map_alignment = min_memory_map_alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_texel_buffer_offset_alignment(
mut self,
min_texel_buffer_offset_alignment: crate::vk1_0::DeviceSize,
) -> Self {
self.0.min_texel_buffer_offset_alignment = min_texel_buffer_offset_alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_uniform_buffer_offset_alignment(
mut self,
min_uniform_buffer_offset_alignment: crate::vk1_0::DeviceSize,
) -> Self {
self.0.min_uniform_buffer_offset_alignment = min_uniform_buffer_offset_alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_storage_buffer_offset_alignment(
mut self,
min_storage_buffer_offset_alignment: crate::vk1_0::DeviceSize,
) -> Self {
self.0.min_storage_buffer_offset_alignment = min_storage_buffer_offset_alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_texel_offset(mut self, min_texel_offset: i32) -> Self {
self.0.min_texel_offset = min_texel_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_texel_offset(mut self, max_texel_offset: u32) -> Self {
self.0.max_texel_offset = max_texel_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_texel_gather_offset(mut self, min_texel_gather_offset: i32) -> Self {
self.0.min_texel_gather_offset = min_texel_gather_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_texel_gather_offset(mut self, max_texel_gather_offset: u32) -> Self {
self.0.max_texel_gather_offset = max_texel_gather_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_interpolation_offset(mut self, min_interpolation_offset: f32) -> Self {
self.0.min_interpolation_offset = min_interpolation_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_interpolation_offset(mut self, max_interpolation_offset: f32) -> Self {
self.0.max_interpolation_offset = max_interpolation_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sub_pixel_interpolation_offset_bits(
mut self,
sub_pixel_interpolation_offset_bits: u32,
) -> Self {
self.0.sub_pixel_interpolation_offset_bits = sub_pixel_interpolation_offset_bits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_framebuffer_width(mut self, max_framebuffer_width: u32) -> Self {
self.0.max_framebuffer_width = max_framebuffer_width;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_framebuffer_height(mut self, max_framebuffer_height: u32) -> Self {
self.0.max_framebuffer_height = max_framebuffer_height;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_framebuffer_layers(mut self, max_framebuffer_layers: u32) -> Self {
self.0.max_framebuffer_layers = max_framebuffer_layers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn framebuffer_color_sample_counts(
mut self,
framebuffer_color_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.framebuffer_color_sample_counts = framebuffer_color_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn framebuffer_depth_sample_counts(
mut self,
framebuffer_depth_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.framebuffer_depth_sample_counts = framebuffer_depth_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn framebuffer_stencil_sample_counts(
mut self,
framebuffer_stencil_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.framebuffer_stencil_sample_counts = framebuffer_stencil_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn framebuffer_no_attachments_sample_counts(
mut self,
framebuffer_no_attachments_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.framebuffer_no_attachments_sample_counts = framebuffer_no_attachments_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_color_attachments(mut self, max_color_attachments: u32) -> Self {
self.0.max_color_attachments = max_color_attachments;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sampled_image_color_sample_counts(
mut self,
sampled_image_color_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.sampled_image_color_sample_counts = sampled_image_color_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sampled_image_integer_sample_counts(
mut self,
sampled_image_integer_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.sampled_image_integer_sample_counts = sampled_image_integer_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sampled_image_depth_sample_counts(
mut self,
sampled_image_depth_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.sampled_image_depth_sample_counts = sampled_image_depth_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sampled_image_stencil_sample_counts(
mut self,
sampled_image_stencil_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.sampled_image_stencil_sample_counts = sampled_image_stencil_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn storage_image_sample_counts(
mut self,
storage_image_sample_counts: crate::vk1_0::SampleCountFlags,
) -> Self {
self.0.storage_image_sample_counts = storage_image_sample_counts;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_sample_mask_words(mut self, max_sample_mask_words: u32) -> Self {
self.0.max_sample_mask_words = max_sample_mask_words;
self
}
#[allow(unused_mut)]
#[inline]
pub fn timestamp_compute_and_graphics(mut self, timestamp_compute_and_graphics: bool) -> Self {
self.0.timestamp_compute_and_graphics = timestamp_compute_and_graphics as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn timestamp_period(mut self, timestamp_period: f32) -> Self {
self.0.timestamp_period = timestamp_period;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_clip_distances(mut self, max_clip_distances: u32) -> Self {
self.0.max_clip_distances = max_clip_distances;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_cull_distances(mut self, max_cull_distances: u32) -> Self {
self.0.max_cull_distances = max_cull_distances;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_combined_clip_and_cull_distances(
mut self,
max_combined_clip_and_cull_distances: u32,
) -> Self {
self.0.max_combined_clip_and_cull_distances = max_combined_clip_and_cull_distances;
self
}
#[allow(unused_mut)]
#[inline]
pub fn discrete_queue_priorities(mut self, discrete_queue_priorities: u32) -> Self {
self.0.discrete_queue_priorities = discrete_queue_priorities;
self
}
#[allow(unused_mut)]
#[inline]
pub fn point_size_range(mut self, point_size_range: [f32; 2]) -> Self {
self.0.point_size_range = point_size_range;
self
}
#[allow(unused_mut)]
#[inline]
pub fn line_width_range(mut self, line_width_range: [f32; 2]) -> Self {
self.0.line_width_range = line_width_range;
self
}
#[allow(unused_mut)]
#[inline]
pub fn point_size_granularity(mut self, point_size_granularity: f32) -> Self {
self.0.point_size_granularity = point_size_granularity;
self
}
#[allow(unused_mut)]
#[inline]
pub fn line_width_granularity(mut self, line_width_granularity: f32) -> Self {
self.0.line_width_granularity = line_width_granularity;
self
}
#[allow(unused_mut)]
#[inline]
pub fn strict_lines(mut self, strict_lines: bool) -> Self {
self.0.strict_lines = strict_lines as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn standard_sample_locations(mut self, standard_sample_locations: bool) -> Self {
self.0.standard_sample_locations = standard_sample_locations as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn optimal_buffer_copy_offset_alignment(
mut self,
optimal_buffer_copy_offset_alignment: crate::vk1_0::DeviceSize,
) -> Self {
self.0.optimal_buffer_copy_offset_alignment = optimal_buffer_copy_offset_alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn optimal_buffer_copy_row_pitch_alignment(
mut self,
optimal_buffer_copy_row_pitch_alignment: crate::vk1_0::DeviceSize,
) -> Self {
self.0.optimal_buffer_copy_row_pitch_alignment = optimal_buffer_copy_row_pitch_alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn non_coherent_atom_size(
mut self,
non_coherent_atom_size: crate::vk1_0::DeviceSize,
) -> Self {
self.0.non_coherent_atom_size = non_coherent_atom_size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PhysicalDeviceLimits {
self.0
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceLimitsBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PhysicalDeviceLimitsBuilder<'a> {
type Target = PhysicalDeviceLimits;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDeviceLimitsBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSparseProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceSparseProperties {
pub residency_standard2_d_block_shape: crate::vk1_0::Bool32,
pub residency_standard2_d_multisample_block_shape: crate::vk1_0::Bool32,
pub residency_standard3_d_block_shape: crate::vk1_0::Bool32,
pub residency_aligned_mip_size: crate::vk1_0::Bool32,
pub residency_non_resident_strict: crate::vk1_0::Bool32,
}
impl PhysicalDeviceSparseProperties {
#[inline]
pub fn builder<'a>(self) -> PhysicalDeviceSparsePropertiesBuilder<'a> {
PhysicalDeviceSparsePropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PhysicalDeviceSparseProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PhysicalDeviceSparseProperties")
.field(
"residency_standard2_d_block_shape",
&(self.residency_standard2_d_block_shape != 0),
)
.field(
"residency_standard2_d_multisample_block_shape",
&(self.residency_standard2_d_multisample_block_shape != 0),
)
.field(
"residency_standard3_d_block_shape",
&(self.residency_standard3_d_block_shape != 0),
)
.field(
"residency_aligned_mip_size",
&(self.residency_aligned_mip_size != 0),
)
.field(
"residency_non_resident_strict",
&(self.residency_non_resident_strict != 0),
)
.finish()
}
}
impl Default for PhysicalDeviceSparseProperties {
fn default() -> PhysicalDeviceSparseProperties {
PhysicalDeviceSparseProperties {
residency_standard2_d_block_shape: Default::default(),
residency_standard2_d_multisample_block_shape: Default::default(),
residency_standard3_d_block_shape: Default::default(),
residency_aligned_mip_size: Default::default(),
residency_non_resident_strict: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceSparseProperties.html) · Builder of [`PhysicalDeviceSparseProperties`](struct.PhysicalDeviceSparseProperties.html)"]
#[repr(transparent)]
pub struct PhysicalDeviceSparsePropertiesBuilder<'a>(
PhysicalDeviceSparseProperties,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceSparsePropertiesBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceSparsePropertiesBuilder<'a> {
PhysicalDeviceSparsePropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn residency_standard2_d_block_shape(
mut self,
residency_standard2_d_block_shape: bool,
) -> Self {
self.0.residency_standard2_d_block_shape = residency_standard2_d_block_shape as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn residency_standard2_d_multisample_block_shape(
mut self,
residency_standard2_d_multisample_block_shape: bool,
) -> Self {
self.0.residency_standard2_d_multisample_block_shape =
residency_standard2_d_multisample_block_shape as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn residency_standard3_d_block_shape(
mut self,
residency_standard3_d_block_shape: bool,
) -> Self {
self.0.residency_standard3_d_block_shape = residency_standard3_d_block_shape as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn residency_aligned_mip_size(mut self, residency_aligned_mip_size: bool) -> Self {
self.0.residency_aligned_mip_size = residency_aligned_mip_size as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn residency_non_resident_strict(mut self, residency_non_resident_strict: bool) -> Self {
self.0.residency_non_resident_strict = residency_non_resident_strict as u32;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PhysicalDeviceSparseProperties {
self.0
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceSparsePropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PhysicalDeviceSparsePropertiesBuilder<'a> {
type Target = PhysicalDeviceSparseProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDeviceSparsePropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct QueueFamilyProperties {
pub queue_flags: crate::vk1_0::QueueFlags,
pub queue_count: u32,
pub timestamp_valid_bits: u32,
pub min_image_transfer_granularity: crate::vk1_0::Extent3D,
}
impl QueueFamilyProperties {
#[inline]
pub fn builder<'a>(self) -> QueueFamilyPropertiesBuilder<'a> {
QueueFamilyPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for QueueFamilyProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("QueueFamilyProperties")
.field("queue_flags", &self.queue_flags)
.field("queue_count", &self.queue_count)
.field("timestamp_valid_bits", &self.timestamp_valid_bits)
.field(
"min_image_transfer_granularity",
&self.min_image_transfer_granularity,
)
.finish()
}
}
impl Default for QueueFamilyProperties {
fn default() -> QueueFamilyProperties {
QueueFamilyProperties {
queue_flags: Default::default(),
queue_count: Default::default(),
timestamp_valid_bits: Default::default(),
min_image_transfer_granularity: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFamilyProperties.html) · Builder of [`QueueFamilyProperties`](struct.QueueFamilyProperties.html)"]
#[repr(transparent)]
pub struct QueueFamilyPropertiesBuilder<'a>(
QueueFamilyProperties,
std::marker::PhantomData<&'a ()>,
);
impl<'a> QueueFamilyPropertiesBuilder<'a> {
#[inline]
pub fn new() -> QueueFamilyPropertiesBuilder<'a> {
QueueFamilyPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn queue_flags(mut self, queue_flags: crate::vk1_0::QueueFlags) -> Self {
self.0.queue_flags = queue_flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_count(mut self, queue_count: u32) -> Self {
self.0.queue_count = queue_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn timestamp_valid_bits(mut self, timestamp_valid_bits: u32) -> Self {
self.0.timestamp_valid_bits = timestamp_valid_bits;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_image_transfer_granularity(
mut self,
min_image_transfer_granularity: crate::vk1_0::Extent3D,
) -> Self {
self.0.min_image_transfer_granularity = min_image_transfer_granularity;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> QueueFamilyProperties {
self.0
}
}
impl<'a> std::fmt::Debug for QueueFamilyPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for QueueFamilyPropertiesBuilder<'a> {
type Target = QueueFamilyProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for QueueFamilyPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFlagBits.html) · Flag Bits of [`QueueFlags`](struct.QueueFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct QueueFlagBits(pub u32);
impl QueueFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> QueueFlags {
QueueFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl QueueFlagBits {
pub const GRAPHICS: Self = Self(0x00000001);
pub const COMPUTE: Self = Self(0x00000002);
pub const TRANSFER: Self = Self(0x00000004);
pub const SPARSE_BINDING: Self = Self(0x00000008);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl QueueFlagBits {
pub const PROTECTED: Self = Self(0x00000010);
}
impl std::fmt::Debug for QueueFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::GRAPHICS => "GRAPHICS",
&Self::COMPUTE => "COMPUTE",
&Self::TRANSFER => "TRANSFER",
&Self::SPARSE_BINDING => "SPARSE_BINDING",
&Self::PROTECTED => "PROTECTED",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueueFlags.html) · Flags of [`QueueFlagBits`](struct.QueueFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct QueueFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const GRAPHICS = QueueFlagBits :: GRAPHICS . 0 ; const COMPUTE = QueueFlagBits :: COMPUTE . 0 ; const TRANSFER = QueueFlagBits :: TRANSFER . 0 ; const SPARSE_BINDING = QueueFlagBits :: SPARSE_BINDING . 0 ; const PROTECTED = QueueFlagBits :: PROTECTED . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceMemoryProperties {
pub memory_type_count: u32,
pub memory_types: [crate::vk1_0::MemoryType; crate::vk1_0::MAX_MEMORY_TYPES as usize],
pub memory_heap_count: u32,
pub memory_heaps: [crate::vk1_0::MemoryHeap; crate::vk1_0::MAX_MEMORY_HEAPS as usize],
}
impl PhysicalDeviceMemoryProperties {
#[inline]
pub fn builder<'a>(self) -> PhysicalDeviceMemoryPropertiesBuilder<'a> {
PhysicalDeviceMemoryPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PhysicalDeviceMemoryProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PhysicalDeviceMemoryProperties")
.field("memory_type_count", &self.memory_type_count)
.field("memory_types", &self.memory_types)
.field("memory_heap_count", &self.memory_heap_count)
.field("memory_heaps", &self.memory_heaps)
.finish()
}
}
impl Default for PhysicalDeviceMemoryProperties {
fn default() -> PhysicalDeviceMemoryProperties {
PhysicalDeviceMemoryProperties {
memory_type_count: Default::default(),
memory_types: Default::default(),
memory_heap_count: Default::default(),
memory_heaps: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceMemoryProperties.html) · Builder of [`PhysicalDeviceMemoryProperties`](struct.PhysicalDeviceMemoryProperties.html)"]
#[repr(transparent)]
pub struct PhysicalDeviceMemoryPropertiesBuilder<'a>(
PhysicalDeviceMemoryProperties,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceMemoryPropertiesBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceMemoryPropertiesBuilder<'a> {
PhysicalDeviceMemoryPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn memory_type_count(mut self, memory_type_count: u32) -> Self {
self.0.memory_type_count = memory_type_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_types(
mut self,
memory_types: [crate::vk1_0::MemoryType; crate::vk1_0::MAX_MEMORY_TYPES as usize],
) -> Self {
self.0.memory_types = memory_types;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_heap_count(mut self, memory_heap_count: u32) -> Self {
self.0.memory_heap_count = memory_heap_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_heaps(
mut self,
memory_heaps: [crate::vk1_0::MemoryHeap; crate::vk1_0::MAX_MEMORY_HEAPS as usize],
) -> Self {
self.0.memory_heaps = memory_heaps;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PhysicalDeviceMemoryProperties {
self.0
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceMemoryPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PhysicalDeviceMemoryPropertiesBuilder<'a> {
type Target = PhysicalDeviceMemoryProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDeviceMemoryPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryType.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct MemoryType {
pub property_flags: crate::vk1_0::MemoryPropertyFlags,
pub heap_index: u32,
}
impl MemoryType {
#[inline]
pub fn builder<'a>(self) -> MemoryTypeBuilder<'a> {
MemoryTypeBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for MemoryType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("MemoryType")
.field("property_flags", &self.property_flags)
.field("heap_index", &self.heap_index)
.finish()
}
}
impl Default for MemoryType {
fn default() -> MemoryType {
MemoryType {
property_flags: Default::default(),
heap_index: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryType.html) · Builder of [`MemoryType`](struct.MemoryType.html)"]
#[repr(transparent)]
pub struct MemoryTypeBuilder<'a>(MemoryType, std::marker::PhantomData<&'a ()>);
impl<'a> MemoryTypeBuilder<'a> {
#[inline]
pub fn new() -> MemoryTypeBuilder<'a> {
MemoryTypeBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn property_flags(mut self, property_flags: crate::vk1_0::MemoryPropertyFlags) -> Self {
self.0.property_flags = property_flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn heap_index(mut self, heap_index: u32) -> Self {
self.0.heap_index = heap_index;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> MemoryType {
self.0
}
}
impl<'a> std::fmt::Debug for MemoryTypeBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for MemoryTypeBuilder<'a> {
type Target = MemoryType;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for MemoryTypeBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryPropertyFlagBits.html) · Flag Bits of [`MemoryPropertyFlags`](struct.MemoryPropertyFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct MemoryPropertyFlagBits(pub u32);
impl MemoryPropertyFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> MemoryPropertyFlags {
MemoryPropertyFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl MemoryPropertyFlagBits {
pub const DEVICE_LOCAL: Self = Self(0x00000001);
pub const HOST_VISIBLE: Self = Self(0x00000002);
pub const HOST_COHERENT: Self = Self(0x00000004);
pub const HOST_CACHED: Self = Self(0x00000008);
pub const LAZILY_ALLOCATED: Self = Self(0x00000010);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl MemoryPropertyFlagBits {
pub const PROTECTED: Self = Self(0x00000020);
}
#[doc = "[Part of `extensions::amd_device_coherent_memory`](../extensions/amd_device_coherent_memory/index.html)"]
impl MemoryPropertyFlagBits {
pub const DEVICE_COHERENT_AMD: Self = Self(0x00000040);
pub const DEVICE_UNCACHED_AMD: Self = Self(0x00000080);
}
impl std::fmt::Debug for MemoryPropertyFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::DEVICE_LOCAL => "DEVICE_LOCAL",
&Self::HOST_VISIBLE => "HOST_VISIBLE",
&Self::HOST_COHERENT => "HOST_COHERENT",
&Self::HOST_CACHED => "HOST_CACHED",
&Self::LAZILY_ALLOCATED => "LAZILY_ALLOCATED",
&Self::PROTECTED => "PROTECTED",
&Self::DEVICE_COHERENT_AMD => "DEVICE_COHERENT_AMD",
&Self::DEVICE_UNCACHED_AMD => "DEVICE_UNCACHED_AMD",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryPropertyFlags.html) · Flags of [`MemoryPropertyFlagBits`](struct.MemoryPropertyFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct MemoryPropertyFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const DEVICE_LOCAL = MemoryPropertyFlagBits :: DEVICE_LOCAL . 0 ; const HOST_VISIBLE = MemoryPropertyFlagBits :: HOST_VISIBLE . 0 ; const HOST_COHERENT = MemoryPropertyFlagBits :: HOST_COHERENT . 0 ; const HOST_CACHED = MemoryPropertyFlagBits :: HOST_CACHED . 0 ; const LAZILY_ALLOCATED = MemoryPropertyFlagBits :: LAZILY_ALLOCATED . 0 ; const PROTECTED = MemoryPropertyFlagBits :: PROTECTED . 0 ; const DEVICE_COHERENT_AMD = MemoryPropertyFlagBits :: DEVICE_COHERENT_AMD . 0 ; const DEVICE_UNCACHED_AMD = MemoryPropertyFlagBits :: DEVICE_UNCACHED_AMD . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHeap.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct MemoryHeap {
pub size: crate::vk1_0::DeviceSize,
pub flags: crate::vk1_0::MemoryHeapFlags,
}
impl MemoryHeap {
#[inline]
pub fn builder<'a>(self) -> MemoryHeapBuilder<'a> {
MemoryHeapBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for MemoryHeap {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("MemoryHeap")
.field("size", &self.size)
.field("flags", &self.flags)
.finish()
}
}
impl Default for MemoryHeap {
fn default() -> MemoryHeap {
MemoryHeap {
size: Default::default(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHeap.html) · Builder of [`MemoryHeap`](struct.MemoryHeap.html)"]
#[repr(transparent)]
pub struct MemoryHeapBuilder<'a>(MemoryHeap, std::marker::PhantomData<&'a ()>);
impl<'a> MemoryHeapBuilder<'a> {
#[inline]
pub fn new() -> MemoryHeapBuilder<'a> {
MemoryHeapBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::MemoryHeapFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> MemoryHeap {
self.0
}
}
impl<'a> std::fmt::Debug for MemoryHeapBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for MemoryHeapBuilder<'a> {
type Target = MemoryHeap;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for MemoryHeapBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHeapFlagBits.html) · Flag Bits of [`MemoryHeapFlags`](struct.MemoryHeapFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct MemoryHeapFlagBits(pub u32);
impl MemoryHeapFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> MemoryHeapFlags {
MemoryHeapFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl MemoryHeapFlagBits {
pub const DEVICE_LOCAL: Self = Self(0x00000001);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl MemoryHeapFlagBits {
pub const MULTI_INSTANCE: Self = Self(0x00000002);
}
#[doc = "[Part of `extensions::khr_device_group_creation`](../extensions/khr_device_group_creation/index.html)"]
impl MemoryHeapFlagBits {
pub const MULTI_INSTANCE_KHR: Self = Self::MULTI_INSTANCE;
}
impl std::fmt::Debug for MemoryHeapFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::DEVICE_LOCAL => "DEVICE_LOCAL",
&Self::MULTI_INSTANCE => "MULTI_INSTANCE",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryHeapFlags.html) · Flags of [`MemoryHeapFlagBits`](struct.MemoryHeapFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct MemoryHeapFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const DEVICE_LOCAL = MemoryHeapFlagBits :: DEVICE_LOCAL . 0 ; const MULTI_INSTANCE = MemoryHeapFlagBits :: MULTI_INSTANCE . 0 ; const MULTI_INSTANCE_KHR = MemoryHeapFlagBits :: MULTI_INSTANCE_KHR . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/PFN_vkVoidFunction.html) · Application defined function"]
#[allow(non_camel_case_types)]
pub type PFN_vkVoidFunction = unsafe extern "system" fn() -> std::ffi::c_void;
crate :: handle ! ( Device , DEVICE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDevice.html) · Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DeviceCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::DeviceCreateFlags,
pub queue_create_info_count: u32,
pub p_queue_create_infos: *const crate::vk1_0::DeviceQueueCreateInfo,
pub enabled_layer_count: u32,
pub pp_enabled_layer_names: *const *const std::os::raw::c_char,
pub enabled_extension_count: u32,
pub pp_enabled_extension_names: *const *const std::os::raw::c_char,
pub p_enabled_features: *const crate::vk1_0::PhysicalDeviceFeatures,
}
impl DeviceCreateInfo {
#[inline]
pub fn builder<'a>(self) -> DeviceCreateInfoBuilder<'a> {
DeviceCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DeviceCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DeviceCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("queue_create_info_count", &self.queue_create_info_count)
.field("p_queue_create_infos", &self.p_queue_create_infos)
.field("enabled_layer_count", &self.enabled_layer_count)
.field("pp_enabled_layer_names", &self.pp_enabled_layer_names)
.field("enabled_extension_count", &self.enabled_extension_count)
.field(
"pp_enabled_extension_names",
&self.pp_enabled_extension_names,
)
.field("p_enabled_features", &self.p_enabled_features)
.finish()
}
}
impl Default for DeviceCreateInfo {
fn default() -> DeviceCreateInfo {
DeviceCreateInfo {
s_type: crate::vk1_0::StructureType::DEVICE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
queue_create_info_count: Default::default(),
p_queue_create_infos: std::ptr::null(),
enabled_layer_count: Default::default(),
pp_enabled_layer_names: std::ptr::null(),
enabled_extension_count: Default::default(),
pp_enabled_extension_names: std::ptr::null(),
p_enabled_features: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateInfo.html) · Builder of [`DeviceCreateInfo`](struct.DeviceCreateInfo.html)"]
#[repr(transparent)]
pub struct DeviceCreateInfoBuilder<'a>(DeviceCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> DeviceCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> DeviceCreateInfoBuilder<'a> {
DeviceCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::DeviceCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_create_infos(
mut self,
queue_create_infos: &'a [crate::vk1_0::DeviceQueueCreateInfoBuilder],
) -> Self {
self.0.queue_create_info_count = queue_create_infos.len() as _;
self.0.p_queue_create_infos = queue_create_infos.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn enabled_layer_names(
mut self,
enabled_layer_names: &'a [*const std::os::raw::c_char],
) -> Self {
self.0.enabled_layer_count = enabled_layer_names.len() as _;
self.0.pp_enabled_layer_names = enabled_layer_names.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn enabled_extension_names(
mut self,
enabled_extension_names: &'a [*const std::os::raw::c_char],
) -> Self {
self.0.enabled_extension_count = enabled_extension_names.len() as _;
self.0.pp_enabled_extension_names = enabled_extension_names.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn enabled_features(
mut self,
enabled_features: &'a crate::vk1_0::PhysicalDeviceFeatures,
) -> Self {
self.0.p_enabled_features = enabled_features;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DeviceCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DeviceCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DeviceCreateInfoBuilder<'a> {
type Target = DeviceCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DeviceCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`DeviceCreateFlags`](struct.DeviceCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DeviceCreateFlagBits(pub u32);
impl DeviceCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> DeviceCreateFlags {
DeviceCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for DeviceCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceCreateFlags.html) · Flags of [`DeviceCreateFlagBits`](struct.DeviceCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct DeviceCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DeviceQueueCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::DeviceQueueCreateFlags,
pub queue_family_index: u32,
pub queue_count: u32,
pub p_queue_priorities: *const f32,
}
impl DeviceQueueCreateInfo {
#[inline]
pub fn builder<'a>(self) -> DeviceQueueCreateInfoBuilder<'a> {
DeviceQueueCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DeviceQueueCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DeviceQueueCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("queue_family_index", &self.queue_family_index)
.field("queue_count", &self.queue_count)
.field("p_queue_priorities", &self.p_queue_priorities)
.finish()
}
}
impl Default for DeviceQueueCreateInfo {
fn default() -> DeviceQueueCreateInfo {
DeviceQueueCreateInfo {
s_type: crate::vk1_0::StructureType::DEVICE_QUEUE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
queue_family_index: Default::default(),
queue_count: Default::default(),
p_queue_priorities: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueCreateInfo.html) · Builder of [`DeviceQueueCreateInfo`](struct.DeviceQueueCreateInfo.html)"]
#[repr(transparent)]
pub struct DeviceQueueCreateInfoBuilder<'a>(
DeviceQueueCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DeviceQueueCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> DeviceQueueCreateInfoBuilder<'a> {
DeviceQueueCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::DeviceQueueCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
self.0.queue_family_index = queue_family_index;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_priorities(mut self, queue_priorities: &'a [f32]) -> Self {
self.0.queue_count = queue_priorities.len() as _;
self.0.p_queue_priorities = queue_priorities.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DeviceQueueCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DeviceQueueCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DeviceQueueCreateInfoBuilder<'a> {
type Target = DeviceQueueCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DeviceQueueCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueCreateFlagBits.html) · Flag Bits of [`DeviceQueueCreateFlags`](struct.DeviceQueueCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DeviceQueueCreateFlagBits(pub u32);
impl DeviceQueueCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> DeviceQueueCreateFlags {
DeviceQueueCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl DeviceQueueCreateFlagBits {}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl DeviceQueueCreateFlagBits {
pub const PROTECTED: Self = Self(0x00000001);
}
impl std::fmt::Debug for DeviceQueueCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::PROTECTED => "PROTECTED",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceQueueCreateFlags.html) · Flags of [`DeviceQueueCreateFlagBits`](struct.DeviceQueueCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct DeviceQueueCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const PROTECTED = DeviceQueueCreateFlagBits :: PROTECTED . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtensionProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ExtensionProperties {
pub extension_name: [std::os::raw::c_char; crate::vk1_0::MAX_EXTENSION_NAME_SIZE as usize],
pub spec_version: u32,
}
impl ExtensionProperties {
#[inline]
pub fn builder<'a>(self) -> ExtensionPropertiesBuilder<'a> {
ExtensionPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ExtensionProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ExtensionProperties")
.field("extension_name", &unsafe {
std::ffi::CStr::from_ptr(self.extension_name.as_ptr() as _)
})
.field("spec_version", &self.spec_version)
.finish()
}
}
impl Default for ExtensionProperties {
fn default() -> ExtensionProperties {
ExtensionProperties {
extension_name: unsafe { std::mem::zeroed() },
spec_version: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtensionProperties.html) · Builder of [`ExtensionProperties`](struct.ExtensionProperties.html)"]
#[repr(transparent)]
pub struct ExtensionPropertiesBuilder<'a>(ExtensionProperties, std::marker::PhantomData<&'a ()>);
impl<'a> ExtensionPropertiesBuilder<'a> {
#[inline]
pub fn new() -> ExtensionPropertiesBuilder<'a> {
ExtensionPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn extension_name(
mut self,
extension_name: [std::os::raw::c_char; crate::vk1_0::MAX_EXTENSION_NAME_SIZE as usize],
) -> Self {
self.0.extension_name = extension_name;
self
}
#[allow(unused_mut)]
#[inline]
pub fn spec_version(mut self, spec_version: u32) -> Self {
self.0.spec_version = spec_version;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ExtensionProperties {
self.0
}
}
impl<'a> std::fmt::Debug for ExtensionPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ExtensionPropertiesBuilder<'a> {
type Target = ExtensionProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ExtensionPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLayerProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct LayerProperties {
pub layer_name: [std::os::raw::c_char; crate::vk1_0::MAX_EXTENSION_NAME_SIZE as usize],
pub spec_version: u32,
pub implementation_version: u32,
pub description: [std::os::raw::c_char; crate::vk1_0::MAX_DESCRIPTION_SIZE as usize],
}
impl LayerProperties {
#[inline]
pub fn builder<'a>(self) -> LayerPropertiesBuilder<'a> {
LayerPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for LayerProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("LayerProperties")
.field("layer_name", &unsafe {
std::ffi::CStr::from_ptr(self.layer_name.as_ptr() as _)
})
.field("spec_version", &self.spec_version)
.field("implementation_version", &self.implementation_version)
.field("description", &unsafe {
std::ffi::CStr::from_ptr(self.description.as_ptr() as _)
})
.finish()
}
}
impl Default for LayerProperties {
fn default() -> LayerProperties {
LayerProperties {
layer_name: unsafe { std::mem::zeroed() },
spec_version: Default::default(),
implementation_version: Default::default(),
description: unsafe { std::mem::zeroed() },
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLayerProperties.html) · Builder of [`LayerProperties`](struct.LayerProperties.html)"]
#[repr(transparent)]
pub struct LayerPropertiesBuilder<'a>(LayerProperties, std::marker::PhantomData<&'a ()>);
impl<'a> LayerPropertiesBuilder<'a> {
#[inline]
pub fn new() -> LayerPropertiesBuilder<'a> {
LayerPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn layer_name(
mut self,
layer_name: [std::os::raw::c_char; crate::vk1_0::MAX_EXTENSION_NAME_SIZE as usize],
) -> Self {
self.0.layer_name = layer_name;
self
}
#[allow(unused_mut)]
#[inline]
pub fn spec_version(mut self, spec_version: u32) -> Self {
self.0.spec_version = spec_version;
self
}
#[allow(unused_mut)]
#[inline]
pub fn implementation_version(mut self, implementation_version: u32) -> Self {
self.0.implementation_version = implementation_version;
self
}
#[allow(unused_mut)]
#[inline]
pub fn description(
mut self,
description: [std::os::raw::c_char; crate::vk1_0::MAX_DESCRIPTION_SIZE as usize],
) -> Self {
self.0.description = description;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> LayerProperties {
self.0
}
}
impl<'a> std::fmt::Debug for LayerPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for LayerPropertiesBuilder<'a> {
type Target = LayerProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for LayerPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: handle ! ( Queue , QUEUE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueue.html) · Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubmitInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SubmitInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub wait_semaphore_count: u32,
pub p_wait_semaphores: *const crate::vk1_0::Semaphore,
pub p_wait_dst_stage_mask: *const crate::vk1_0::PipelineStageFlags,
pub command_buffer_count: u32,
pub p_command_buffers: *const crate::vk1_0::CommandBuffer,
pub signal_semaphore_count: u32,
pub p_signal_semaphores: *const crate::vk1_0::Semaphore,
}
impl SubmitInfo {
#[inline]
pub fn builder<'a>(self) -> SubmitInfoBuilder<'a> {
SubmitInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SubmitInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SubmitInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("wait_semaphore_count", &self.wait_semaphore_count)
.field("p_wait_semaphores", &self.p_wait_semaphores)
.field("p_wait_dst_stage_mask", &self.p_wait_dst_stage_mask)
.field("command_buffer_count", &self.command_buffer_count)
.field("p_command_buffers", &self.p_command_buffers)
.field("signal_semaphore_count", &self.signal_semaphore_count)
.field("p_signal_semaphores", &self.p_signal_semaphores)
.finish()
}
}
impl Default for SubmitInfo {
fn default() -> SubmitInfo {
SubmitInfo {
s_type: crate::vk1_0::StructureType::SUBMIT_INFO,
p_next: std::ptr::null(),
wait_semaphore_count: Default::default(),
p_wait_semaphores: std::ptr::null(),
p_wait_dst_stage_mask: std::ptr::null(),
command_buffer_count: Default::default(),
p_command_buffers: std::ptr::null(),
signal_semaphore_count: Default::default(),
p_signal_semaphores: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubmitInfo.html) · Builder of [`SubmitInfo`](struct.SubmitInfo.html)"]
#[repr(transparent)]
pub struct SubmitInfoBuilder<'a>(SubmitInfo, std::marker::PhantomData<&'a ()>);
impl<'a> SubmitInfoBuilder<'a> {
#[inline]
pub fn new() -> SubmitInfoBuilder<'a> {
SubmitInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn wait_semaphores(mut self, wait_semaphores: &'a [crate::vk1_0::Semaphore]) -> Self {
self.0.wait_semaphore_count = wait_semaphores.len() as _;
self.0.p_wait_semaphores = wait_semaphores.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn wait_dst_stage_mask(
mut self,
wait_dst_stage_mask: &'a [crate::vk1_0::PipelineStageFlags],
) -> Self {
self.0.wait_semaphore_count = wait_dst_stage_mask.len() as _;
self.0.p_wait_dst_stage_mask = wait_dst_stage_mask.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn command_buffers(mut self, command_buffers: &'a [crate::vk1_0::CommandBuffer]) -> Self {
self.0.command_buffer_count = command_buffers.len() as _;
self.0.p_command_buffers = command_buffers.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn signal_semaphores(mut self, signal_semaphores: &'a [crate::vk1_0::Semaphore]) -> Self {
self.0.signal_semaphore_count = signal_semaphores.len() as _;
self.0.p_signal_semaphores = signal_semaphores.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SubmitInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SubmitInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SubmitInfoBuilder<'a> {
type Target = SubmitInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SubmitInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: non_dispatchable_handle ! ( Semaphore , SEMAPHORE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphore.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineStageFlagBits.html) · Flag Bits of [`PipelineStageFlags`](struct.PipelineStageFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineStageFlagBits(pub u32);
impl PipelineStageFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineStageFlags {
PipelineStageFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PipelineStageFlagBits {
pub const TOP_OF_PIPE: Self = Self(0x00000001);
pub const DRAW_INDIRECT: Self = Self(0x00000002);
pub const VERTEX_INPUT: Self = Self(0x00000004);
pub const VERTEX_SHADER: Self = Self(0x00000008);
pub const TESSELLATION_CONTROL_SHADER: Self = Self(0x00000010);
pub const TESSELLATION_EVALUATION_SHADER: Self = Self(0x00000020);
pub const GEOMETRY_SHADER: Self = Self(0x00000040);
pub const FRAGMENT_SHADER: Self = Self(0x00000080);
pub const EARLY_FRAGMENT_TESTS: Self = Self(0x00000100);
pub const LATE_FRAGMENT_TESTS: Self = Self(0x00000200);
pub const COLOR_ATTACHMENT_OUTPUT: Self = Self(0x00000400);
pub const COMPUTE_SHADER: Self = Self(0x00000800);
pub const TRANSFER: Self = Self(0x00001000);
pub const BOTTOM_OF_PIPE: Self = Self(0x00002000);
pub const HOST: Self = Self(0x00004000);
pub const ALL_GRAPHICS: Self = Self(0x00008000);
pub const ALL_COMMANDS: Self = Self(0x00010000);
}
#[doc = "[Part of `extensions::ext_conditional_rendering`](../extensions/ext_conditional_rendering/index.html)"]
impl PipelineStageFlagBits {
pub const CONDITIONAL_RENDERING_EXT: Self = Self(0x00040000);
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl PipelineStageFlagBits {
pub const FRAGMENT_DENSITY_PROCESS_EXT: Self = Self(0x00800000);
}
#[doc = "[Part of `extensions::ext_transform_feedback`](../extensions/ext_transform_feedback/index.html)"]
impl PipelineStageFlagBits {
pub const TRANSFORM_FEEDBACK_EXT: Self = Self(0x01000000);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl PipelineStageFlagBits {
pub const RAY_TRACING_SHADER_KHR: Self = Self(0x00200000);
pub const ACCELERATION_STRUCTURE_BUILD_KHR: Self = Self(0x02000000);
}
#[doc = "[Part of `extensions::nv_device_generated_commands`](../extensions/nv_device_generated_commands/index.html)"]
impl PipelineStageFlagBits {
pub const COMMAND_PREPROCESS_NV: Self = Self(0x00020000);
}
#[doc = "[Part of `extensions::nv_mesh_shader`](../extensions/nv_mesh_shader/index.html)"]
impl PipelineStageFlagBits {
pub const TASK_SHADER_NV: Self = Self(0x00080000);
pub const MESH_SHADER_NV: Self = Self(0x00100000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl PipelineStageFlagBits {
pub const RAY_TRACING_SHADER_NV: Self = Self::RAY_TRACING_SHADER_KHR;
pub const ACCELERATION_STRUCTURE_BUILD_NV: Self = Self::ACCELERATION_STRUCTURE_BUILD_KHR;
}
#[doc = "[Part of `extensions::nv_shading_rate_image`](../extensions/nv_shading_rate_image/index.html)"]
impl PipelineStageFlagBits {
pub const SHADING_RATE_IMAGE_NV: Self = Self(0x00400000);
}
impl std::fmt::Debug for PipelineStageFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::TOP_OF_PIPE => "TOP_OF_PIPE",
&Self::DRAW_INDIRECT => "DRAW_INDIRECT",
&Self::VERTEX_INPUT => "VERTEX_INPUT",
&Self::VERTEX_SHADER => "VERTEX_SHADER",
&Self::TESSELLATION_CONTROL_SHADER => "TESSELLATION_CONTROL_SHADER",
&Self::TESSELLATION_EVALUATION_SHADER => "TESSELLATION_EVALUATION_SHADER",
&Self::GEOMETRY_SHADER => "GEOMETRY_SHADER",
&Self::FRAGMENT_SHADER => "FRAGMENT_SHADER",
&Self::EARLY_FRAGMENT_TESTS => "EARLY_FRAGMENT_TESTS",
&Self::LATE_FRAGMENT_TESTS => "LATE_FRAGMENT_TESTS",
&Self::COLOR_ATTACHMENT_OUTPUT => "COLOR_ATTACHMENT_OUTPUT",
&Self::COMPUTE_SHADER => "COMPUTE_SHADER",
&Self::TRANSFER => "TRANSFER",
&Self::BOTTOM_OF_PIPE => "BOTTOM_OF_PIPE",
&Self::HOST => "HOST",
&Self::ALL_GRAPHICS => "ALL_GRAPHICS",
&Self::ALL_COMMANDS => "ALL_COMMANDS",
&Self::CONDITIONAL_RENDERING_EXT => "CONDITIONAL_RENDERING_EXT",
&Self::FRAGMENT_DENSITY_PROCESS_EXT => "FRAGMENT_DENSITY_PROCESS_EXT",
&Self::TRANSFORM_FEEDBACK_EXT => "TRANSFORM_FEEDBACK_EXT",
&Self::RAY_TRACING_SHADER_KHR => "RAY_TRACING_SHADER_KHR",
&Self::ACCELERATION_STRUCTURE_BUILD_KHR => "ACCELERATION_STRUCTURE_BUILD_KHR",
&Self::COMMAND_PREPROCESS_NV => "COMMAND_PREPROCESS_NV",
&Self::TASK_SHADER_NV => "TASK_SHADER_NV",
&Self::MESH_SHADER_NV => "MESH_SHADER_NV",
&Self::SHADING_RATE_IMAGE_NV => "SHADING_RATE_IMAGE_NV",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineStageFlags.html) · Flags of [`PipelineStageFlagBits`](struct.PipelineStageFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineStageFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const TOP_OF_PIPE = PipelineStageFlagBits :: TOP_OF_PIPE . 0 ; const DRAW_INDIRECT = PipelineStageFlagBits :: DRAW_INDIRECT . 0 ; const VERTEX_INPUT = PipelineStageFlagBits :: VERTEX_INPUT . 0 ; const VERTEX_SHADER = PipelineStageFlagBits :: VERTEX_SHADER . 0 ; const TESSELLATION_CONTROL_SHADER = PipelineStageFlagBits :: TESSELLATION_CONTROL_SHADER . 0 ; const TESSELLATION_EVALUATION_SHADER = PipelineStageFlagBits :: TESSELLATION_EVALUATION_SHADER . 0 ; const GEOMETRY_SHADER = PipelineStageFlagBits :: GEOMETRY_SHADER . 0 ; const FRAGMENT_SHADER = PipelineStageFlagBits :: FRAGMENT_SHADER . 0 ; const EARLY_FRAGMENT_TESTS = PipelineStageFlagBits :: EARLY_FRAGMENT_TESTS . 0 ; const LATE_FRAGMENT_TESTS = PipelineStageFlagBits :: LATE_FRAGMENT_TESTS . 0 ; const COLOR_ATTACHMENT_OUTPUT = PipelineStageFlagBits :: COLOR_ATTACHMENT_OUTPUT . 0 ; const COMPUTE_SHADER = PipelineStageFlagBits :: COMPUTE_SHADER . 0 ; const TRANSFER = PipelineStageFlagBits :: TRANSFER . 0 ; const BOTTOM_OF_PIPE = PipelineStageFlagBits :: BOTTOM_OF_PIPE . 0 ; const HOST = PipelineStageFlagBits :: HOST . 0 ; const ALL_GRAPHICS = PipelineStageFlagBits :: ALL_GRAPHICS . 0 ; const ALL_COMMANDS = PipelineStageFlagBits :: ALL_COMMANDS . 0 ; const CONDITIONAL_RENDERING_EXT = PipelineStageFlagBits :: CONDITIONAL_RENDERING_EXT . 0 ; const FRAGMENT_DENSITY_PROCESS_EXT = PipelineStageFlagBits :: FRAGMENT_DENSITY_PROCESS_EXT . 0 ; const TRANSFORM_FEEDBACK_EXT = PipelineStageFlagBits :: TRANSFORM_FEEDBACK_EXT . 0 ; const RAY_TRACING_SHADER_KHR = PipelineStageFlagBits :: RAY_TRACING_SHADER_KHR . 0 ; const ACCELERATION_STRUCTURE_BUILD_KHR = PipelineStageFlagBits :: ACCELERATION_STRUCTURE_BUILD_KHR . 0 ; const COMMAND_PREPROCESS_NV = PipelineStageFlagBits :: COMMAND_PREPROCESS_NV . 0 ; const TASK_SHADER_NV = PipelineStageFlagBits :: TASK_SHADER_NV . 0 ; const MESH_SHADER_NV = PipelineStageFlagBits :: MESH_SHADER_NV . 0 ; const RAY_TRACING_SHADER_NV = PipelineStageFlagBits :: RAY_TRACING_SHADER_NV . 0 ; const ACCELERATION_STRUCTURE_BUILD_NV = PipelineStageFlagBits :: ACCELERATION_STRUCTURE_BUILD_NV . 0 ; const SHADING_RATE_IMAGE_NV = PipelineStageFlagBits :: SHADING_RATE_IMAGE_NV . 0 ; } }
crate :: handle ! ( CommandBuffer , COMMAND_BUFFER , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBuffer.html) · Handle" ) ;
crate :: non_dispatchable_handle ! ( Fence , FENCE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFence.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryAllocateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct MemoryAllocateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub allocation_size: crate::vk1_0::DeviceSize,
pub memory_type_index: u32,
}
impl MemoryAllocateInfo {
#[inline]
pub fn builder<'a>(self) -> MemoryAllocateInfoBuilder<'a> {
MemoryAllocateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for MemoryAllocateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("MemoryAllocateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("allocation_size", &self.allocation_size)
.field("memory_type_index", &self.memory_type_index)
.finish()
}
}
impl Default for MemoryAllocateInfo {
fn default() -> MemoryAllocateInfo {
MemoryAllocateInfo {
s_type: crate::vk1_0::StructureType::MEMORY_ALLOCATE_INFO,
p_next: std::ptr::null(),
allocation_size: Default::default(),
memory_type_index: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryAllocateInfo.html) · Builder of [`MemoryAllocateInfo`](struct.MemoryAllocateInfo.html)"]
#[repr(transparent)]
pub struct MemoryAllocateInfoBuilder<'a>(MemoryAllocateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> MemoryAllocateInfoBuilder<'a> {
#[inline]
pub fn new() -> MemoryAllocateInfoBuilder<'a> {
MemoryAllocateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn allocation_size(mut self, allocation_size: crate::vk1_0::DeviceSize) -> Self {
self.0.allocation_size = allocation_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_type_index(mut self, memory_type_index: u32) -> Self {
self.0.memory_type_index = memory_type_index;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> MemoryAllocateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for MemoryAllocateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for MemoryAllocateInfoBuilder<'a> {
type Target = MemoryAllocateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for MemoryAllocateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: non_dispatchable_handle ! ( DeviceMemory , DEVICE_MEMORY , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDeviceMemory.html) · Non-dispatchable Handle" ) ;
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`MemoryMapFlags`](struct.MemoryMapFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct MemoryMapFlagBits(pub u32);
impl MemoryMapFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> MemoryMapFlags {
MemoryMapFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for MemoryMapFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryMapFlags.html) · Flags of [`MemoryMapFlagBits`](struct.MemoryMapFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct MemoryMapFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMappedMemoryRange.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct MappedMemoryRange {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub memory: crate::vk1_0::DeviceMemory,
pub offset: crate::vk1_0::DeviceSize,
pub size: crate::vk1_0::DeviceSize,
}
impl MappedMemoryRange {
#[inline]
pub fn builder<'a>(self) -> MappedMemoryRangeBuilder<'a> {
MappedMemoryRangeBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for MappedMemoryRange {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("MappedMemoryRange")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("memory", &self.memory)
.field("offset", &self.offset)
.field("size", &self.size)
.finish()
}
}
impl Default for MappedMemoryRange {
fn default() -> MappedMemoryRange {
MappedMemoryRange {
s_type: crate::vk1_0::StructureType::MAPPED_MEMORY_RANGE,
p_next: std::ptr::null(),
memory: Default::default(),
offset: Default::default(),
size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMappedMemoryRange.html) · Builder of [`MappedMemoryRange`](struct.MappedMemoryRange.html)"]
#[repr(transparent)]
pub struct MappedMemoryRangeBuilder<'a>(MappedMemoryRange, std::marker::PhantomData<&'a ()>);
impl<'a> MappedMemoryRangeBuilder<'a> {
#[inline]
pub fn new() -> MappedMemoryRangeBuilder<'a> {
MappedMemoryRangeBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn memory(mut self, memory: crate::vk1_0::DeviceMemory) -> Self {
self.0.memory = memory;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::DeviceSize) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> MappedMemoryRange {
self.0
}
}
impl<'a> std::fmt::Debug for MappedMemoryRangeBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for MappedMemoryRangeBuilder<'a> {
type Target = MappedMemoryRange;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for MappedMemoryRangeBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: non_dispatchable_handle ! ( Buffer , BUFFER , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBuffer.html) · Non-dispatchable Handle" ) ;
crate :: non_dispatchable_handle ! ( Image , IMAGE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImage.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryRequirements.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct MemoryRequirements {
pub size: crate::vk1_0::DeviceSize,
pub alignment: crate::vk1_0::DeviceSize,
pub memory_type_bits: u32,
}
impl MemoryRequirements {
#[inline]
pub fn builder<'a>(self) -> MemoryRequirementsBuilder<'a> {
MemoryRequirementsBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for MemoryRequirements {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("MemoryRequirements")
.field("size", &self.size)
.field("alignment", &self.alignment)
.field("memory_type_bits", &self.memory_type_bits)
.finish()
}
}
impl Default for MemoryRequirements {
fn default() -> MemoryRequirements {
MemoryRequirements {
size: Default::default(),
alignment: Default::default(),
memory_type_bits: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryRequirements.html) · Builder of [`MemoryRequirements`](struct.MemoryRequirements.html)"]
#[repr(transparent)]
pub struct MemoryRequirementsBuilder<'a>(MemoryRequirements, std::marker::PhantomData<&'a ()>);
impl<'a> MemoryRequirementsBuilder<'a> {
#[inline]
pub fn new() -> MemoryRequirementsBuilder<'a> {
MemoryRequirementsBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn alignment(mut self, alignment: crate::vk1_0::DeviceSize) -> Self {
self.0.alignment = alignment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_type_bits(mut self, memory_type_bits: u32) -> Self {
self.0.memory_type_bits = memory_type_bits;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> MemoryRequirements {
self.0
}
}
impl<'a> std::fmt::Debug for MemoryRequirementsBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for MemoryRequirementsBuilder<'a> {
type Target = MemoryRequirements;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for MemoryRequirementsBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryRequirements.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseImageMemoryRequirements {
pub format_properties: crate::vk1_0::SparseImageFormatProperties,
pub image_mip_tail_first_lod: u32,
pub image_mip_tail_size: crate::vk1_0::DeviceSize,
pub image_mip_tail_offset: crate::vk1_0::DeviceSize,
pub image_mip_tail_stride: crate::vk1_0::DeviceSize,
}
impl SparseImageMemoryRequirements {
#[inline]
pub fn builder<'a>(self) -> SparseImageMemoryRequirementsBuilder<'a> {
SparseImageMemoryRequirementsBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseImageMemoryRequirements {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseImageMemoryRequirements")
.field("format_properties", &self.format_properties)
.field("image_mip_tail_first_lod", &self.image_mip_tail_first_lod)
.field("image_mip_tail_size", &self.image_mip_tail_size)
.field("image_mip_tail_offset", &self.image_mip_tail_offset)
.field("image_mip_tail_stride", &self.image_mip_tail_stride)
.finish()
}
}
impl Default for SparseImageMemoryRequirements {
fn default() -> SparseImageMemoryRequirements {
SparseImageMemoryRequirements {
format_properties: Default::default(),
image_mip_tail_first_lod: Default::default(),
image_mip_tail_size: Default::default(),
image_mip_tail_offset: Default::default(),
image_mip_tail_stride: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryRequirements.html) · Builder of [`SparseImageMemoryRequirements`](struct.SparseImageMemoryRequirements.html)"]
#[repr(transparent)]
pub struct SparseImageMemoryRequirementsBuilder<'a>(
SparseImageMemoryRequirements,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SparseImageMemoryRequirementsBuilder<'a> {
#[inline]
pub fn new() -> SparseImageMemoryRequirementsBuilder<'a> {
SparseImageMemoryRequirementsBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn format_properties(
mut self,
format_properties: crate::vk1_0::SparseImageFormatProperties,
) -> Self {
self.0.format_properties = format_properties;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_mip_tail_first_lod(mut self, image_mip_tail_first_lod: u32) -> Self {
self.0.image_mip_tail_first_lod = image_mip_tail_first_lod;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_mip_tail_size(mut self, image_mip_tail_size: crate::vk1_0::DeviceSize) -> Self {
self.0.image_mip_tail_size = image_mip_tail_size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_mip_tail_offset(
mut self,
image_mip_tail_offset: crate::vk1_0::DeviceSize,
) -> Self {
self.0.image_mip_tail_offset = image_mip_tail_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_mip_tail_stride(
mut self,
image_mip_tail_stride: crate::vk1_0::DeviceSize,
) -> Self {
self.0.image_mip_tail_stride = image_mip_tail_stride;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseImageMemoryRequirements {
self.0
}
}
impl<'a> std::fmt::Debug for SparseImageMemoryRequirementsBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseImageMemoryRequirementsBuilder<'a> {
type Target = SparseImageMemoryRequirements;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseImageMemoryRequirementsBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatProperties.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseImageFormatProperties {
pub aspect_mask: crate::vk1_0::ImageAspectFlags,
pub image_granularity: crate::vk1_0::Extent3D,
pub flags: crate::vk1_0::SparseImageFormatFlags,
}
impl SparseImageFormatProperties {
#[inline]
pub fn builder<'a>(self) -> SparseImageFormatPropertiesBuilder<'a> {
SparseImageFormatPropertiesBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseImageFormatProperties {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseImageFormatProperties")
.field("aspect_mask", &self.aspect_mask)
.field("image_granularity", &self.image_granularity)
.field("flags", &self.flags)
.finish()
}
}
impl Default for SparseImageFormatProperties {
fn default() -> SparseImageFormatProperties {
SparseImageFormatProperties {
aspect_mask: Default::default(),
image_granularity: Default::default(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatProperties.html) · Builder of [`SparseImageFormatProperties`](struct.SparseImageFormatProperties.html)"]
#[repr(transparent)]
pub struct SparseImageFormatPropertiesBuilder<'a>(
SparseImageFormatProperties,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SparseImageFormatPropertiesBuilder<'a> {
#[inline]
pub fn new() -> SparseImageFormatPropertiesBuilder<'a> {
SparseImageFormatPropertiesBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn aspect_mask(mut self, aspect_mask: crate::vk1_0::ImageAspectFlags) -> Self {
self.0.aspect_mask = aspect_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_granularity(mut self, image_granularity: crate::vk1_0::Extent3D) -> Self {
self.0.image_granularity = image_granularity;
self
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::SparseImageFormatFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseImageFormatProperties {
self.0
}
}
impl<'a> std::fmt::Debug for SparseImageFormatPropertiesBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseImageFormatPropertiesBuilder<'a> {
type Target = SparseImageFormatProperties;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseImageFormatPropertiesBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageAspectFlagBits.html) · Flag Bits of [`ImageAspectFlags`](struct.ImageAspectFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageAspectFlagBits(pub u32);
impl ImageAspectFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ImageAspectFlags {
ImageAspectFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageAspectFlagBits {
pub const COLOR: Self = Self(0x00000001);
pub const DEPTH: Self = Self(0x00000002);
pub const STENCIL: Self = Self(0x00000004);
pub const METADATA: Self = Self(0x00000008);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl ImageAspectFlagBits {
pub const PLANE_0: Self = Self(0x00000010);
pub const PLANE_1: Self = Self(0x00000020);
pub const PLANE_2: Self = Self(0x00000040);
}
#[doc = "[Part of `extensions::ext_image_drm_format_modifier`](../extensions/ext_image_drm_format_modifier/index.html)"]
impl ImageAspectFlagBits {
pub const MEMORY_PLANE_0_EXT: Self = Self(0x00000080);
pub const MEMORY_PLANE_1_EXT: Self = Self(0x00000100);
pub const MEMORY_PLANE_2_EXT: Self = Self(0x00000200);
pub const MEMORY_PLANE_3_EXT: Self = Self(0x00000400);
}
#[doc = "[Part of `extensions::khr_sampler_ycbcr_conversion`](../extensions/khr_sampler_ycbcr_conversion/index.html)"]
impl ImageAspectFlagBits {
pub const PLANE_0_KHR: Self = Self::PLANE_0;
pub const PLANE_1_KHR: Self = Self::PLANE_1;
pub const PLANE_2_KHR: Self = Self::PLANE_2;
}
impl std::fmt::Debug for ImageAspectFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::COLOR => "COLOR",
&Self::DEPTH => "DEPTH",
&Self::STENCIL => "STENCIL",
&Self::METADATA => "METADATA",
&Self::PLANE_0 => "PLANE_0",
&Self::PLANE_1 => "PLANE_1",
&Self::PLANE_2 => "PLANE_2",
&Self::MEMORY_PLANE_0_EXT => "MEMORY_PLANE_0_EXT",
&Self::MEMORY_PLANE_1_EXT => "MEMORY_PLANE_1_EXT",
&Self::MEMORY_PLANE_2_EXT => "MEMORY_PLANE_2_EXT",
&Self::MEMORY_PLANE_3_EXT => "MEMORY_PLANE_3_EXT",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageAspectFlags.html) · Flags of [`ImageAspectFlagBits`](struct.ImageAspectFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ImageAspectFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const COLOR = ImageAspectFlagBits :: COLOR . 0 ; const DEPTH = ImageAspectFlagBits :: DEPTH . 0 ; const STENCIL = ImageAspectFlagBits :: STENCIL . 0 ; const METADATA = ImageAspectFlagBits :: METADATA . 0 ; const PLANE_0 = ImageAspectFlagBits :: PLANE_0 . 0 ; const PLANE_1 = ImageAspectFlagBits :: PLANE_1 . 0 ; const PLANE_2 = ImageAspectFlagBits :: PLANE_2 . 0 ; const MEMORY_PLANE_0_EXT = ImageAspectFlagBits :: MEMORY_PLANE_0_EXT . 0 ; const MEMORY_PLANE_1_EXT = ImageAspectFlagBits :: MEMORY_PLANE_1_EXT . 0 ; const MEMORY_PLANE_2_EXT = ImageAspectFlagBits :: MEMORY_PLANE_2_EXT . 0 ; const MEMORY_PLANE_3_EXT = ImageAspectFlagBits :: MEMORY_PLANE_3_EXT . 0 ; const PLANE_0_KHR = ImageAspectFlagBits :: PLANE_0_KHR . 0 ; const PLANE_1_KHR = ImageAspectFlagBits :: PLANE_1_KHR . 0 ; const PLANE_2_KHR = ImageAspectFlagBits :: PLANE_2_KHR . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatFlagBits.html) · Flag Bits of [`SparseImageFormatFlags`](struct.SparseImageFormatFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SparseImageFormatFlagBits(pub u32);
impl SparseImageFormatFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> SparseImageFormatFlags {
SparseImageFormatFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SparseImageFormatFlagBits {
pub const SINGLE_MIPTAIL: Self = Self(0x00000001);
pub const ALIGNED_MIP_SIZE: Self = Self(0x00000002);
pub const NONSTANDARD_BLOCK_SIZE: Self = Self(0x00000004);
}
impl std::fmt::Debug for SparseImageFormatFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SINGLE_MIPTAIL => "SINGLE_MIPTAIL",
&Self::ALIGNED_MIP_SIZE => "ALIGNED_MIP_SIZE",
&Self::NONSTANDARD_BLOCK_SIZE => "NONSTANDARD_BLOCK_SIZE",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageFormatFlags.html) · Flags of [`SparseImageFormatFlagBits`](struct.SparseImageFormatFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct SparseImageFormatFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const SINGLE_MIPTAIL = SparseImageFormatFlagBits :: SINGLE_MIPTAIL . 0 ; const ALIGNED_MIP_SIZE = SparseImageFormatFlagBits :: ALIGNED_MIP_SIZE . 0 ; const NONSTANDARD_BLOCK_SIZE = SparseImageFormatFlagBits :: NONSTANDARD_BLOCK_SIZE . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindSparseInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BindSparseInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub wait_semaphore_count: u32,
pub p_wait_semaphores: *const crate::vk1_0::Semaphore,
pub buffer_bind_count: u32,
pub p_buffer_binds: *const crate::vk1_0::SparseBufferMemoryBindInfo,
pub image_opaque_bind_count: u32,
pub p_image_opaque_binds: *const crate::vk1_0::SparseImageOpaqueMemoryBindInfo,
pub image_bind_count: u32,
pub p_image_binds: *const crate::vk1_0::SparseImageMemoryBindInfo,
pub signal_semaphore_count: u32,
pub p_signal_semaphores: *const crate::vk1_0::Semaphore,
}
impl BindSparseInfo {
#[inline]
pub fn builder<'a>(self) -> BindSparseInfoBuilder<'a> {
BindSparseInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BindSparseInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BindSparseInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("wait_semaphore_count", &self.wait_semaphore_count)
.field("p_wait_semaphores", &self.p_wait_semaphores)
.field("buffer_bind_count", &self.buffer_bind_count)
.field("p_buffer_binds", &self.p_buffer_binds)
.field("image_opaque_bind_count", &self.image_opaque_bind_count)
.field("p_image_opaque_binds", &self.p_image_opaque_binds)
.field("image_bind_count", &self.image_bind_count)
.field("p_image_binds", &self.p_image_binds)
.field("signal_semaphore_count", &self.signal_semaphore_count)
.field("p_signal_semaphores", &self.p_signal_semaphores)
.finish()
}
}
impl Default for BindSparseInfo {
fn default() -> BindSparseInfo {
BindSparseInfo {
s_type: crate::vk1_0::StructureType::BIND_SPARSE_INFO,
p_next: std::ptr::null(),
wait_semaphore_count: Default::default(),
p_wait_semaphores: std::ptr::null(),
buffer_bind_count: Default::default(),
p_buffer_binds: std::ptr::null(),
image_opaque_bind_count: Default::default(),
p_image_opaque_binds: std::ptr::null(),
image_bind_count: Default::default(),
p_image_binds: std::ptr::null(),
signal_semaphore_count: Default::default(),
p_signal_semaphores: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBindSparseInfo.html) · Builder of [`BindSparseInfo`](struct.BindSparseInfo.html)"]
#[repr(transparent)]
pub struct BindSparseInfoBuilder<'a>(BindSparseInfo, std::marker::PhantomData<&'a ()>);
impl<'a> BindSparseInfoBuilder<'a> {
#[inline]
pub fn new() -> BindSparseInfoBuilder<'a> {
BindSparseInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn wait_semaphores(mut self, wait_semaphores: &'a [crate::vk1_0::Semaphore]) -> Self {
self.0.wait_semaphore_count = wait_semaphores.len() as _;
self.0.p_wait_semaphores = wait_semaphores.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_binds(
mut self,
buffer_binds: &'a [crate::vk1_0::SparseBufferMemoryBindInfoBuilder],
) -> Self {
self.0.buffer_bind_count = buffer_binds.len() as _;
self.0.p_buffer_binds = buffer_binds.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_opaque_binds(
mut self,
image_opaque_binds: &'a [crate::vk1_0::SparseImageOpaqueMemoryBindInfoBuilder],
) -> Self {
self.0.image_opaque_bind_count = image_opaque_binds.len() as _;
self.0.p_image_opaque_binds = image_opaque_binds.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_binds(
mut self,
image_binds: &'a [crate::vk1_0::SparseImageMemoryBindInfoBuilder],
) -> Self {
self.0.image_bind_count = image_binds.len() as _;
self.0.p_image_binds = image_binds.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn signal_semaphores(mut self, signal_semaphores: &'a [crate::vk1_0::Semaphore]) -> Self {
self.0.signal_semaphore_count = signal_semaphores.len() as _;
self.0.p_signal_semaphores = signal_semaphores.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BindSparseInfo {
self.0
}
}
impl<'a> std::fmt::Debug for BindSparseInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BindSparseInfoBuilder<'a> {
type Target = BindSparseInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BindSparseInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseBufferMemoryBindInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseBufferMemoryBindInfo {
pub buffer: crate::vk1_0::Buffer,
pub bind_count: u32,
pub p_binds: *const crate::vk1_0::SparseMemoryBind,
}
impl SparseBufferMemoryBindInfo {
#[inline]
pub fn builder<'a>(self) -> SparseBufferMemoryBindInfoBuilder<'a> {
SparseBufferMemoryBindInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseBufferMemoryBindInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseBufferMemoryBindInfo")
.field("buffer", &self.buffer)
.field("bind_count", &self.bind_count)
.field("p_binds", &self.p_binds)
.finish()
}
}
impl Default for SparseBufferMemoryBindInfo {
fn default() -> SparseBufferMemoryBindInfo {
SparseBufferMemoryBindInfo {
buffer: Default::default(),
bind_count: Default::default(),
p_binds: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseBufferMemoryBindInfo.html) · Builder of [`SparseBufferMemoryBindInfo`](struct.SparseBufferMemoryBindInfo.html)"]
#[repr(transparent)]
pub struct SparseBufferMemoryBindInfoBuilder<'a>(
SparseBufferMemoryBindInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SparseBufferMemoryBindInfoBuilder<'a> {
#[inline]
pub fn new() -> SparseBufferMemoryBindInfoBuilder<'a> {
SparseBufferMemoryBindInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn buffer(mut self, buffer: crate::vk1_0::Buffer) -> Self {
self.0.buffer = buffer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn binds(mut self, binds: &'a [crate::vk1_0::SparseMemoryBindBuilder]) -> Self {
self.0.bind_count = binds.len() as _;
self.0.p_binds = binds.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseBufferMemoryBindInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SparseBufferMemoryBindInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseBufferMemoryBindInfoBuilder<'a> {
type Target = SparseBufferMemoryBindInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseBufferMemoryBindInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseMemoryBind.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseMemoryBind {
pub resource_offset: crate::vk1_0::DeviceSize,
pub size: crate::vk1_0::DeviceSize,
pub memory: crate::vk1_0::DeviceMemory,
pub memory_offset: crate::vk1_0::DeviceSize,
pub flags: crate::vk1_0::SparseMemoryBindFlags,
}
impl SparseMemoryBind {
#[inline]
pub fn builder<'a>(self) -> SparseMemoryBindBuilder<'a> {
SparseMemoryBindBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseMemoryBind {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseMemoryBind")
.field("resource_offset", &self.resource_offset)
.field("size", &self.size)
.field("memory", &self.memory)
.field("memory_offset", &self.memory_offset)
.field("flags", &self.flags)
.finish()
}
}
impl Default for SparseMemoryBind {
fn default() -> SparseMemoryBind {
SparseMemoryBind {
resource_offset: Default::default(),
size: Default::default(),
memory: Default::default(),
memory_offset: Default::default(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseMemoryBind.html) · Builder of [`SparseMemoryBind`](struct.SparseMemoryBind.html)"]
#[repr(transparent)]
pub struct SparseMemoryBindBuilder<'a>(SparseMemoryBind, std::marker::PhantomData<&'a ()>);
impl<'a> SparseMemoryBindBuilder<'a> {
#[inline]
pub fn new() -> SparseMemoryBindBuilder<'a> {
SparseMemoryBindBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn resource_offset(mut self, resource_offset: crate::vk1_0::DeviceSize) -> Self {
self.0.resource_offset = resource_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory(mut self, memory: crate::vk1_0::DeviceMemory) -> Self {
self.0.memory = memory;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_offset(mut self, memory_offset: crate::vk1_0::DeviceSize) -> Self {
self.0.memory_offset = memory_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::SparseMemoryBindFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseMemoryBind {
self.0
}
}
impl<'a> std::fmt::Debug for SparseMemoryBindBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseMemoryBindBuilder<'a> {
type Target = SparseMemoryBind;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseMemoryBindBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseMemoryBindFlagBits.html) · Flag Bits of [`SparseMemoryBindFlags`](struct.SparseMemoryBindFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SparseMemoryBindFlagBits(pub u32);
impl SparseMemoryBindFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> SparseMemoryBindFlags {
SparseMemoryBindFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SparseMemoryBindFlagBits {
pub const METADATA: Self = Self(0x00000001);
}
impl std::fmt::Debug for SparseMemoryBindFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::METADATA => "METADATA",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseMemoryBindFlags.html) · Flags of [`SparseMemoryBindFlagBits`](struct.SparseMemoryBindFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct SparseMemoryBindFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const METADATA = SparseMemoryBindFlagBits :: METADATA . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseImageOpaqueMemoryBindInfo {
pub image: crate::vk1_0::Image,
pub bind_count: u32,
pub p_binds: *const crate::vk1_0::SparseMemoryBind,
}
impl SparseImageOpaqueMemoryBindInfo {
#[inline]
pub fn builder<'a>(self) -> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
SparseImageOpaqueMemoryBindInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseImageOpaqueMemoryBindInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseImageOpaqueMemoryBindInfo")
.field("image", &self.image)
.field("bind_count", &self.bind_count)
.field("p_binds", &self.p_binds)
.finish()
}
}
impl Default for SparseImageOpaqueMemoryBindInfo {
fn default() -> SparseImageOpaqueMemoryBindInfo {
SparseImageOpaqueMemoryBindInfo {
image: Default::default(),
bind_count: Default::default(),
p_binds: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html) · Builder of [`SparseImageOpaqueMemoryBindInfo`](struct.SparseImageOpaqueMemoryBindInfo.html)"]
#[repr(transparent)]
pub struct SparseImageOpaqueMemoryBindInfoBuilder<'a>(
SparseImageOpaqueMemoryBindInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
#[inline]
pub fn new() -> SparseImageOpaqueMemoryBindInfoBuilder<'a> {
SparseImageOpaqueMemoryBindInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn image(mut self, image: crate::vk1_0::Image) -> Self {
self.0.image = image;
self
}
#[allow(unused_mut)]
#[inline]
pub fn binds(mut self, binds: &'a [crate::vk1_0::SparseMemoryBindBuilder]) -> Self {
self.0.bind_count = binds.len() as _;
self.0.p_binds = binds.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseImageOpaqueMemoryBindInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
type Target = SparseImageOpaqueMemoryBindInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseImageOpaqueMemoryBindInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBindInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseImageMemoryBindInfo {
pub image: crate::vk1_0::Image,
pub bind_count: u32,
pub p_binds: *const crate::vk1_0::SparseImageMemoryBind,
}
impl SparseImageMemoryBindInfo {
#[inline]
pub fn builder<'a>(self) -> SparseImageMemoryBindInfoBuilder<'a> {
SparseImageMemoryBindInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseImageMemoryBindInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseImageMemoryBindInfo")
.field("image", &self.image)
.field("bind_count", &self.bind_count)
.field("p_binds", &self.p_binds)
.finish()
}
}
impl Default for SparseImageMemoryBindInfo {
fn default() -> SparseImageMemoryBindInfo {
SparseImageMemoryBindInfo {
image: Default::default(),
bind_count: Default::default(),
p_binds: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBindInfo.html) · Builder of [`SparseImageMemoryBindInfo`](struct.SparseImageMemoryBindInfo.html)"]
#[repr(transparent)]
pub struct SparseImageMemoryBindInfoBuilder<'a>(
SparseImageMemoryBindInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SparseImageMemoryBindInfoBuilder<'a> {
#[inline]
pub fn new() -> SparseImageMemoryBindInfoBuilder<'a> {
SparseImageMemoryBindInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn image(mut self, image: crate::vk1_0::Image) -> Self {
self.0.image = image;
self
}
#[allow(unused_mut)]
#[inline]
pub fn binds(mut self, binds: &'a [crate::vk1_0::SparseImageMemoryBindBuilder]) -> Self {
self.0.bind_count = binds.len() as _;
self.0.p_binds = binds.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseImageMemoryBindInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SparseImageMemoryBindInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseImageMemoryBindInfoBuilder<'a> {
type Target = SparseImageMemoryBindInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseImageMemoryBindInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBind.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SparseImageMemoryBind {
pub subresource: crate::vk1_0::ImageSubresource,
pub offset: crate::vk1_0::Offset3D,
pub extent: crate::vk1_0::Extent3D,
pub memory: crate::vk1_0::DeviceMemory,
pub memory_offset: crate::vk1_0::DeviceSize,
pub flags: crate::vk1_0::SparseMemoryBindFlags,
}
impl SparseImageMemoryBind {
#[inline]
pub fn builder<'a>(self) -> SparseImageMemoryBindBuilder<'a> {
SparseImageMemoryBindBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SparseImageMemoryBind {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SparseImageMemoryBind")
.field("subresource", &self.subresource)
.field("offset", &self.offset)
.field("extent", &self.extent)
.field("memory", &self.memory)
.field("memory_offset", &self.memory_offset)
.field("flags", &self.flags)
.finish()
}
}
impl Default for SparseImageMemoryBind {
fn default() -> SparseImageMemoryBind {
SparseImageMemoryBind {
subresource: Default::default(),
offset: Default::default(),
extent: Default::default(),
memory: Default::default(),
memory_offset: Default::default(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSparseImageMemoryBind.html) · Builder of [`SparseImageMemoryBind`](struct.SparseImageMemoryBind.html)"]
#[repr(transparent)]
pub struct SparseImageMemoryBindBuilder<'a>(
SparseImageMemoryBind,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SparseImageMemoryBindBuilder<'a> {
#[inline]
pub fn new() -> SparseImageMemoryBindBuilder<'a> {
SparseImageMemoryBindBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn subresource(mut self, subresource: crate::vk1_0::ImageSubresource) -> Self {
self.0.subresource = subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::Offset3D) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn extent(mut self, extent: crate::vk1_0::Extent3D) -> Self {
self.0.extent = extent;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory(mut self, memory: crate::vk1_0::DeviceMemory) -> Self {
self.0.memory = memory;
self
}
#[allow(unused_mut)]
#[inline]
pub fn memory_offset(mut self, memory_offset: crate::vk1_0::DeviceSize) -> Self {
self.0.memory_offset = memory_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::SparseMemoryBindFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SparseImageMemoryBind {
self.0
}
}
impl<'a> std::fmt::Debug for SparseImageMemoryBindBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SparseImageMemoryBindBuilder<'a> {
type Target = SparseImageMemoryBind;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SparseImageMemoryBindBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresource.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageSubresource {
pub aspect_mask: crate::vk1_0::ImageAspectFlags,
pub mip_level: u32,
pub array_layer: u32,
}
impl ImageSubresource {
#[inline]
pub fn builder<'a>(self) -> ImageSubresourceBuilder<'a> {
ImageSubresourceBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageSubresource {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageSubresource")
.field("aspect_mask", &self.aspect_mask)
.field("mip_level", &self.mip_level)
.field("array_layer", &self.array_layer)
.finish()
}
}
impl Default for ImageSubresource {
fn default() -> ImageSubresource {
ImageSubresource {
aspect_mask: Default::default(),
mip_level: Default::default(),
array_layer: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresource.html) · Builder of [`ImageSubresource`](struct.ImageSubresource.html)"]
#[repr(transparent)]
pub struct ImageSubresourceBuilder<'a>(ImageSubresource, std::marker::PhantomData<&'a ()>);
impl<'a> ImageSubresourceBuilder<'a> {
#[inline]
pub fn new() -> ImageSubresourceBuilder<'a> {
ImageSubresourceBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn aspect_mask(mut self, aspect_mask: crate::vk1_0::ImageAspectFlags) -> Self {
self.0.aspect_mask = aspect_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mip_level(mut self, mip_level: u32) -> Self {
self.0.mip_level = mip_level;
self
}
#[allow(unused_mut)]
#[inline]
pub fn array_layer(mut self, array_layer: u32) -> Self {
self.0.array_layer = array_layer;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageSubresource {
self.0
}
}
impl<'a> std::fmt::Debug for ImageSubresourceBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageSubresourceBuilder<'a> {
type Target = ImageSubresource;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageSubresourceBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset3D.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Offset3D {
pub x: i32,
pub y: i32,
pub z: i32,
}
impl Offset3D {
#[inline]
pub fn builder<'a>(self) -> Offset3DBuilder<'a> {
Offset3DBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for Offset3D {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("Offset3D")
.field("x", &self.x)
.field("y", &self.y)
.field("z", &self.z)
.finish()
}
}
impl Default for Offset3D {
fn default() -> Offset3D {
Offset3D {
x: Default::default(),
y: Default::default(),
z: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset3D.html) · Builder of [`Offset3D`](struct.Offset3D.html)"]
#[repr(transparent)]
pub struct Offset3DBuilder<'a>(Offset3D, std::marker::PhantomData<&'a ()>);
impl<'a> Offset3DBuilder<'a> {
#[inline]
pub fn new() -> Offset3DBuilder<'a> {
Offset3DBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn x(mut self, x: i32) -> Self {
self.0.x = x;
self
}
#[allow(unused_mut)]
#[inline]
pub fn y(mut self, y: i32) -> Self {
self.0.y = y;
self
}
#[allow(unused_mut)]
#[inline]
pub fn z(mut self, z: i32) -> Self {
self.0.z = z;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> Offset3D {
self.0
}
}
impl<'a> std::fmt::Debug for Offset3DBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for Offset3DBuilder<'a> {
type Target = Offset3D;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for Offset3DBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct FenceCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::FenceCreateFlags,
}
impl FenceCreateInfo {
#[inline]
pub fn builder<'a>(self) -> FenceCreateInfoBuilder<'a> {
FenceCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for FenceCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("FenceCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.finish()
}
}
impl Default for FenceCreateInfo {
fn default() -> FenceCreateInfo {
FenceCreateInfo {
s_type: crate::vk1_0::StructureType::FENCE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceCreateInfo.html) · Builder of [`FenceCreateInfo`](struct.FenceCreateInfo.html)"]
#[repr(transparent)]
pub struct FenceCreateInfoBuilder<'a>(FenceCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> FenceCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> FenceCreateInfoBuilder<'a> {
FenceCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::FenceCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> FenceCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for FenceCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for FenceCreateInfoBuilder<'a> {
type Target = FenceCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for FenceCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceCreateFlagBits.html) · Flag Bits of [`FenceCreateFlags`](struct.FenceCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct FenceCreateFlagBits(pub u32);
impl FenceCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> FenceCreateFlags {
FenceCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl FenceCreateFlagBits {
pub const SIGNALED: Self = Self(0x00000001);
}
impl std::fmt::Debug for FenceCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SIGNALED => "SIGNALED",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFenceCreateFlags.html) · Flags of [`FenceCreateFlagBits`](struct.FenceCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct FenceCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const SIGNALED = FenceCreateFlagBits :: SIGNALED . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SemaphoreCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::SemaphoreCreateFlags,
}
impl SemaphoreCreateInfo {
#[inline]
pub fn builder<'a>(self) -> SemaphoreCreateInfoBuilder<'a> {
SemaphoreCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SemaphoreCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SemaphoreCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.finish()
}
}
impl Default for SemaphoreCreateInfo {
fn default() -> SemaphoreCreateInfo {
SemaphoreCreateInfo {
s_type: crate::vk1_0::StructureType::SEMAPHORE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreCreateInfo.html) · Builder of [`SemaphoreCreateInfo`](struct.SemaphoreCreateInfo.html)"]
#[repr(transparent)]
pub struct SemaphoreCreateInfoBuilder<'a>(SemaphoreCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> SemaphoreCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> SemaphoreCreateInfoBuilder<'a> {
SemaphoreCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::SemaphoreCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SemaphoreCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SemaphoreCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SemaphoreCreateInfoBuilder<'a> {
type Target = SemaphoreCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SemaphoreCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`SemaphoreCreateFlags`](struct.SemaphoreCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SemaphoreCreateFlagBits(pub u32);
impl SemaphoreCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> SemaphoreCreateFlags {
SemaphoreCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for SemaphoreCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSemaphoreCreateFlags.html) · Flags of [`SemaphoreCreateFlagBits`](struct.SemaphoreCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct SemaphoreCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEventCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct EventCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::EventCreateFlags,
}
impl EventCreateInfo {
#[inline]
pub fn builder<'a>(self) -> EventCreateInfoBuilder<'a> {
EventCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for EventCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("EventCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.finish()
}
}
impl Default for EventCreateInfo {
fn default() -> EventCreateInfo {
EventCreateInfo {
s_type: crate::vk1_0::StructureType::EVENT_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEventCreateInfo.html) · Builder of [`EventCreateInfo`](struct.EventCreateInfo.html)"]
#[repr(transparent)]
pub struct EventCreateInfoBuilder<'a>(EventCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> EventCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> EventCreateInfoBuilder<'a> {
EventCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::EventCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> EventCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for EventCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for EventCreateInfoBuilder<'a> {
type Target = EventCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for EventCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`EventCreateFlags`](struct.EventCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct EventCreateFlagBits(pub u32);
impl EventCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> EventCreateFlags {
EventCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for EventCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEventCreateFlags.html) · Flags of [`EventCreateFlagBits`](struct.EventCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct EventCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
crate :: non_dispatchable_handle ! ( Event , EVENT , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkEvent.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct QueryPoolCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::QueryPoolCreateFlags,
pub query_type: crate::vk1_0::QueryType,
pub query_count: u32,
pub pipeline_statistics: crate::vk1_0::QueryPipelineStatisticFlags,
}
impl QueryPoolCreateInfo {
#[inline]
pub fn builder<'a>(self) -> QueryPoolCreateInfoBuilder<'a> {
QueryPoolCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for QueryPoolCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("QueryPoolCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("query_type", &self.query_type)
.field("query_count", &self.query_count)
.field("pipeline_statistics", &self.pipeline_statistics)
.finish()
}
}
impl Default for QueryPoolCreateInfo {
fn default() -> QueryPoolCreateInfo {
QueryPoolCreateInfo {
s_type: crate::vk1_0::StructureType::QUERY_POOL_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
query_type: Default::default(),
query_count: Default::default(),
pipeline_statistics: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateInfo.html) · Builder of [`QueryPoolCreateInfo`](struct.QueryPoolCreateInfo.html)"]
#[repr(transparent)]
pub struct QueryPoolCreateInfoBuilder<'a>(QueryPoolCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> QueryPoolCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> QueryPoolCreateInfoBuilder<'a> {
QueryPoolCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::QueryPoolCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn query_type(mut self, query_type: crate::vk1_0::QueryType) -> Self {
self.0.query_type = query_type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn query_count(mut self, query_count: u32) -> Self {
self.0.query_count = query_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pipeline_statistics(
mut self,
pipeline_statistics: crate::vk1_0::QueryPipelineStatisticFlags,
) -> Self {
self.0.pipeline_statistics = pipeline_statistics;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> QueryPoolCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for QueryPoolCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for QueryPoolCreateInfoBuilder<'a> {
type Target = QueryPoolCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for QueryPoolCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`QueryPoolCreateFlags`](struct.QueryPoolCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct QueryPoolCreateFlagBits(pub u32);
impl QueryPoolCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> QueryPoolCreateFlags {
QueryPoolCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for QueryPoolCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPoolCreateFlags.html) · Flags of [`QueryPoolCreateFlagBits`](struct.QueryPoolCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct QueryPoolCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct QueryType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl QueryType {
pub const OCCLUSION: Self = Self(0);
pub const PIPELINE_STATISTICS: Self = Self(1);
pub const TIMESTAMP: Self = Self(2);
}
#[doc = "[Part of `extensions::ext_transform_feedback`](../extensions/ext_transform_feedback/index.html)"]
impl QueryType {
pub const TRANSFORM_FEEDBACK_STREAM_EXT: Self = Self(1000028004);
}
#[doc = "[Part of `extensions::intel_performance_query`](../extensions/intel_performance_query/index.html)"]
impl QueryType {
pub const PERFORMANCE_QUERY_INTEL: Self = Self(1000210000);
}
#[doc = "[Part of `extensions::khr_performance_query`](../extensions/khr_performance_query/index.html)"]
impl QueryType {
pub const PERFORMANCE_QUERY_KHR: Self = Self(1000116000);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl QueryType {
pub const ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: Self = Self(1000165000);
pub const ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR: Self = Self(1000150000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl QueryType {
pub const ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV: Self =
Self::ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR;
}
impl std::fmt::Debug for QueryType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::OCCLUSION => "OCCLUSION",
&Self::PIPELINE_STATISTICS => "PIPELINE_STATISTICS",
&Self::TIMESTAMP => "TIMESTAMP",
&Self::TRANSFORM_FEEDBACK_STREAM_EXT => "TRANSFORM_FEEDBACK_STREAM_EXT",
&Self::PERFORMANCE_QUERY_INTEL => "PERFORMANCE_QUERY_INTEL",
&Self::PERFORMANCE_QUERY_KHR => "PERFORMANCE_QUERY_KHR",
&Self::ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR => {
"ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"
}
&Self::ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR => {
"ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"
}
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPipelineStatisticFlagBits.html) · Flag Bits of [`QueryPipelineStatisticFlags`](struct.QueryPipelineStatisticFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct QueryPipelineStatisticFlagBits(pub u32);
impl QueryPipelineStatisticFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> QueryPipelineStatisticFlags {
QueryPipelineStatisticFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl QueryPipelineStatisticFlagBits {
pub const INPUT_ASSEMBLY_VERTICES: Self = Self(0x00000001);
pub const INPUT_ASSEMBLY_PRIMITIVES: Self = Self(0x00000002);
pub const VERTEX_SHADER_INVOCATIONS: Self = Self(0x00000004);
pub const GEOMETRY_SHADER_INVOCATIONS: Self = Self(0x00000008);
pub const GEOMETRY_SHADER_PRIMITIVES: Self = Self(0x00000010);
pub const CLIPPING_INVOCATIONS: Self = Self(0x00000020);
pub const CLIPPING_PRIMITIVES: Self = Self(0x00000040);
pub const FRAGMENT_SHADER_INVOCATIONS: Self = Self(0x00000080);
pub const TESSELLATION_CONTROL_SHADER_PATCHES: Self = Self(0x00000100);
pub const TESSELLATION_EVALUATION_SHADER_INVOCATIONS: Self = Self(0x00000200);
pub const COMPUTE_SHADER_INVOCATIONS: Self = Self(0x00000400);
}
impl std::fmt::Debug for QueryPipelineStatisticFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::INPUT_ASSEMBLY_VERTICES => "INPUT_ASSEMBLY_VERTICES",
&Self::INPUT_ASSEMBLY_PRIMITIVES => "INPUT_ASSEMBLY_PRIMITIVES",
&Self::VERTEX_SHADER_INVOCATIONS => "VERTEX_SHADER_INVOCATIONS",
&Self::GEOMETRY_SHADER_INVOCATIONS => "GEOMETRY_SHADER_INVOCATIONS",
&Self::GEOMETRY_SHADER_PRIMITIVES => "GEOMETRY_SHADER_PRIMITIVES",
&Self::CLIPPING_INVOCATIONS => "CLIPPING_INVOCATIONS",
&Self::CLIPPING_PRIMITIVES => "CLIPPING_PRIMITIVES",
&Self::FRAGMENT_SHADER_INVOCATIONS => "FRAGMENT_SHADER_INVOCATIONS",
&Self::TESSELLATION_CONTROL_SHADER_PATCHES => "TESSELLATION_CONTROL_SHADER_PATCHES",
&Self::TESSELLATION_EVALUATION_SHADER_INVOCATIONS => {
"TESSELLATION_EVALUATION_SHADER_INVOCATIONS"
}
&Self::COMPUTE_SHADER_INVOCATIONS => "COMPUTE_SHADER_INVOCATIONS",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPipelineStatisticFlags.html) · Flags of [`QueryPipelineStatisticFlagBits`](struct.QueryPipelineStatisticFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct QueryPipelineStatisticFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const INPUT_ASSEMBLY_VERTICES = QueryPipelineStatisticFlagBits :: INPUT_ASSEMBLY_VERTICES . 0 ; const INPUT_ASSEMBLY_PRIMITIVES = QueryPipelineStatisticFlagBits :: INPUT_ASSEMBLY_PRIMITIVES . 0 ; const VERTEX_SHADER_INVOCATIONS = QueryPipelineStatisticFlagBits :: VERTEX_SHADER_INVOCATIONS . 0 ; const GEOMETRY_SHADER_INVOCATIONS = QueryPipelineStatisticFlagBits :: GEOMETRY_SHADER_INVOCATIONS . 0 ; const GEOMETRY_SHADER_PRIMITIVES = QueryPipelineStatisticFlagBits :: GEOMETRY_SHADER_PRIMITIVES . 0 ; const CLIPPING_INVOCATIONS = QueryPipelineStatisticFlagBits :: CLIPPING_INVOCATIONS . 0 ; const CLIPPING_PRIMITIVES = QueryPipelineStatisticFlagBits :: CLIPPING_PRIMITIVES . 0 ; const FRAGMENT_SHADER_INVOCATIONS = QueryPipelineStatisticFlagBits :: FRAGMENT_SHADER_INVOCATIONS . 0 ; const TESSELLATION_CONTROL_SHADER_PATCHES = QueryPipelineStatisticFlagBits :: TESSELLATION_CONTROL_SHADER_PATCHES . 0 ; const TESSELLATION_EVALUATION_SHADER_INVOCATIONS = QueryPipelineStatisticFlagBits :: TESSELLATION_EVALUATION_SHADER_INVOCATIONS . 0 ; const COMPUTE_SHADER_INVOCATIONS = QueryPipelineStatisticFlagBits :: COMPUTE_SHADER_INVOCATIONS . 0 ; } }
crate :: non_dispatchable_handle ! ( QueryPool , QUERY_POOL , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryPool.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryResultFlagBits.html) · Flag Bits of [`QueryResultFlags`](struct.QueryResultFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct QueryResultFlagBits(pub u32);
impl QueryResultFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> QueryResultFlags {
QueryResultFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl QueryResultFlagBits {
pub const _64: Self = Self(0x00000001);
pub const WAIT: Self = Self(0x00000002);
pub const WITH_AVAILABILITY: Self = Self(0x00000004);
pub const PARTIAL: Self = Self(0x00000008);
}
impl std::fmt::Debug for QueryResultFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::_64 => "_64",
&Self::WAIT => "WAIT",
&Self::WITH_AVAILABILITY => "WITH_AVAILABILITY",
&Self::PARTIAL => "PARTIAL",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryResultFlags.html) · Flags of [`QueryResultFlagBits`](struct.QueryResultFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct QueryResultFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const _64 = QueryResultFlagBits :: _64 . 0 ; const WAIT = QueryResultFlagBits :: WAIT . 0 ; const WITH_AVAILABILITY = QueryResultFlagBits :: WITH_AVAILABILITY . 0 ; const PARTIAL = QueryResultFlagBits :: PARTIAL . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BufferCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::BufferCreateFlags,
pub size: crate::vk1_0::DeviceSize,
pub usage: crate::vk1_0::BufferUsageFlags,
pub sharing_mode: crate::vk1_0::SharingMode,
pub queue_family_index_count: u32,
pub p_queue_family_indices: *const u32,
}
impl BufferCreateInfo {
#[inline]
pub fn builder<'a>(self) -> BufferCreateInfoBuilder<'a> {
BufferCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BufferCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BufferCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("size", &self.size)
.field("usage", &self.usage)
.field("sharing_mode", &self.sharing_mode)
.field("queue_family_index_count", &self.queue_family_index_count)
.field("p_queue_family_indices", &self.p_queue_family_indices)
.finish()
}
}
impl Default for BufferCreateInfo {
fn default() -> BufferCreateInfo {
BufferCreateInfo {
s_type: crate::vk1_0::StructureType::BUFFER_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
size: Default::default(),
usage: Default::default(),
sharing_mode: Default::default(),
queue_family_index_count: Default::default(),
p_queue_family_indices: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCreateInfo.html) · Builder of [`BufferCreateInfo`](struct.BufferCreateInfo.html)"]
#[repr(transparent)]
pub struct BufferCreateInfoBuilder<'a>(BufferCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> BufferCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> BufferCreateInfoBuilder<'a> {
BufferCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::BufferCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn usage(mut self, usage: crate::vk1_0::BufferUsageFlags) -> Self {
self.0.usage = usage;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sharing_mode(mut self, sharing_mode: crate::vk1_0::SharingMode) -> Self {
self.0.sharing_mode = sharing_mode;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
self.0.queue_family_index_count = queue_family_indices.len() as _;
self.0.p_queue_family_indices = queue_family_indices.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BufferCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for BufferCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BufferCreateInfoBuilder<'a> {
type Target = BufferCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BufferCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCreateFlagBits.html) · Flag Bits of [`BufferCreateFlags`](struct.BufferCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct BufferCreateFlagBits(pub u32);
impl BufferCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> BufferCreateFlags {
BufferCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl BufferCreateFlagBits {
pub const SPARSE_BINDING: Self = Self(0x00000001);
pub const SPARSE_RESIDENCY: Self = Self(0x00000002);
pub const SPARSE_ALIASED: Self = Self(0x00000004);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl BufferCreateFlagBits {
pub const PROTECTED: Self = Self(0x00000008);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl BufferCreateFlagBits {
pub const DEVICE_ADDRESS_CAPTURE_REPLAY: Self = Self(0x00000010);
}
#[doc = "[Part of `extensions::ext_buffer_device_address`](../extensions/ext_buffer_device_address/index.html)"]
impl BufferCreateFlagBits {
pub const DEVICE_ADDRESS_CAPTURE_REPLAY_EXT: Self = Self::DEVICE_ADDRESS_CAPTURE_REPLAY;
}
#[doc = "[Part of `extensions::khr_buffer_device_address`](../extensions/khr_buffer_device_address/index.html)"]
impl BufferCreateFlagBits {
pub const DEVICE_ADDRESS_CAPTURE_REPLAY_KHR: Self = Self::DEVICE_ADDRESS_CAPTURE_REPLAY;
}
impl std::fmt::Debug for BufferCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SPARSE_BINDING => "SPARSE_BINDING",
&Self::SPARSE_RESIDENCY => "SPARSE_RESIDENCY",
&Self::SPARSE_ALIASED => "SPARSE_ALIASED",
&Self::PROTECTED => "PROTECTED",
&Self::DEVICE_ADDRESS_CAPTURE_REPLAY => "DEVICE_ADDRESS_CAPTURE_REPLAY",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCreateFlags.html) · Flags of [`BufferCreateFlagBits`](struct.BufferCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct BufferCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const SPARSE_BINDING = BufferCreateFlagBits :: SPARSE_BINDING . 0 ; const SPARSE_RESIDENCY = BufferCreateFlagBits :: SPARSE_RESIDENCY . 0 ; const SPARSE_ALIASED = BufferCreateFlagBits :: SPARSE_ALIASED . 0 ; const PROTECTED = BufferCreateFlagBits :: PROTECTED . 0 ; const DEVICE_ADDRESS_CAPTURE_REPLAY = BufferCreateFlagBits :: DEVICE_ADDRESS_CAPTURE_REPLAY . 0 ; const DEVICE_ADDRESS_CAPTURE_REPLAY_EXT = BufferCreateFlagBits :: DEVICE_ADDRESS_CAPTURE_REPLAY_EXT . 0 ; const DEVICE_ADDRESS_CAPTURE_REPLAY_KHR = BufferCreateFlagBits :: DEVICE_ADDRESS_CAPTURE_REPLAY_KHR . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferUsageFlagBits.html) · Flag Bits of [`BufferUsageFlags`](struct.BufferUsageFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct BufferUsageFlagBits(pub u32);
impl BufferUsageFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> BufferUsageFlags {
BufferUsageFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl BufferUsageFlagBits {
pub const TRANSFER_SRC: Self = Self(0x00000001);
pub const TRANSFER_DST: Self = Self(0x00000002);
pub const UNIFORM_TEXEL_BUFFER: Self = Self(0x00000004);
pub const STORAGE_TEXEL_BUFFER: Self = Self(0x00000008);
pub const UNIFORM_BUFFER: Self = Self(0x00000010);
pub const STORAGE_BUFFER: Self = Self(0x00000020);
pub const INDEX_BUFFER: Self = Self(0x00000040);
pub const VERTEX_BUFFER: Self = Self(0x00000080);
pub const INDIRECT_BUFFER: Self = Self(0x00000100);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl BufferUsageFlagBits {
pub const SHADER_DEVICE_ADDRESS: Self = Self(0x00020000);
}
#[doc = "[Part of `extensions::ext_buffer_device_address`](../extensions/ext_buffer_device_address/index.html)"]
impl BufferUsageFlagBits {
pub const SHADER_DEVICE_ADDRESS_EXT: Self = Self::SHADER_DEVICE_ADDRESS;
}
#[doc = "[Part of `extensions::ext_conditional_rendering`](../extensions/ext_conditional_rendering/index.html)"]
impl BufferUsageFlagBits {
pub const CONDITIONAL_RENDERING_EXT: Self = Self(0x00000200);
}
#[doc = "[Part of `extensions::ext_transform_feedback`](../extensions/ext_transform_feedback/index.html)"]
impl BufferUsageFlagBits {
pub const TRANSFORM_FEEDBACK_BUFFER_EXT: Self = Self(0x00000800);
pub const TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT: Self = Self(0x00001000);
}
#[doc = "[Part of `extensions::khr_buffer_device_address`](../extensions/khr_buffer_device_address/index.html)"]
impl BufferUsageFlagBits {
pub const SHADER_DEVICE_ADDRESS_KHR: Self = Self::SHADER_DEVICE_ADDRESS;
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl BufferUsageFlagBits {
pub const RAY_TRACING_KHR: Self = Self(0x00000400);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl BufferUsageFlagBits {
pub const RAY_TRACING_NV: Self = Self::RAY_TRACING_KHR;
}
impl std::fmt::Debug for BufferUsageFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::TRANSFER_SRC => "TRANSFER_SRC",
&Self::TRANSFER_DST => "TRANSFER_DST",
&Self::UNIFORM_TEXEL_BUFFER => "UNIFORM_TEXEL_BUFFER",
&Self::STORAGE_TEXEL_BUFFER => "STORAGE_TEXEL_BUFFER",
&Self::UNIFORM_BUFFER => "UNIFORM_BUFFER",
&Self::STORAGE_BUFFER => "STORAGE_BUFFER",
&Self::INDEX_BUFFER => "INDEX_BUFFER",
&Self::VERTEX_BUFFER => "VERTEX_BUFFER",
&Self::INDIRECT_BUFFER => "INDIRECT_BUFFER",
&Self::SHADER_DEVICE_ADDRESS => "SHADER_DEVICE_ADDRESS",
&Self::CONDITIONAL_RENDERING_EXT => "CONDITIONAL_RENDERING_EXT",
&Self::TRANSFORM_FEEDBACK_BUFFER_EXT => "TRANSFORM_FEEDBACK_BUFFER_EXT",
&Self::TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT => "TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT",
&Self::RAY_TRACING_KHR => "RAY_TRACING_KHR",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferUsageFlags.html) · Flags of [`BufferUsageFlagBits`](struct.BufferUsageFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct BufferUsageFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const TRANSFER_SRC = BufferUsageFlagBits :: TRANSFER_SRC . 0 ; const TRANSFER_DST = BufferUsageFlagBits :: TRANSFER_DST . 0 ; const UNIFORM_TEXEL_BUFFER = BufferUsageFlagBits :: UNIFORM_TEXEL_BUFFER . 0 ; const STORAGE_TEXEL_BUFFER = BufferUsageFlagBits :: STORAGE_TEXEL_BUFFER . 0 ; const UNIFORM_BUFFER = BufferUsageFlagBits :: UNIFORM_BUFFER . 0 ; const STORAGE_BUFFER = BufferUsageFlagBits :: STORAGE_BUFFER . 0 ; const INDEX_BUFFER = BufferUsageFlagBits :: INDEX_BUFFER . 0 ; const VERTEX_BUFFER = BufferUsageFlagBits :: VERTEX_BUFFER . 0 ; const INDIRECT_BUFFER = BufferUsageFlagBits :: INDIRECT_BUFFER . 0 ; const SHADER_DEVICE_ADDRESS = BufferUsageFlagBits :: SHADER_DEVICE_ADDRESS . 0 ; const SHADER_DEVICE_ADDRESS_EXT = BufferUsageFlagBits :: SHADER_DEVICE_ADDRESS_EXT . 0 ; const CONDITIONAL_RENDERING_EXT = BufferUsageFlagBits :: CONDITIONAL_RENDERING_EXT . 0 ; const TRANSFORM_FEEDBACK_BUFFER_EXT = BufferUsageFlagBits :: TRANSFORM_FEEDBACK_BUFFER_EXT . 0 ; const TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT = BufferUsageFlagBits :: TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT . 0 ; const SHADER_DEVICE_ADDRESS_KHR = BufferUsageFlagBits :: SHADER_DEVICE_ADDRESS_KHR . 0 ; const RAY_TRACING_KHR = BufferUsageFlagBits :: RAY_TRACING_KHR . 0 ; const RAY_TRACING_NV = BufferUsageFlagBits :: RAY_TRACING_NV . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSharingMode.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SharingMode(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SharingMode {
pub const EXCLUSIVE: Self = Self(0);
pub const CONCURRENT: Self = Self(1);
}
impl std::fmt::Debug for SharingMode {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::EXCLUSIVE => "EXCLUSIVE",
&Self::CONCURRENT => "CONCURRENT",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BufferViewCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::BufferViewCreateFlags,
pub buffer: crate::vk1_0::Buffer,
pub format: crate::vk1_0::Format,
pub offset: crate::vk1_0::DeviceSize,
pub range: crate::vk1_0::DeviceSize,
}
impl BufferViewCreateInfo {
#[inline]
pub fn builder<'a>(self) -> BufferViewCreateInfoBuilder<'a> {
BufferViewCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BufferViewCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BufferViewCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("buffer", &self.buffer)
.field("format", &self.format)
.field("offset", &self.offset)
.field("range", &self.range)
.finish()
}
}
impl Default for BufferViewCreateInfo {
fn default() -> BufferViewCreateInfo {
BufferViewCreateInfo {
s_type: crate::vk1_0::StructureType::BUFFER_VIEW_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
buffer: Default::default(),
format: Default::default(),
offset: Default::default(),
range: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateInfo.html) · Builder of [`BufferViewCreateInfo`](struct.BufferViewCreateInfo.html)"]
#[repr(transparent)]
pub struct BufferViewCreateInfoBuilder<'a>(BufferViewCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> BufferViewCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> BufferViewCreateInfoBuilder<'a> {
BufferViewCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::BufferViewCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer(mut self, buffer: crate::vk1_0::Buffer) -> Self {
self.0.buffer = buffer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn format(mut self, format: crate::vk1_0::Format) -> Self {
self.0.format = format;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::DeviceSize) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn range(mut self, range: crate::vk1_0::DeviceSize) -> Self {
self.0.range = range;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BufferViewCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for BufferViewCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BufferViewCreateInfoBuilder<'a> {
type Target = BufferViewCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BufferViewCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`BufferViewCreateFlags`](struct.BufferViewCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct BufferViewCreateFlagBits(pub u32);
impl BufferViewCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> BufferViewCreateFlags {
BufferViewCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for BufferViewCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferViewCreateFlags.html) · Flags of [`BufferViewCreateFlagBits`](struct.BufferViewCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct BufferViewCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
crate :: non_dispatchable_handle ! ( BufferView , BUFFER_VIEW , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferView.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::ImageCreateFlags,
pub image_type: crate::vk1_0::ImageType,
pub format: crate::vk1_0::Format,
pub extent: crate::vk1_0::Extent3D,
pub mip_levels: u32,
pub array_layers: u32,
pub samples: crate::vk1_0::SampleCountFlagBits,
pub tiling: crate::vk1_0::ImageTiling,
pub usage: crate::vk1_0::ImageUsageFlags,
pub sharing_mode: crate::vk1_0::SharingMode,
pub queue_family_index_count: u32,
pub p_queue_family_indices: *const u32,
pub initial_layout: crate::vk1_0::ImageLayout,
}
impl ImageCreateInfo {
#[inline]
pub fn builder<'a>(self) -> ImageCreateInfoBuilder<'a> {
ImageCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("image_type", &self.image_type)
.field("format", &self.format)
.field("extent", &self.extent)
.field("mip_levels", &self.mip_levels)
.field("array_layers", &self.array_layers)
.field("samples", &self.samples)
.field("tiling", &self.tiling)
.field("usage", &self.usage)
.field("sharing_mode", &self.sharing_mode)
.field("queue_family_index_count", &self.queue_family_index_count)
.field("p_queue_family_indices", &self.p_queue_family_indices)
.field("initial_layout", &self.initial_layout)
.finish()
}
}
impl Default for ImageCreateInfo {
fn default() -> ImageCreateInfo {
ImageCreateInfo {
s_type: crate::vk1_0::StructureType::IMAGE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
image_type: Default::default(),
format: Default::default(),
extent: Default::default(),
mip_levels: Default::default(),
array_layers: Default::default(),
samples: Default::default(),
tiling: Default::default(),
usage: Default::default(),
sharing_mode: Default::default(),
queue_family_index_count: Default::default(),
p_queue_family_indices: std::ptr::null(),
initial_layout: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCreateInfo.html) · Builder of [`ImageCreateInfo`](struct.ImageCreateInfo.html)"]
#[repr(transparent)]
pub struct ImageCreateInfoBuilder<'a>(ImageCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> ImageCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> ImageCreateInfoBuilder<'a> {
ImageCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::ImageCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_type(mut self, image_type: crate::vk1_0::ImageType) -> Self {
self.0.image_type = image_type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn format(mut self, format: crate::vk1_0::Format) -> Self {
self.0.format = format;
self
}
#[allow(unused_mut)]
#[inline]
pub fn extent(mut self, extent: crate::vk1_0::Extent3D) -> Self {
self.0.extent = extent;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mip_levels(mut self, mip_levels: u32) -> Self {
self.0.mip_levels = mip_levels;
self
}
#[allow(unused_mut)]
#[inline]
pub fn array_layers(mut self, array_layers: u32) -> Self {
self.0.array_layers = array_layers;
self
}
#[allow(unused_mut)]
#[inline]
pub fn samples(mut self, samples: crate::vk1_0::SampleCountFlagBits) -> Self {
self.0.samples = samples;
self
}
#[allow(unused_mut)]
#[inline]
pub fn tiling(mut self, tiling: crate::vk1_0::ImageTiling) -> Self {
self.0.tiling = tiling;
self
}
#[allow(unused_mut)]
#[inline]
pub fn usage(mut self, usage: crate::vk1_0::ImageUsageFlags) -> Self {
self.0.usage = usage;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sharing_mode(mut self, sharing_mode: crate::vk1_0::SharingMode) -> Self {
self.0.sharing_mode = sharing_mode;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_family_indices(mut self, queue_family_indices: &'a [u32]) -> Self {
self.0.queue_family_index_count = queue_family_indices.len() as _;
self.0.p_queue_family_indices = queue_family_indices.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn initial_layout(mut self, initial_layout: crate::vk1_0::ImageLayout) -> Self {
self.0.initial_layout = initial_layout;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for ImageCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageCreateInfoBuilder<'a> {
type Target = ImageCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageLayout.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageLayout(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageLayout {
pub const UNDEFINED: Self = Self(0);
pub const GENERAL: Self = Self(1);
pub const COLOR_ATTACHMENT_OPTIMAL: Self = Self(2);
pub const DEPTH_STENCIL_ATTACHMENT_OPTIMAL: Self = Self(3);
pub const DEPTH_STENCIL_READ_ONLY_OPTIMAL: Self = Self(4);
pub const SHADER_READ_ONLY_OPTIMAL: Self = Self(5);
pub const TRANSFER_SRC_OPTIMAL: Self = Self(6);
pub const TRANSFER_DST_OPTIMAL: Self = Self(7);
pub const PREINITIALIZED: Self = Self(8);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl ImageLayout {
pub const DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: Self = Self(1000117000);
pub const DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: Self = Self(1000117001);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl ImageLayout {
pub const DEPTH_ATTACHMENT_OPTIMAL: Self = Self(1000241000);
pub const DEPTH_READ_ONLY_OPTIMAL: Self = Self(1000241001);
pub const STENCIL_ATTACHMENT_OPTIMAL: Self = Self(1000241002);
pub const STENCIL_READ_ONLY_OPTIMAL: Self = Self(1000241003);
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl ImageLayout {
pub const FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: Self = Self(1000218000);
}
#[doc = "[Part of `extensions::khr_maintenance2`](../extensions/khr_maintenance2/index.html)"]
impl ImageLayout {
pub const DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR: Self =
Self::DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL;
pub const DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR: Self =
Self::DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL;
}
#[doc = "[Part of `extensions::khr_separate_depth_stencil_layouts`](../extensions/khr_separate_depth_stencil_layouts/index.html)"]
impl ImageLayout {
pub const DEPTH_ATTACHMENT_OPTIMAL_KHR: Self = Self::DEPTH_ATTACHMENT_OPTIMAL;
pub const DEPTH_READ_ONLY_OPTIMAL_KHR: Self = Self::DEPTH_READ_ONLY_OPTIMAL;
pub const STENCIL_ATTACHMENT_OPTIMAL_KHR: Self = Self::STENCIL_ATTACHMENT_OPTIMAL;
pub const STENCIL_READ_ONLY_OPTIMAL_KHR: Self = Self::STENCIL_READ_ONLY_OPTIMAL;
}
#[doc = "[Part of `extensions::khr_shared_presentable_image`](../extensions/khr_shared_presentable_image/index.html)"]
impl ImageLayout {
pub const SHARED_PRESENT_KHR: Self = Self(1000111000);
}
#[doc = "[Part of `extensions::khr_swapchain`](../extensions/khr_swapchain/index.html)"]
impl ImageLayout {
pub const PRESENT_SRC_KHR: Self = Self(1000001002);
}
#[doc = "[Part of `extensions::nv_shading_rate_image`](../extensions/nv_shading_rate_image/index.html)"]
impl ImageLayout {
pub const SHADING_RATE_OPTIMAL_NV: Self = Self(1000164003);
}
impl std::fmt::Debug for ImageLayout {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::UNDEFINED => "UNDEFINED",
&Self::GENERAL => "GENERAL",
&Self::COLOR_ATTACHMENT_OPTIMAL => "COLOR_ATTACHMENT_OPTIMAL",
&Self::DEPTH_STENCIL_ATTACHMENT_OPTIMAL => "DEPTH_STENCIL_ATTACHMENT_OPTIMAL",
&Self::DEPTH_STENCIL_READ_ONLY_OPTIMAL => "DEPTH_STENCIL_READ_ONLY_OPTIMAL",
&Self::SHADER_READ_ONLY_OPTIMAL => "SHADER_READ_ONLY_OPTIMAL",
&Self::TRANSFER_SRC_OPTIMAL => "TRANSFER_SRC_OPTIMAL",
&Self::TRANSFER_DST_OPTIMAL => "TRANSFER_DST_OPTIMAL",
&Self::PREINITIALIZED => "PREINITIALIZED",
&Self::DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL => {
"DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"
}
&Self::DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL => {
"DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"
}
&Self::DEPTH_ATTACHMENT_OPTIMAL => "DEPTH_ATTACHMENT_OPTIMAL",
&Self::DEPTH_READ_ONLY_OPTIMAL => "DEPTH_READ_ONLY_OPTIMAL",
&Self::STENCIL_ATTACHMENT_OPTIMAL => "STENCIL_ATTACHMENT_OPTIMAL",
&Self::STENCIL_READ_ONLY_OPTIMAL => "STENCIL_READ_ONLY_OPTIMAL",
&Self::FRAGMENT_DENSITY_MAP_OPTIMAL_EXT => "FRAGMENT_DENSITY_MAP_OPTIMAL_EXT",
&Self::SHARED_PRESENT_KHR => "SHARED_PRESENT_KHR",
&Self::PRESENT_SRC_KHR => "PRESENT_SRC_KHR",
&Self::SHADING_RATE_OPTIMAL_NV => "SHADING_RATE_OPTIMAL_NV",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubresourceLayout.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SubresourceLayout {
pub offset: crate::vk1_0::DeviceSize,
pub size: crate::vk1_0::DeviceSize,
pub row_pitch: crate::vk1_0::DeviceSize,
pub array_pitch: crate::vk1_0::DeviceSize,
pub depth_pitch: crate::vk1_0::DeviceSize,
}
impl SubresourceLayout {
#[inline]
pub fn builder<'a>(self) -> SubresourceLayoutBuilder<'a> {
SubresourceLayoutBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SubresourceLayout {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SubresourceLayout")
.field("offset", &self.offset)
.field("size", &self.size)
.field("row_pitch", &self.row_pitch)
.field("array_pitch", &self.array_pitch)
.field("depth_pitch", &self.depth_pitch)
.finish()
}
}
impl Default for SubresourceLayout {
fn default() -> SubresourceLayout {
SubresourceLayout {
offset: Default::default(),
size: Default::default(),
row_pitch: Default::default(),
array_pitch: Default::default(),
depth_pitch: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubresourceLayout.html) · Builder of [`SubresourceLayout`](struct.SubresourceLayout.html)"]
#[repr(transparent)]
pub struct SubresourceLayoutBuilder<'a>(SubresourceLayout, std::marker::PhantomData<&'a ()>);
impl<'a> SubresourceLayoutBuilder<'a> {
#[inline]
pub fn new() -> SubresourceLayoutBuilder<'a> {
SubresourceLayoutBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::DeviceSize) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[allow(unused_mut)]
#[inline]
pub fn row_pitch(mut self, row_pitch: crate::vk1_0::DeviceSize) -> Self {
self.0.row_pitch = row_pitch;
self
}
#[allow(unused_mut)]
#[inline]
pub fn array_pitch(mut self, array_pitch: crate::vk1_0::DeviceSize) -> Self {
self.0.array_pitch = array_pitch;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_pitch(mut self, depth_pitch: crate::vk1_0::DeviceSize) -> Self {
self.0.depth_pitch = depth_pitch;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SubresourceLayout {
self.0
}
}
impl<'a> std::fmt::Debug for SubresourceLayoutBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SubresourceLayoutBuilder<'a> {
type Target = SubresourceLayout;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SubresourceLayoutBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageViewCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::ImageViewCreateFlags,
pub image: crate::vk1_0::Image,
pub view_type: crate::vk1_0::ImageViewType,
pub format: crate::vk1_0::Format,
pub components: crate::vk1_0::ComponentMapping,
pub subresource_range: crate::vk1_0::ImageSubresourceRange,
}
impl ImageViewCreateInfo {
#[inline]
pub fn builder<'a>(self) -> ImageViewCreateInfoBuilder<'a> {
ImageViewCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageViewCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageViewCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("image", &self.image)
.field("view_type", &self.view_type)
.field("format", &self.format)
.field("components", &self.components)
.field("subresource_range", &self.subresource_range)
.finish()
}
}
impl Default for ImageViewCreateInfo {
fn default() -> ImageViewCreateInfo {
ImageViewCreateInfo {
s_type: crate::vk1_0::StructureType::IMAGE_VIEW_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
image: Default::default(),
view_type: Default::default(),
format: Default::default(),
components: Default::default(),
subresource_range: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewCreateInfo.html) · Builder of [`ImageViewCreateInfo`](struct.ImageViewCreateInfo.html)"]
#[repr(transparent)]
pub struct ImageViewCreateInfoBuilder<'a>(ImageViewCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> ImageViewCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> ImageViewCreateInfoBuilder<'a> {
ImageViewCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::ImageViewCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image(mut self, image: crate::vk1_0::Image) -> Self {
self.0.image = image;
self
}
#[allow(unused_mut)]
#[inline]
pub fn view_type(mut self, view_type: crate::vk1_0::ImageViewType) -> Self {
self.0.view_type = view_type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn format(mut self, format: crate::vk1_0::Format) -> Self {
self.0.format = format;
self
}
#[allow(unused_mut)]
#[inline]
pub fn components(mut self, components: crate::vk1_0::ComponentMapping) -> Self {
self.0.components = components;
self
}
#[allow(unused_mut)]
#[inline]
pub fn subresource_range(
mut self,
subresource_range: crate::vk1_0::ImageSubresourceRange,
) -> Self {
self.0.subresource_range = subresource_range;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageViewCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for ImageViewCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageViewCreateInfoBuilder<'a> {
type Target = ImageViewCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageViewCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewCreateFlagBits.html) · Flag Bits of [`ImageViewCreateFlags`](struct.ImageViewCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageViewCreateFlagBits(pub u32);
impl ImageViewCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ImageViewCreateFlags {
ImageViewCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageViewCreateFlagBits {}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl ImageViewCreateFlagBits {
pub const FRAGMENT_DENSITY_MAP_DYNAMIC_EXT: Self = Self(0x00000001);
}
impl std::fmt::Debug for ImageViewCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::FRAGMENT_DENSITY_MAP_DYNAMIC_EXT => "FRAGMENT_DENSITY_MAP_DYNAMIC_EXT",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewCreateFlags.html) · Flags of [`ImageViewCreateFlagBits`](struct.ImageViewCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ImageViewCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const FRAGMENT_DENSITY_MAP_DYNAMIC_EXT = ImageViewCreateFlagBits :: FRAGMENT_DENSITY_MAP_DYNAMIC_EXT . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageViewType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ImageViewType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ImageViewType {
pub const _1D: Self = Self(0);
pub const _2D: Self = Self(1);
pub const _3D: Self = Self(2);
pub const CUBE: Self = Self(3);
pub const _1D_ARRAY: Self = Self(4);
pub const _2D_ARRAY: Self = Self(5);
pub const CUBE_ARRAY: Self = Self(6);
}
impl std::fmt::Debug for ImageViewType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::_1D => "1D",
&Self::_2D => "2D",
&Self::_3D => "3D",
&Self::CUBE => "CUBE",
&Self::_1D_ARRAY => "1D_ARRAY",
&Self::_2D_ARRAY => "2D_ARRAY",
&Self::CUBE_ARRAY => "CUBE_ARRAY",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentMapping.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ComponentMapping {
pub r: crate::vk1_0::ComponentSwizzle,
pub g: crate::vk1_0::ComponentSwizzle,
pub b: crate::vk1_0::ComponentSwizzle,
pub a: crate::vk1_0::ComponentSwizzle,
}
impl ComponentMapping {
#[inline]
pub fn builder<'a>(self) -> ComponentMappingBuilder<'a> {
ComponentMappingBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ComponentMapping {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ComponentMapping")
.field("r", &self.r)
.field("g", &self.g)
.field("b", &self.b)
.field("a", &self.a)
.finish()
}
}
impl Default for ComponentMapping {
fn default() -> ComponentMapping {
ComponentMapping {
r: Default::default(),
g: Default::default(),
b: Default::default(),
a: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentMapping.html) · Builder of [`ComponentMapping`](struct.ComponentMapping.html)"]
#[repr(transparent)]
pub struct ComponentMappingBuilder<'a>(ComponentMapping, std::marker::PhantomData<&'a ()>);
impl<'a> ComponentMappingBuilder<'a> {
#[inline]
pub fn new() -> ComponentMappingBuilder<'a> {
ComponentMappingBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn r(mut self, r: crate::vk1_0::ComponentSwizzle) -> Self {
self.0.r = r;
self
}
#[allow(unused_mut)]
#[inline]
pub fn g(mut self, g: crate::vk1_0::ComponentSwizzle) -> Self {
self.0.g = g;
self
}
#[allow(unused_mut)]
#[inline]
pub fn b(mut self, b: crate::vk1_0::ComponentSwizzle) -> Self {
self.0.b = b;
self
}
#[allow(unused_mut)]
#[inline]
pub fn a(mut self, a: crate::vk1_0::ComponentSwizzle) -> Self {
self.0.a = a;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ComponentMapping {
self.0
}
}
impl<'a> std::fmt::Debug for ComponentMappingBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ComponentMappingBuilder<'a> {
type Target = ComponentMapping;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ComponentMappingBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComponentSwizzle.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ComponentSwizzle(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ComponentSwizzle {
pub const IDENTITY: Self = Self(0);
pub const ZERO: Self = Self(1);
pub const ONE: Self = Self(2);
pub const R: Self = Self(3);
pub const G: Self = Self(4);
pub const B: Self = Self(5);
pub const A: Self = Self(6);
}
impl std::fmt::Debug for ComponentSwizzle {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::IDENTITY => "IDENTITY",
&Self::ZERO => "ZERO",
&Self::ONE => "ONE",
&Self::R => "R",
&Self::G => "G",
&Self::B => "B",
&Self::A => "A",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceRange.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageSubresourceRange {
pub aspect_mask: crate::vk1_0::ImageAspectFlags,
pub base_mip_level: u32,
pub level_count: u32,
pub base_array_layer: u32,
pub layer_count: u32,
}
impl ImageSubresourceRange {
#[inline]
pub fn builder<'a>(self) -> ImageSubresourceRangeBuilder<'a> {
ImageSubresourceRangeBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageSubresourceRange {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageSubresourceRange")
.field("aspect_mask", &self.aspect_mask)
.field("base_mip_level", &self.base_mip_level)
.field("level_count", &self.level_count)
.field("base_array_layer", &self.base_array_layer)
.field("layer_count", &self.layer_count)
.finish()
}
}
impl Default for ImageSubresourceRange {
fn default() -> ImageSubresourceRange {
ImageSubresourceRange {
aspect_mask: Default::default(),
base_mip_level: Default::default(),
level_count: Default::default(),
base_array_layer: Default::default(),
layer_count: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceRange.html) · Builder of [`ImageSubresourceRange`](struct.ImageSubresourceRange.html)"]
#[repr(transparent)]
pub struct ImageSubresourceRangeBuilder<'a>(
ImageSubresourceRange,
std::marker::PhantomData<&'a ()>,
);
impl<'a> ImageSubresourceRangeBuilder<'a> {
#[inline]
pub fn new() -> ImageSubresourceRangeBuilder<'a> {
ImageSubresourceRangeBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn aspect_mask(mut self, aspect_mask: crate::vk1_0::ImageAspectFlags) -> Self {
self.0.aspect_mask = aspect_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_mip_level(mut self, base_mip_level: u32) -> Self {
self.0.base_mip_level = base_mip_level;
self
}
#[allow(unused_mut)]
#[inline]
pub fn level_count(mut self, level_count: u32) -> Self {
self.0.level_count = level_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
self.0.base_array_layer = base_array_layer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layer_count(mut self, layer_count: u32) -> Self {
self.0.layer_count = layer_count;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageSubresourceRange {
self.0
}
}
impl<'a> std::fmt::Debug for ImageSubresourceRangeBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageSubresourceRangeBuilder<'a> {
type Target = ImageSubresourceRange;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageSubresourceRangeBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: non_dispatchable_handle ! ( ImageView , IMAGE_VIEW , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageView.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ShaderModuleCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::ShaderModuleCreateFlags,
pub code_size: usize,
pub p_code: *const u32,
}
impl ShaderModuleCreateInfo {
#[inline]
pub fn builder<'a>(self) -> ShaderModuleCreateInfoBuilder<'a> {
ShaderModuleCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ShaderModuleCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ShaderModuleCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("code_size", &self.code_size)
.field("p_code", &self.p_code)
.finish()
}
}
impl Default for ShaderModuleCreateInfo {
fn default() -> ShaderModuleCreateInfo {
ShaderModuleCreateInfo {
s_type: crate::vk1_0::StructureType::SHADER_MODULE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
code_size: Default::default(),
p_code: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleCreateInfo.html) · Builder of [`ShaderModuleCreateInfo`](struct.ShaderModuleCreateInfo.html)"]
#[repr(transparent)]
pub struct ShaderModuleCreateInfoBuilder<'a>(
ShaderModuleCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> ShaderModuleCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> ShaderModuleCreateInfoBuilder<'a> {
ShaderModuleCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::ShaderModuleCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn code(mut self, code: &'a [u32]) -> Self {
self.0.code_size = code.len() * 4;
self.0.p_code = code.as_ptr();
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ShaderModuleCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for ShaderModuleCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ShaderModuleCreateInfoBuilder<'a> {
type Target = ShaderModuleCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ShaderModuleCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`ShaderModuleCreateFlags`](struct.ShaderModuleCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ShaderModuleCreateFlagBits(pub u32);
impl ShaderModuleCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ShaderModuleCreateFlags {
ShaderModuleCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ShaderModuleCreateFlagBits {}
impl std::fmt::Debug for ShaderModuleCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModuleCreateFlags.html) · Flags of [`ShaderModuleCreateFlagBits`](struct.ShaderModuleCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ShaderModuleCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
crate :: non_dispatchable_handle ! ( ShaderModule , SHADER_MODULE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderModule.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineCacheCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineCacheCreateFlags,
pub initial_data_size: usize,
pub p_initial_data: *const std::ffi::c_void,
}
impl PipelineCacheCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineCacheCreateInfoBuilder<'a> {
PipelineCacheCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineCacheCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineCacheCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("initial_data_size", &self.initial_data_size)
.field("p_initial_data", &self.p_initial_data)
.finish()
}
}
impl Default for PipelineCacheCreateInfo {
fn default() -> PipelineCacheCreateInfo {
PipelineCacheCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_CACHE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
initial_data_size: Default::default(),
p_initial_data: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheCreateInfo.html) · Builder of [`PipelineCacheCreateInfo`](struct.PipelineCacheCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineCacheCreateInfoBuilder<'a>(
PipelineCacheCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineCacheCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineCacheCreateInfoBuilder<'a> {
PipelineCacheCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineCacheCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn initial_data(mut self, initial_data: &'a [std::ffi::c_void]) -> Self {
self.0.initial_data_size = initial_data.len() as _;
self.0.p_initial_data = initial_data.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineCacheCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineCacheCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineCacheCreateInfoBuilder<'a> {
type Target = PipelineCacheCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineCacheCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheCreateFlagBits.html) · Flag Bits of [`PipelineCacheCreateFlags`](struct.PipelineCacheCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineCacheCreateFlagBits(pub u32);
impl PipelineCacheCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineCacheCreateFlags {
PipelineCacheCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PipelineCacheCreateFlagBits {}
#[doc = "[Part of `extensions::ext_pipeline_creation_cache_control`](../extensions/ext_pipeline_creation_cache_control/index.html)"]
impl PipelineCacheCreateFlagBits {
pub const EXTERNALLY_SYNCHRONIZED_EXT: Self = Self(0x00000001);
}
impl std::fmt::Debug for PipelineCacheCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::EXTERNALLY_SYNCHRONIZED_EXT => "EXTERNALLY_SYNCHRONIZED_EXT",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheCreateFlags.html) · Flags of [`PipelineCacheCreateFlagBits`](struct.PipelineCacheCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineCacheCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const EXTERNALLY_SYNCHRONIZED_EXT = PipelineCacheCreateFlagBits :: EXTERNALLY_SYNCHRONIZED_EXT . 0 ; } }
crate :: non_dispatchable_handle ! ( PipelineCache , PIPELINE_CACHE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCache.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct GraphicsPipelineCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineCreateFlags,
pub stage_count: u32,
pub p_stages: *const crate::vk1_0::PipelineShaderStageCreateInfo,
pub p_vertex_input_state: *const crate::vk1_0::PipelineVertexInputStateCreateInfo,
pub p_input_assembly_state: *const crate::vk1_0::PipelineInputAssemblyStateCreateInfo,
pub p_tessellation_state: *const crate::vk1_0::PipelineTessellationStateCreateInfo,
pub p_viewport_state: *const crate::vk1_0::PipelineViewportStateCreateInfo,
pub p_rasterization_state: *const crate::vk1_0::PipelineRasterizationStateCreateInfo,
pub p_multisample_state: *const crate::vk1_0::PipelineMultisampleStateCreateInfo,
pub p_depth_stencil_state: *const crate::vk1_0::PipelineDepthStencilStateCreateInfo,
pub p_color_blend_state: *const crate::vk1_0::PipelineColorBlendStateCreateInfo,
pub p_dynamic_state: *const crate::vk1_0::PipelineDynamicStateCreateInfo,
pub layout: crate::vk1_0::PipelineLayout,
pub render_pass: crate::vk1_0::RenderPass,
pub subpass: u32,
pub base_pipeline_handle: crate::vk1_0::Pipeline,
pub base_pipeline_index: i32,
}
impl GraphicsPipelineCreateInfo {
#[inline]
pub fn builder<'a>(self) -> GraphicsPipelineCreateInfoBuilder<'a> {
GraphicsPipelineCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for GraphicsPipelineCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("GraphicsPipelineCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("stage_count", &self.stage_count)
.field("p_stages", &self.p_stages)
.field("p_vertex_input_state", &self.p_vertex_input_state)
.field("p_input_assembly_state", &self.p_input_assembly_state)
.field("p_tessellation_state", &self.p_tessellation_state)
.field("p_viewport_state", &self.p_viewport_state)
.field("p_rasterization_state", &self.p_rasterization_state)
.field("p_multisample_state", &self.p_multisample_state)
.field("p_depth_stencil_state", &self.p_depth_stencil_state)
.field("p_color_blend_state", &self.p_color_blend_state)
.field("p_dynamic_state", &self.p_dynamic_state)
.field("layout", &self.layout)
.field("render_pass", &self.render_pass)
.field("subpass", &self.subpass)
.field("base_pipeline_handle", &self.base_pipeline_handle)
.field("base_pipeline_index", &self.base_pipeline_index)
.finish()
}
}
impl Default for GraphicsPipelineCreateInfo {
fn default() -> GraphicsPipelineCreateInfo {
GraphicsPipelineCreateInfo {
s_type: crate::vk1_0::StructureType::GRAPHICS_PIPELINE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
stage_count: Default::default(),
p_stages: std::ptr::null(),
p_vertex_input_state: std::ptr::null(),
p_input_assembly_state: std::ptr::null(),
p_tessellation_state: std::ptr::null(),
p_viewport_state: std::ptr::null(),
p_rasterization_state: std::ptr::null(),
p_multisample_state: std::ptr::null(),
p_depth_stencil_state: std::ptr::null(),
p_color_blend_state: std::ptr::null(),
p_dynamic_state: std::ptr::null(),
layout: Default::default(),
render_pass: Default::default(),
subpass: Default::default(),
base_pipeline_handle: Default::default(),
base_pipeline_index: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkGraphicsPipelineCreateInfo.html) · Builder of [`GraphicsPipelineCreateInfo`](struct.GraphicsPipelineCreateInfo.html)"]
#[repr(transparent)]
pub struct GraphicsPipelineCreateInfoBuilder<'a>(
GraphicsPipelineCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> GraphicsPipelineCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> GraphicsPipelineCreateInfoBuilder<'a> {
GraphicsPipelineCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stages(
mut self,
stages: &'a [crate::vk1_0::PipelineShaderStageCreateInfoBuilder],
) -> Self {
self.0.stage_count = stages.len() as _;
self.0.p_stages = stages.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn vertex_input_state(
mut self,
vertex_input_state: &'a crate::vk1_0::PipelineVertexInputStateCreateInfo,
) -> Self {
self.0.p_vertex_input_state = vertex_input_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn input_assembly_state(
mut self,
input_assembly_state: &'a crate::vk1_0::PipelineInputAssemblyStateCreateInfo,
) -> Self {
self.0.p_input_assembly_state = input_assembly_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn tessellation_state(
mut self,
tessellation_state: &'a crate::vk1_0::PipelineTessellationStateCreateInfo,
) -> Self {
self.0.p_tessellation_state = tessellation_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn viewport_state(
mut self,
viewport_state: &'a crate::vk1_0::PipelineViewportStateCreateInfo,
) -> Self {
self.0.p_viewport_state = viewport_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn rasterization_state(
mut self,
rasterization_state: &'a crate::vk1_0::PipelineRasterizationStateCreateInfo,
) -> Self {
self.0.p_rasterization_state = rasterization_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn multisample_state(
mut self,
multisample_state: &'a crate::vk1_0::PipelineMultisampleStateCreateInfo,
) -> Self {
self.0.p_multisample_state = multisample_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_stencil_state(
mut self,
depth_stencil_state: &'a crate::vk1_0::PipelineDepthStencilStateCreateInfo,
) -> Self {
self.0.p_depth_stencil_state = depth_stencil_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn color_blend_state(
mut self,
color_blend_state: &'a crate::vk1_0::PipelineColorBlendStateCreateInfo,
) -> Self {
self.0.p_color_blend_state = color_blend_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dynamic_state(
mut self,
dynamic_state: &'a crate::vk1_0::PipelineDynamicStateCreateInfo,
) -> Self {
self.0.p_dynamic_state = dynamic_state;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layout(mut self, layout: crate::vk1_0::PipelineLayout) -> Self {
self.0.layout = layout;
self
}
#[allow(unused_mut)]
#[inline]
pub fn render_pass(mut self, render_pass: crate::vk1_0::RenderPass) -> Self {
self.0.render_pass = render_pass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn subpass(mut self, subpass: u32) -> Self {
self.0.subpass = subpass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_pipeline_handle(mut self, base_pipeline_handle: crate::vk1_0::Pipeline) -> Self {
self.0.base_pipeline_handle = base_pipeline_handle;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
self.0.base_pipeline_index = base_pipeline_index;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> GraphicsPipelineCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for GraphicsPipelineCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for GraphicsPipelineCreateInfoBuilder<'a> {
type Target = GraphicsPipelineCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for GraphicsPipelineCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCreateFlagBits.html) · Flag Bits of [`PipelineCreateFlags`](struct.PipelineCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineCreateFlagBits(pub u32);
impl PipelineCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineCreateFlags {
PipelineCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PipelineCreateFlagBits {
pub const DISABLE_OPTIMIZATION: Self = Self(0x00000001);
pub const ALLOW_DERIVATIVES: Self = Self(0x00000002);
pub const DERIVATIVE: Self = Self(0x00000004);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl PipelineCreateFlagBits {
pub const VIEW_INDEX_FROM_DEVICE_INDEX: Self = Self(0x00000008);
pub const DISPATCH_BASE: Self = Self(0x00000010);
}
#[doc = "[Part of `extensions::ext_pipeline_creation_cache_control`](../extensions/ext_pipeline_creation_cache_control/index.html)"]
impl PipelineCreateFlagBits {
pub const FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT: Self = Self(0x00000100);
pub const EARLY_RETURN_ON_FAILURE_EXT: Self = Self(0x00000200);
}
#[doc = "[Part of `extensions::khr_device_group`](../extensions/khr_device_group/index.html)"]
impl PipelineCreateFlagBits {
pub const VIEW_INDEX_FROM_DEVICE_INDEX_KHR: Self = Self::VIEW_INDEX_FROM_DEVICE_INDEX;
pub const DISPATCH_BASE_KHR: Self = Self::DISPATCH_BASE;
}
#[doc = "[Part of `extensions::khr_pipeline_executable_properties`](../extensions/khr_pipeline_executable_properties/index.html)"]
impl PipelineCreateFlagBits {
pub const CAPTURE_STATISTICS_KHR: Self = Self(0x00000040);
pub const CAPTURE_INTERNAL_REPRESENTATIONS_KHR: Self = Self(0x00000080);
}
#[doc = "[Part of `extensions::khr_pipeline_library`](../extensions/khr_pipeline_library/index.html)"]
impl PipelineCreateFlagBits {
pub const LIBRARY_KHR: Self = Self(0x00000800);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl PipelineCreateFlagBits {
pub const RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR: Self = Self(0x00004000);
pub const RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR: Self = Self(0x00008000);
pub const RAY_TRACING_NO_NULL_MISS_SHADERS_KHR: Self = Self(0x00010000);
pub const RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR: Self = Self(0x00020000);
pub const RAY_TRACING_SKIP_TRIANGLES_KHR: Self = Self(0x00001000);
pub const RAY_TRACING_SKIP_AABBS_KHR: Self = Self(0x00002000);
}
#[doc = "[Part of `extensions::nv_device_generated_commands`](../extensions/nv_device_generated_commands/index.html)"]
impl PipelineCreateFlagBits {
pub const INDIRECT_BINDABLE_NV: Self = Self(0x00040000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl PipelineCreateFlagBits {
pub const DEFER_COMPILE_NV: Self = Self(0x00000020);
}
impl std::fmt::Debug for PipelineCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::DISABLE_OPTIMIZATION => "DISABLE_OPTIMIZATION",
&Self::ALLOW_DERIVATIVES => "ALLOW_DERIVATIVES",
&Self::DERIVATIVE => "DERIVATIVE",
&Self::VIEW_INDEX_FROM_DEVICE_INDEX => "VIEW_INDEX_FROM_DEVICE_INDEX",
&Self::DISPATCH_BASE => "DISPATCH_BASE",
&Self::FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT => "FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT",
&Self::EARLY_RETURN_ON_FAILURE_EXT => "EARLY_RETURN_ON_FAILURE_EXT",
&Self::CAPTURE_STATISTICS_KHR => "CAPTURE_STATISTICS_KHR",
&Self::CAPTURE_INTERNAL_REPRESENTATIONS_KHR => "CAPTURE_INTERNAL_REPRESENTATIONS_KHR",
&Self::LIBRARY_KHR => "LIBRARY_KHR",
&Self::RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR => {
"RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR"
}
&Self::RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR => {
"RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR"
}
&Self::RAY_TRACING_NO_NULL_MISS_SHADERS_KHR => "RAY_TRACING_NO_NULL_MISS_SHADERS_KHR",
&Self::RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR => {
"RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR"
}
&Self::RAY_TRACING_SKIP_TRIANGLES_KHR => "RAY_TRACING_SKIP_TRIANGLES_KHR",
&Self::RAY_TRACING_SKIP_AABBS_KHR => "RAY_TRACING_SKIP_AABBS_KHR",
&Self::INDIRECT_BINDABLE_NV => "INDIRECT_BINDABLE_NV",
&Self::DEFER_COMPILE_NV => "DEFER_COMPILE_NV",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCreateFlags.html) · Flags of [`PipelineCreateFlagBits`](struct.PipelineCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const DISABLE_OPTIMIZATION = PipelineCreateFlagBits :: DISABLE_OPTIMIZATION . 0 ; const ALLOW_DERIVATIVES = PipelineCreateFlagBits :: ALLOW_DERIVATIVES . 0 ; const DERIVATIVE = PipelineCreateFlagBits :: DERIVATIVE . 0 ; const VIEW_INDEX_FROM_DEVICE_INDEX = PipelineCreateFlagBits :: VIEW_INDEX_FROM_DEVICE_INDEX . 0 ; const DISPATCH_BASE = PipelineCreateFlagBits :: DISPATCH_BASE . 0 ; const FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT = PipelineCreateFlagBits :: FAIL_ON_PIPELINE_COMPILE_REQUIRED_EXT . 0 ; const EARLY_RETURN_ON_FAILURE_EXT = PipelineCreateFlagBits :: EARLY_RETURN_ON_FAILURE_EXT . 0 ; const VIEW_INDEX_FROM_DEVICE_INDEX_KHR = PipelineCreateFlagBits :: VIEW_INDEX_FROM_DEVICE_INDEX_KHR . 0 ; const DISPATCH_BASE_KHR = PipelineCreateFlagBits :: DISPATCH_BASE_KHR . 0 ; const CAPTURE_STATISTICS_KHR = PipelineCreateFlagBits :: CAPTURE_STATISTICS_KHR . 0 ; const CAPTURE_INTERNAL_REPRESENTATIONS_KHR = PipelineCreateFlagBits :: CAPTURE_INTERNAL_REPRESENTATIONS_KHR . 0 ; const LIBRARY_KHR = PipelineCreateFlagBits :: LIBRARY_KHR . 0 ; const RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR = PipelineCreateFlagBits :: RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_KHR . 0 ; const RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR = PipelineCreateFlagBits :: RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_KHR . 0 ; const RAY_TRACING_NO_NULL_MISS_SHADERS_KHR = PipelineCreateFlagBits :: RAY_TRACING_NO_NULL_MISS_SHADERS_KHR . 0 ; const RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR = PipelineCreateFlagBits :: RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_KHR . 0 ; const RAY_TRACING_SKIP_TRIANGLES_KHR = PipelineCreateFlagBits :: RAY_TRACING_SKIP_TRIANGLES_KHR . 0 ; const RAY_TRACING_SKIP_AABBS_KHR = PipelineCreateFlagBits :: RAY_TRACING_SKIP_AABBS_KHR . 0 ; const INDIRECT_BINDABLE_NV = PipelineCreateFlagBits :: INDIRECT_BINDABLE_NV . 0 ; const DEFER_COMPILE_NV = PipelineCreateFlagBits :: DEFER_COMPILE_NV . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineShaderStageCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineShaderStageCreateFlags,
pub stage: crate::vk1_0::ShaderStageFlagBits,
pub module: crate::vk1_0::ShaderModule,
pub p_name: *const std::os::raw::c_char,
pub p_specialization_info: *const crate::vk1_0::SpecializationInfo,
}
impl PipelineShaderStageCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineShaderStageCreateInfoBuilder<'a> {
PipelineShaderStageCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineShaderStageCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineShaderStageCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("stage", &self.stage)
.field("module", &self.module)
.field("p_name", &self.p_name)
.field("p_specialization_info", &self.p_specialization_info)
.finish()
}
}
impl Default for PipelineShaderStageCreateInfo {
fn default() -> PipelineShaderStageCreateInfo {
PipelineShaderStageCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_SHADER_STAGE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
stage: Default::default(),
module: Default::default(),
p_name: std::ptr::null(),
p_specialization_info: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageCreateInfo.html) · Builder of [`PipelineShaderStageCreateInfo`](struct.PipelineShaderStageCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineShaderStageCreateInfoBuilder<'a>(
PipelineShaderStageCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineShaderStageCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineShaderStageCreateInfoBuilder<'a> {
PipelineShaderStageCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineShaderStageCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stage(mut self, stage: crate::vk1_0::ShaderStageFlagBits) -> Self {
self.0.stage = stage;
self
}
#[allow(unused_mut)]
#[inline]
pub fn module(mut self, module: crate::vk1_0::ShaderModule) -> Self {
self.0.module = module;
self
}
#[allow(unused_mut)]
#[inline]
pub fn name(mut self, name: &'a std::ffi::CStr) -> Self {
self.0.p_name = name.as_ptr();
self
}
#[allow(unused_mut)]
#[inline]
pub fn specialization_info(
mut self,
specialization_info: &'a crate::vk1_0::SpecializationInfo,
) -> Self {
self.0.p_specialization_info = specialization_info;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineShaderStageCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineShaderStageCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineShaderStageCreateInfoBuilder<'a> {
type Target = PipelineShaderStageCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineShaderStageCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageCreateFlagBits.html) · Flag Bits of [`PipelineShaderStageCreateFlags`](struct.PipelineShaderStageCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineShaderStageCreateFlagBits(pub u32);
impl PipelineShaderStageCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineShaderStageCreateFlags {
PipelineShaderStageCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PipelineShaderStageCreateFlagBits {}
#[doc = "[Part of `extensions::ext_subgroup_size_control`](../extensions/ext_subgroup_size_control/index.html)"]
impl PipelineShaderStageCreateFlagBits {
pub const ALLOW_VARYING_SUBGROUP_SIZE_EXT: Self = Self(0x00000001);
pub const REQUIRE_FULL_SUBGROUPS_EXT: Self = Self(0x00000002);
}
impl std::fmt::Debug for PipelineShaderStageCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::ALLOW_VARYING_SUBGROUP_SIZE_EXT => "ALLOW_VARYING_SUBGROUP_SIZE_EXT",
&Self::REQUIRE_FULL_SUBGROUPS_EXT => "REQUIRE_FULL_SUBGROUPS_EXT",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineShaderStageCreateFlags.html) · Flags of [`PipelineShaderStageCreateFlagBits`](struct.PipelineShaderStageCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineShaderStageCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const ALLOW_VARYING_SUBGROUP_SIZE_EXT = PipelineShaderStageCreateFlagBits :: ALLOW_VARYING_SUBGROUP_SIZE_EXT . 0 ; const REQUIRE_FULL_SUBGROUPS_EXT = PipelineShaderStageCreateFlagBits :: REQUIRE_FULL_SUBGROUPS_EXT . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderStageFlagBits.html) · Flag Bits of [`ShaderStageFlags`](struct.ShaderStageFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ShaderStageFlagBits(pub u32);
impl ShaderStageFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ShaderStageFlags {
ShaderStageFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ShaderStageFlagBits {
pub const VERTEX: Self = Self(0x00000001);
pub const TESSELLATION_CONTROL: Self = Self(0x00000002);
pub const TESSELLATION_EVALUATION: Self = Self(0x00000004);
pub const GEOMETRY: Self = Self(0x00000008);
pub const FRAGMENT: Self = Self(0x00000010);
pub const COMPUTE: Self = Self(0x00000020);
pub const ALL_GRAPHICS: Self = Self(0x0000001F);
pub const ALL: Self = Self(0x7FFFFFFF);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl ShaderStageFlagBits {
pub const RAYGEN_KHR: Self = Self(0x00000100);
pub const ANY_HIT_KHR: Self = Self(0x00000200);
pub const CLOSEST_HIT_KHR: Self = Self(0x00000400);
pub const MISS_KHR: Self = Self(0x00000800);
pub const INTERSECTION_KHR: Self = Self(0x00001000);
pub const CALLABLE_KHR: Self = Self(0x00002000);
}
#[doc = "[Part of `extensions::nv_mesh_shader`](../extensions/nv_mesh_shader/index.html)"]
impl ShaderStageFlagBits {
pub const TASK_NV: Self = Self(0x00000040);
pub const MESH_NV: Self = Self(0x00000080);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl ShaderStageFlagBits {
pub const RAYGEN_NV: Self = Self::RAYGEN_KHR;
pub const ANY_HIT_NV: Self = Self::ANY_HIT_KHR;
pub const CLOSEST_HIT_NV: Self = Self::CLOSEST_HIT_KHR;
pub const MISS_NV: Self = Self::MISS_KHR;
pub const INTERSECTION_NV: Self = Self::INTERSECTION_KHR;
pub const CALLABLE_NV: Self = Self::CALLABLE_KHR;
}
impl std::fmt::Debug for ShaderStageFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::VERTEX => "VERTEX",
&Self::TESSELLATION_CONTROL => "TESSELLATION_CONTROL",
&Self::TESSELLATION_EVALUATION => "TESSELLATION_EVALUATION",
&Self::GEOMETRY => "GEOMETRY",
&Self::FRAGMENT => "FRAGMENT",
&Self::COMPUTE => "COMPUTE",
&Self::ALL_GRAPHICS => "ALL_GRAPHICS",
&Self::ALL => "ALL",
&Self::RAYGEN_KHR => "RAYGEN_KHR",
&Self::ANY_HIT_KHR => "ANY_HIT_KHR",
&Self::CLOSEST_HIT_KHR => "CLOSEST_HIT_KHR",
&Self::MISS_KHR => "MISS_KHR",
&Self::INTERSECTION_KHR => "INTERSECTION_KHR",
&Self::CALLABLE_KHR => "CALLABLE_KHR",
&Self::TASK_NV => "TASK_NV",
&Self::MESH_NV => "MESH_NV",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShaderStageFlags.html) · Flags of [`ShaderStageFlagBits`](struct.ShaderStageFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ShaderStageFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const VERTEX = ShaderStageFlagBits :: VERTEX . 0 ; const TESSELLATION_CONTROL = ShaderStageFlagBits :: TESSELLATION_CONTROL . 0 ; const TESSELLATION_EVALUATION = ShaderStageFlagBits :: TESSELLATION_EVALUATION . 0 ; const GEOMETRY = ShaderStageFlagBits :: GEOMETRY . 0 ; const FRAGMENT = ShaderStageFlagBits :: FRAGMENT . 0 ; const COMPUTE = ShaderStageFlagBits :: COMPUTE . 0 ; const ALL_GRAPHICS = ShaderStageFlagBits :: ALL_GRAPHICS . 0 ; const ALL = ShaderStageFlagBits :: ALL . 0 ; const RAYGEN_KHR = ShaderStageFlagBits :: RAYGEN_KHR . 0 ; const ANY_HIT_KHR = ShaderStageFlagBits :: ANY_HIT_KHR . 0 ; const CLOSEST_HIT_KHR = ShaderStageFlagBits :: CLOSEST_HIT_KHR . 0 ; const MISS_KHR = ShaderStageFlagBits :: MISS_KHR . 0 ; const INTERSECTION_KHR = ShaderStageFlagBits :: INTERSECTION_KHR . 0 ; const CALLABLE_KHR = ShaderStageFlagBits :: CALLABLE_KHR . 0 ; const TASK_NV = ShaderStageFlagBits :: TASK_NV . 0 ; const MESH_NV = ShaderStageFlagBits :: MESH_NV . 0 ; const RAYGEN_NV = ShaderStageFlagBits :: RAYGEN_NV . 0 ; const ANY_HIT_NV = ShaderStageFlagBits :: ANY_HIT_NV . 0 ; const CLOSEST_HIT_NV = ShaderStageFlagBits :: CLOSEST_HIT_NV . 0 ; const MISS_NV = ShaderStageFlagBits :: MISS_NV . 0 ; const INTERSECTION_NV = ShaderStageFlagBits :: INTERSECTION_NV . 0 ; const CALLABLE_NV = ShaderStageFlagBits :: CALLABLE_NV . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SpecializationInfo {
pub map_entry_count: u32,
pub p_map_entries: *const crate::vk1_0::SpecializationMapEntry,
pub data_size: usize,
pub p_data: *const std::ffi::c_void,
}
impl SpecializationInfo {
#[inline]
pub fn builder<'a>(self) -> SpecializationInfoBuilder<'a> {
SpecializationInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SpecializationInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SpecializationInfo")
.field("map_entry_count", &self.map_entry_count)
.field("p_map_entries", &self.p_map_entries)
.field("data_size", &self.data_size)
.field("p_data", &self.p_data)
.finish()
}
}
impl Default for SpecializationInfo {
fn default() -> SpecializationInfo {
SpecializationInfo {
map_entry_count: Default::default(),
p_map_entries: std::ptr::null(),
data_size: Default::default(),
p_data: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationInfo.html) · Builder of [`SpecializationInfo`](struct.SpecializationInfo.html)"]
#[repr(transparent)]
pub struct SpecializationInfoBuilder<'a>(SpecializationInfo, std::marker::PhantomData<&'a ()>);
impl<'a> SpecializationInfoBuilder<'a> {
#[inline]
pub fn new() -> SpecializationInfoBuilder<'a> {
SpecializationInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn map_entries(
mut self,
map_entries: &'a [crate::vk1_0::SpecializationMapEntryBuilder],
) -> Self {
self.0.map_entry_count = map_entries.len() as _;
self.0.p_map_entries = map_entries.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn data(mut self, data: &'a [std::ffi::c_void]) -> Self {
self.0.data_size = data.len() as _;
self.0.p_data = data.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SpecializationInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SpecializationInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SpecializationInfoBuilder<'a> {
type Target = SpecializationInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SpecializationInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationMapEntry.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SpecializationMapEntry {
pub constant_id: u32,
pub offset: u32,
pub size: usize,
}
impl SpecializationMapEntry {
#[inline]
pub fn builder<'a>(self) -> SpecializationMapEntryBuilder<'a> {
SpecializationMapEntryBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SpecializationMapEntry {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SpecializationMapEntry")
.field("constant_id", &self.constant_id)
.field("offset", &self.offset)
.field("size", &self.size)
.finish()
}
}
impl Default for SpecializationMapEntry {
fn default() -> SpecializationMapEntry {
SpecializationMapEntry {
constant_id: Default::default(),
offset: Default::default(),
size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSpecializationMapEntry.html) · Builder of [`SpecializationMapEntry`](struct.SpecializationMapEntry.html)"]
#[repr(transparent)]
pub struct SpecializationMapEntryBuilder<'a>(
SpecializationMapEntry,
std::marker::PhantomData<&'a ()>,
);
impl<'a> SpecializationMapEntryBuilder<'a> {
#[inline]
pub fn new() -> SpecializationMapEntryBuilder<'a> {
SpecializationMapEntryBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn constant_id(mut self, constant_id: u32) -> Self {
self.0.constant_id = constant_id;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: u32) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: usize) -> Self {
self.0.size = size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SpecializationMapEntry {
self.0
}
}
impl<'a> std::fmt::Debug for SpecializationMapEntryBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SpecializationMapEntryBuilder<'a> {
type Target = SpecializationMapEntry;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SpecializationMapEntryBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineVertexInputStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineVertexInputStateCreateFlags,
pub vertex_binding_description_count: u32,
pub p_vertex_binding_descriptions: *const crate::vk1_0::VertexInputBindingDescription,
pub vertex_attribute_description_count: u32,
pub p_vertex_attribute_descriptions: *const crate::vk1_0::VertexInputAttributeDescription,
}
impl PipelineVertexInputStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineVertexInputStateCreateInfoBuilder<'a> {
PipelineVertexInputStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineVertexInputStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineVertexInputStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field(
"vertex_binding_description_count",
&self.vertex_binding_description_count,
)
.field(
"p_vertex_binding_descriptions",
&self.p_vertex_binding_descriptions,
)
.field(
"vertex_attribute_description_count",
&self.vertex_attribute_description_count,
)
.field(
"p_vertex_attribute_descriptions",
&self.p_vertex_attribute_descriptions,
)
.finish()
}
}
impl Default for PipelineVertexInputStateCreateInfo {
fn default() -> PipelineVertexInputStateCreateInfo {
PipelineVertexInputStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
vertex_binding_description_count: Default::default(),
p_vertex_binding_descriptions: std::ptr::null(),
vertex_attribute_description_count: Default::default(),
p_vertex_attribute_descriptions: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html) · Builder of [`PipelineVertexInputStateCreateInfo`](struct.PipelineVertexInputStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineVertexInputStateCreateInfoBuilder<'a>(
PipelineVertexInputStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineVertexInputStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineVertexInputStateCreateInfoBuilder<'a> {
PipelineVertexInputStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineVertexInputStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn vertex_binding_descriptions(
mut self,
vertex_binding_descriptions: &'a [crate::vk1_0::VertexInputBindingDescriptionBuilder],
) -> Self {
self.0.vertex_binding_description_count = vertex_binding_descriptions.len() as _;
self.0.p_vertex_binding_descriptions = vertex_binding_descriptions.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn vertex_attribute_descriptions(
mut self,
vertex_attribute_descriptions: &'a [crate::vk1_0::VertexInputAttributeDescriptionBuilder],
) -> Self {
self.0.vertex_attribute_description_count = vertex_attribute_descriptions.len() as _;
self.0.p_vertex_attribute_descriptions = vertex_attribute_descriptions.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineVertexInputStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineVertexInputStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineVertexInputStateCreateInfoBuilder<'a> {
type Target = PipelineVertexInputStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineVertexInputStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineVertexInputStateCreateFlags`](struct.PipelineVertexInputStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineVertexInputStateCreateFlagBits(pub u32);
impl PipelineVertexInputStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineVertexInputStateCreateFlags {
PipelineVertexInputStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineVertexInputStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineVertexInputStateCreateFlags.html) · Flags of [`PipelineVertexInputStateCreateFlagBits`](struct.PipelineVertexInputStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineVertexInputStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDescription.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct VertexInputBindingDescription {
pub binding: u32,
pub stride: u32,
pub input_rate: crate::vk1_0::VertexInputRate,
}
impl VertexInputBindingDescription {
#[inline]
pub fn builder<'a>(self) -> VertexInputBindingDescriptionBuilder<'a> {
VertexInputBindingDescriptionBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for VertexInputBindingDescription {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("VertexInputBindingDescription")
.field("binding", &self.binding)
.field("stride", &self.stride)
.field("input_rate", &self.input_rate)
.finish()
}
}
impl Default for VertexInputBindingDescription {
fn default() -> VertexInputBindingDescription {
VertexInputBindingDescription {
binding: Default::default(),
stride: Default::default(),
input_rate: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputBindingDescription.html) · Builder of [`VertexInputBindingDescription`](struct.VertexInputBindingDescription.html)"]
#[repr(transparent)]
pub struct VertexInputBindingDescriptionBuilder<'a>(
VertexInputBindingDescription,
std::marker::PhantomData<&'a ()>,
);
impl<'a> VertexInputBindingDescriptionBuilder<'a> {
#[inline]
pub fn new() -> VertexInputBindingDescriptionBuilder<'a> {
VertexInputBindingDescriptionBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn binding(mut self, binding: u32) -> Self {
self.0.binding = binding;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stride(mut self, stride: u32) -> Self {
self.0.stride = stride;
self
}
#[allow(unused_mut)]
#[inline]
pub fn input_rate(mut self, input_rate: crate::vk1_0::VertexInputRate) -> Self {
self.0.input_rate = input_rate;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> VertexInputBindingDescription {
self.0
}
}
impl<'a> std::fmt::Debug for VertexInputBindingDescriptionBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for VertexInputBindingDescriptionBuilder<'a> {
type Target = VertexInputBindingDescription;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for VertexInputBindingDescriptionBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputRate.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct VertexInputRate(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl VertexInputRate {
pub const VERTEX: Self = Self(0);
pub const INSTANCE: Self = Self(1);
}
impl std::fmt::Debug for VertexInputRate {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::VERTEX => "VERTEX",
&Self::INSTANCE => "INSTANCE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputAttributeDescription.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct VertexInputAttributeDescription {
pub location: u32,
pub binding: u32,
pub format: crate::vk1_0::Format,
pub offset: u32,
}
impl VertexInputAttributeDescription {
#[inline]
pub fn builder<'a>(self) -> VertexInputAttributeDescriptionBuilder<'a> {
VertexInputAttributeDescriptionBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for VertexInputAttributeDescription {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("VertexInputAttributeDescription")
.field("location", &self.location)
.field("binding", &self.binding)
.field("format", &self.format)
.field("offset", &self.offset)
.finish()
}
}
impl Default for VertexInputAttributeDescription {
fn default() -> VertexInputAttributeDescription {
VertexInputAttributeDescription {
location: Default::default(),
binding: Default::default(),
format: Default::default(),
offset: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVertexInputAttributeDescription.html) · Builder of [`VertexInputAttributeDescription`](struct.VertexInputAttributeDescription.html)"]
#[repr(transparent)]
pub struct VertexInputAttributeDescriptionBuilder<'a>(
VertexInputAttributeDescription,
std::marker::PhantomData<&'a ()>,
);
impl<'a> VertexInputAttributeDescriptionBuilder<'a> {
#[inline]
pub fn new() -> VertexInputAttributeDescriptionBuilder<'a> {
VertexInputAttributeDescriptionBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn location(mut self, location: u32) -> Self {
self.0.location = location;
self
}
#[allow(unused_mut)]
#[inline]
pub fn binding(mut self, binding: u32) -> Self {
self.0.binding = binding;
self
}
#[allow(unused_mut)]
#[inline]
pub fn format(mut self, format: crate::vk1_0::Format) -> Self {
self.0.format = format;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: u32) -> Self {
self.0.offset = offset;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> VertexInputAttributeDescription {
self.0
}
}
impl<'a> std::fmt::Debug for VertexInputAttributeDescriptionBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for VertexInputAttributeDescriptionBuilder<'a> {
type Target = VertexInputAttributeDescription;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for VertexInputAttributeDescriptionBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineInputAssemblyStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineInputAssemblyStateCreateFlags,
pub topology: crate::vk1_0::PrimitiveTopology,
pub primitive_restart_enable: crate::vk1_0::Bool32,
}
impl PipelineInputAssemblyStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
PipelineInputAssemblyStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineInputAssemblyStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineInputAssemblyStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("topology", &self.topology)
.field(
"primitive_restart_enable",
&(self.primitive_restart_enable != 0),
)
.finish()
}
}
impl Default for PipelineInputAssemblyStateCreateInfo {
fn default() -> PipelineInputAssemblyStateCreateInfo {
PipelineInputAssemblyStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
topology: Default::default(),
primitive_restart_enable: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html) · Builder of [`PipelineInputAssemblyStateCreateInfo`](struct.PipelineInputAssemblyStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineInputAssemblyStateCreateInfoBuilder<'a>(
PipelineInputAssemblyStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineInputAssemblyStateCreateInfoBuilder<'a> {
PipelineInputAssemblyStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineInputAssemblyStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn topology(mut self, topology: crate::vk1_0::PrimitiveTopology) -> Self {
self.0.topology = topology;
self
}
#[allow(unused_mut)]
#[inline]
pub fn primitive_restart_enable(mut self, primitive_restart_enable: bool) -> Self {
self.0.primitive_restart_enable = primitive_restart_enable as u32;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineInputAssemblyStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
type Target = PipelineInputAssemblyStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineInputAssemblyStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineInputAssemblyStateCreateFlags`](struct.PipelineInputAssemblyStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineInputAssemblyStateCreateFlagBits(pub u32);
impl PipelineInputAssemblyStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineInputAssemblyStateCreateFlags {
PipelineInputAssemblyStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineInputAssemblyStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineInputAssemblyStateCreateFlags.html) · Flags of [`PipelineInputAssemblyStateCreateFlagBits`](struct.PipelineInputAssemblyStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineInputAssemblyStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPrimitiveTopology.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PrimitiveTopology(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PrimitiveTopology {
pub const POINT_LIST: Self = Self(0);
pub const LINE_LIST: Self = Self(1);
pub const LINE_STRIP: Self = Self(2);
pub const TRIANGLE_LIST: Self = Self(3);
pub const TRIANGLE_STRIP: Self = Self(4);
pub const TRIANGLE_FAN: Self = Self(5);
pub const LINE_LIST_WITH_ADJACENCY: Self = Self(6);
pub const LINE_STRIP_WITH_ADJACENCY: Self = Self(7);
pub const TRIANGLE_LIST_WITH_ADJACENCY: Self = Self(8);
pub const TRIANGLE_STRIP_WITH_ADJACENCY: Self = Self(9);
pub const PATCH_LIST: Self = Self(10);
}
impl std::fmt::Debug for PrimitiveTopology {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::POINT_LIST => "POINT_LIST",
&Self::LINE_LIST => "LINE_LIST",
&Self::LINE_STRIP => "LINE_STRIP",
&Self::TRIANGLE_LIST => "TRIANGLE_LIST",
&Self::TRIANGLE_STRIP => "TRIANGLE_STRIP",
&Self::TRIANGLE_FAN => "TRIANGLE_FAN",
&Self::LINE_LIST_WITH_ADJACENCY => "LINE_LIST_WITH_ADJACENCY",
&Self::LINE_STRIP_WITH_ADJACENCY => "LINE_STRIP_WITH_ADJACENCY",
&Self::TRIANGLE_LIST_WITH_ADJACENCY => "TRIANGLE_LIST_WITH_ADJACENCY",
&Self::TRIANGLE_STRIP_WITH_ADJACENCY => "TRIANGLE_STRIP_WITH_ADJACENCY",
&Self::PATCH_LIST => "PATCH_LIST",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineTessellationStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineTessellationStateCreateFlags,
pub patch_control_points: u32,
}
impl PipelineTessellationStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineTessellationStateCreateInfoBuilder<'a> {
PipelineTessellationStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineTessellationStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineTessellationStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("patch_control_points", &self.patch_control_points)
.finish()
}
}
impl Default for PipelineTessellationStateCreateInfo {
fn default() -> PipelineTessellationStateCreateInfo {
PipelineTessellationStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_TESSELLATION_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
patch_control_points: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateInfo.html) · Builder of [`PipelineTessellationStateCreateInfo`](struct.PipelineTessellationStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineTessellationStateCreateInfoBuilder<'a>(
PipelineTessellationStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineTessellationStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineTessellationStateCreateInfoBuilder<'a> {
PipelineTessellationStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineTessellationStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn patch_control_points(mut self, patch_control_points: u32) -> Self {
self.0.patch_control_points = patch_control_points;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineTessellationStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineTessellationStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineTessellationStateCreateInfoBuilder<'a> {
type Target = PipelineTessellationStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineTessellationStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineTessellationStateCreateFlags`](struct.PipelineTessellationStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineTessellationStateCreateFlagBits(pub u32);
impl PipelineTessellationStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineTessellationStateCreateFlags {
PipelineTessellationStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineTessellationStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineTessellationStateCreateFlags.html) · Flags of [`PipelineTessellationStateCreateFlagBits`](struct.PipelineTessellationStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineTessellationStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineViewportStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineViewportStateCreateFlags,
pub viewport_count: u32,
pub p_viewports: *const crate::vk1_0::Viewport,
pub scissor_count: u32,
pub p_scissors: *const crate::vk1_0::Rect2D,
}
impl PipelineViewportStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineViewportStateCreateInfoBuilder<'a> {
PipelineViewportStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineViewportStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineViewportStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("viewport_count", &self.viewport_count)
.field("p_viewports", &self.p_viewports)
.field("scissor_count", &self.scissor_count)
.field("p_scissors", &self.p_scissors)
.finish()
}
}
impl Default for PipelineViewportStateCreateInfo {
fn default() -> PipelineViewportStateCreateInfo {
PipelineViewportStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_VIEWPORT_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
viewport_count: Default::default(),
p_viewports: std::ptr::null(),
scissor_count: Default::default(),
p_scissors: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateInfo.html) · Builder of [`PipelineViewportStateCreateInfo`](struct.PipelineViewportStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineViewportStateCreateInfoBuilder<'a>(
PipelineViewportStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineViewportStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineViewportStateCreateInfoBuilder<'a> {
PipelineViewportStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineViewportStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn viewport_count(mut self, viewport_count: u32) -> Self {
self.0.viewport_count = viewport_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn viewports(mut self, viewports: &'a [crate::vk1_0::ViewportBuilder]) -> Self {
self.0.viewport_count = viewports.len() as _;
self.0.p_viewports = viewports.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn scissor_count(mut self, scissor_count: u32) -> Self {
self.0.scissor_count = scissor_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn scissors(mut self, scissors: &'a [crate::vk1_0::Rect2DBuilder]) -> Self {
self.0.scissor_count = scissors.len() as _;
self.0.p_scissors = scissors.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineViewportStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineViewportStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineViewportStateCreateInfoBuilder<'a> {
type Target = PipelineViewportStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineViewportStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineViewportStateCreateFlags`](struct.PipelineViewportStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineViewportStateCreateFlagBits(pub u32);
impl PipelineViewportStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineViewportStateCreateFlags {
PipelineViewportStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineViewportStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportStateCreateFlags.html) · Flags of [`PipelineViewportStateCreateFlagBits`](struct.PipelineViewportStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineViewportStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewport.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Viewport {
pub x: f32,
pub y: f32,
pub width: f32,
pub height: f32,
pub min_depth: f32,
pub max_depth: f32,
}
impl Viewport {
#[inline]
pub fn builder<'a>(self) -> ViewportBuilder<'a> {
ViewportBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for Viewport {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("Viewport")
.field("x", &self.x)
.field("y", &self.y)
.field("width", &self.width)
.field("height", &self.height)
.field("min_depth", &self.min_depth)
.field("max_depth", &self.max_depth)
.finish()
}
}
impl Default for Viewport {
fn default() -> Viewport {
Viewport {
x: Default::default(),
y: Default::default(),
width: Default::default(),
height: Default::default(),
min_depth: Default::default(),
max_depth: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkViewport.html) · Builder of [`Viewport`](struct.Viewport.html)"]
#[repr(transparent)]
pub struct ViewportBuilder<'a>(Viewport, std::marker::PhantomData<&'a ()>);
impl<'a> ViewportBuilder<'a> {
#[inline]
pub fn new() -> ViewportBuilder<'a> {
ViewportBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn x(mut self, x: f32) -> Self {
self.0.x = x;
self
}
#[allow(unused_mut)]
#[inline]
pub fn y(mut self, y: f32) -> Self {
self.0.y = y;
self
}
#[allow(unused_mut)]
#[inline]
pub fn width(mut self, width: f32) -> Self {
self.0.width = width;
self
}
#[allow(unused_mut)]
#[inline]
pub fn height(mut self, height: f32) -> Self {
self.0.height = height;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_depth(mut self, min_depth: f32) -> Self {
self.0.min_depth = min_depth;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_depth(mut self, max_depth: f32) -> Self {
self.0.max_depth = max_depth;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> Viewport {
self.0
}
}
impl<'a> std::fmt::Debug for ViewportBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ViewportBuilder<'a> {
type Target = Viewport;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ViewportBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRect2D.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Rect2D {
pub offset: crate::vk1_0::Offset2D,
pub extent: crate::vk1_0::Extent2D,
}
impl Rect2D {
#[inline]
pub fn builder<'a>(self) -> Rect2DBuilder<'a> {
Rect2DBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for Rect2D {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("Rect2D")
.field("offset", &self.offset)
.field("extent", &self.extent)
.finish()
}
}
impl Default for Rect2D {
fn default() -> Rect2D {
Rect2D {
offset: Default::default(),
extent: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRect2D.html) · Builder of [`Rect2D`](struct.Rect2D.html)"]
#[repr(transparent)]
pub struct Rect2DBuilder<'a>(Rect2D, std::marker::PhantomData<&'a ()>);
impl<'a> Rect2DBuilder<'a> {
#[inline]
pub fn new() -> Rect2DBuilder<'a> {
Rect2DBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::Offset2D) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn extent(mut self, extent: crate::vk1_0::Extent2D) -> Self {
self.0.extent = extent;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> Rect2D {
self.0
}
}
impl<'a> std::fmt::Debug for Rect2DBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for Rect2DBuilder<'a> {
type Target = Rect2D;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for Rect2DBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset2D.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Offset2D {
pub x: i32,
pub y: i32,
}
impl Offset2D {
#[inline]
pub fn builder<'a>(self) -> Offset2DBuilder<'a> {
Offset2DBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for Offset2D {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("Offset2D")
.field("x", &self.x)
.field("y", &self.y)
.finish()
}
}
impl Default for Offset2D {
fn default() -> Offset2D {
Offset2D {
x: Default::default(),
y: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkOffset2D.html) · Builder of [`Offset2D`](struct.Offset2D.html)"]
#[repr(transparent)]
pub struct Offset2DBuilder<'a>(Offset2D, std::marker::PhantomData<&'a ()>);
impl<'a> Offset2DBuilder<'a> {
#[inline]
pub fn new() -> Offset2DBuilder<'a> {
Offset2DBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn x(mut self, x: i32) -> Self {
self.0.x = x;
self
}
#[allow(unused_mut)]
#[inline]
pub fn y(mut self, y: i32) -> Self {
self.0.y = y;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> Offset2D {
self.0
}
}
impl<'a> std::fmt::Debug for Offset2DBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for Offset2DBuilder<'a> {
type Target = Offset2D;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for Offset2DBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent2D.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Extent2D {
pub width: u32,
pub height: u32,
}
impl Extent2D {
#[inline]
pub fn builder<'a>(self) -> Extent2DBuilder<'a> {
Extent2DBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for Extent2D {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("Extent2D")
.field("width", &self.width)
.field("height", &self.height)
.finish()
}
}
impl Default for Extent2D {
fn default() -> Extent2D {
Extent2D {
width: Default::default(),
height: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkExtent2D.html) · Builder of [`Extent2D`](struct.Extent2D.html)"]
#[repr(transparent)]
pub struct Extent2DBuilder<'a>(Extent2D, std::marker::PhantomData<&'a ()>);
impl<'a> Extent2DBuilder<'a> {
#[inline]
pub fn new() -> Extent2DBuilder<'a> {
Extent2DBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn width(mut self, width: u32) -> Self {
self.0.width = width;
self
}
#[allow(unused_mut)]
#[inline]
pub fn height(mut self, height: u32) -> Self {
self.0.height = height;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> Extent2D {
self.0
}
}
impl<'a> std::fmt::Debug for Extent2DBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for Extent2DBuilder<'a> {
type Target = Extent2D;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for Extent2DBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineRasterizationStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineRasterizationStateCreateFlags,
pub depth_clamp_enable: crate::vk1_0::Bool32,
pub rasterizer_discard_enable: crate::vk1_0::Bool32,
pub polygon_mode: crate::vk1_0::PolygonMode,
pub cull_mode: crate::vk1_0::CullModeFlags,
pub front_face: crate::vk1_0::FrontFace,
pub depth_bias_enable: crate::vk1_0::Bool32,
pub depth_bias_constant_factor: f32,
pub depth_bias_clamp: f32,
pub depth_bias_slope_factor: f32,
pub line_width: f32,
}
impl PipelineRasterizationStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineRasterizationStateCreateInfoBuilder<'a> {
PipelineRasterizationStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineRasterizationStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineRasterizationStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("depth_clamp_enable", &(self.depth_clamp_enable != 0))
.field(
"rasterizer_discard_enable",
&(self.rasterizer_discard_enable != 0),
)
.field("polygon_mode", &self.polygon_mode)
.field("cull_mode", &self.cull_mode)
.field("front_face", &self.front_face)
.field("depth_bias_enable", &(self.depth_bias_enable != 0))
.field(
"depth_bias_constant_factor",
&self.depth_bias_constant_factor,
)
.field("depth_bias_clamp", &self.depth_bias_clamp)
.field("depth_bias_slope_factor", &self.depth_bias_slope_factor)
.field("line_width", &self.line_width)
.finish()
}
}
impl Default for PipelineRasterizationStateCreateInfo {
fn default() -> PipelineRasterizationStateCreateInfo {
PipelineRasterizationStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
depth_clamp_enable: Default::default(),
rasterizer_discard_enable: Default::default(),
polygon_mode: Default::default(),
cull_mode: Default::default(),
front_face: Default::default(),
depth_bias_enable: Default::default(),
depth_bias_constant_factor: Default::default(),
depth_bias_clamp: Default::default(),
depth_bias_slope_factor: Default::default(),
line_width: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateInfo.html) · Builder of [`PipelineRasterizationStateCreateInfo`](struct.PipelineRasterizationStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineRasterizationStateCreateInfoBuilder<'a>(
PipelineRasterizationStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineRasterizationStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineRasterizationStateCreateInfoBuilder<'a> {
PipelineRasterizationStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineRasterizationStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_clamp_enable(mut self, depth_clamp_enable: bool) -> Self {
self.0.depth_clamp_enable = depth_clamp_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn rasterizer_discard_enable(mut self, rasterizer_discard_enable: bool) -> Self {
self.0.rasterizer_discard_enable = rasterizer_discard_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn polygon_mode(mut self, polygon_mode: crate::vk1_0::PolygonMode) -> Self {
self.0.polygon_mode = polygon_mode;
self
}
#[allow(unused_mut)]
#[inline]
pub fn cull_mode(mut self, cull_mode: crate::vk1_0::CullModeFlags) -> Self {
self.0.cull_mode = cull_mode;
self
}
#[allow(unused_mut)]
#[inline]
pub fn front_face(mut self, front_face: crate::vk1_0::FrontFace) -> Self {
self.0.front_face = front_face;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bias_enable(mut self, depth_bias_enable: bool) -> Self {
self.0.depth_bias_enable = depth_bias_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bias_constant_factor(mut self, depth_bias_constant_factor: f32) -> Self {
self.0.depth_bias_constant_factor = depth_bias_constant_factor;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bias_clamp(mut self, depth_bias_clamp: f32) -> Self {
self.0.depth_bias_clamp = depth_bias_clamp;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bias_slope_factor(mut self, depth_bias_slope_factor: f32) -> Self {
self.0.depth_bias_slope_factor = depth_bias_slope_factor;
self
}
#[allow(unused_mut)]
#[inline]
pub fn line_width(mut self, line_width: f32) -> Self {
self.0.line_width = line_width;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineRasterizationStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineRasterizationStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineRasterizationStateCreateInfoBuilder<'a> {
type Target = PipelineRasterizationStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineRasterizationStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineRasterizationStateCreateFlags`](struct.PipelineRasterizationStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineRasterizationStateCreateFlagBits(pub u32);
impl PipelineRasterizationStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineRasterizationStateCreateFlags {
PipelineRasterizationStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineRasterizationStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineRasterizationStateCreateFlags.html) · Flags of [`PipelineRasterizationStateCreateFlagBits`](struct.PipelineRasterizationStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineRasterizationStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPolygonMode.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PolygonMode(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PolygonMode {
pub const FILL: Self = Self(0);
pub const LINE: Self = Self(1);
pub const POINT: Self = Self(2);
}
#[doc = "[Part of `extensions::nv_fill_rectangle`](../extensions/nv_fill_rectangle/index.html)"]
impl PolygonMode {
pub const FILL_RECTANGLE_NV: Self = Self(1000153000);
}
impl std::fmt::Debug for PolygonMode {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::FILL => "FILL",
&Self::LINE => "LINE",
&Self::POINT => "POINT",
&Self::FILL_RECTANGLE_NV => "FILL_RECTANGLE_NV",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCullModeFlagBits.html) · Flag Bits of [`CullModeFlags`](struct.CullModeFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CullModeFlagBits(pub u32);
impl CullModeFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> CullModeFlags {
CullModeFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CullModeFlagBits {
pub const NONE: Self = Self(0);
pub const FRONT: Self = Self(0x00000001);
pub const BACK: Self = Self(0x00000002);
pub const FRONT_AND_BACK: Self = Self(0x00000003);
}
impl std::fmt::Debug for CullModeFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::NONE => "NONE",
&Self::FRONT => "FRONT",
&Self::BACK => "BACK",
&Self::FRONT_AND_BACK => "FRONT_AND_BACK",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCullModeFlags.html) · Flags of [`CullModeFlagBits`](struct.CullModeFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct CullModeFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const NONE = CullModeFlagBits :: NONE . 0 ; const FRONT = CullModeFlagBits :: FRONT . 0 ; const BACK = CullModeFlagBits :: BACK . 0 ; const FRONT_AND_BACK = CullModeFlagBits :: FRONT_AND_BACK . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFrontFace.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct FrontFace(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl FrontFace {
pub const COUNTER_CLOCKWISE: Self = Self(0);
pub const CLOCKWISE: Self = Self(1);
}
impl std::fmt::Debug for FrontFace {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::COUNTER_CLOCKWISE => "COUNTER_CLOCKWISE",
&Self::CLOCKWISE => "CLOCKWISE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineMultisampleStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineMultisampleStateCreateFlags,
pub rasterization_samples: crate::vk1_0::SampleCountFlagBits,
pub sample_shading_enable: crate::vk1_0::Bool32,
pub min_sample_shading: f32,
pub p_sample_mask: *const crate::vk1_0::SampleMask,
pub alpha_to_coverage_enable: crate::vk1_0::Bool32,
pub alpha_to_one_enable: crate::vk1_0::Bool32,
}
impl PipelineMultisampleStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineMultisampleStateCreateInfoBuilder<'a> {
PipelineMultisampleStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineMultisampleStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineMultisampleStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("rasterization_samples", &self.rasterization_samples)
.field("sample_shading_enable", &(self.sample_shading_enable != 0))
.field("min_sample_shading", &self.min_sample_shading)
.field("p_sample_mask", &self.p_sample_mask)
.field(
"alpha_to_coverage_enable",
&(self.alpha_to_coverage_enable != 0),
)
.field("alpha_to_one_enable", &(self.alpha_to_one_enable != 0))
.finish()
}
}
impl Default for PipelineMultisampleStateCreateInfo {
fn default() -> PipelineMultisampleStateCreateInfo {
PipelineMultisampleStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
rasterization_samples: Default::default(),
sample_shading_enable: Default::default(),
min_sample_shading: Default::default(),
p_sample_mask: std::ptr::null(),
alpha_to_coverage_enable: Default::default(),
alpha_to_one_enable: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html) · Builder of [`PipelineMultisampleStateCreateInfo`](struct.PipelineMultisampleStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineMultisampleStateCreateInfoBuilder<'a>(
PipelineMultisampleStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineMultisampleStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineMultisampleStateCreateInfoBuilder<'a> {
PipelineMultisampleStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineMultisampleStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn rasterization_samples(
mut self,
rasterization_samples: crate::vk1_0::SampleCountFlagBits,
) -> Self {
self.0.rasterization_samples = rasterization_samples;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sample_shading_enable(mut self, sample_shading_enable: bool) -> Self {
self.0.sample_shading_enable = sample_shading_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_sample_shading(mut self, min_sample_shading: f32) -> Self {
self.0.min_sample_shading = min_sample_shading;
self
}
#[allow(unused_mut)]
#[inline]
pub fn sample_mask(mut self, sample_mask: &'a crate::vk1_0::SampleMask) -> Self {
self.0.p_sample_mask = sample_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn alpha_to_coverage_enable(mut self, alpha_to_coverage_enable: bool) -> Self {
self.0.alpha_to_coverage_enable = alpha_to_coverage_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn alpha_to_one_enable(mut self, alpha_to_one_enable: bool) -> Self {
self.0.alpha_to_one_enable = alpha_to_one_enable as u32;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineMultisampleStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineMultisampleStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineMultisampleStateCreateInfoBuilder<'a> {
type Target = PipelineMultisampleStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineMultisampleStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineMultisampleStateCreateFlags`](struct.PipelineMultisampleStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineMultisampleStateCreateFlagBits(pub u32);
impl PipelineMultisampleStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineMultisampleStateCreateFlags {
PipelineMultisampleStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineMultisampleStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineMultisampleStateCreateFlags.html) · Flags of [`PipelineMultisampleStateCreateFlagBits`](struct.PipelineMultisampleStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineMultisampleStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampleMask.html) · Base Type"]
pub type SampleMask = u32;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineDepthStencilStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineDepthStencilStateCreateFlags,
pub depth_test_enable: crate::vk1_0::Bool32,
pub depth_write_enable: crate::vk1_0::Bool32,
pub depth_compare_op: crate::vk1_0::CompareOp,
pub depth_bounds_test_enable: crate::vk1_0::Bool32,
pub stencil_test_enable: crate::vk1_0::Bool32,
pub front: crate::vk1_0::StencilOpState,
pub back: crate::vk1_0::StencilOpState,
pub min_depth_bounds: f32,
pub max_depth_bounds: f32,
}
impl PipelineDepthStencilStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineDepthStencilStateCreateInfoBuilder<'a> {
PipelineDepthStencilStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineDepthStencilStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineDepthStencilStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("depth_test_enable", &(self.depth_test_enable != 0))
.field("depth_write_enable", &(self.depth_write_enable != 0))
.field("depth_compare_op", &self.depth_compare_op)
.field(
"depth_bounds_test_enable",
&(self.depth_bounds_test_enable != 0),
)
.field("stencil_test_enable", &(self.stencil_test_enable != 0))
.field("front", &self.front)
.field("back", &self.back)
.field("min_depth_bounds", &self.min_depth_bounds)
.field("max_depth_bounds", &self.max_depth_bounds)
.finish()
}
}
impl Default for PipelineDepthStencilStateCreateInfo {
fn default() -> PipelineDepthStencilStateCreateInfo {
PipelineDepthStencilStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
depth_test_enable: Default::default(),
depth_write_enable: Default::default(),
depth_compare_op: Default::default(),
depth_bounds_test_enable: Default::default(),
stencil_test_enable: Default::default(),
front: Default::default(),
back: Default::default(),
min_depth_bounds: Default::default(),
max_depth_bounds: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html) · Builder of [`PipelineDepthStencilStateCreateInfo`](struct.PipelineDepthStencilStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineDepthStencilStateCreateInfoBuilder<'a>(
PipelineDepthStencilStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineDepthStencilStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineDepthStencilStateCreateInfoBuilder<'a> {
PipelineDepthStencilStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineDepthStencilStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_test_enable(mut self, depth_test_enable: bool) -> Self {
self.0.depth_test_enable = depth_test_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_write_enable(mut self, depth_write_enable: bool) -> Self {
self.0.depth_write_enable = depth_write_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_compare_op(mut self, depth_compare_op: crate::vk1_0::CompareOp) -> Self {
self.0.depth_compare_op = depth_compare_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_bounds_test_enable(mut self, depth_bounds_test_enable: bool) -> Self {
self.0.depth_bounds_test_enable = depth_bounds_test_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stencil_test_enable(mut self, stencil_test_enable: bool) -> Self {
self.0.stencil_test_enable = stencil_test_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn front(mut self, front: crate::vk1_0::StencilOpState) -> Self {
self.0.front = front;
self
}
#[allow(unused_mut)]
#[inline]
pub fn back(mut self, back: crate::vk1_0::StencilOpState) -> Self {
self.0.back = back;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_depth_bounds(mut self, min_depth_bounds: f32) -> Self {
self.0.min_depth_bounds = min_depth_bounds;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_depth_bounds(mut self, max_depth_bounds: f32) -> Self {
self.0.max_depth_bounds = max_depth_bounds;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineDepthStencilStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineDepthStencilStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineDepthStencilStateCreateInfoBuilder<'a> {
type Target = PipelineDepthStencilStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineDepthStencilStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineDepthStencilStateCreateFlags`](struct.PipelineDepthStencilStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineDepthStencilStateCreateFlagBits(pub u32);
impl PipelineDepthStencilStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineDepthStencilStateCreateFlags {
PipelineDepthStencilStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineDepthStencilStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDepthStencilStateCreateFlags.html) · Flags of [`PipelineDepthStencilStateCreateFlagBits`](struct.PipelineDepthStencilStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineDepthStencilStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCompareOp.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CompareOp(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CompareOp {
pub const NEVER: Self = Self(0);
pub const LESS: Self = Self(1);
pub const EQUAL: Self = Self(2);
pub const LESS_OR_EQUAL: Self = Self(3);
pub const GREATER: Self = Self(4);
pub const NOT_EQUAL: Self = Self(5);
pub const GREATER_OR_EQUAL: Self = Self(6);
pub const ALWAYS: Self = Self(7);
}
impl std::fmt::Debug for CompareOp {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::NEVER => "NEVER",
&Self::LESS => "LESS",
&Self::EQUAL => "EQUAL",
&Self::LESS_OR_EQUAL => "LESS_OR_EQUAL",
&Self::GREATER => "GREATER",
&Self::NOT_EQUAL => "NOT_EQUAL",
&Self::GREATER_OR_EQUAL => "GREATER_OR_EQUAL",
&Self::ALWAYS => "ALWAYS",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilOpState.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct StencilOpState {
pub fail_op: crate::vk1_0::StencilOp,
pub pass_op: crate::vk1_0::StencilOp,
pub depth_fail_op: crate::vk1_0::StencilOp,
pub compare_op: crate::vk1_0::CompareOp,
pub compare_mask: u32,
pub write_mask: u32,
pub reference: u32,
}
impl StencilOpState {
#[inline]
pub fn builder<'a>(self) -> StencilOpStateBuilder<'a> {
StencilOpStateBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for StencilOpState {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("StencilOpState")
.field("fail_op", &self.fail_op)
.field("pass_op", &self.pass_op)
.field("depth_fail_op", &self.depth_fail_op)
.field("compare_op", &self.compare_op)
.field("compare_mask", &self.compare_mask)
.field("write_mask", &self.write_mask)
.field("reference", &self.reference)
.finish()
}
}
impl Default for StencilOpState {
fn default() -> StencilOpState {
StencilOpState {
fail_op: Default::default(),
pass_op: Default::default(),
depth_fail_op: Default::default(),
compare_op: Default::default(),
compare_mask: Default::default(),
write_mask: Default::default(),
reference: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilOpState.html) · Builder of [`StencilOpState`](struct.StencilOpState.html)"]
#[repr(transparent)]
pub struct StencilOpStateBuilder<'a>(StencilOpState, std::marker::PhantomData<&'a ()>);
impl<'a> StencilOpStateBuilder<'a> {
#[inline]
pub fn new() -> StencilOpStateBuilder<'a> {
StencilOpStateBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn fail_op(mut self, fail_op: crate::vk1_0::StencilOp) -> Self {
self.0.fail_op = fail_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pass_op(mut self, pass_op: crate::vk1_0::StencilOp) -> Self {
self.0.pass_op = pass_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_fail_op(mut self, depth_fail_op: crate::vk1_0::StencilOp) -> Self {
self.0.depth_fail_op = depth_fail_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn compare_op(mut self, compare_op: crate::vk1_0::CompareOp) -> Self {
self.0.compare_op = compare_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn compare_mask(mut self, compare_mask: u32) -> Self {
self.0.compare_mask = compare_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn write_mask(mut self, write_mask: u32) -> Self {
self.0.write_mask = write_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn reference(mut self, reference: u32) -> Self {
self.0.reference = reference;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> StencilOpState {
self.0
}
}
impl<'a> std::fmt::Debug for StencilOpStateBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for StencilOpStateBuilder<'a> {
type Target = StencilOpState;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for StencilOpStateBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilOp.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct StencilOp(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl StencilOp {
pub const KEEP: Self = Self(0);
pub const ZERO: Self = Self(1);
pub const REPLACE: Self = Self(2);
pub const INCREMENT_AND_CLAMP: Self = Self(3);
pub const DECREMENT_AND_CLAMP: Self = Self(4);
pub const INVERT: Self = Self(5);
pub const INCREMENT_AND_WRAP: Self = Self(6);
pub const DECREMENT_AND_WRAP: Self = Self(7);
}
impl std::fmt::Debug for StencilOp {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::KEEP => "KEEP",
&Self::ZERO => "ZERO",
&Self::REPLACE => "REPLACE",
&Self::INCREMENT_AND_CLAMP => "INCREMENT_AND_CLAMP",
&Self::DECREMENT_AND_CLAMP => "DECREMENT_AND_CLAMP",
&Self::INVERT => "INVERT",
&Self::INCREMENT_AND_WRAP => "INCREMENT_AND_WRAP",
&Self::DECREMENT_AND_WRAP => "DECREMENT_AND_WRAP",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineColorBlendStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineColorBlendStateCreateFlags,
pub logic_op_enable: crate::vk1_0::Bool32,
pub logic_op: crate::vk1_0::LogicOp,
pub attachment_count: u32,
pub p_attachments: *const crate::vk1_0::PipelineColorBlendAttachmentState,
pub blend_constants: [f32; 4],
}
impl PipelineColorBlendStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineColorBlendStateCreateInfoBuilder<'a> {
PipelineColorBlendStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineColorBlendStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineColorBlendStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("logic_op_enable", &(self.logic_op_enable != 0))
.field("logic_op", &self.logic_op)
.field("attachment_count", &self.attachment_count)
.field("p_attachments", &self.p_attachments)
.field("blend_constants", &self.blend_constants)
.finish()
}
}
impl Default for PipelineColorBlendStateCreateInfo {
fn default() -> PipelineColorBlendStateCreateInfo {
PipelineColorBlendStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
logic_op_enable: Default::default(),
logic_op: Default::default(),
attachment_count: Default::default(),
p_attachments: std::ptr::null(),
blend_constants: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html) · Builder of [`PipelineColorBlendStateCreateInfo`](struct.PipelineColorBlendStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineColorBlendStateCreateInfoBuilder<'a>(
PipelineColorBlendStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineColorBlendStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineColorBlendStateCreateInfoBuilder<'a> {
PipelineColorBlendStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineColorBlendStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn logic_op_enable(mut self, logic_op_enable: bool) -> Self {
self.0.logic_op_enable = logic_op_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn logic_op(mut self, logic_op: crate::vk1_0::LogicOp) -> Self {
self.0.logic_op = logic_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn attachments(
mut self,
attachments: &'a [crate::vk1_0::PipelineColorBlendAttachmentStateBuilder],
) -> Self {
self.0.attachment_count = attachments.len() as _;
self.0.p_attachments = attachments.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn blend_constants(mut self, blend_constants: [f32; 4]) -> Self {
self.0.blend_constants = blend_constants;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineColorBlendStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineColorBlendStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineColorBlendStateCreateInfoBuilder<'a> {
type Target = PipelineColorBlendStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineColorBlendStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineColorBlendStateCreateFlags`](struct.PipelineColorBlendStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineColorBlendStateCreateFlagBits(pub u32);
impl PipelineColorBlendStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineColorBlendStateCreateFlags {
PipelineColorBlendStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineColorBlendStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendStateCreateFlags.html) · Flags of [`PipelineColorBlendStateCreateFlagBits`](struct.PipelineColorBlendStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineColorBlendStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkLogicOp.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct LogicOp(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl LogicOp {
pub const CLEAR: Self = Self(0);
pub const AND: Self = Self(1);
pub const AND_REVERSE: Self = Self(2);
pub const COPY: Self = Self(3);
pub const AND_INVERTED: Self = Self(4);
pub const NO_OP: Self = Self(5);
pub const XOR: Self = Self(6);
pub const OR: Self = Self(7);
pub const NOR: Self = Self(8);
pub const EQUIVALENT: Self = Self(9);
pub const INVERT: Self = Self(10);
pub const OR_REVERSE: Self = Self(11);
pub const COPY_INVERTED: Self = Self(12);
pub const OR_INVERTED: Self = Self(13);
pub const NAND: Self = Self(14);
pub const SET: Self = Self(15);
}
impl std::fmt::Debug for LogicOp {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::CLEAR => "CLEAR",
&Self::AND => "AND",
&Self::AND_REVERSE => "AND_REVERSE",
&Self::COPY => "COPY",
&Self::AND_INVERTED => "AND_INVERTED",
&Self::NO_OP => "NO_OP",
&Self::XOR => "XOR",
&Self::OR => "OR",
&Self::NOR => "NOR",
&Self::EQUIVALENT => "EQUIVALENT",
&Self::INVERT => "INVERT",
&Self::OR_REVERSE => "OR_REVERSE",
&Self::COPY_INVERTED => "COPY_INVERTED",
&Self::OR_INVERTED => "OR_INVERTED",
&Self::NAND => "NAND",
&Self::SET => "SET",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendAttachmentState.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineColorBlendAttachmentState {
pub blend_enable: crate::vk1_0::Bool32,
pub src_color_blend_factor: crate::vk1_0::BlendFactor,
pub dst_color_blend_factor: crate::vk1_0::BlendFactor,
pub color_blend_op: crate::vk1_0::BlendOp,
pub src_alpha_blend_factor: crate::vk1_0::BlendFactor,
pub dst_alpha_blend_factor: crate::vk1_0::BlendFactor,
pub alpha_blend_op: crate::vk1_0::BlendOp,
pub color_write_mask: crate::vk1_0::ColorComponentFlags,
}
impl PipelineColorBlendAttachmentState {
#[inline]
pub fn builder<'a>(self) -> PipelineColorBlendAttachmentStateBuilder<'a> {
PipelineColorBlendAttachmentStateBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineColorBlendAttachmentState {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineColorBlendAttachmentState")
.field("blend_enable", &(self.blend_enable != 0))
.field("src_color_blend_factor", &self.src_color_blend_factor)
.field("dst_color_blend_factor", &self.dst_color_blend_factor)
.field("color_blend_op", &self.color_blend_op)
.field("src_alpha_blend_factor", &self.src_alpha_blend_factor)
.field("dst_alpha_blend_factor", &self.dst_alpha_blend_factor)
.field("alpha_blend_op", &self.alpha_blend_op)
.field("color_write_mask", &self.color_write_mask)
.finish()
}
}
impl Default for PipelineColorBlendAttachmentState {
fn default() -> PipelineColorBlendAttachmentState {
PipelineColorBlendAttachmentState {
blend_enable: Default::default(),
src_color_blend_factor: Default::default(),
dst_color_blend_factor: Default::default(),
color_blend_op: Default::default(),
src_alpha_blend_factor: Default::default(),
dst_alpha_blend_factor: Default::default(),
alpha_blend_op: Default::default(),
color_write_mask: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineColorBlendAttachmentState.html) · Builder of [`PipelineColorBlendAttachmentState`](struct.PipelineColorBlendAttachmentState.html)"]
#[repr(transparent)]
pub struct PipelineColorBlendAttachmentStateBuilder<'a>(
PipelineColorBlendAttachmentState,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineColorBlendAttachmentStateBuilder<'a> {
#[inline]
pub fn new() -> PipelineColorBlendAttachmentStateBuilder<'a> {
PipelineColorBlendAttachmentStateBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn blend_enable(mut self, blend_enable: bool) -> Self {
self.0.blend_enable = blend_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_color_blend_factor(
mut self,
src_color_blend_factor: crate::vk1_0::BlendFactor,
) -> Self {
self.0.src_color_blend_factor = src_color_blend_factor;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_color_blend_factor(
mut self,
dst_color_blend_factor: crate::vk1_0::BlendFactor,
) -> Self {
self.0.dst_color_blend_factor = dst_color_blend_factor;
self
}
#[allow(unused_mut)]
#[inline]
pub fn color_blend_op(mut self, color_blend_op: crate::vk1_0::BlendOp) -> Self {
self.0.color_blend_op = color_blend_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_alpha_blend_factor(
mut self,
src_alpha_blend_factor: crate::vk1_0::BlendFactor,
) -> Self {
self.0.src_alpha_blend_factor = src_alpha_blend_factor;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_alpha_blend_factor(
mut self,
dst_alpha_blend_factor: crate::vk1_0::BlendFactor,
) -> Self {
self.0.dst_alpha_blend_factor = dst_alpha_blend_factor;
self
}
#[allow(unused_mut)]
#[inline]
pub fn alpha_blend_op(mut self, alpha_blend_op: crate::vk1_0::BlendOp) -> Self {
self.0.alpha_blend_op = alpha_blend_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn color_write_mask(mut self, color_write_mask: crate::vk1_0::ColorComponentFlags) -> Self {
self.0.color_write_mask = color_write_mask;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineColorBlendAttachmentState {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineColorBlendAttachmentStateBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineColorBlendAttachmentStateBuilder<'a> {
type Target = PipelineColorBlendAttachmentState;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineColorBlendAttachmentStateBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlendFactor.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct BlendFactor(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl BlendFactor {
pub const ZERO: Self = Self(0);
pub const ONE: Self = Self(1);
pub const SRC_COLOR: Self = Self(2);
pub const ONE_MINUS_SRC_COLOR: Self = Self(3);
pub const DST_COLOR: Self = Self(4);
pub const ONE_MINUS_DST_COLOR: Self = Self(5);
pub const SRC_ALPHA: Self = Self(6);
pub const ONE_MINUS_SRC_ALPHA: Self = Self(7);
pub const DST_ALPHA: Self = Self(8);
pub const ONE_MINUS_DST_ALPHA: Self = Self(9);
pub const CONSTANT_COLOR: Self = Self(10);
pub const ONE_MINUS_CONSTANT_COLOR: Self = Self(11);
pub const CONSTANT_ALPHA: Self = Self(12);
pub const ONE_MINUS_CONSTANT_ALPHA: Self = Self(13);
pub const SRC_ALPHA_SATURATE: Self = Self(14);
pub const SRC1_COLOR: Self = Self(15);
pub const ONE_MINUS_SRC1_COLOR: Self = Self(16);
pub const SRC1_ALPHA: Self = Self(17);
pub const ONE_MINUS_SRC1_ALPHA: Self = Self(18);
}
impl std::fmt::Debug for BlendFactor {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::ZERO => "ZERO",
&Self::ONE => "ONE",
&Self::SRC_COLOR => "SRC_COLOR",
&Self::ONE_MINUS_SRC_COLOR => "ONE_MINUS_SRC_COLOR",
&Self::DST_COLOR => "DST_COLOR",
&Self::ONE_MINUS_DST_COLOR => "ONE_MINUS_DST_COLOR",
&Self::SRC_ALPHA => "SRC_ALPHA",
&Self::ONE_MINUS_SRC_ALPHA => "ONE_MINUS_SRC_ALPHA",
&Self::DST_ALPHA => "DST_ALPHA",
&Self::ONE_MINUS_DST_ALPHA => "ONE_MINUS_DST_ALPHA",
&Self::CONSTANT_COLOR => "CONSTANT_COLOR",
&Self::ONE_MINUS_CONSTANT_COLOR => "ONE_MINUS_CONSTANT_COLOR",
&Self::CONSTANT_ALPHA => "CONSTANT_ALPHA",
&Self::ONE_MINUS_CONSTANT_ALPHA => "ONE_MINUS_CONSTANT_ALPHA",
&Self::SRC_ALPHA_SATURATE => "SRC_ALPHA_SATURATE",
&Self::SRC1_COLOR => "SRC1_COLOR",
&Self::ONE_MINUS_SRC1_COLOR => "ONE_MINUS_SRC1_COLOR",
&Self::SRC1_ALPHA => "SRC1_ALPHA",
&Self::ONE_MINUS_SRC1_ALPHA => "ONE_MINUS_SRC1_ALPHA",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBlendOp.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct BlendOp(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl BlendOp {
pub const ADD: Self = Self(0);
pub const SUBTRACT: Self = Self(1);
pub const REVERSE_SUBTRACT: Self = Self(2);
pub const MIN: Self = Self(3);
pub const MAX: Self = Self(4);
}
#[doc = "[Part of `extensions::ext_blend_operation_advanced`](../extensions/ext_blend_operation_advanced/index.html)"]
impl BlendOp {
pub const ZERO_EXT: Self = Self(1000148000);
pub const SRC_EXT: Self = Self(1000148001);
pub const DST_EXT: Self = Self(1000148002);
pub const SRC_OVER_EXT: Self = Self(1000148003);
pub const DST_OVER_EXT: Self = Self(1000148004);
pub const SRC_IN_EXT: Self = Self(1000148005);
pub const DST_IN_EXT: Self = Self(1000148006);
pub const SRC_OUT_EXT: Self = Self(1000148007);
pub const DST_OUT_EXT: Self = Self(1000148008);
pub const SRC_ATOP_EXT: Self = Self(1000148009);
pub const DST_ATOP_EXT: Self = Self(1000148010);
pub const XOR_EXT: Self = Self(1000148011);
pub const MULTIPLY_EXT: Self = Self(1000148012);
pub const SCREEN_EXT: Self = Self(1000148013);
pub const OVERLAY_EXT: Self = Self(1000148014);
pub const DARKEN_EXT: Self = Self(1000148015);
pub const LIGHTEN_EXT: Self = Self(1000148016);
pub const COLORDODGE_EXT: Self = Self(1000148017);
pub const COLORBURN_EXT: Self = Self(1000148018);
pub const HARDLIGHT_EXT: Self = Self(1000148019);
pub const SOFTLIGHT_EXT: Self = Self(1000148020);
pub const DIFFERENCE_EXT: Self = Self(1000148021);
pub const EXCLUSION_EXT: Self = Self(1000148022);
pub const INVERT_EXT: Self = Self(1000148023);
pub const INVERT_RGB_EXT: Self = Self(1000148024);
pub const LINEARDODGE_EXT: Self = Self(1000148025);
pub const LINEARBURN_EXT: Self = Self(1000148026);
pub const VIVIDLIGHT_EXT: Self = Self(1000148027);
pub const LINEARLIGHT_EXT: Self = Self(1000148028);
pub const PINLIGHT_EXT: Self = Self(1000148029);
pub const HARDMIX_EXT: Self = Self(1000148030);
pub const HSL_HUE_EXT: Self = Self(1000148031);
pub const HSL_SATURATION_EXT: Self = Self(1000148032);
pub const HSL_COLOR_EXT: Self = Self(1000148033);
pub const HSL_LUMINOSITY_EXT: Self = Self(1000148034);
pub const PLUS_EXT: Self = Self(1000148035);
pub const PLUS_CLAMPED_EXT: Self = Self(1000148036);
pub const PLUS_CLAMPED_ALPHA_EXT: Self = Self(1000148037);
pub const PLUS_DARKER_EXT: Self = Self(1000148038);
pub const MINUS_EXT: Self = Self(1000148039);
pub const MINUS_CLAMPED_EXT: Self = Self(1000148040);
pub const CONTRAST_EXT: Self = Self(1000148041);
pub const INVERT_OVG_EXT: Self = Self(1000148042);
pub const RED_EXT: Self = Self(1000148043);
pub const GREEN_EXT: Self = Self(1000148044);
pub const BLUE_EXT: Self = Self(1000148045);
}
impl std::fmt::Debug for BlendOp {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::ADD => "ADD",
&Self::SUBTRACT => "SUBTRACT",
&Self::REVERSE_SUBTRACT => "REVERSE_SUBTRACT",
&Self::MIN => "MIN",
&Self::MAX => "MAX",
&Self::ZERO_EXT => "ZERO_EXT",
&Self::SRC_EXT => "SRC_EXT",
&Self::DST_EXT => "DST_EXT",
&Self::SRC_OVER_EXT => "SRC_OVER_EXT",
&Self::DST_OVER_EXT => "DST_OVER_EXT",
&Self::SRC_IN_EXT => "SRC_IN_EXT",
&Self::DST_IN_EXT => "DST_IN_EXT",
&Self::SRC_OUT_EXT => "SRC_OUT_EXT",
&Self::DST_OUT_EXT => "DST_OUT_EXT",
&Self::SRC_ATOP_EXT => "SRC_ATOP_EXT",
&Self::DST_ATOP_EXT => "DST_ATOP_EXT",
&Self::XOR_EXT => "XOR_EXT",
&Self::MULTIPLY_EXT => "MULTIPLY_EXT",
&Self::SCREEN_EXT => "SCREEN_EXT",
&Self::OVERLAY_EXT => "OVERLAY_EXT",
&Self::DARKEN_EXT => "DARKEN_EXT",
&Self::LIGHTEN_EXT => "LIGHTEN_EXT",
&Self::COLORDODGE_EXT => "COLORDODGE_EXT",
&Self::COLORBURN_EXT => "COLORBURN_EXT",
&Self::HARDLIGHT_EXT => "HARDLIGHT_EXT",
&Self::SOFTLIGHT_EXT => "SOFTLIGHT_EXT",
&Self::DIFFERENCE_EXT => "DIFFERENCE_EXT",
&Self::EXCLUSION_EXT => "EXCLUSION_EXT",
&Self::INVERT_EXT => "INVERT_EXT",
&Self::INVERT_RGB_EXT => "INVERT_RGB_EXT",
&Self::LINEARDODGE_EXT => "LINEARDODGE_EXT",
&Self::LINEARBURN_EXT => "LINEARBURN_EXT",
&Self::VIVIDLIGHT_EXT => "VIVIDLIGHT_EXT",
&Self::LINEARLIGHT_EXT => "LINEARLIGHT_EXT",
&Self::PINLIGHT_EXT => "PINLIGHT_EXT",
&Self::HARDMIX_EXT => "HARDMIX_EXT",
&Self::HSL_HUE_EXT => "HSL_HUE_EXT",
&Self::HSL_SATURATION_EXT => "HSL_SATURATION_EXT",
&Self::HSL_COLOR_EXT => "HSL_COLOR_EXT",
&Self::HSL_LUMINOSITY_EXT => "HSL_LUMINOSITY_EXT",
&Self::PLUS_EXT => "PLUS_EXT",
&Self::PLUS_CLAMPED_EXT => "PLUS_CLAMPED_EXT",
&Self::PLUS_CLAMPED_ALPHA_EXT => "PLUS_CLAMPED_ALPHA_EXT",
&Self::PLUS_DARKER_EXT => "PLUS_DARKER_EXT",
&Self::MINUS_EXT => "MINUS_EXT",
&Self::MINUS_CLAMPED_EXT => "MINUS_CLAMPED_EXT",
&Self::CONTRAST_EXT => "CONTRAST_EXT",
&Self::INVERT_OVG_EXT => "INVERT_OVG_EXT",
&Self::RED_EXT => "RED_EXT",
&Self::GREEN_EXT => "GREEN_EXT",
&Self::BLUE_EXT => "BLUE_EXT",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkColorComponentFlagBits.html) · Flag Bits of [`ColorComponentFlags`](struct.ColorComponentFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ColorComponentFlagBits(pub u32);
impl ColorComponentFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> ColorComponentFlags {
ColorComponentFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ColorComponentFlagBits {
pub const R: Self = Self(0x00000001);
pub const G: Self = Self(0x00000002);
pub const B: Self = Self(0x00000004);
pub const A: Self = Self(0x00000008);
}
impl std::fmt::Debug for ColorComponentFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::R => "R",
&Self::G => "G",
&Self::B => "B",
&Self::A => "A",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkColorComponentFlags.html) · Flags of [`ColorComponentFlagBits`](struct.ColorComponentFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct ColorComponentFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const R = ColorComponentFlagBits :: R . 0 ; const G = ColorComponentFlagBits :: G . 0 ; const B = ColorComponentFlagBits :: B . 0 ; const A = ColorComponentFlagBits :: A . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineDynamicStateCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineDynamicStateCreateFlags,
pub dynamic_state_count: u32,
pub p_dynamic_states: *const crate::vk1_0::DynamicState,
}
impl PipelineDynamicStateCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineDynamicStateCreateInfoBuilder<'a> {
PipelineDynamicStateCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineDynamicStateCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineDynamicStateCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("dynamic_state_count", &self.dynamic_state_count)
.field("p_dynamic_states", &self.p_dynamic_states)
.finish()
}
}
impl Default for PipelineDynamicStateCreateInfo {
fn default() -> PipelineDynamicStateCreateInfo {
PipelineDynamicStateCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_DYNAMIC_STATE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
dynamic_state_count: Default::default(),
p_dynamic_states: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateInfo.html) · Builder of [`PipelineDynamicStateCreateInfo`](struct.PipelineDynamicStateCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineDynamicStateCreateInfoBuilder<'a>(
PipelineDynamicStateCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineDynamicStateCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineDynamicStateCreateInfoBuilder<'a> {
PipelineDynamicStateCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineDynamicStateCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dynamic_states(mut self, dynamic_states: &'a [crate::vk1_0::DynamicState]) -> Self {
self.0.dynamic_state_count = dynamic_states.len() as _;
self.0.p_dynamic_states = dynamic_states.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineDynamicStateCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineDynamicStateCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineDynamicStateCreateInfoBuilder<'a> {
type Target = PipelineDynamicStateCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineDynamicStateCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineDynamicStateCreateFlags`](struct.PipelineDynamicStateCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineDynamicStateCreateFlagBits(pub u32);
impl PipelineDynamicStateCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineDynamicStateCreateFlags {
PipelineDynamicStateCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineDynamicStateCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineDynamicStateCreateFlags.html) · Flags of [`PipelineDynamicStateCreateFlagBits`](struct.PipelineDynamicStateCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineDynamicStateCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDynamicState.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DynamicState(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl DynamicState {
pub const VIEWPORT: Self = Self(0);
pub const SCISSOR: Self = Self(1);
pub const LINE_WIDTH: Self = Self(2);
pub const DEPTH_BIAS: Self = Self(3);
pub const BLEND_CONSTANTS: Self = Self(4);
pub const DEPTH_BOUNDS: Self = Self(5);
pub const STENCIL_COMPARE_MASK: Self = Self(6);
pub const STENCIL_WRITE_MASK: Self = Self(7);
pub const STENCIL_REFERENCE: Self = Self(8);
}
#[doc = "[Part of `extensions::ext_discard_rectangles`](../extensions/ext_discard_rectangles/index.html)"]
impl DynamicState {
pub const DISCARD_RECTANGLE_EXT: Self = Self(1000099000);
}
#[doc = "[Part of `extensions::ext_line_rasterization`](../extensions/ext_line_rasterization/index.html)"]
impl DynamicState {
pub const LINE_STIPPLE_EXT: Self = Self(1000259000);
}
#[doc = "[Part of `extensions::ext_sample_locations`](../extensions/ext_sample_locations/index.html)"]
impl DynamicState {
pub const SAMPLE_LOCATIONS_EXT: Self = Self(1000143000);
}
#[doc = "[Part of `extensions::nv_clip_space_w_scaling`](../extensions/nv_clip_space_w_scaling/index.html)"]
impl DynamicState {
pub const VIEWPORT_W_SCALING_NV: Self = Self(1000087000);
}
#[doc = "[Part of `extensions::nv_scissor_exclusive`](../extensions/nv_scissor_exclusive/index.html)"]
impl DynamicState {
pub const EXCLUSIVE_SCISSOR_NV: Self = Self(1000205001);
}
#[doc = "[Part of `extensions::nv_shading_rate_image`](../extensions/nv_shading_rate_image/index.html)"]
impl DynamicState {
pub const VIEWPORT_SHADING_RATE_PALETTE_NV: Self = Self(1000164004);
pub const VIEWPORT_COARSE_SAMPLE_ORDER_NV: Self = Self(1000164006);
}
impl std::fmt::Debug for DynamicState {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::VIEWPORT => "VIEWPORT",
&Self::SCISSOR => "SCISSOR",
&Self::LINE_WIDTH => "LINE_WIDTH",
&Self::DEPTH_BIAS => "DEPTH_BIAS",
&Self::BLEND_CONSTANTS => "BLEND_CONSTANTS",
&Self::DEPTH_BOUNDS => "DEPTH_BOUNDS",
&Self::STENCIL_COMPARE_MASK => "STENCIL_COMPARE_MASK",
&Self::STENCIL_WRITE_MASK => "STENCIL_WRITE_MASK",
&Self::STENCIL_REFERENCE => "STENCIL_REFERENCE",
&Self::DISCARD_RECTANGLE_EXT => "DISCARD_RECTANGLE_EXT",
&Self::LINE_STIPPLE_EXT => "LINE_STIPPLE_EXT",
&Self::SAMPLE_LOCATIONS_EXT => "SAMPLE_LOCATIONS_EXT",
&Self::VIEWPORT_W_SCALING_NV => "VIEWPORT_W_SCALING_NV",
&Self::EXCLUSIVE_SCISSOR_NV => "EXCLUSIVE_SCISSOR_NV",
&Self::VIEWPORT_SHADING_RATE_PALETTE_NV => "VIEWPORT_SHADING_RATE_PALETTE_NV",
&Self::VIEWPORT_COARSE_SAMPLE_ORDER_NV => "VIEWPORT_COARSE_SAMPLE_ORDER_NV",
_ => "(unknown)",
})
}
}
crate :: non_dispatchable_handle ! ( PipelineLayout , PIPELINE_LAYOUT , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayout.html) · Non-dispatchable Handle" ) ;
crate :: non_dispatchable_handle ! ( RenderPass , RENDER_PASS , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPass.html) · Non-dispatchable Handle" ) ;
crate :: non_dispatchable_handle ! ( Pipeline , PIPELINE , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipeline.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComputePipelineCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ComputePipelineCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineCreateFlags,
pub stage: crate::vk1_0::PipelineShaderStageCreateInfo,
pub layout: crate::vk1_0::PipelineLayout,
pub base_pipeline_handle: crate::vk1_0::Pipeline,
pub base_pipeline_index: i32,
}
impl ComputePipelineCreateInfo {
#[inline]
pub fn builder<'a>(self) -> ComputePipelineCreateInfoBuilder<'a> {
ComputePipelineCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ComputePipelineCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ComputePipelineCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("stage", &self.stage)
.field("layout", &self.layout)
.field("base_pipeline_handle", &self.base_pipeline_handle)
.field("base_pipeline_index", &self.base_pipeline_index)
.finish()
}
}
impl Default for ComputePipelineCreateInfo {
fn default() -> ComputePipelineCreateInfo {
ComputePipelineCreateInfo {
s_type: crate::vk1_0::StructureType::COMPUTE_PIPELINE_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
stage: Default::default(),
layout: Default::default(),
base_pipeline_handle: Default::default(),
base_pipeline_index: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkComputePipelineCreateInfo.html) · Builder of [`ComputePipelineCreateInfo`](struct.ComputePipelineCreateInfo.html)"]
#[repr(transparent)]
pub struct ComputePipelineCreateInfoBuilder<'a>(
ComputePipelineCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> ComputePipelineCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> ComputePipelineCreateInfoBuilder<'a> {
ComputePipelineCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stage(mut self, stage: crate::vk1_0::PipelineShaderStageCreateInfo) -> Self {
self.0.stage = stage;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layout(mut self, layout: crate::vk1_0::PipelineLayout) -> Self {
self.0.layout = layout;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_pipeline_handle(mut self, base_pipeline_handle: crate::vk1_0::Pipeline) -> Self {
self.0.base_pipeline_handle = base_pipeline_handle;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_pipeline_index(mut self, base_pipeline_index: i32) -> Self {
self.0.base_pipeline_index = base_pipeline_index;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ComputePipelineCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for ComputePipelineCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ComputePipelineCreateInfoBuilder<'a> {
type Target = ComputePipelineCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ComputePipelineCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayoutCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineLayoutCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::PipelineLayoutCreateFlags,
pub set_layout_count: u32,
pub p_set_layouts: *const crate::vk1_0::DescriptorSetLayout,
pub push_constant_range_count: u32,
pub p_push_constant_ranges: *const crate::vk1_0::PushConstantRange,
}
impl PipelineLayoutCreateInfo {
#[inline]
pub fn builder<'a>(self) -> PipelineLayoutCreateInfoBuilder<'a> {
PipelineLayoutCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PipelineLayoutCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PipelineLayoutCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("set_layout_count", &self.set_layout_count)
.field("p_set_layouts", &self.p_set_layouts)
.field("push_constant_range_count", &self.push_constant_range_count)
.field("p_push_constant_ranges", &self.p_push_constant_ranges)
.finish()
}
}
impl Default for PipelineLayoutCreateInfo {
fn default() -> PipelineLayoutCreateInfo {
PipelineLayoutCreateInfo {
s_type: crate::vk1_0::StructureType::PIPELINE_LAYOUT_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
set_layout_count: Default::default(),
p_set_layouts: std::ptr::null(),
push_constant_range_count: Default::default(),
p_push_constant_ranges: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayoutCreateInfo.html) · Builder of [`PipelineLayoutCreateInfo`](struct.PipelineLayoutCreateInfo.html)"]
#[repr(transparent)]
pub struct PipelineLayoutCreateInfoBuilder<'a>(
PipelineLayoutCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineLayoutCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> PipelineLayoutCreateInfoBuilder<'a> {
PipelineLayoutCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::PipelineLayoutCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn set_layouts(mut self, set_layouts: &'a [crate::vk1_0::DescriptorSetLayout]) -> Self {
self.0.set_layout_count = set_layouts.len() as _;
self.0.p_set_layouts = set_layouts.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn push_constant_ranges(
mut self,
push_constant_ranges: &'a [crate::vk1_0::PushConstantRangeBuilder],
) -> Self {
self.0.push_constant_range_count = push_constant_ranges.len() as _;
self.0.p_push_constant_ranges = push_constant_ranges.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PipelineLayoutCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for PipelineLayoutCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PipelineLayoutCreateInfoBuilder<'a> {
type Target = PipelineLayoutCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineLayoutCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`PipelineLayoutCreateFlags`](struct.PipelineLayoutCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineLayoutCreateFlagBits(pub u32);
impl PipelineLayoutCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> PipelineLayoutCreateFlags {
PipelineLayoutCreateFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for PipelineLayoutCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineLayoutCreateFlags.html) · Flags of [`PipelineLayoutCreateFlagBits`](struct.PipelineLayoutCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct PipelineLayoutCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
crate :: non_dispatchable_handle ! ( DescriptorSetLayout , DESCRIPTOR_SET_LAYOUT , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayout.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPushConstantRange.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PushConstantRange {
pub stage_flags: crate::vk1_0::ShaderStageFlags,
pub offset: u32,
pub size: u32,
}
impl PushConstantRange {
#[inline]
pub fn builder<'a>(self) -> PushConstantRangeBuilder<'a> {
PushConstantRangeBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for PushConstantRange {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("PushConstantRange")
.field("stage_flags", &self.stage_flags)
.field("offset", &self.offset)
.field("size", &self.size)
.finish()
}
}
impl Default for PushConstantRange {
fn default() -> PushConstantRange {
PushConstantRange {
stage_flags: Default::default(),
offset: Default::default(),
size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPushConstantRange.html) · Builder of [`PushConstantRange`](struct.PushConstantRange.html)"]
#[repr(transparent)]
pub struct PushConstantRangeBuilder<'a>(PushConstantRange, std::marker::PhantomData<&'a ()>);
impl<'a> PushConstantRangeBuilder<'a> {
#[inline]
pub fn new() -> PushConstantRangeBuilder<'a> {
PushConstantRangeBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn stage_flags(mut self, stage_flags: crate::vk1_0::ShaderStageFlags) -> Self {
self.0.stage_flags = stage_flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: u32) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: u32) -> Self {
self.0.size = size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> PushConstantRange {
self.0
}
}
impl<'a> std::fmt::Debug for PushConstantRangeBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for PushConstantRangeBuilder<'a> {
type Target = PushConstantRange;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PushConstantRangeBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SamplerCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::SamplerCreateFlags,
pub mag_filter: crate::vk1_0::Filter,
pub min_filter: crate::vk1_0::Filter,
pub mipmap_mode: crate::vk1_0::SamplerMipmapMode,
pub address_mode_u: crate::vk1_0::SamplerAddressMode,
pub address_mode_v: crate::vk1_0::SamplerAddressMode,
pub address_mode_w: crate::vk1_0::SamplerAddressMode,
pub mip_lod_bias: f32,
pub anisotropy_enable: crate::vk1_0::Bool32,
pub max_anisotropy: f32,
pub compare_enable: crate::vk1_0::Bool32,
pub compare_op: crate::vk1_0::CompareOp,
pub min_lod: f32,
pub max_lod: f32,
pub border_color: crate::vk1_0::BorderColor,
pub unnormalized_coordinates: crate::vk1_0::Bool32,
}
impl SamplerCreateInfo {
#[inline]
pub fn builder<'a>(self) -> SamplerCreateInfoBuilder<'a> {
SamplerCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SamplerCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SamplerCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("mag_filter", &self.mag_filter)
.field("min_filter", &self.min_filter)
.field("mipmap_mode", &self.mipmap_mode)
.field("address_mode_u", &self.address_mode_u)
.field("address_mode_v", &self.address_mode_v)
.field("address_mode_w", &self.address_mode_w)
.field("mip_lod_bias", &self.mip_lod_bias)
.field("anisotropy_enable", &(self.anisotropy_enable != 0))
.field("max_anisotropy", &self.max_anisotropy)
.field("compare_enable", &(self.compare_enable != 0))
.field("compare_op", &self.compare_op)
.field("min_lod", &self.min_lod)
.field("max_lod", &self.max_lod)
.field("border_color", &self.border_color)
.field(
"unnormalized_coordinates",
&(self.unnormalized_coordinates != 0),
)
.finish()
}
}
impl Default for SamplerCreateInfo {
fn default() -> SamplerCreateInfo {
SamplerCreateInfo {
s_type: crate::vk1_0::StructureType::SAMPLER_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
mag_filter: Default::default(),
min_filter: Default::default(),
mipmap_mode: Default::default(),
address_mode_u: Default::default(),
address_mode_v: Default::default(),
address_mode_w: Default::default(),
mip_lod_bias: Default::default(),
anisotropy_enable: Default::default(),
max_anisotropy: Default::default(),
compare_enable: Default::default(),
compare_op: Default::default(),
min_lod: Default::default(),
max_lod: Default::default(),
border_color: Default::default(),
unnormalized_coordinates: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCreateInfo.html) · Builder of [`SamplerCreateInfo`](struct.SamplerCreateInfo.html)"]
#[repr(transparent)]
pub struct SamplerCreateInfoBuilder<'a>(SamplerCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> SamplerCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> SamplerCreateInfoBuilder<'a> {
SamplerCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::SamplerCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mag_filter(mut self, mag_filter: crate::vk1_0::Filter) -> Self {
self.0.mag_filter = mag_filter;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_filter(mut self, min_filter: crate::vk1_0::Filter) -> Self {
self.0.min_filter = min_filter;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mipmap_mode(mut self, mipmap_mode: crate::vk1_0::SamplerMipmapMode) -> Self {
self.0.mipmap_mode = mipmap_mode;
self
}
#[allow(unused_mut)]
#[inline]
pub fn address_mode_u(mut self, address_mode_u: crate::vk1_0::SamplerAddressMode) -> Self {
self.0.address_mode_u = address_mode_u;
self
}
#[allow(unused_mut)]
#[inline]
pub fn address_mode_v(mut self, address_mode_v: crate::vk1_0::SamplerAddressMode) -> Self {
self.0.address_mode_v = address_mode_v;
self
}
#[allow(unused_mut)]
#[inline]
pub fn address_mode_w(mut self, address_mode_w: crate::vk1_0::SamplerAddressMode) -> Self {
self.0.address_mode_w = address_mode_w;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mip_lod_bias(mut self, mip_lod_bias: f32) -> Self {
self.0.mip_lod_bias = mip_lod_bias;
self
}
#[allow(unused_mut)]
#[inline]
pub fn anisotropy_enable(mut self, anisotropy_enable: bool) -> Self {
self.0.anisotropy_enable = anisotropy_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_anisotropy(mut self, max_anisotropy: f32) -> Self {
self.0.max_anisotropy = max_anisotropy;
self
}
#[allow(unused_mut)]
#[inline]
pub fn compare_enable(mut self, compare_enable: bool) -> Self {
self.0.compare_enable = compare_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn compare_op(mut self, compare_op: crate::vk1_0::CompareOp) -> Self {
self.0.compare_op = compare_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn min_lod(mut self, min_lod: f32) -> Self {
self.0.min_lod = min_lod;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_lod(mut self, max_lod: f32) -> Self {
self.0.max_lod = max_lod;
self
}
#[allow(unused_mut)]
#[inline]
pub fn border_color(mut self, border_color: crate::vk1_0::BorderColor) -> Self {
self.0.border_color = border_color;
self
}
#[allow(unused_mut)]
#[inline]
pub fn unnormalized_coordinates(mut self, unnormalized_coordinates: bool) -> Self {
self.0.unnormalized_coordinates = unnormalized_coordinates as u32;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SamplerCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for SamplerCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SamplerCreateInfoBuilder<'a> {
type Target = SamplerCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SamplerCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCreateFlagBits.html) · Flag Bits of [`SamplerCreateFlags`](struct.SamplerCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SamplerCreateFlagBits(pub u32);
impl SamplerCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> SamplerCreateFlags {
SamplerCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SamplerCreateFlagBits {}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl SamplerCreateFlagBits {
pub const SUBSAMPLED_EXT: Self = Self(0x00000001);
pub const SUBSAMPLED_COARSE_RECONSTRUCTION_EXT: Self = Self(0x00000002);
}
impl std::fmt::Debug for SamplerCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SUBSAMPLED_EXT => "SUBSAMPLED_EXT",
&Self::SUBSAMPLED_COARSE_RECONSTRUCTION_EXT => "SUBSAMPLED_COARSE_RECONSTRUCTION_EXT",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerCreateFlags.html) · Flags of [`SamplerCreateFlagBits`](struct.SamplerCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct SamplerCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const SUBSAMPLED_EXT = SamplerCreateFlagBits :: SUBSAMPLED_EXT . 0 ; const SUBSAMPLED_COARSE_RECONSTRUCTION_EXT = SamplerCreateFlagBits :: SUBSAMPLED_COARSE_RECONSTRUCTION_EXT . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFilter.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct Filter(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl Filter {
pub const NEAREST: Self = Self(0);
pub const LINEAR: Self = Self(1);
}
#[doc = "[Part of `extensions::ext_filter_cubic`](../extensions/ext_filter_cubic/index.html)"]
impl Filter {
pub const CUBIC_EXT: Self = Self::CUBIC_IMG;
}
#[doc = "[Part of `extensions::img_filter_cubic`](../extensions/img_filter_cubic/index.html)"]
impl Filter {
pub const CUBIC_IMG: Self = Self(1000015000);
}
impl std::fmt::Debug for Filter {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::NEAREST => "NEAREST",
&Self::LINEAR => "LINEAR",
&Self::CUBIC_IMG => "CUBIC_IMG",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerMipmapMode.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SamplerMipmapMode(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SamplerMipmapMode {
pub const NEAREST: Self = Self(0);
pub const LINEAR: Self = Self(1);
}
impl std::fmt::Debug for SamplerMipmapMode {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::NEAREST => "NEAREST",
&Self::LINEAR => "LINEAR",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSamplerAddressMode.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SamplerAddressMode(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SamplerAddressMode {
pub const REPEAT: Self = Self(0);
pub const MIRRORED_REPEAT: Self = Self(1);
pub const CLAMP_TO_EDGE: Self = Self(2);
pub const CLAMP_TO_BORDER: Self = Self(3);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl SamplerAddressMode {
pub const MIRROR_CLAMP_TO_EDGE: Self = Self(4);
}
#[doc = "[Part of `extensions::khr_sampler_mirror_clamp_to_edge`](../extensions/khr_sampler_mirror_clamp_to_edge/index.html)"]
impl SamplerAddressMode {
pub const MIRROR_CLAMP_TO_EDGE_KHR: Self = Self::MIRROR_CLAMP_TO_EDGE;
}
impl std::fmt::Debug for SamplerAddressMode {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::REPEAT => "REPEAT",
&Self::MIRRORED_REPEAT => "MIRRORED_REPEAT",
&Self::CLAMP_TO_EDGE => "CLAMP_TO_EDGE",
&Self::CLAMP_TO_BORDER => "CLAMP_TO_BORDER",
&Self::MIRROR_CLAMP_TO_EDGE => "MIRROR_CLAMP_TO_EDGE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBorderColor.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct BorderColor(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl BorderColor {
pub const FLOAT_TRANSPARENT_BLACK: Self = Self(0);
pub const INT_TRANSPARENT_BLACK: Self = Self(1);
pub const FLOAT_OPAQUE_BLACK: Self = Self(2);
pub const INT_OPAQUE_BLACK: Self = Self(3);
pub const FLOAT_OPAQUE_WHITE: Self = Self(4);
pub const INT_OPAQUE_WHITE: Self = Self(5);
}
#[doc = "[Part of `extensions::ext_custom_border_color`](../extensions/ext_custom_border_color/index.html)"]
impl BorderColor {
pub const FLOAT_CUSTOM_EXT: Self = Self(1000287003);
pub const INT_CUSTOM_EXT: Self = Self(1000287004);
}
impl std::fmt::Debug for BorderColor {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::FLOAT_TRANSPARENT_BLACK => "FLOAT_TRANSPARENT_BLACK",
&Self::INT_TRANSPARENT_BLACK => "INT_TRANSPARENT_BLACK",
&Self::FLOAT_OPAQUE_BLACK => "FLOAT_OPAQUE_BLACK",
&Self::INT_OPAQUE_BLACK => "INT_OPAQUE_BLACK",
&Self::FLOAT_OPAQUE_WHITE => "FLOAT_OPAQUE_WHITE",
&Self::INT_OPAQUE_WHITE => "INT_OPAQUE_WHITE",
&Self::FLOAT_CUSTOM_EXT => "FLOAT_CUSTOM_EXT",
&Self::INT_CUSTOM_EXT => "INT_CUSTOM_EXT",
_ => "(unknown)",
})
}
}
crate :: non_dispatchable_handle ! ( Sampler , SAMPLER , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSampler.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorSetLayoutCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::DescriptorSetLayoutCreateFlags,
pub binding_count: u32,
pub p_bindings: *const crate::vk1_0::DescriptorSetLayoutBinding,
}
impl DescriptorSetLayoutCreateInfo {
#[inline]
pub fn builder<'a>(self) -> DescriptorSetLayoutCreateInfoBuilder<'a> {
DescriptorSetLayoutCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorSetLayoutCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorSetLayoutCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("binding_count", &self.binding_count)
.field("p_bindings", &self.p_bindings)
.finish()
}
}
impl Default for DescriptorSetLayoutCreateInfo {
fn default() -> DescriptorSetLayoutCreateInfo {
DescriptorSetLayoutCreateInfo {
s_type: crate::vk1_0::StructureType::DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
binding_count: Default::default(),
p_bindings: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html) · Builder of [`DescriptorSetLayoutCreateInfo`](struct.DescriptorSetLayoutCreateInfo.html)"]
#[repr(transparent)]
pub struct DescriptorSetLayoutCreateInfoBuilder<'a>(
DescriptorSetLayoutCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DescriptorSetLayoutCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> DescriptorSetLayoutCreateInfoBuilder<'a> {
DescriptorSetLayoutCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::DescriptorSetLayoutCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn bindings(
mut self,
bindings: &'a [crate::vk1_0::DescriptorSetLayoutBindingBuilder],
) -> Self {
self.0.binding_count = bindings.len() as _;
self.0.p_bindings = bindings.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorSetLayoutCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorSetLayoutCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorSetLayoutCreateInfoBuilder<'a> {
type Target = DescriptorSetLayoutCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorSetLayoutCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutCreateFlagBits.html) · Flag Bits of [`DescriptorSetLayoutCreateFlags`](struct.DescriptorSetLayoutCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DescriptorSetLayoutCreateFlagBits(pub u32);
impl DescriptorSetLayoutCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> DescriptorSetLayoutCreateFlags {
DescriptorSetLayoutCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl DescriptorSetLayoutCreateFlagBits {}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl DescriptorSetLayoutCreateFlagBits {
pub const UPDATE_AFTER_BIND_POOL: Self = Self(0x00000002);
}
#[doc = "[Part of `extensions::ext_descriptor_indexing`](../extensions/ext_descriptor_indexing/index.html)"]
impl DescriptorSetLayoutCreateFlagBits {
pub const UPDATE_AFTER_BIND_POOL_EXT: Self = Self::UPDATE_AFTER_BIND_POOL;
}
#[doc = "[Part of `extensions::khr_push_descriptor`](../extensions/khr_push_descriptor/index.html)"]
impl DescriptorSetLayoutCreateFlagBits {
pub const PUSH_DESCRIPTOR_KHR: Self = Self(0x00000001);
}
impl std::fmt::Debug for DescriptorSetLayoutCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::UPDATE_AFTER_BIND_POOL => "UPDATE_AFTER_BIND_POOL",
&Self::PUSH_DESCRIPTOR_KHR => "PUSH_DESCRIPTOR_KHR",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutCreateFlags.html) · Flags of [`DescriptorSetLayoutCreateFlagBits`](struct.DescriptorSetLayoutCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct DescriptorSetLayoutCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const UPDATE_AFTER_BIND_POOL = DescriptorSetLayoutCreateFlagBits :: UPDATE_AFTER_BIND_POOL . 0 ; const UPDATE_AFTER_BIND_POOL_EXT = DescriptorSetLayoutCreateFlagBits :: UPDATE_AFTER_BIND_POOL_EXT . 0 ; const PUSH_DESCRIPTOR_KHR = DescriptorSetLayoutCreateFlagBits :: PUSH_DESCRIPTOR_KHR . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutBinding.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorSetLayoutBinding {
pub binding: u32,
pub descriptor_type: crate::vk1_0::DescriptorType,
pub descriptor_count: u32,
pub stage_flags: crate::vk1_0::ShaderStageFlags,
pub p_immutable_samplers: *const crate::vk1_0::Sampler,
}
impl DescriptorSetLayoutBinding {
#[inline]
pub fn builder<'a>(self) -> DescriptorSetLayoutBindingBuilder<'a> {
DescriptorSetLayoutBindingBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorSetLayoutBinding {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorSetLayoutBinding")
.field("binding", &self.binding)
.field("descriptor_type", &self.descriptor_type)
.field("descriptor_count", &self.descriptor_count)
.field("stage_flags", &self.stage_flags)
.field("p_immutable_samplers", &self.p_immutable_samplers)
.finish()
}
}
impl Default for DescriptorSetLayoutBinding {
fn default() -> DescriptorSetLayoutBinding {
DescriptorSetLayoutBinding {
binding: Default::default(),
descriptor_type: Default::default(),
descriptor_count: Default::default(),
stage_flags: Default::default(),
p_immutable_samplers: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetLayoutBinding.html) · Builder of [`DescriptorSetLayoutBinding`](struct.DescriptorSetLayoutBinding.html)"]
#[repr(transparent)]
pub struct DescriptorSetLayoutBindingBuilder<'a>(
DescriptorSetLayoutBinding,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DescriptorSetLayoutBindingBuilder<'a> {
#[inline]
pub fn new() -> DescriptorSetLayoutBindingBuilder<'a> {
DescriptorSetLayoutBindingBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn binding(mut self, binding: u32) -> Self {
self.0.binding = binding;
self
}
#[allow(unused_mut)]
#[inline]
pub fn descriptor_type(mut self, descriptor_type: crate::vk1_0::DescriptorType) -> Self {
self.0.descriptor_type = descriptor_type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
self.0.descriptor_count = descriptor_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stage_flags(mut self, stage_flags: crate::vk1_0::ShaderStageFlags) -> Self {
self.0.stage_flags = stage_flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn immutable_samplers(mut self, immutable_samplers: &'a [crate::vk1_0::Sampler]) -> Self {
self.0.descriptor_count = immutable_samplers.len() as _;
self.0.p_immutable_samplers = immutable_samplers.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorSetLayoutBinding {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorSetLayoutBindingBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorSetLayoutBindingBuilder<'a> {
type Target = DescriptorSetLayoutBinding;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorSetLayoutBindingBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DescriptorType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl DescriptorType {
pub const SAMPLER: Self = Self(0);
pub const COMBINED_IMAGE_SAMPLER: Self = Self(1);
pub const SAMPLED_IMAGE: Self = Self(2);
pub const STORAGE_IMAGE: Self = Self(3);
pub const UNIFORM_TEXEL_BUFFER: Self = Self(4);
pub const STORAGE_TEXEL_BUFFER: Self = Self(5);
pub const UNIFORM_BUFFER: Self = Self(6);
pub const STORAGE_BUFFER: Self = Self(7);
pub const UNIFORM_BUFFER_DYNAMIC: Self = Self(8);
pub const STORAGE_BUFFER_DYNAMIC: Self = Self(9);
pub const INPUT_ATTACHMENT: Self = Self(10);
}
#[doc = "[Part of `extensions::ext_inline_uniform_block`](../extensions/ext_inline_uniform_block/index.html)"]
impl DescriptorType {
pub const INLINE_UNIFORM_BLOCK_EXT: Self = Self(1000138000);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl DescriptorType {
pub const ACCELERATION_STRUCTURE_KHR: Self = Self(1000165000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl DescriptorType {
pub const ACCELERATION_STRUCTURE_NV: Self = Self::ACCELERATION_STRUCTURE_KHR;
}
impl std::fmt::Debug for DescriptorType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::SAMPLER => "SAMPLER",
&Self::COMBINED_IMAGE_SAMPLER => "COMBINED_IMAGE_SAMPLER",
&Self::SAMPLED_IMAGE => "SAMPLED_IMAGE",
&Self::STORAGE_IMAGE => "STORAGE_IMAGE",
&Self::UNIFORM_TEXEL_BUFFER => "UNIFORM_TEXEL_BUFFER",
&Self::STORAGE_TEXEL_BUFFER => "STORAGE_TEXEL_BUFFER",
&Self::UNIFORM_BUFFER => "UNIFORM_BUFFER",
&Self::STORAGE_BUFFER => "STORAGE_BUFFER",
&Self::UNIFORM_BUFFER_DYNAMIC => "UNIFORM_BUFFER_DYNAMIC",
&Self::STORAGE_BUFFER_DYNAMIC => "STORAGE_BUFFER_DYNAMIC",
&Self::INPUT_ATTACHMENT => "INPUT_ATTACHMENT",
&Self::INLINE_UNIFORM_BLOCK_EXT => "INLINE_UNIFORM_BLOCK_EXT",
&Self::ACCELERATION_STRUCTURE_KHR => "ACCELERATION_STRUCTURE_KHR",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorPoolCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::DescriptorPoolCreateFlags,
pub max_sets: u32,
pub pool_size_count: u32,
pub p_pool_sizes: *const crate::vk1_0::DescriptorPoolSize,
}
impl DescriptorPoolCreateInfo {
#[inline]
pub fn builder<'a>(self) -> DescriptorPoolCreateInfoBuilder<'a> {
DescriptorPoolCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorPoolCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorPoolCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("max_sets", &self.max_sets)
.field("pool_size_count", &self.pool_size_count)
.field("p_pool_sizes", &self.p_pool_sizes)
.finish()
}
}
impl Default for DescriptorPoolCreateInfo {
fn default() -> DescriptorPoolCreateInfo {
DescriptorPoolCreateInfo {
s_type: crate::vk1_0::StructureType::DESCRIPTOR_POOL_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
max_sets: Default::default(),
pool_size_count: Default::default(),
p_pool_sizes: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolCreateInfo.html) · Builder of [`DescriptorPoolCreateInfo`](struct.DescriptorPoolCreateInfo.html)"]
#[repr(transparent)]
pub struct DescriptorPoolCreateInfoBuilder<'a>(
DescriptorPoolCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DescriptorPoolCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> DescriptorPoolCreateInfoBuilder<'a> {
DescriptorPoolCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::DescriptorPoolCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn max_sets(mut self, max_sets: u32) -> Self {
self.0.max_sets = max_sets;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pool_sizes(mut self, pool_sizes: &'a [crate::vk1_0::DescriptorPoolSizeBuilder]) -> Self {
self.0.pool_size_count = pool_sizes.len() as _;
self.0.p_pool_sizes = pool_sizes.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorPoolCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorPoolCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorPoolCreateInfoBuilder<'a> {
type Target = DescriptorPoolCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorPoolCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolCreateFlagBits.html) · Flag Bits of [`DescriptorPoolCreateFlags`](struct.DescriptorPoolCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DescriptorPoolCreateFlagBits(pub u32);
impl DescriptorPoolCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> DescriptorPoolCreateFlags {
DescriptorPoolCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl DescriptorPoolCreateFlagBits {
pub const FREE_DESCRIPTOR_SET: Self = Self(0x00000001);
}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl DescriptorPoolCreateFlagBits {
pub const UPDATE_AFTER_BIND: Self = Self(0x00000002);
}
#[doc = "[Part of `extensions::ext_descriptor_indexing`](../extensions/ext_descriptor_indexing/index.html)"]
impl DescriptorPoolCreateFlagBits {
pub const UPDATE_AFTER_BIND_EXT: Self = Self::UPDATE_AFTER_BIND;
}
impl std::fmt::Debug for DescriptorPoolCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::FREE_DESCRIPTOR_SET => "FREE_DESCRIPTOR_SET",
&Self::UPDATE_AFTER_BIND => "UPDATE_AFTER_BIND",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolCreateFlags.html) · Flags of [`DescriptorPoolCreateFlagBits`](struct.DescriptorPoolCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct DescriptorPoolCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const FREE_DESCRIPTOR_SET = DescriptorPoolCreateFlagBits :: FREE_DESCRIPTOR_SET . 0 ; const UPDATE_AFTER_BIND = DescriptorPoolCreateFlagBits :: UPDATE_AFTER_BIND . 0 ; const UPDATE_AFTER_BIND_EXT = DescriptorPoolCreateFlagBits :: UPDATE_AFTER_BIND_EXT . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolSize.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorPoolSize {
pub _type: crate::vk1_0::DescriptorType,
pub descriptor_count: u32,
}
impl DescriptorPoolSize {
#[inline]
pub fn builder<'a>(self) -> DescriptorPoolSizeBuilder<'a> {
DescriptorPoolSizeBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorPoolSize {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorPoolSize")
.field("_type", &self._type)
.field("descriptor_count", &self.descriptor_count)
.finish()
}
}
impl Default for DescriptorPoolSize {
fn default() -> DescriptorPoolSize {
DescriptorPoolSize {
_type: Default::default(),
descriptor_count: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolSize.html) · Builder of [`DescriptorPoolSize`](struct.DescriptorPoolSize.html)"]
#[repr(transparent)]
pub struct DescriptorPoolSizeBuilder<'a>(DescriptorPoolSize, std::marker::PhantomData<&'a ()>);
impl<'a> DescriptorPoolSizeBuilder<'a> {
#[inline]
pub fn new() -> DescriptorPoolSizeBuilder<'a> {
DescriptorPoolSizeBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn _type(mut self, _type: crate::vk1_0::DescriptorType) -> Self {
self.0._type = _type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
self.0.descriptor_count = descriptor_count;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorPoolSize {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorPoolSizeBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorPoolSizeBuilder<'a> {
type Target = DescriptorPoolSize;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorPoolSizeBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: non_dispatchable_handle ! ( DescriptorPool , DESCRIPTOR_POOL , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPool.html) · Non-dispatchable Handle" ) ;
#[doc = "<s>Vulkan Manual Page</s> · Flag Bits of [`DescriptorPoolResetFlags`](struct.DescriptorPoolResetFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DescriptorPoolResetFlagBits(pub u32);
impl DescriptorPoolResetFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> DescriptorPoolResetFlags {
DescriptorPoolResetFlags::from_bits_truncate(self.0)
}
}
impl std::fmt::Debug for DescriptorPoolResetFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorPoolResetFlags.html) · Flags of [`DescriptorPoolResetFlagBits`](struct.DescriptorPoolResetFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct DescriptorPoolResetFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetAllocateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorSetAllocateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub descriptor_pool: crate::vk1_0::DescriptorPool,
pub descriptor_set_count: u32,
pub p_set_layouts: *const crate::vk1_0::DescriptorSetLayout,
}
impl DescriptorSetAllocateInfo {
#[inline]
pub fn builder<'a>(self) -> DescriptorSetAllocateInfoBuilder<'a> {
DescriptorSetAllocateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorSetAllocateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorSetAllocateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("descriptor_pool", &self.descriptor_pool)
.field("descriptor_set_count", &self.descriptor_set_count)
.field("p_set_layouts", &self.p_set_layouts)
.finish()
}
}
impl Default for DescriptorSetAllocateInfo {
fn default() -> DescriptorSetAllocateInfo {
DescriptorSetAllocateInfo {
s_type: crate::vk1_0::StructureType::DESCRIPTOR_SET_ALLOCATE_INFO,
p_next: std::ptr::null(),
descriptor_pool: Default::default(),
descriptor_set_count: Default::default(),
p_set_layouts: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSetAllocateInfo.html) · Builder of [`DescriptorSetAllocateInfo`](struct.DescriptorSetAllocateInfo.html)"]
#[repr(transparent)]
pub struct DescriptorSetAllocateInfoBuilder<'a>(
DescriptorSetAllocateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DescriptorSetAllocateInfoBuilder<'a> {
#[inline]
pub fn new() -> DescriptorSetAllocateInfoBuilder<'a> {
DescriptorSetAllocateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn descriptor_pool(mut self, descriptor_pool: crate::vk1_0::DescriptorPool) -> Self {
self.0.descriptor_pool = descriptor_pool;
self
}
#[allow(unused_mut)]
#[inline]
pub fn set_layouts(mut self, set_layouts: &'a [crate::vk1_0::DescriptorSetLayout]) -> Self {
self.0.descriptor_set_count = set_layouts.len() as _;
self.0.p_set_layouts = set_layouts.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorSetAllocateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorSetAllocateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorSetAllocateInfoBuilder<'a> {
type Target = DescriptorSetAllocateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorSetAllocateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
crate :: non_dispatchable_handle ! ( DescriptorSet , DESCRIPTOR_SET , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorSet.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSet.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct WriteDescriptorSet {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub dst_set: crate::vk1_0::DescriptorSet,
pub dst_binding: u32,
pub dst_array_element: u32,
pub descriptor_count: u32,
pub descriptor_type: crate::vk1_0::DescriptorType,
pub p_image_info: *const crate::vk1_0::DescriptorImageInfo,
pub p_buffer_info: *const crate::vk1_0::DescriptorBufferInfo,
pub p_texel_buffer_view: *const crate::vk1_0::BufferView,
}
impl WriteDescriptorSet {
#[inline]
pub fn builder<'a>(self) -> WriteDescriptorSetBuilder<'a> {
WriteDescriptorSetBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for WriteDescriptorSet {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("WriteDescriptorSet")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("dst_set", &self.dst_set)
.field("dst_binding", &self.dst_binding)
.field("dst_array_element", &self.dst_array_element)
.field("descriptor_count", &self.descriptor_count)
.field("descriptor_type", &self.descriptor_type)
.field("p_image_info", &self.p_image_info)
.field("p_buffer_info", &self.p_buffer_info)
.field("p_texel_buffer_view", &self.p_texel_buffer_view)
.finish()
}
}
impl Default for WriteDescriptorSet {
fn default() -> WriteDescriptorSet {
WriteDescriptorSet {
s_type: crate::vk1_0::StructureType::WRITE_DESCRIPTOR_SET,
p_next: std::ptr::null(),
dst_set: Default::default(),
dst_binding: Default::default(),
dst_array_element: Default::default(),
descriptor_count: Default::default(),
descriptor_type: Default::default(),
p_image_info: std::ptr::null(),
p_buffer_info: std::ptr::null(),
p_texel_buffer_view: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkWriteDescriptorSet.html) · Builder of [`WriteDescriptorSet`](struct.WriteDescriptorSet.html)"]
#[repr(transparent)]
pub struct WriteDescriptorSetBuilder<'a>(WriteDescriptorSet, std::marker::PhantomData<&'a ()>);
impl<'a> WriteDescriptorSetBuilder<'a> {
#[inline]
pub fn new() -> WriteDescriptorSetBuilder<'a> {
WriteDescriptorSetBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn dst_set(mut self, dst_set: crate::vk1_0::DescriptorSet) -> Self {
self.0.dst_set = dst_set;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_binding(mut self, dst_binding: u32) -> Self {
self.0.dst_binding = dst_binding;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
self.0.dst_array_element = dst_array_element;
self
}
#[allow(unused_mut)]
#[inline]
pub fn descriptor_type(mut self, descriptor_type: crate::vk1_0::DescriptorType) -> Self {
self.0.descriptor_type = descriptor_type;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_info(
mut self,
image_info: &'a [crate::vk1_0::DescriptorImageInfoBuilder],
) -> Self {
self.0.descriptor_count = image_info.len() as _;
self.0.p_image_info = image_info.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_info(
mut self,
buffer_info: &'a [crate::vk1_0::DescriptorBufferInfoBuilder],
) -> Self {
self.0.descriptor_count = buffer_info.len() as _;
self.0.p_buffer_info = buffer_info.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn texel_buffer_view(mut self, texel_buffer_view: &'a [crate::vk1_0::BufferView]) -> Self {
self.0.descriptor_count = texel_buffer_view.len() as _;
self.0.p_texel_buffer_view = texel_buffer_view.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> WriteDescriptorSet {
self.0
}
}
impl<'a> std::fmt::Debug for WriteDescriptorSetBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for WriteDescriptorSetBuilder<'a> {
type Target = WriteDescriptorSet;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for WriteDescriptorSetBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorImageInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorImageInfo {
pub sampler: crate::vk1_0::Sampler,
pub image_view: crate::vk1_0::ImageView,
pub image_layout: crate::vk1_0::ImageLayout,
}
impl DescriptorImageInfo {
#[inline]
pub fn builder<'a>(self) -> DescriptorImageInfoBuilder<'a> {
DescriptorImageInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorImageInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorImageInfo")
.field("sampler", &self.sampler)
.field("image_view", &self.image_view)
.field("image_layout", &self.image_layout)
.finish()
}
}
impl Default for DescriptorImageInfo {
fn default() -> DescriptorImageInfo {
DescriptorImageInfo {
sampler: Default::default(),
image_view: Default::default(),
image_layout: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorImageInfo.html) · Builder of [`DescriptorImageInfo`](struct.DescriptorImageInfo.html)"]
#[repr(transparent)]
pub struct DescriptorImageInfoBuilder<'a>(DescriptorImageInfo, std::marker::PhantomData<&'a ()>);
impl<'a> DescriptorImageInfoBuilder<'a> {
#[inline]
pub fn new() -> DescriptorImageInfoBuilder<'a> {
DescriptorImageInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn sampler(mut self, sampler: crate::vk1_0::Sampler) -> Self {
self.0.sampler = sampler;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_view(mut self, image_view: crate::vk1_0::ImageView) -> Self {
self.0.image_view = image_view;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_layout(mut self, image_layout: crate::vk1_0::ImageLayout) -> Self {
self.0.image_layout = image_layout;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorImageInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorImageInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorImageInfoBuilder<'a> {
type Target = DescriptorImageInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorImageInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorBufferInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DescriptorBufferInfo {
pub buffer: crate::vk1_0::Buffer,
pub offset: crate::vk1_0::DeviceSize,
pub range: crate::vk1_0::DeviceSize,
}
impl DescriptorBufferInfo {
#[inline]
pub fn builder<'a>(self) -> DescriptorBufferInfoBuilder<'a> {
DescriptorBufferInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DescriptorBufferInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DescriptorBufferInfo")
.field("buffer", &self.buffer)
.field("offset", &self.offset)
.field("range", &self.range)
.finish()
}
}
impl Default for DescriptorBufferInfo {
fn default() -> DescriptorBufferInfo {
DescriptorBufferInfo {
buffer: Default::default(),
offset: Default::default(),
range: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDescriptorBufferInfo.html) · Builder of [`DescriptorBufferInfo`](struct.DescriptorBufferInfo.html)"]
#[repr(transparent)]
pub struct DescriptorBufferInfoBuilder<'a>(DescriptorBufferInfo, std::marker::PhantomData<&'a ()>);
impl<'a> DescriptorBufferInfoBuilder<'a> {
#[inline]
pub fn new() -> DescriptorBufferInfoBuilder<'a> {
DescriptorBufferInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn buffer(mut self, buffer: crate::vk1_0::Buffer) -> Self {
self.0.buffer = buffer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::DeviceSize) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn range(mut self, range: crate::vk1_0::DeviceSize) -> Self {
self.0.range = range;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DescriptorBufferInfo {
self.0
}
}
impl<'a> std::fmt::Debug for DescriptorBufferInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DescriptorBufferInfoBuilder<'a> {
type Target = DescriptorBufferInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DescriptorBufferInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyDescriptorSet.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CopyDescriptorSet {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub src_set: crate::vk1_0::DescriptorSet,
pub src_binding: u32,
pub src_array_element: u32,
pub dst_set: crate::vk1_0::DescriptorSet,
pub dst_binding: u32,
pub dst_array_element: u32,
pub descriptor_count: u32,
}
impl CopyDescriptorSet {
#[inline]
pub fn builder<'a>(self) -> CopyDescriptorSetBuilder<'a> {
CopyDescriptorSetBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for CopyDescriptorSet {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("CopyDescriptorSet")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("src_set", &self.src_set)
.field("src_binding", &self.src_binding)
.field("src_array_element", &self.src_array_element)
.field("dst_set", &self.dst_set)
.field("dst_binding", &self.dst_binding)
.field("dst_array_element", &self.dst_array_element)
.field("descriptor_count", &self.descriptor_count)
.finish()
}
}
impl Default for CopyDescriptorSet {
fn default() -> CopyDescriptorSet {
CopyDescriptorSet {
s_type: crate::vk1_0::StructureType::COPY_DESCRIPTOR_SET,
p_next: std::ptr::null(),
src_set: Default::default(),
src_binding: Default::default(),
src_array_element: Default::default(),
dst_set: Default::default(),
dst_binding: Default::default(),
dst_array_element: Default::default(),
descriptor_count: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCopyDescriptorSet.html) · Builder of [`CopyDescriptorSet`](struct.CopyDescriptorSet.html)"]
#[repr(transparent)]
pub struct CopyDescriptorSetBuilder<'a>(CopyDescriptorSet, std::marker::PhantomData<&'a ()>);
impl<'a> CopyDescriptorSetBuilder<'a> {
#[inline]
pub fn new() -> CopyDescriptorSetBuilder<'a> {
CopyDescriptorSetBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_set(mut self, src_set: crate::vk1_0::DescriptorSet) -> Self {
self.0.src_set = src_set;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_binding(mut self, src_binding: u32) -> Self {
self.0.src_binding = src_binding;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_array_element(mut self, src_array_element: u32) -> Self {
self.0.src_array_element = src_array_element;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_set(mut self, dst_set: crate::vk1_0::DescriptorSet) -> Self {
self.0.dst_set = dst_set;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_binding(mut self, dst_binding: u32) -> Self {
self.0.dst_binding = dst_binding;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_array_element(mut self, dst_array_element: u32) -> Self {
self.0.dst_array_element = dst_array_element;
self
}
#[allow(unused_mut)]
#[inline]
pub fn descriptor_count(mut self, descriptor_count: u32) -> Self {
self.0.descriptor_count = descriptor_count;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> CopyDescriptorSet {
self.0
}
}
impl<'a> std::fmt::Debug for CopyDescriptorSetBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for CopyDescriptorSetBuilder<'a> {
type Target = CopyDescriptorSet;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CopyDescriptorSetBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct FramebufferCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::FramebufferCreateFlags,
pub render_pass: crate::vk1_0::RenderPass,
pub attachment_count: u32,
pub p_attachments: *const crate::vk1_0::ImageView,
pub width: u32,
pub height: u32,
pub layers: u32,
}
impl FramebufferCreateInfo {
#[inline]
pub fn builder<'a>(self) -> FramebufferCreateInfoBuilder<'a> {
FramebufferCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for FramebufferCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("FramebufferCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("render_pass", &self.render_pass)
.field("attachment_count", &self.attachment_count)
.field("p_attachments", &self.p_attachments)
.field("width", &self.width)
.field("height", &self.height)
.field("layers", &self.layers)
.finish()
}
}
impl Default for FramebufferCreateInfo {
fn default() -> FramebufferCreateInfo {
FramebufferCreateInfo {
s_type: crate::vk1_0::StructureType::FRAMEBUFFER_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
render_pass: Default::default(),
attachment_count: Default::default(),
p_attachments: std::ptr::null(),
width: Default::default(),
height: Default::default(),
layers: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferCreateInfo.html) · Builder of [`FramebufferCreateInfo`](struct.FramebufferCreateInfo.html)"]
#[repr(transparent)]
pub struct FramebufferCreateInfoBuilder<'a>(
FramebufferCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> FramebufferCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> FramebufferCreateInfoBuilder<'a> {
FramebufferCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::FramebufferCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn render_pass(mut self, render_pass: crate::vk1_0::RenderPass) -> Self {
self.0.render_pass = render_pass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn attachments(mut self, attachments: &'a [crate::vk1_0::ImageView]) -> Self {
self.0.attachment_count = attachments.len() as _;
self.0.p_attachments = attachments.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn width(mut self, width: u32) -> Self {
self.0.width = width;
self
}
#[allow(unused_mut)]
#[inline]
pub fn height(mut self, height: u32) -> Self {
self.0.height = height;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layers(mut self, layers: u32) -> Self {
self.0.layers = layers;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> FramebufferCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for FramebufferCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for FramebufferCreateInfoBuilder<'a> {
type Target = FramebufferCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for FramebufferCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferCreateFlagBits.html) · Flag Bits of [`FramebufferCreateFlags`](struct.FramebufferCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct FramebufferCreateFlagBits(pub u32);
impl FramebufferCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> FramebufferCreateFlags {
FramebufferCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl FramebufferCreateFlagBits {}
#[doc = "[Part of `vk1_2`](../vk1_2/index.html)"]
impl FramebufferCreateFlagBits {
pub const IMAGELESS: Self = Self(0x00000001);
}
#[doc = "[Part of `extensions::khr_imageless_framebuffer`](../extensions/khr_imageless_framebuffer/index.html)"]
impl FramebufferCreateFlagBits {
pub const IMAGELESS_KHR: Self = Self::IMAGELESS;
}
impl std::fmt::Debug for FramebufferCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::IMAGELESS => "IMAGELESS",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebufferCreateFlags.html) · Flags of [`FramebufferCreateFlagBits`](struct.FramebufferCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct FramebufferCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const IMAGELESS = FramebufferCreateFlagBits :: IMAGELESS . 0 ; const IMAGELESS_KHR = FramebufferCreateFlagBits :: IMAGELESS_KHR . 0 ; } }
crate :: non_dispatchable_handle ! ( Framebuffer , FRAMEBUFFER , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkFramebuffer.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct RenderPassCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::RenderPassCreateFlags,
pub attachment_count: u32,
pub p_attachments: *const crate::vk1_0::AttachmentDescription,
pub subpass_count: u32,
pub p_subpasses: *const crate::vk1_0::SubpassDescription,
pub dependency_count: u32,
pub p_dependencies: *const crate::vk1_0::SubpassDependency,
}
impl RenderPassCreateInfo {
#[inline]
pub fn builder<'a>(self) -> RenderPassCreateInfoBuilder<'a> {
RenderPassCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for RenderPassCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("RenderPassCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("attachment_count", &self.attachment_count)
.field("p_attachments", &self.p_attachments)
.field("subpass_count", &self.subpass_count)
.field("p_subpasses", &self.p_subpasses)
.field("dependency_count", &self.dependency_count)
.field("p_dependencies", &self.p_dependencies)
.finish()
}
}
impl Default for RenderPassCreateInfo {
fn default() -> RenderPassCreateInfo {
RenderPassCreateInfo {
s_type: crate::vk1_0::StructureType::RENDER_PASS_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
attachment_count: Default::default(),
p_attachments: std::ptr::null(),
subpass_count: Default::default(),
p_subpasses: std::ptr::null(),
dependency_count: Default::default(),
p_dependencies: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateInfo.html) · Builder of [`RenderPassCreateInfo`](struct.RenderPassCreateInfo.html)"]
#[repr(transparent)]
pub struct RenderPassCreateInfoBuilder<'a>(RenderPassCreateInfo, std::marker::PhantomData<&'a ()>);
impl<'a> RenderPassCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> RenderPassCreateInfoBuilder<'a> {
RenderPassCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::RenderPassCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn attachments(
mut self,
attachments: &'a [crate::vk1_0::AttachmentDescriptionBuilder],
) -> Self {
self.0.attachment_count = attachments.len() as _;
self.0.p_attachments = attachments.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn subpasses(mut self, subpasses: &'a [crate::vk1_0::SubpassDescriptionBuilder]) -> Self {
self.0.subpass_count = subpasses.len() as _;
self.0.p_subpasses = subpasses.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dependencies(
mut self,
dependencies: &'a [crate::vk1_0::SubpassDependencyBuilder],
) -> Self {
self.0.dependency_count = dependencies.len() as _;
self.0.p_dependencies = dependencies.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> RenderPassCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for RenderPassCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for RenderPassCreateInfoBuilder<'a> {
type Target = RenderPassCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for RenderPassCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateFlagBits.html) · Flag Bits of [`RenderPassCreateFlags`](struct.RenderPassCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct RenderPassCreateFlagBits(pub u32);
impl RenderPassCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> RenderPassCreateFlags {
RenderPassCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl RenderPassCreateFlagBits {}
#[doc = "[Part of `extensions::qcom_render_pass_transform`](../extensions/qcom_render_pass_transform/index.html)"]
impl RenderPassCreateFlagBits {
pub const TRANSFORM_QCOM: Self = Self(0x00000002);
}
impl std::fmt::Debug for RenderPassCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::TRANSFORM_QCOM => "TRANSFORM_QCOM",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassCreateFlags.html) · Flags of [`RenderPassCreateFlagBits`](struct.RenderPassCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct RenderPassCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const TRANSFORM_QCOM = RenderPassCreateFlagBits :: TRANSFORM_QCOM . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescription.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct AttachmentDescription {
pub flags: crate::vk1_0::AttachmentDescriptionFlags,
pub format: crate::vk1_0::Format,
pub samples: crate::vk1_0::SampleCountFlagBits,
pub load_op: crate::vk1_0::AttachmentLoadOp,
pub store_op: crate::vk1_0::AttachmentStoreOp,
pub stencil_load_op: crate::vk1_0::AttachmentLoadOp,
pub stencil_store_op: crate::vk1_0::AttachmentStoreOp,
pub initial_layout: crate::vk1_0::ImageLayout,
pub final_layout: crate::vk1_0::ImageLayout,
}
impl AttachmentDescription {
#[inline]
pub fn builder<'a>(self) -> AttachmentDescriptionBuilder<'a> {
AttachmentDescriptionBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for AttachmentDescription {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("AttachmentDescription")
.field("flags", &self.flags)
.field("format", &self.format)
.field("samples", &self.samples)
.field("load_op", &self.load_op)
.field("store_op", &self.store_op)
.field("stencil_load_op", &self.stencil_load_op)
.field("stencil_store_op", &self.stencil_store_op)
.field("initial_layout", &self.initial_layout)
.field("final_layout", &self.final_layout)
.finish()
}
}
impl Default for AttachmentDescription {
fn default() -> AttachmentDescription {
AttachmentDescription {
flags: Default::default(),
format: Default::default(),
samples: Default::default(),
load_op: Default::default(),
store_op: Default::default(),
stencil_load_op: Default::default(),
stencil_store_op: Default::default(),
initial_layout: Default::default(),
final_layout: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescription.html) · Builder of [`AttachmentDescription`](struct.AttachmentDescription.html)"]
#[repr(transparent)]
pub struct AttachmentDescriptionBuilder<'a>(
AttachmentDescription,
std::marker::PhantomData<&'a ()>,
);
impl<'a> AttachmentDescriptionBuilder<'a> {
#[inline]
pub fn new() -> AttachmentDescriptionBuilder<'a> {
AttachmentDescriptionBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::AttachmentDescriptionFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn format(mut self, format: crate::vk1_0::Format) -> Self {
self.0.format = format;
self
}
#[allow(unused_mut)]
#[inline]
pub fn samples(mut self, samples: crate::vk1_0::SampleCountFlagBits) -> Self {
self.0.samples = samples;
self
}
#[allow(unused_mut)]
#[inline]
pub fn load_op(mut self, load_op: crate::vk1_0::AttachmentLoadOp) -> Self {
self.0.load_op = load_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn store_op(mut self, store_op: crate::vk1_0::AttachmentStoreOp) -> Self {
self.0.store_op = store_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stencil_load_op(mut self, stencil_load_op: crate::vk1_0::AttachmentLoadOp) -> Self {
self.0.stencil_load_op = stencil_load_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stencil_store_op(mut self, stencil_store_op: crate::vk1_0::AttachmentStoreOp) -> Self {
self.0.stencil_store_op = stencil_store_op;
self
}
#[allow(unused_mut)]
#[inline]
pub fn initial_layout(mut self, initial_layout: crate::vk1_0::ImageLayout) -> Self {
self.0.initial_layout = initial_layout;
self
}
#[allow(unused_mut)]
#[inline]
pub fn final_layout(mut self, final_layout: crate::vk1_0::ImageLayout) -> Self {
self.0.final_layout = final_layout;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> AttachmentDescription {
self.0
}
}
impl<'a> std::fmt::Debug for AttachmentDescriptionBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for AttachmentDescriptionBuilder<'a> {
type Target = AttachmentDescription;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for AttachmentDescriptionBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescriptionFlagBits.html) · Flag Bits of [`AttachmentDescriptionFlags`](struct.AttachmentDescriptionFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct AttachmentDescriptionFlagBits(pub u32);
impl AttachmentDescriptionFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> AttachmentDescriptionFlags {
AttachmentDescriptionFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl AttachmentDescriptionFlagBits {
pub const MAY_ALIAS: Self = Self(0x00000001);
}
impl std::fmt::Debug for AttachmentDescriptionFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::MAY_ALIAS => "MAY_ALIAS",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentDescriptionFlags.html) · Flags of [`AttachmentDescriptionFlagBits`](struct.AttachmentDescriptionFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct AttachmentDescriptionFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const MAY_ALIAS = AttachmentDescriptionFlagBits :: MAY_ALIAS . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentLoadOp.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct AttachmentLoadOp(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl AttachmentLoadOp {
pub const LOAD: Self = Self(0);
pub const CLEAR: Self = Self(1);
pub const DONT_CARE: Self = Self(2);
}
impl std::fmt::Debug for AttachmentLoadOp {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::LOAD => "LOAD",
&Self::CLEAR => "CLEAR",
&Self::DONT_CARE => "DONT_CARE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentStoreOp.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct AttachmentStoreOp(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl AttachmentStoreOp {
pub const STORE: Self = Self(0);
pub const DONT_CARE: Self = Self(1);
}
#[doc = "[Part of `extensions::qcom_render_pass_store_ops`](../extensions/qcom_render_pass_store_ops/index.html)"]
impl AttachmentStoreOp {
pub const NONE_QCOM: Self = Self(1000301000);
}
impl std::fmt::Debug for AttachmentStoreOp {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::STORE => "STORE",
&Self::DONT_CARE => "DONT_CARE",
&Self::NONE_QCOM => "NONE_QCOM",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescription.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SubpassDescription {
pub flags: crate::vk1_0::SubpassDescriptionFlags,
pub pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
pub input_attachment_count: u32,
pub p_input_attachments: *const crate::vk1_0::AttachmentReference,
pub color_attachment_count: u32,
pub p_color_attachments: *const crate::vk1_0::AttachmentReference,
pub p_resolve_attachments: *const crate::vk1_0::AttachmentReference,
pub p_depth_stencil_attachment: *const crate::vk1_0::AttachmentReference,
pub preserve_attachment_count: u32,
pub p_preserve_attachments: *const u32,
}
impl SubpassDescription {
#[inline]
pub fn builder<'a>(self) -> SubpassDescriptionBuilder<'a> {
SubpassDescriptionBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SubpassDescription {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SubpassDescription")
.field("flags", &self.flags)
.field("pipeline_bind_point", &self.pipeline_bind_point)
.field("input_attachment_count", &self.input_attachment_count)
.field("p_input_attachments", &self.p_input_attachments)
.field("color_attachment_count", &self.color_attachment_count)
.field("p_color_attachments", &self.p_color_attachments)
.field("p_resolve_attachments", &self.p_resolve_attachments)
.field(
"p_depth_stencil_attachment",
&self.p_depth_stencil_attachment,
)
.field("preserve_attachment_count", &self.preserve_attachment_count)
.field("p_preserve_attachments", &self.p_preserve_attachments)
.finish()
}
}
impl Default for SubpassDescription {
fn default() -> SubpassDescription {
SubpassDescription {
flags: Default::default(),
pipeline_bind_point: Default::default(),
input_attachment_count: Default::default(),
p_input_attachments: std::ptr::null(),
color_attachment_count: Default::default(),
p_color_attachments: std::ptr::null(),
p_resolve_attachments: std::ptr::null(),
p_depth_stencil_attachment: std::ptr::null(),
preserve_attachment_count: Default::default(),
p_preserve_attachments: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescription.html) · Builder of [`SubpassDescription`](struct.SubpassDescription.html)"]
#[repr(transparent)]
pub struct SubpassDescriptionBuilder<'a>(SubpassDescription, std::marker::PhantomData<&'a ()>);
impl<'a> SubpassDescriptionBuilder<'a> {
#[inline]
pub fn new() -> SubpassDescriptionBuilder<'a> {
SubpassDescriptionBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::SubpassDescriptionFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pipeline_bind_point(
mut self,
pipeline_bind_point: crate::vk1_0::PipelineBindPoint,
) -> Self {
self.0.pipeline_bind_point = pipeline_bind_point;
self
}
#[allow(unused_mut)]
#[inline]
pub fn input_attachments(
mut self,
input_attachments: &'a [crate::vk1_0::AttachmentReferenceBuilder],
) -> Self {
self.0.input_attachment_count = input_attachments.len() as _;
self.0.p_input_attachments = input_attachments.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn color_attachments(
mut self,
color_attachments: &'a [crate::vk1_0::AttachmentReferenceBuilder],
) -> Self {
self.0.color_attachment_count = color_attachments.len() as _;
self.0.p_color_attachments = color_attachments.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn resolve_attachments(
mut self,
resolve_attachments: &'a [crate::vk1_0::AttachmentReferenceBuilder],
) -> Self {
self.0.color_attachment_count = resolve_attachments.len() as _;
self.0.p_resolve_attachments = resolve_attachments.as_ptr() as _;
self
}
#[allow(unused_mut)]
#[inline]
pub fn depth_stencil_attachment(
mut self,
depth_stencil_attachment: &'a crate::vk1_0::AttachmentReference,
) -> Self {
self.0.p_depth_stencil_attachment = depth_stencil_attachment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn preserve_attachments(mut self, preserve_attachments: &'a [u32]) -> Self {
self.0.preserve_attachment_count = preserve_attachments.len() as _;
self.0.p_preserve_attachments = preserve_attachments.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SubpassDescription {
self.0
}
}
impl<'a> std::fmt::Debug for SubpassDescriptionBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SubpassDescriptionBuilder<'a> {
type Target = SubpassDescription;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SubpassDescriptionBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescriptionFlagBits.html) · Flag Bits of [`SubpassDescriptionFlags`](struct.SubpassDescriptionFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SubpassDescriptionFlagBits(pub u32);
impl SubpassDescriptionFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> SubpassDescriptionFlags {
SubpassDescriptionFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SubpassDescriptionFlagBits {}
#[doc = "[Part of `extensions::nvx_multiview_per_view_attributes`](../extensions/nvx_multiview_per_view_attributes/index.html)"]
impl SubpassDescriptionFlagBits {
pub const PER_VIEW_ATTRIBUTES_NVX: Self = Self(0x00000001);
pub const PER_VIEW_POSITION_X_ONLY_NVX: Self = Self(0x00000002);
}
#[doc = "[Part of `extensions::qcom_render_pass_shader_resolve`](../extensions/qcom_render_pass_shader_resolve/index.html)"]
impl SubpassDescriptionFlagBits {
pub const FRAGMENT_REGION_QCOM: Self = Self(0x00000004);
pub const SHADER_RESOLVE_QCOM: Self = Self(0x00000008);
}
impl std::fmt::Debug for SubpassDescriptionFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::PER_VIEW_ATTRIBUTES_NVX => "PER_VIEW_ATTRIBUTES_NVX",
&Self::PER_VIEW_POSITION_X_ONLY_NVX => "PER_VIEW_POSITION_X_ONLY_NVX",
&Self::FRAGMENT_REGION_QCOM => "FRAGMENT_REGION_QCOM",
&Self::SHADER_RESOLVE_QCOM => "SHADER_RESOLVE_QCOM",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDescriptionFlags.html) · Flags of [`SubpassDescriptionFlagBits`](struct.SubpassDescriptionFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct SubpassDescriptionFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const PER_VIEW_ATTRIBUTES_NVX = SubpassDescriptionFlagBits :: PER_VIEW_ATTRIBUTES_NVX . 0 ; const PER_VIEW_POSITION_X_ONLY_NVX = SubpassDescriptionFlagBits :: PER_VIEW_POSITION_X_ONLY_NVX . 0 ; const FRAGMENT_REGION_QCOM = SubpassDescriptionFlagBits :: FRAGMENT_REGION_QCOM . 0 ; const SHADER_RESOLVE_QCOM = SubpassDescriptionFlagBits :: SHADER_RESOLVE_QCOM . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineBindPoint.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineBindPoint(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PipelineBindPoint {
pub const GRAPHICS: Self = Self(0);
pub const COMPUTE: Self = Self(1);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl PipelineBindPoint {
pub const RAY_TRACING_KHR: Self = Self(1000165000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl PipelineBindPoint {
pub const RAY_TRACING_NV: Self = Self::RAY_TRACING_KHR;
}
impl std::fmt::Debug for PipelineBindPoint {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::GRAPHICS => "GRAPHICS",
&Self::COMPUTE => "COMPUTE",
&Self::RAY_TRACING_KHR => "RAY_TRACING_KHR",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReference.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct AttachmentReference {
pub attachment: u32,
pub layout: crate::vk1_0::ImageLayout,
}
impl AttachmentReference {
#[inline]
pub fn builder<'a>(self) -> AttachmentReferenceBuilder<'a> {
AttachmentReferenceBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for AttachmentReference {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("AttachmentReference")
.field("attachment", &self.attachment)
.field("layout", &self.layout)
.finish()
}
}
impl Default for AttachmentReference {
fn default() -> AttachmentReference {
AttachmentReference {
attachment: Default::default(),
layout: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAttachmentReference.html) · Builder of [`AttachmentReference`](struct.AttachmentReference.html)"]
#[repr(transparent)]
pub struct AttachmentReferenceBuilder<'a>(AttachmentReference, std::marker::PhantomData<&'a ()>);
impl<'a> AttachmentReferenceBuilder<'a> {
#[inline]
pub fn new() -> AttachmentReferenceBuilder<'a> {
AttachmentReferenceBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn attachment(mut self, attachment: u32) -> Self {
self.0.attachment = attachment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layout(mut self, layout: crate::vk1_0::ImageLayout) -> Self {
self.0.layout = layout;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> AttachmentReference {
self.0
}
}
impl<'a> std::fmt::Debug for AttachmentReferenceBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for AttachmentReferenceBuilder<'a> {
type Target = AttachmentReference;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for AttachmentReferenceBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDependency.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct SubpassDependency {
pub src_subpass: u32,
pub dst_subpass: u32,
pub src_stage_mask: crate::vk1_0::PipelineStageFlags,
pub dst_stage_mask: crate::vk1_0::PipelineStageFlags,
pub src_access_mask: crate::vk1_0::AccessFlags,
pub dst_access_mask: crate::vk1_0::AccessFlags,
pub dependency_flags: crate::vk1_0::DependencyFlags,
}
impl SubpassDependency {
#[inline]
pub fn builder<'a>(self) -> SubpassDependencyBuilder<'a> {
SubpassDependencyBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for SubpassDependency {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("SubpassDependency")
.field("src_subpass", &self.src_subpass)
.field("dst_subpass", &self.dst_subpass)
.field("src_stage_mask", &self.src_stage_mask)
.field("dst_stage_mask", &self.dst_stage_mask)
.field("src_access_mask", &self.src_access_mask)
.field("dst_access_mask", &self.dst_access_mask)
.field("dependency_flags", &self.dependency_flags)
.finish()
}
}
impl Default for SubpassDependency {
fn default() -> SubpassDependency {
SubpassDependency {
src_subpass: Default::default(),
dst_subpass: Default::default(),
src_stage_mask: Default::default(),
dst_stage_mask: Default::default(),
src_access_mask: Default::default(),
dst_access_mask: Default::default(),
dependency_flags: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassDependency.html) · Builder of [`SubpassDependency`](struct.SubpassDependency.html)"]
#[repr(transparent)]
pub struct SubpassDependencyBuilder<'a>(SubpassDependency, std::marker::PhantomData<&'a ()>);
impl<'a> SubpassDependencyBuilder<'a> {
#[inline]
pub fn new() -> SubpassDependencyBuilder<'a> {
SubpassDependencyBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_subpass(mut self, src_subpass: u32) -> Self {
self.0.src_subpass = src_subpass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_subpass(mut self, dst_subpass: u32) -> Self {
self.0.dst_subpass = dst_subpass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_stage_mask(mut self, src_stage_mask: crate::vk1_0::PipelineStageFlags) -> Self {
self.0.src_stage_mask = src_stage_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_stage_mask(mut self, dst_stage_mask: crate::vk1_0::PipelineStageFlags) -> Self {
self.0.dst_stage_mask = dst_stage_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_access_mask(mut self, src_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.src_access_mask = src_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_access_mask(mut self, dst_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.dst_access_mask = dst_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dependency_flags(mut self, dependency_flags: crate::vk1_0::DependencyFlags) -> Self {
self.0.dependency_flags = dependency_flags;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> SubpassDependency {
self.0
}
}
impl<'a> std::fmt::Debug for SubpassDependencyBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for SubpassDependencyBuilder<'a> {
type Target = SubpassDependency;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for SubpassDependencyBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccessFlagBits.html) · Flag Bits of [`AccessFlags`](struct.AccessFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct AccessFlagBits(pub u32);
impl AccessFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> AccessFlags {
AccessFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl AccessFlagBits {
pub const INDIRECT_COMMAND_READ: Self = Self(0x00000001);
pub const INDEX_READ: Self = Self(0x00000002);
pub const VERTEX_ATTRIBUTE_READ: Self = Self(0x00000004);
pub const UNIFORM_READ: Self = Self(0x00000008);
pub const INPUT_ATTACHMENT_READ: Self = Self(0x00000010);
pub const SHADER_READ: Self = Self(0x00000020);
pub const SHADER_WRITE: Self = Self(0x00000040);
pub const COLOR_ATTACHMENT_READ: Self = Self(0x00000080);
pub const COLOR_ATTACHMENT_WRITE: Self = Self(0x00000100);
pub const DEPTH_STENCIL_ATTACHMENT_READ: Self = Self(0x00000200);
pub const DEPTH_STENCIL_ATTACHMENT_WRITE: Self = Self(0x00000400);
pub const TRANSFER_READ: Self = Self(0x00000800);
pub const TRANSFER_WRITE: Self = Self(0x00001000);
pub const HOST_READ: Self = Self(0x00002000);
pub const HOST_WRITE: Self = Self(0x00004000);
pub const MEMORY_READ: Self = Self(0x00008000);
pub const MEMORY_WRITE: Self = Self(0x00010000);
}
#[doc = "[Part of `extensions::ext_blend_operation_advanced`](../extensions/ext_blend_operation_advanced/index.html)"]
impl AccessFlagBits {
pub const COLOR_ATTACHMENT_READ_NONCOHERENT_EXT: Self = Self(0x00080000);
}
#[doc = "[Part of `extensions::ext_conditional_rendering`](../extensions/ext_conditional_rendering/index.html)"]
impl AccessFlagBits {
pub const CONDITIONAL_RENDERING_READ_EXT: Self = Self(0x00100000);
}
#[doc = "[Part of `extensions::ext_fragment_density_map`](../extensions/ext_fragment_density_map/index.html)"]
impl AccessFlagBits {
pub const FRAGMENT_DENSITY_MAP_READ_EXT: Self = Self(0x01000000);
}
#[doc = "[Part of `extensions::ext_transform_feedback`](../extensions/ext_transform_feedback/index.html)"]
impl AccessFlagBits {
pub const TRANSFORM_FEEDBACK_WRITE_EXT: Self = Self(0x02000000);
pub const TRANSFORM_FEEDBACK_COUNTER_READ_EXT: Self = Self(0x04000000);
pub const TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT: Self = Self(0x08000000);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl AccessFlagBits {
pub const ACCELERATION_STRUCTURE_READ_KHR: Self = Self(0x00200000);
pub const ACCELERATION_STRUCTURE_WRITE_KHR: Self = Self(0x00400000);
}
#[doc = "[Part of `extensions::nv_device_generated_commands`](../extensions/nv_device_generated_commands/index.html)"]
impl AccessFlagBits {
pub const COMMAND_PREPROCESS_READ_NV: Self = Self(0x00020000);
pub const COMMAND_PREPROCESS_WRITE_NV: Self = Self(0x00040000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl AccessFlagBits {
pub const ACCELERATION_STRUCTURE_READ_NV: Self = Self::ACCELERATION_STRUCTURE_READ_KHR;
pub const ACCELERATION_STRUCTURE_WRITE_NV: Self = Self::ACCELERATION_STRUCTURE_WRITE_KHR;
}
#[doc = "[Part of `extensions::nv_shading_rate_image`](../extensions/nv_shading_rate_image/index.html)"]
impl AccessFlagBits {
pub const SHADING_RATE_IMAGE_READ_NV: Self = Self(0x00800000);
}
impl std::fmt::Debug for AccessFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::INDIRECT_COMMAND_READ => "INDIRECT_COMMAND_READ",
&Self::INDEX_READ => "INDEX_READ",
&Self::VERTEX_ATTRIBUTE_READ => "VERTEX_ATTRIBUTE_READ",
&Self::UNIFORM_READ => "UNIFORM_READ",
&Self::INPUT_ATTACHMENT_READ => "INPUT_ATTACHMENT_READ",
&Self::SHADER_READ => "SHADER_READ",
&Self::SHADER_WRITE => "SHADER_WRITE",
&Self::COLOR_ATTACHMENT_READ => "COLOR_ATTACHMENT_READ",
&Self::COLOR_ATTACHMENT_WRITE => "COLOR_ATTACHMENT_WRITE",
&Self::DEPTH_STENCIL_ATTACHMENT_READ => "DEPTH_STENCIL_ATTACHMENT_READ",
&Self::DEPTH_STENCIL_ATTACHMENT_WRITE => "DEPTH_STENCIL_ATTACHMENT_WRITE",
&Self::TRANSFER_READ => "TRANSFER_READ",
&Self::TRANSFER_WRITE => "TRANSFER_WRITE",
&Self::HOST_READ => "HOST_READ",
&Self::HOST_WRITE => "HOST_WRITE",
&Self::MEMORY_READ => "MEMORY_READ",
&Self::MEMORY_WRITE => "MEMORY_WRITE",
&Self::COLOR_ATTACHMENT_READ_NONCOHERENT_EXT => "COLOR_ATTACHMENT_READ_NONCOHERENT_EXT",
&Self::CONDITIONAL_RENDERING_READ_EXT => "CONDITIONAL_RENDERING_READ_EXT",
&Self::FRAGMENT_DENSITY_MAP_READ_EXT => "FRAGMENT_DENSITY_MAP_READ_EXT",
&Self::TRANSFORM_FEEDBACK_WRITE_EXT => "TRANSFORM_FEEDBACK_WRITE_EXT",
&Self::TRANSFORM_FEEDBACK_COUNTER_READ_EXT => "TRANSFORM_FEEDBACK_COUNTER_READ_EXT",
&Self::TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT => "TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT",
&Self::ACCELERATION_STRUCTURE_READ_KHR => "ACCELERATION_STRUCTURE_READ_KHR",
&Self::ACCELERATION_STRUCTURE_WRITE_KHR => "ACCELERATION_STRUCTURE_WRITE_KHR",
&Self::COMMAND_PREPROCESS_READ_NV => "COMMAND_PREPROCESS_READ_NV",
&Self::COMMAND_PREPROCESS_WRITE_NV => "COMMAND_PREPROCESS_WRITE_NV",
&Self::SHADING_RATE_IMAGE_READ_NV => "SHADING_RATE_IMAGE_READ_NV",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkAccessFlags.html) · Flags of [`AccessFlagBits`](struct.AccessFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct AccessFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const INDIRECT_COMMAND_READ = AccessFlagBits :: INDIRECT_COMMAND_READ . 0 ; const INDEX_READ = AccessFlagBits :: INDEX_READ . 0 ; const VERTEX_ATTRIBUTE_READ = AccessFlagBits :: VERTEX_ATTRIBUTE_READ . 0 ; const UNIFORM_READ = AccessFlagBits :: UNIFORM_READ . 0 ; const INPUT_ATTACHMENT_READ = AccessFlagBits :: INPUT_ATTACHMENT_READ . 0 ; const SHADER_READ = AccessFlagBits :: SHADER_READ . 0 ; const SHADER_WRITE = AccessFlagBits :: SHADER_WRITE . 0 ; const COLOR_ATTACHMENT_READ = AccessFlagBits :: COLOR_ATTACHMENT_READ . 0 ; const COLOR_ATTACHMENT_WRITE = AccessFlagBits :: COLOR_ATTACHMENT_WRITE . 0 ; const DEPTH_STENCIL_ATTACHMENT_READ = AccessFlagBits :: DEPTH_STENCIL_ATTACHMENT_READ . 0 ; const DEPTH_STENCIL_ATTACHMENT_WRITE = AccessFlagBits :: DEPTH_STENCIL_ATTACHMENT_WRITE . 0 ; const TRANSFER_READ = AccessFlagBits :: TRANSFER_READ . 0 ; const TRANSFER_WRITE = AccessFlagBits :: TRANSFER_WRITE . 0 ; const HOST_READ = AccessFlagBits :: HOST_READ . 0 ; const HOST_WRITE = AccessFlagBits :: HOST_WRITE . 0 ; const MEMORY_READ = AccessFlagBits :: MEMORY_READ . 0 ; const MEMORY_WRITE = AccessFlagBits :: MEMORY_WRITE . 0 ; const COLOR_ATTACHMENT_READ_NONCOHERENT_EXT = AccessFlagBits :: COLOR_ATTACHMENT_READ_NONCOHERENT_EXT . 0 ; const CONDITIONAL_RENDERING_READ_EXT = AccessFlagBits :: CONDITIONAL_RENDERING_READ_EXT . 0 ; const FRAGMENT_DENSITY_MAP_READ_EXT = AccessFlagBits :: FRAGMENT_DENSITY_MAP_READ_EXT . 0 ; const TRANSFORM_FEEDBACK_WRITE_EXT = AccessFlagBits :: TRANSFORM_FEEDBACK_WRITE_EXT . 0 ; const TRANSFORM_FEEDBACK_COUNTER_READ_EXT = AccessFlagBits :: TRANSFORM_FEEDBACK_COUNTER_READ_EXT . 0 ; const TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT = AccessFlagBits :: TRANSFORM_FEEDBACK_COUNTER_WRITE_EXT . 0 ; const ACCELERATION_STRUCTURE_READ_KHR = AccessFlagBits :: ACCELERATION_STRUCTURE_READ_KHR . 0 ; const ACCELERATION_STRUCTURE_WRITE_KHR = AccessFlagBits :: ACCELERATION_STRUCTURE_WRITE_KHR . 0 ; const COMMAND_PREPROCESS_READ_NV = AccessFlagBits :: COMMAND_PREPROCESS_READ_NV . 0 ; const COMMAND_PREPROCESS_WRITE_NV = AccessFlagBits :: COMMAND_PREPROCESS_WRITE_NV . 0 ; const ACCELERATION_STRUCTURE_READ_NV = AccessFlagBits :: ACCELERATION_STRUCTURE_READ_NV . 0 ; const ACCELERATION_STRUCTURE_WRITE_NV = AccessFlagBits :: ACCELERATION_STRUCTURE_WRITE_NV . 0 ; const SHADING_RATE_IMAGE_READ_NV = AccessFlagBits :: SHADING_RATE_IMAGE_READ_NV . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDependencyFlagBits.html) · Flag Bits of [`DependencyFlags`](struct.DependencyFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct DependencyFlagBits(pub u32);
impl DependencyFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> DependencyFlags {
DependencyFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl DependencyFlagBits {
pub const BY_REGION: Self = Self(0x00000001);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl DependencyFlagBits {
pub const DEVICE_GROUP: Self = Self(0x00000004);
pub const VIEW_LOCAL: Self = Self(0x00000002);
}
#[doc = "[Part of `extensions::khr_device_group`](../extensions/khr_device_group/index.html)"]
impl DependencyFlagBits {
pub const DEVICE_GROUP_KHR: Self = Self::DEVICE_GROUP;
}
#[doc = "[Part of `extensions::khr_multiview`](../extensions/khr_multiview/index.html)"]
impl DependencyFlagBits {
pub const VIEW_LOCAL_KHR: Self = Self::VIEW_LOCAL;
}
impl std::fmt::Debug for DependencyFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::BY_REGION => "BY_REGION",
&Self::DEVICE_GROUP => "DEVICE_GROUP",
&Self::VIEW_LOCAL => "VIEW_LOCAL",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDependencyFlags.html) · Flags of [`DependencyFlagBits`](struct.DependencyFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct DependencyFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const BY_REGION = DependencyFlagBits :: BY_REGION . 0 ; const DEVICE_GROUP = DependencyFlagBits :: DEVICE_GROUP . 0 ; const VIEW_LOCAL = DependencyFlagBits :: VIEW_LOCAL . 0 ; const DEVICE_GROUP_KHR = DependencyFlagBits :: DEVICE_GROUP_KHR . 0 ; const VIEW_LOCAL_KHR = DependencyFlagBits :: VIEW_LOCAL_KHR . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolCreateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CommandPoolCreateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::CommandPoolCreateFlags,
pub queue_family_index: u32,
}
impl CommandPoolCreateInfo {
#[inline]
pub fn builder<'a>(self) -> CommandPoolCreateInfoBuilder<'a> {
CommandPoolCreateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for CommandPoolCreateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("CommandPoolCreateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("queue_family_index", &self.queue_family_index)
.finish()
}
}
impl Default for CommandPoolCreateInfo {
fn default() -> CommandPoolCreateInfo {
CommandPoolCreateInfo {
s_type: crate::vk1_0::StructureType::COMMAND_POOL_CREATE_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
queue_family_index: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolCreateInfo.html) · Builder of [`CommandPoolCreateInfo`](struct.CommandPoolCreateInfo.html)"]
#[repr(transparent)]
pub struct CommandPoolCreateInfoBuilder<'a>(
CommandPoolCreateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> CommandPoolCreateInfoBuilder<'a> {
#[inline]
pub fn new() -> CommandPoolCreateInfoBuilder<'a> {
CommandPoolCreateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::CommandPoolCreateFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn queue_family_index(mut self, queue_family_index: u32) -> Self {
self.0.queue_family_index = queue_family_index;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> CommandPoolCreateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for CommandPoolCreateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for CommandPoolCreateInfoBuilder<'a> {
type Target = CommandPoolCreateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CommandPoolCreateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolCreateFlagBits.html) · Flag Bits of [`CommandPoolCreateFlags`](struct.CommandPoolCreateFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CommandPoolCreateFlagBits(pub u32);
impl CommandPoolCreateFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> CommandPoolCreateFlags {
CommandPoolCreateFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CommandPoolCreateFlagBits {
pub const TRANSIENT: Self = Self(0x00000001);
pub const RESET_COMMAND_BUFFER: Self = Self(0x00000002);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl CommandPoolCreateFlagBits {
pub const PROTECTED: Self = Self(0x00000004);
}
impl std::fmt::Debug for CommandPoolCreateFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::TRANSIENT => "TRANSIENT",
&Self::RESET_COMMAND_BUFFER => "RESET_COMMAND_BUFFER",
&Self::PROTECTED => "PROTECTED",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolCreateFlags.html) · Flags of [`CommandPoolCreateFlagBits`](struct.CommandPoolCreateFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct CommandPoolCreateFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const TRANSIENT = CommandPoolCreateFlagBits :: TRANSIENT . 0 ; const RESET_COMMAND_BUFFER = CommandPoolCreateFlagBits :: RESET_COMMAND_BUFFER . 0 ; const PROTECTED = CommandPoolCreateFlagBits :: PROTECTED . 0 ; } }
crate :: non_dispatchable_handle ! ( CommandPool , COMMAND_POOL , doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPool.html) · Non-dispatchable Handle" ) ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolResetFlagBits.html) · Flag Bits of [`CommandPoolResetFlags`](struct.CommandPoolResetFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CommandPoolResetFlagBits(pub u32);
impl CommandPoolResetFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> CommandPoolResetFlags {
CommandPoolResetFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CommandPoolResetFlagBits {
pub const RELEASE_RESOURCES: Self = Self(0x00000001);
}
impl std::fmt::Debug for CommandPoolResetFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::RELEASE_RESOURCES => "RELEASE_RESOURCES",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandPoolResetFlags.html) · Flags of [`CommandPoolResetFlagBits`](struct.CommandPoolResetFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct CommandPoolResetFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const RELEASE_RESOURCES = CommandPoolResetFlagBits :: RELEASE_RESOURCES . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferAllocateInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CommandBufferAllocateInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub command_pool: crate::vk1_0::CommandPool,
pub level: crate::vk1_0::CommandBufferLevel,
pub command_buffer_count: u32,
}
impl CommandBufferAllocateInfo {
#[inline]
pub fn builder<'a>(self) -> CommandBufferAllocateInfoBuilder<'a> {
CommandBufferAllocateInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for CommandBufferAllocateInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("CommandBufferAllocateInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("command_pool", &self.command_pool)
.field("level", &self.level)
.field("command_buffer_count", &self.command_buffer_count)
.finish()
}
}
impl Default for CommandBufferAllocateInfo {
fn default() -> CommandBufferAllocateInfo {
CommandBufferAllocateInfo {
s_type: crate::vk1_0::StructureType::COMMAND_BUFFER_ALLOCATE_INFO,
p_next: std::ptr::null(),
command_pool: Default::default(),
level: Default::default(),
command_buffer_count: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferAllocateInfo.html) · Builder of [`CommandBufferAllocateInfo`](struct.CommandBufferAllocateInfo.html)"]
#[repr(transparent)]
pub struct CommandBufferAllocateInfoBuilder<'a>(
CommandBufferAllocateInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> CommandBufferAllocateInfoBuilder<'a> {
#[inline]
pub fn new() -> CommandBufferAllocateInfoBuilder<'a> {
CommandBufferAllocateInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn command_pool(mut self, command_pool: crate::vk1_0::CommandPool) -> Self {
self.0.command_pool = command_pool;
self
}
#[allow(unused_mut)]
#[inline]
pub fn level(mut self, level: crate::vk1_0::CommandBufferLevel) -> Self {
self.0.level = level;
self
}
#[allow(unused_mut)]
#[inline]
pub fn command_buffer_count(mut self, command_buffer_count: u32) -> Self {
self.0.command_buffer_count = command_buffer_count;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> CommandBufferAllocateInfo {
self.0
}
}
impl<'a> std::fmt::Debug for CommandBufferAllocateInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for CommandBufferAllocateInfoBuilder<'a> {
type Target = CommandBufferAllocateInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CommandBufferAllocateInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferLevel.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CommandBufferLevel(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CommandBufferLevel {
pub const PRIMARY: Self = Self(0);
pub const SECONDARY: Self = Self(1);
}
impl std::fmt::Debug for CommandBufferLevel {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::PRIMARY => "PRIMARY",
&Self::SECONDARY => "SECONDARY",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferBeginInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CommandBufferBeginInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub flags: crate::vk1_0::CommandBufferUsageFlags,
pub p_inheritance_info: *const crate::vk1_0::CommandBufferInheritanceInfo,
}
impl CommandBufferBeginInfo {
#[inline]
pub fn builder<'a>(self) -> CommandBufferBeginInfoBuilder<'a> {
CommandBufferBeginInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for CommandBufferBeginInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("CommandBufferBeginInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("flags", &self.flags)
.field("p_inheritance_info", &self.p_inheritance_info)
.finish()
}
}
impl Default for CommandBufferBeginInfo {
fn default() -> CommandBufferBeginInfo {
CommandBufferBeginInfo {
s_type: crate::vk1_0::StructureType::COMMAND_BUFFER_BEGIN_INFO,
p_next: std::ptr::null(),
flags: Default::default(),
p_inheritance_info: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferBeginInfo.html) · Builder of [`CommandBufferBeginInfo`](struct.CommandBufferBeginInfo.html)"]
#[repr(transparent)]
pub struct CommandBufferBeginInfoBuilder<'a>(
CommandBufferBeginInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> CommandBufferBeginInfoBuilder<'a> {
#[inline]
pub fn new() -> CommandBufferBeginInfoBuilder<'a> {
CommandBufferBeginInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn flags(mut self, flags: crate::vk1_0::CommandBufferUsageFlags) -> Self {
self.0.flags = flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn inheritance_info(
mut self,
inheritance_info: &'a crate::vk1_0::CommandBufferInheritanceInfo,
) -> Self {
self.0.p_inheritance_info = inheritance_info;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> CommandBufferBeginInfo {
self.0
}
}
impl<'a> std::fmt::Debug for CommandBufferBeginInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for CommandBufferBeginInfoBuilder<'a> {
type Target = CommandBufferBeginInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CommandBufferBeginInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferUsageFlagBits.html) · Flag Bits of [`CommandBufferUsageFlags`](struct.CommandBufferUsageFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CommandBufferUsageFlagBits(pub u32);
impl CommandBufferUsageFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> CommandBufferUsageFlags {
CommandBufferUsageFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CommandBufferUsageFlagBits {
pub const ONE_TIME_SUBMIT: Self = Self(0x00000001);
pub const RENDER_PASS_CONTINUE: Self = Self(0x00000002);
pub const SIMULTANEOUS_USE: Self = Self(0x00000004);
}
impl std::fmt::Debug for CommandBufferUsageFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::ONE_TIME_SUBMIT => "ONE_TIME_SUBMIT",
&Self::RENDER_PASS_CONTINUE => "RENDER_PASS_CONTINUE",
&Self::SIMULTANEOUS_USE => "SIMULTANEOUS_USE",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferUsageFlags.html) · Flags of [`CommandBufferUsageFlagBits`](struct.CommandBufferUsageFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct CommandBufferUsageFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const ONE_TIME_SUBMIT = CommandBufferUsageFlagBits :: ONE_TIME_SUBMIT . 0 ; const RENDER_PASS_CONTINUE = CommandBufferUsageFlagBits :: RENDER_PASS_CONTINUE . 0 ; const SIMULTANEOUS_USE = CommandBufferUsageFlagBits :: SIMULTANEOUS_USE . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CommandBufferInheritanceInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub render_pass: crate::vk1_0::RenderPass,
pub subpass: u32,
pub framebuffer: crate::vk1_0::Framebuffer,
pub occlusion_query_enable: crate::vk1_0::Bool32,
pub query_flags: crate::vk1_0::QueryControlFlags,
pub pipeline_statistics: crate::vk1_0::QueryPipelineStatisticFlags,
}
impl CommandBufferInheritanceInfo {
#[inline]
pub fn builder<'a>(self) -> CommandBufferInheritanceInfoBuilder<'a> {
CommandBufferInheritanceInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for CommandBufferInheritanceInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("CommandBufferInheritanceInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("render_pass", &self.render_pass)
.field("subpass", &self.subpass)
.field("framebuffer", &self.framebuffer)
.field(
"occlusion_query_enable",
&(self.occlusion_query_enable != 0),
)
.field("query_flags", &self.query_flags)
.field("pipeline_statistics", &self.pipeline_statistics)
.finish()
}
}
impl Default for CommandBufferInheritanceInfo {
fn default() -> CommandBufferInheritanceInfo {
CommandBufferInheritanceInfo {
s_type: crate::vk1_0::StructureType::COMMAND_BUFFER_INHERITANCE_INFO,
p_next: std::ptr::null(),
render_pass: Default::default(),
subpass: Default::default(),
framebuffer: Default::default(),
occlusion_query_enable: Default::default(),
query_flags: Default::default(),
pipeline_statistics: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferInheritanceInfo.html) · Builder of [`CommandBufferInheritanceInfo`](struct.CommandBufferInheritanceInfo.html)"]
#[repr(transparent)]
pub struct CommandBufferInheritanceInfoBuilder<'a>(
CommandBufferInheritanceInfo,
std::marker::PhantomData<&'a ()>,
);
impl<'a> CommandBufferInheritanceInfoBuilder<'a> {
#[inline]
pub fn new() -> CommandBufferInheritanceInfoBuilder<'a> {
CommandBufferInheritanceInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn render_pass(mut self, render_pass: crate::vk1_0::RenderPass) -> Self {
self.0.render_pass = render_pass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn subpass(mut self, subpass: u32) -> Self {
self.0.subpass = subpass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn framebuffer(mut self, framebuffer: crate::vk1_0::Framebuffer) -> Self {
self.0.framebuffer = framebuffer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn occlusion_query_enable(mut self, occlusion_query_enable: bool) -> Self {
self.0.occlusion_query_enable = occlusion_query_enable as u32;
self
}
#[allow(unused_mut)]
#[inline]
pub fn query_flags(mut self, query_flags: crate::vk1_0::QueryControlFlags) -> Self {
self.0.query_flags = query_flags;
self
}
#[allow(unused_mut)]
#[inline]
pub fn pipeline_statistics(
mut self,
pipeline_statistics: crate::vk1_0::QueryPipelineStatisticFlags,
) -> Self {
self.0.pipeline_statistics = pipeline_statistics;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> CommandBufferInheritanceInfo {
self.0
}
}
impl<'a> std::fmt::Debug for CommandBufferInheritanceInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for CommandBufferInheritanceInfoBuilder<'a> {
type Target = CommandBufferInheritanceInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CommandBufferInheritanceInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryControlFlagBits.html) · Flag Bits of [`QueryControlFlags`](struct.QueryControlFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct QueryControlFlagBits(pub u32);
impl QueryControlFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> QueryControlFlags {
QueryControlFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl QueryControlFlagBits {
pub const PRECISE: Self = Self(0x00000001);
}
impl std::fmt::Debug for QueryControlFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::PRECISE => "PRECISE",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkQueryControlFlags.html) · Flags of [`QueryControlFlagBits`](struct.QueryControlFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct QueryControlFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const PRECISE = QueryControlFlagBits :: PRECISE . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferResetFlagBits.html) · Flag Bits of [`CommandBufferResetFlags`](struct.CommandBufferResetFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct CommandBufferResetFlagBits(pub u32);
impl CommandBufferResetFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> CommandBufferResetFlags {
CommandBufferResetFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl CommandBufferResetFlagBits {
pub const RELEASE_RESOURCES: Self = Self(0x00000001);
}
impl std::fmt::Debug for CommandBufferResetFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::RELEASE_RESOURCES => "RELEASE_RESOURCES",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCommandBufferResetFlags.html) · Flags of [`CommandBufferResetFlagBits`](struct.CommandBufferResetFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct CommandBufferResetFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const RELEASE_RESOURCES = CommandBufferResetFlagBits :: RELEASE_RESOURCES . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilFaceFlagBits.html) · Flag Bits of [`StencilFaceFlags`](struct.StencilFaceFlags.html)"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct StencilFaceFlagBits(pub u32);
impl StencilFaceFlagBits {
#[inline]
#[doc = "Converts this enum variant to the corresponding bitmask"]
pub const fn bitmask(&self) -> StencilFaceFlags {
StencilFaceFlags::from_bits_truncate(self.0)
}
}
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl StencilFaceFlagBits {
pub const FRONT: Self = Self(0x00000001);
pub const BACK: Self = Self(0x00000002);
pub const FRONT_AND_BACK: Self = Self(0x00000003);
pub const STENCIL_FRONT_AND_BACK: Self = Self::FRONT_AND_BACK;
}
impl std::fmt::Debug for StencilFaceFlagBits {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::FRONT => "FRONT",
&Self::BACK => "BACK",
&Self::FRONT_AND_BACK => "FRONT_AND_BACK",
_ => "(unknown)",
})
}
}
bitflags::bitflags! { # [ doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkStencilFaceFlags.html) · Flags of [`StencilFaceFlagBits`](struct.StencilFaceFlagBits.html)" ] # [ derive ( Default ) ] # [ repr ( transparent ) ] pub struct StencilFaceFlags : u32 { # [ cfg ( empty_bitflag_workaround ) ] const EMPTY_BITFLAG_WORKAROUND = 0 ; const FRONT = StencilFaceFlagBits :: FRONT . 0 ; const BACK = StencilFaceFlagBits :: BACK . 0 ; const FRONT_AND_BACK = StencilFaceFlagBits :: FRONT_AND_BACK . 0 ; const STENCIL_FRONT_AND_BACK = StencilFaceFlagBits :: STENCIL_FRONT_AND_BACK . 0 ; } }
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkIndexType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct IndexType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl IndexType {
pub const UINT16: Self = Self(0);
pub const UINT32: Self = Self(1);
}
#[doc = "[Part of `extensions::ext_index_type_uint8`](../extensions/ext_index_type_uint8/index.html)"]
impl IndexType {
pub const UINT8_EXT: Self = Self(1000265000);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl IndexType {
pub const NONE_KHR: Self = Self(1000165000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl IndexType {
pub const NONE_NV: Self = Self::NONE_KHR;
}
impl std::fmt::Debug for IndexType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::UINT16 => "UINT16",
&Self::UINT32 => "UINT32",
&Self::UINT8_EXT => "UINT8_EXT",
&Self::NONE_KHR => "NONE_KHR",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCopy.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BufferCopy {
pub src_offset: crate::vk1_0::DeviceSize,
pub dst_offset: crate::vk1_0::DeviceSize,
pub size: crate::vk1_0::DeviceSize,
}
impl BufferCopy {
#[inline]
pub fn builder<'a>(self) -> BufferCopyBuilder<'a> {
BufferCopyBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BufferCopy {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BufferCopy")
.field("src_offset", &self.src_offset)
.field("dst_offset", &self.dst_offset)
.field("size", &self.size)
.finish()
}
}
impl Default for BufferCopy {
fn default() -> BufferCopy {
BufferCopy {
src_offset: Default::default(),
dst_offset: Default::default(),
size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferCopy.html) · Builder of [`BufferCopy`](struct.BufferCopy.html)"]
#[repr(transparent)]
pub struct BufferCopyBuilder<'a>(BufferCopy, std::marker::PhantomData<&'a ()>);
impl<'a> BufferCopyBuilder<'a> {
#[inline]
pub fn new() -> BufferCopyBuilder<'a> {
BufferCopyBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_offset(mut self, src_offset: crate::vk1_0::DeviceSize) -> Self {
self.0.src_offset = src_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_offset(mut self, dst_offset: crate::vk1_0::DeviceSize) -> Self {
self.0.dst_offset = dst_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BufferCopy {
self.0
}
}
impl<'a> std::fmt::Debug for BufferCopyBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BufferCopyBuilder<'a> {
type Target = BufferCopy;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BufferCopyBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCopy.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageCopy {
pub src_subresource: crate::vk1_0::ImageSubresourceLayers,
pub src_offset: crate::vk1_0::Offset3D,
pub dst_subresource: crate::vk1_0::ImageSubresourceLayers,
pub dst_offset: crate::vk1_0::Offset3D,
pub extent: crate::vk1_0::Extent3D,
}
impl ImageCopy {
#[inline]
pub fn builder<'a>(self) -> ImageCopyBuilder<'a> {
ImageCopyBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageCopy {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageCopy")
.field("src_subresource", &self.src_subresource)
.field("src_offset", &self.src_offset)
.field("dst_subresource", &self.dst_subresource)
.field("dst_offset", &self.dst_offset)
.field("extent", &self.extent)
.finish()
}
}
impl Default for ImageCopy {
fn default() -> ImageCopy {
ImageCopy {
src_subresource: Default::default(),
src_offset: Default::default(),
dst_subresource: Default::default(),
dst_offset: Default::default(),
extent: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageCopy.html) · Builder of [`ImageCopy`](struct.ImageCopy.html)"]
#[repr(transparent)]
pub struct ImageCopyBuilder<'a>(ImageCopy, std::marker::PhantomData<&'a ()>);
impl<'a> ImageCopyBuilder<'a> {
#[inline]
pub fn new() -> ImageCopyBuilder<'a> {
ImageCopyBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_subresource(
mut self,
src_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.src_subresource = src_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_offset(mut self, src_offset: crate::vk1_0::Offset3D) -> Self {
self.0.src_offset = src_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_subresource(
mut self,
dst_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.dst_subresource = dst_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_offset(mut self, dst_offset: crate::vk1_0::Offset3D) -> Self {
self.0.dst_offset = dst_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn extent(mut self, extent: crate::vk1_0::Extent3D) -> Self {
self.0.extent = extent;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageCopy {
self.0
}
}
impl<'a> std::fmt::Debug for ImageCopyBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageCopyBuilder<'a> {
type Target = ImageCopy;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageCopyBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceLayers.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageSubresourceLayers {
pub aspect_mask: crate::vk1_0::ImageAspectFlags,
pub mip_level: u32,
pub base_array_layer: u32,
pub layer_count: u32,
}
impl ImageSubresourceLayers {
#[inline]
pub fn builder<'a>(self) -> ImageSubresourceLayersBuilder<'a> {
ImageSubresourceLayersBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageSubresourceLayers {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageSubresourceLayers")
.field("aspect_mask", &self.aspect_mask)
.field("mip_level", &self.mip_level)
.field("base_array_layer", &self.base_array_layer)
.field("layer_count", &self.layer_count)
.finish()
}
}
impl Default for ImageSubresourceLayers {
fn default() -> ImageSubresourceLayers {
ImageSubresourceLayers {
aspect_mask: Default::default(),
mip_level: Default::default(),
base_array_layer: Default::default(),
layer_count: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageSubresourceLayers.html) · Builder of [`ImageSubresourceLayers`](struct.ImageSubresourceLayers.html)"]
#[repr(transparent)]
pub struct ImageSubresourceLayersBuilder<'a>(
ImageSubresourceLayers,
std::marker::PhantomData<&'a ()>,
);
impl<'a> ImageSubresourceLayersBuilder<'a> {
#[inline]
pub fn new() -> ImageSubresourceLayersBuilder<'a> {
ImageSubresourceLayersBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn aspect_mask(mut self, aspect_mask: crate::vk1_0::ImageAspectFlags) -> Self {
self.0.aspect_mask = aspect_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn mip_level(mut self, mip_level: u32) -> Self {
self.0.mip_level = mip_level;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
self.0.base_array_layer = base_array_layer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layer_count(mut self, layer_count: u32) -> Self {
self.0.layer_count = layer_count;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageSubresourceLayers {
self.0
}
}
impl<'a> std::fmt::Debug for ImageSubresourceLayersBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageSubresourceLayersBuilder<'a> {
type Target = ImageSubresourceLayers;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageSubresourceLayersBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageBlit.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageBlit {
pub src_subresource: crate::vk1_0::ImageSubresourceLayers,
pub src_offsets: [crate::vk1_0::Offset3D; 2],
pub dst_subresource: crate::vk1_0::ImageSubresourceLayers,
pub dst_offsets: [crate::vk1_0::Offset3D; 2],
}
impl ImageBlit {
#[inline]
pub fn builder<'a>(self) -> ImageBlitBuilder<'a> {
ImageBlitBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageBlit {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageBlit")
.field("src_subresource", &self.src_subresource)
.field("src_offsets", &self.src_offsets)
.field("dst_subresource", &self.dst_subresource)
.field("dst_offsets", &self.dst_offsets)
.finish()
}
}
impl Default for ImageBlit {
fn default() -> ImageBlit {
ImageBlit {
src_subresource: Default::default(),
src_offsets: Default::default(),
dst_subresource: Default::default(),
dst_offsets: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageBlit.html) · Builder of [`ImageBlit`](struct.ImageBlit.html)"]
#[repr(transparent)]
pub struct ImageBlitBuilder<'a>(ImageBlit, std::marker::PhantomData<&'a ()>);
impl<'a> ImageBlitBuilder<'a> {
#[inline]
pub fn new() -> ImageBlitBuilder<'a> {
ImageBlitBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_subresource(
mut self,
src_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.src_subresource = src_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_offsets(mut self, src_offsets: [crate::vk1_0::Offset3D; 2]) -> Self {
self.0.src_offsets = src_offsets;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_subresource(
mut self,
dst_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.dst_subresource = dst_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_offsets(mut self, dst_offsets: [crate::vk1_0::Offset3D; 2]) -> Self {
self.0.dst_offsets = dst_offsets;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageBlit {
self.0
}
}
impl<'a> std::fmt::Debug for ImageBlitBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageBlitBuilder<'a> {
type Target = ImageBlit;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageBlitBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferImageCopy.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BufferImageCopy {
pub buffer_offset: crate::vk1_0::DeviceSize,
pub buffer_row_length: u32,
pub buffer_image_height: u32,
pub image_subresource: crate::vk1_0::ImageSubresourceLayers,
pub image_offset: crate::vk1_0::Offset3D,
pub image_extent: crate::vk1_0::Extent3D,
}
impl BufferImageCopy {
#[inline]
pub fn builder<'a>(self) -> BufferImageCopyBuilder<'a> {
BufferImageCopyBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BufferImageCopy {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BufferImageCopy")
.field("buffer_offset", &self.buffer_offset)
.field("buffer_row_length", &self.buffer_row_length)
.field("buffer_image_height", &self.buffer_image_height)
.field("image_subresource", &self.image_subresource)
.field("image_offset", &self.image_offset)
.field("image_extent", &self.image_extent)
.finish()
}
}
impl Default for BufferImageCopy {
fn default() -> BufferImageCopy {
BufferImageCopy {
buffer_offset: Default::default(),
buffer_row_length: Default::default(),
buffer_image_height: Default::default(),
image_subresource: Default::default(),
image_offset: Default::default(),
image_extent: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferImageCopy.html) · Builder of [`BufferImageCopy`](struct.BufferImageCopy.html)"]
#[repr(transparent)]
pub struct BufferImageCopyBuilder<'a>(BufferImageCopy, std::marker::PhantomData<&'a ()>);
impl<'a> BufferImageCopyBuilder<'a> {
#[inline]
pub fn new() -> BufferImageCopyBuilder<'a> {
BufferImageCopyBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_offset(mut self, buffer_offset: crate::vk1_0::DeviceSize) -> Self {
self.0.buffer_offset = buffer_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_row_length(mut self, buffer_row_length: u32) -> Self {
self.0.buffer_row_length = buffer_row_length;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer_image_height(mut self, buffer_image_height: u32) -> Self {
self.0.buffer_image_height = buffer_image_height;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_subresource(
mut self,
image_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.image_subresource = image_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_offset(mut self, image_offset: crate::vk1_0::Offset3D) -> Self {
self.0.image_offset = image_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image_extent(mut self, image_extent: crate::vk1_0::Extent3D) -> Self {
self.0.image_extent = image_extent;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BufferImageCopy {
self.0
}
}
impl<'a> std::fmt::Debug for BufferImageCopyBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BufferImageCopyBuilder<'a> {
type Target = BufferImageCopy;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BufferImageCopyBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearColorValue.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub union ClearColorValue {
pub float32: [f32; 4],
pub int32: [i32; 4],
pub uint32: [u32; 4],
}
impl std::fmt::Debug for ClearColorValue {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ClearColorValue").finish()
}
}
impl Default for ClearColorValue {
fn default() -> ClearColorValue {
unsafe { std::mem::zeroed() }
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearDepthStencilValue.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ClearDepthStencilValue {
pub depth: f32,
pub stencil: u32,
}
impl ClearDepthStencilValue {
#[inline]
pub fn builder<'a>(self) -> ClearDepthStencilValueBuilder<'a> {
ClearDepthStencilValueBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ClearDepthStencilValue {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ClearDepthStencilValue")
.field("depth", &self.depth)
.field("stencil", &self.stencil)
.finish()
}
}
impl Default for ClearDepthStencilValue {
fn default() -> ClearDepthStencilValue {
ClearDepthStencilValue {
depth: Default::default(),
stencil: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearDepthStencilValue.html) · Builder of [`ClearDepthStencilValue`](struct.ClearDepthStencilValue.html)"]
#[repr(transparent)]
pub struct ClearDepthStencilValueBuilder<'a>(
ClearDepthStencilValue,
std::marker::PhantomData<&'a ()>,
);
impl<'a> ClearDepthStencilValueBuilder<'a> {
#[inline]
pub fn new() -> ClearDepthStencilValueBuilder<'a> {
ClearDepthStencilValueBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn depth(mut self, depth: f32) -> Self {
self.0.depth = depth;
self
}
#[allow(unused_mut)]
#[inline]
pub fn stencil(mut self, stencil: u32) -> Self {
self.0.stencil = stencil;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ClearDepthStencilValue {
self.0
}
}
impl<'a> std::fmt::Debug for ClearDepthStencilValueBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ClearDepthStencilValueBuilder<'a> {
type Target = ClearDepthStencilValue;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ClearDepthStencilValueBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearAttachment.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ClearAttachment {
pub aspect_mask: crate::vk1_0::ImageAspectFlags,
pub color_attachment: u32,
pub clear_value: crate::vk1_0::ClearValue,
}
impl ClearAttachment {
#[inline]
pub fn builder<'a>(self) -> ClearAttachmentBuilder<'a> {
ClearAttachmentBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ClearAttachment {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ClearAttachment")
.field("aspect_mask", &self.aspect_mask)
.field("color_attachment", &self.color_attachment)
.field("clear_value", &self.clear_value)
.finish()
}
}
impl Default for ClearAttachment {
fn default() -> ClearAttachment {
ClearAttachment {
aspect_mask: Default::default(),
color_attachment: Default::default(),
clear_value: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearAttachment.html) · Builder of [`ClearAttachment`](struct.ClearAttachment.html)"]
#[repr(transparent)]
pub struct ClearAttachmentBuilder<'a>(ClearAttachment, std::marker::PhantomData<&'a ()>);
impl<'a> ClearAttachmentBuilder<'a> {
#[inline]
pub fn new() -> ClearAttachmentBuilder<'a> {
ClearAttachmentBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn aspect_mask(mut self, aspect_mask: crate::vk1_0::ImageAspectFlags) -> Self {
self.0.aspect_mask = aspect_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn color_attachment(mut self, color_attachment: u32) -> Self {
self.0.color_attachment = color_attachment;
self
}
#[allow(unused_mut)]
#[inline]
pub fn clear_value(mut self, clear_value: crate::vk1_0::ClearValue) -> Self {
self.0.clear_value = clear_value;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ClearAttachment {
self.0
}
}
impl<'a> std::fmt::Debug for ClearAttachmentBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ClearAttachmentBuilder<'a> {
type Target = ClearAttachment;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ClearAttachmentBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearValue.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub union ClearValue {
pub color: crate::vk1_0::ClearColorValue,
pub depth_stencil: crate::vk1_0::ClearDepthStencilValue,
}
impl std::fmt::Debug for ClearValue {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ClearValue").finish()
}
}
impl Default for ClearValue {
fn default() -> ClearValue {
unsafe { std::mem::zeroed() }
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearRect.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ClearRect {
pub rect: crate::vk1_0::Rect2D,
pub base_array_layer: u32,
pub layer_count: u32,
}
impl ClearRect {
#[inline]
pub fn builder<'a>(self) -> ClearRectBuilder<'a> {
ClearRectBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ClearRect {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ClearRect")
.field("rect", &self.rect)
.field("base_array_layer", &self.base_array_layer)
.field("layer_count", &self.layer_count)
.finish()
}
}
impl Default for ClearRect {
fn default() -> ClearRect {
ClearRect {
rect: Default::default(),
base_array_layer: Default::default(),
layer_count: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkClearRect.html) · Builder of [`ClearRect`](struct.ClearRect.html)"]
#[repr(transparent)]
pub struct ClearRectBuilder<'a>(ClearRect, std::marker::PhantomData<&'a ()>);
impl<'a> ClearRectBuilder<'a> {
#[inline]
pub fn new() -> ClearRectBuilder<'a> {
ClearRectBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn rect(mut self, rect: crate::vk1_0::Rect2D) -> Self {
self.0.rect = rect;
self
}
#[allow(unused_mut)]
#[inline]
pub fn base_array_layer(mut self, base_array_layer: u32) -> Self {
self.0.base_array_layer = base_array_layer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn layer_count(mut self, layer_count: u32) -> Self {
self.0.layer_count = layer_count;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ClearRect {
self.0
}
}
impl<'a> std::fmt::Debug for ClearRectBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ClearRectBuilder<'a> {
type Target = ClearRect;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ClearRectBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageResolve.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageResolve {
pub src_subresource: crate::vk1_0::ImageSubresourceLayers,
pub src_offset: crate::vk1_0::Offset3D,
pub dst_subresource: crate::vk1_0::ImageSubresourceLayers,
pub dst_offset: crate::vk1_0::Offset3D,
pub extent: crate::vk1_0::Extent3D,
}
impl ImageResolve {
#[inline]
pub fn builder<'a>(self) -> ImageResolveBuilder<'a> {
ImageResolveBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageResolve {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageResolve")
.field("src_subresource", &self.src_subresource)
.field("src_offset", &self.src_offset)
.field("dst_subresource", &self.dst_subresource)
.field("dst_offset", &self.dst_offset)
.field("extent", &self.extent)
.finish()
}
}
impl Default for ImageResolve {
fn default() -> ImageResolve {
ImageResolve {
src_subresource: Default::default(),
src_offset: Default::default(),
dst_subresource: Default::default(),
dst_offset: Default::default(),
extent: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageResolve.html) · Builder of [`ImageResolve`](struct.ImageResolve.html)"]
#[repr(transparent)]
pub struct ImageResolveBuilder<'a>(ImageResolve, std::marker::PhantomData<&'a ()>);
impl<'a> ImageResolveBuilder<'a> {
#[inline]
pub fn new() -> ImageResolveBuilder<'a> {
ImageResolveBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_subresource(
mut self,
src_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.src_subresource = src_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_offset(mut self, src_offset: crate::vk1_0::Offset3D) -> Self {
self.0.src_offset = src_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_subresource(
mut self,
dst_subresource: crate::vk1_0::ImageSubresourceLayers,
) -> Self {
self.0.dst_subresource = dst_subresource;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_offset(mut self, dst_offset: crate::vk1_0::Offset3D) -> Self {
self.0.dst_offset = dst_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn extent(mut self, extent: crate::vk1_0::Extent3D) -> Self {
self.0.extent = extent;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageResolve {
self.0
}
}
impl<'a> std::fmt::Debug for ImageResolveBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageResolveBuilder<'a> {
type Target = ImageResolve;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageResolveBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryBarrier.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct MemoryBarrier {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub src_access_mask: crate::vk1_0::AccessFlags,
pub dst_access_mask: crate::vk1_0::AccessFlags,
}
impl MemoryBarrier {
#[inline]
pub fn builder<'a>(self) -> MemoryBarrierBuilder<'a> {
MemoryBarrierBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for MemoryBarrier {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("MemoryBarrier")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("src_access_mask", &self.src_access_mask)
.field("dst_access_mask", &self.dst_access_mask)
.finish()
}
}
impl Default for MemoryBarrier {
fn default() -> MemoryBarrier {
MemoryBarrier {
s_type: crate::vk1_0::StructureType::MEMORY_BARRIER,
p_next: std::ptr::null(),
src_access_mask: Default::default(),
dst_access_mask: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkMemoryBarrier.html) · Builder of [`MemoryBarrier`](struct.MemoryBarrier.html)"]
#[repr(transparent)]
pub struct MemoryBarrierBuilder<'a>(MemoryBarrier, std::marker::PhantomData<&'a ()>);
impl<'a> MemoryBarrierBuilder<'a> {
#[inline]
pub fn new() -> MemoryBarrierBuilder<'a> {
MemoryBarrierBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_access_mask(mut self, src_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.src_access_mask = src_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_access_mask(mut self, dst_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.dst_access_mask = dst_access_mask;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> MemoryBarrier {
self.0
}
}
impl<'a> std::fmt::Debug for MemoryBarrierBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for MemoryBarrierBuilder<'a> {
type Target = MemoryBarrier;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for MemoryBarrierBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryBarrier.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BufferMemoryBarrier {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub src_access_mask: crate::vk1_0::AccessFlags,
pub dst_access_mask: crate::vk1_0::AccessFlags,
pub src_queue_family_index: u32,
pub dst_queue_family_index: u32,
pub buffer: crate::vk1_0::Buffer,
pub offset: crate::vk1_0::DeviceSize,
pub size: crate::vk1_0::DeviceSize,
}
impl BufferMemoryBarrier {
#[inline]
pub fn builder<'a>(self) -> BufferMemoryBarrierBuilder<'a> {
BufferMemoryBarrierBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BufferMemoryBarrier {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BufferMemoryBarrier")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("src_access_mask", &self.src_access_mask)
.field("dst_access_mask", &self.dst_access_mask)
.field("src_queue_family_index", &self.src_queue_family_index)
.field("dst_queue_family_index", &self.dst_queue_family_index)
.field("buffer", &self.buffer)
.field("offset", &self.offset)
.field("size", &self.size)
.finish()
}
}
impl Default for BufferMemoryBarrier {
fn default() -> BufferMemoryBarrier {
BufferMemoryBarrier {
s_type: crate::vk1_0::StructureType::BUFFER_MEMORY_BARRIER,
p_next: std::ptr::null(),
src_access_mask: Default::default(),
dst_access_mask: Default::default(),
src_queue_family_index: Default::default(),
dst_queue_family_index: Default::default(),
buffer: Default::default(),
offset: Default::default(),
size: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBufferMemoryBarrier.html) · Builder of [`BufferMemoryBarrier`](struct.BufferMemoryBarrier.html)"]
#[repr(transparent)]
pub struct BufferMemoryBarrierBuilder<'a>(BufferMemoryBarrier, std::marker::PhantomData<&'a ()>);
impl<'a> BufferMemoryBarrierBuilder<'a> {
#[inline]
pub fn new() -> BufferMemoryBarrierBuilder<'a> {
BufferMemoryBarrierBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_access_mask(mut self, src_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.src_access_mask = src_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_access_mask(mut self, dst_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.dst_access_mask = dst_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
self.0.src_queue_family_index = src_queue_family_index;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
self.0.dst_queue_family_index = dst_queue_family_index;
self
}
#[allow(unused_mut)]
#[inline]
pub fn buffer(mut self, buffer: crate::vk1_0::Buffer) -> Self {
self.0.buffer = buffer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn offset(mut self, offset: crate::vk1_0::DeviceSize) -> Self {
self.0.offset = offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn size(mut self, size: crate::vk1_0::DeviceSize) -> Self {
self.0.size = size;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BufferMemoryBarrier {
self.0
}
}
impl<'a> std::fmt::Debug for BufferMemoryBarrierBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BufferMemoryBarrierBuilder<'a> {
type Target = BufferMemoryBarrier;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BufferMemoryBarrierBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryBarrier.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ImageMemoryBarrier {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub src_access_mask: crate::vk1_0::AccessFlags,
pub dst_access_mask: crate::vk1_0::AccessFlags,
pub old_layout: crate::vk1_0::ImageLayout,
pub new_layout: crate::vk1_0::ImageLayout,
pub src_queue_family_index: u32,
pub dst_queue_family_index: u32,
pub image: crate::vk1_0::Image,
pub subresource_range: crate::vk1_0::ImageSubresourceRange,
}
impl ImageMemoryBarrier {
#[inline]
pub fn builder<'a>(self) -> ImageMemoryBarrierBuilder<'a> {
ImageMemoryBarrierBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for ImageMemoryBarrier {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("ImageMemoryBarrier")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("src_access_mask", &self.src_access_mask)
.field("dst_access_mask", &self.dst_access_mask)
.field("old_layout", &self.old_layout)
.field("new_layout", &self.new_layout)
.field("src_queue_family_index", &self.src_queue_family_index)
.field("dst_queue_family_index", &self.dst_queue_family_index)
.field("image", &self.image)
.field("subresource_range", &self.subresource_range)
.finish()
}
}
impl Default for ImageMemoryBarrier {
fn default() -> ImageMemoryBarrier {
ImageMemoryBarrier {
s_type: crate::vk1_0::StructureType::IMAGE_MEMORY_BARRIER,
p_next: std::ptr::null(),
src_access_mask: Default::default(),
dst_access_mask: Default::default(),
old_layout: Default::default(),
new_layout: Default::default(),
src_queue_family_index: Default::default(),
dst_queue_family_index: Default::default(),
image: Default::default(),
subresource_range: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkImageMemoryBarrier.html) · Builder of [`ImageMemoryBarrier`](struct.ImageMemoryBarrier.html)"]
#[repr(transparent)]
pub struct ImageMemoryBarrierBuilder<'a>(ImageMemoryBarrier, std::marker::PhantomData<&'a ()>);
impl<'a> ImageMemoryBarrierBuilder<'a> {
#[inline]
pub fn new() -> ImageMemoryBarrierBuilder<'a> {
ImageMemoryBarrierBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn src_access_mask(mut self, src_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.src_access_mask = src_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_access_mask(mut self, dst_access_mask: crate::vk1_0::AccessFlags) -> Self {
self.0.dst_access_mask = dst_access_mask;
self
}
#[allow(unused_mut)]
#[inline]
pub fn old_layout(mut self, old_layout: crate::vk1_0::ImageLayout) -> Self {
self.0.old_layout = old_layout;
self
}
#[allow(unused_mut)]
#[inline]
pub fn new_layout(mut self, new_layout: crate::vk1_0::ImageLayout) -> Self {
self.0.new_layout = new_layout;
self
}
#[allow(unused_mut)]
#[inline]
pub fn src_queue_family_index(mut self, src_queue_family_index: u32) -> Self {
self.0.src_queue_family_index = src_queue_family_index;
self
}
#[allow(unused_mut)]
#[inline]
pub fn dst_queue_family_index(mut self, dst_queue_family_index: u32) -> Self {
self.0.dst_queue_family_index = dst_queue_family_index;
self
}
#[allow(unused_mut)]
#[inline]
pub fn image(mut self, image: crate::vk1_0::Image) -> Self {
self.0.image = image;
self
}
#[allow(unused_mut)]
#[inline]
pub fn subresource_range(
mut self,
subresource_range: crate::vk1_0::ImageSubresourceRange,
) -> Self {
self.0.subresource_range = subresource_range;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> ImageMemoryBarrier {
self.0
}
}
impl<'a> std::fmt::Debug for ImageMemoryBarrierBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for ImageMemoryBarrierBuilder<'a> {
type Target = ImageMemoryBarrier;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ImageMemoryBarrierBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassBeginInfo.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct RenderPassBeginInfo {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub render_pass: crate::vk1_0::RenderPass,
pub framebuffer: crate::vk1_0::Framebuffer,
pub render_area: crate::vk1_0::Rect2D,
pub clear_value_count: u32,
pub p_clear_values: *const crate::vk1_0::ClearValue,
}
impl RenderPassBeginInfo {
#[inline]
pub fn builder<'a>(self) -> RenderPassBeginInfoBuilder<'a> {
RenderPassBeginInfoBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for RenderPassBeginInfo {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("RenderPassBeginInfo")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("render_pass", &self.render_pass)
.field("framebuffer", &self.framebuffer)
.field("render_area", &self.render_area)
.field("clear_value_count", &self.clear_value_count)
.field("p_clear_values", &self.p_clear_values)
.finish()
}
}
impl Default for RenderPassBeginInfo {
fn default() -> RenderPassBeginInfo {
RenderPassBeginInfo {
s_type: crate::vk1_0::StructureType::RENDER_PASS_BEGIN_INFO,
p_next: std::ptr::null(),
render_pass: Default::default(),
framebuffer: Default::default(),
render_area: Default::default(),
clear_value_count: Default::default(),
p_clear_values: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkRenderPassBeginInfo.html) · Builder of [`RenderPassBeginInfo`](struct.RenderPassBeginInfo.html)"]
#[repr(transparent)]
pub struct RenderPassBeginInfoBuilder<'a>(RenderPassBeginInfo, std::marker::PhantomData<&'a ()>);
impl<'a> RenderPassBeginInfoBuilder<'a> {
#[inline]
pub fn new() -> RenderPassBeginInfoBuilder<'a> {
RenderPassBeginInfoBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn render_pass(mut self, render_pass: crate::vk1_0::RenderPass) -> Self {
self.0.render_pass = render_pass;
self
}
#[allow(unused_mut)]
#[inline]
pub fn framebuffer(mut self, framebuffer: crate::vk1_0::Framebuffer) -> Self {
self.0.framebuffer = framebuffer;
self
}
#[allow(unused_mut)]
#[inline]
pub fn render_area(mut self, render_area: crate::vk1_0::Rect2D) -> Self {
self.0.render_area = render_area;
self
}
#[allow(unused_mut)]
#[inline]
pub fn clear_values(mut self, clear_values: &'a [crate::vk1_0::ClearValue]) -> Self {
self.0.clear_value_count = clear_values.len() as _;
self.0.p_clear_values = clear_values.as_ptr() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> RenderPassBeginInfo {
self.0
}
}
impl<'a> std::fmt::Debug for RenderPassBeginInfoBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for RenderPassBeginInfoBuilder<'a> {
type Target = RenderPassBeginInfo;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for RenderPassBeginInfoBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkSubpassContents.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct SubpassContents(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl SubpassContents {
pub const INLINE: Self = Self(0);
pub const SECONDARY_COMMAND_BUFFERS: Self = Self(1);
}
impl std::fmt::Debug for SubpassContents {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::INLINE => "INLINE",
&Self::SECONDARY_COMMAND_BUFFERS => "SECONDARY_COMMAND_BUFFERS",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineCacheHeaderVersion.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct PipelineCacheHeaderVersion(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl PipelineCacheHeaderVersion {
pub const ONE: Self = Self(1);
}
impl std::fmt::Debug for PipelineCacheHeaderVersion {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::ONE => "ONE",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDispatchIndirectCommand.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DispatchIndirectCommand {
pub x: u32,
pub y: u32,
pub z: u32,
}
impl DispatchIndirectCommand {
#[inline]
pub fn builder<'a>(self) -> DispatchIndirectCommandBuilder<'a> {
DispatchIndirectCommandBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DispatchIndirectCommand {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DispatchIndirectCommand")
.field("x", &self.x)
.field("y", &self.y)
.field("z", &self.z)
.finish()
}
}
impl Default for DispatchIndirectCommand {
fn default() -> DispatchIndirectCommand {
DispatchIndirectCommand {
x: Default::default(),
y: Default::default(),
z: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDispatchIndirectCommand.html) · Builder of [`DispatchIndirectCommand`](struct.DispatchIndirectCommand.html)"]
#[repr(transparent)]
pub struct DispatchIndirectCommandBuilder<'a>(
DispatchIndirectCommand,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DispatchIndirectCommandBuilder<'a> {
#[inline]
pub fn new() -> DispatchIndirectCommandBuilder<'a> {
DispatchIndirectCommandBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn x(mut self, x: u32) -> Self {
self.0.x = x;
self
}
#[allow(unused_mut)]
#[inline]
pub fn y(mut self, y: u32) -> Self {
self.0.y = y;
self
}
#[allow(unused_mut)]
#[inline]
pub fn z(mut self, z: u32) -> Self {
self.0.z = z;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DispatchIndirectCommand {
self.0
}
}
impl<'a> std::fmt::Debug for DispatchIndirectCommandBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DispatchIndirectCommandBuilder<'a> {
type Target = DispatchIndirectCommand;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DispatchIndirectCommandBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndexedIndirectCommand.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DrawIndexedIndirectCommand {
pub index_count: u32,
pub instance_count: u32,
pub first_index: u32,
pub vertex_offset: i32,
pub first_instance: u32,
}
impl DrawIndexedIndirectCommand {
#[inline]
pub fn builder<'a>(self) -> DrawIndexedIndirectCommandBuilder<'a> {
DrawIndexedIndirectCommandBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DrawIndexedIndirectCommand {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DrawIndexedIndirectCommand")
.field("index_count", &self.index_count)
.field("instance_count", &self.instance_count)
.field("first_index", &self.first_index)
.field("vertex_offset", &self.vertex_offset)
.field("first_instance", &self.first_instance)
.finish()
}
}
impl Default for DrawIndexedIndirectCommand {
fn default() -> DrawIndexedIndirectCommand {
DrawIndexedIndirectCommand {
index_count: Default::default(),
instance_count: Default::default(),
first_index: Default::default(),
vertex_offset: Default::default(),
first_instance: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndexedIndirectCommand.html) · Builder of [`DrawIndexedIndirectCommand`](struct.DrawIndexedIndirectCommand.html)"]
#[repr(transparent)]
pub struct DrawIndexedIndirectCommandBuilder<'a>(
DrawIndexedIndirectCommand,
std::marker::PhantomData<&'a ()>,
);
impl<'a> DrawIndexedIndirectCommandBuilder<'a> {
#[inline]
pub fn new() -> DrawIndexedIndirectCommandBuilder<'a> {
DrawIndexedIndirectCommandBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn index_count(mut self, index_count: u32) -> Self {
self.0.index_count = index_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn instance_count(mut self, instance_count: u32) -> Self {
self.0.instance_count = instance_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn first_index(mut self, first_index: u32) -> Self {
self.0.first_index = first_index;
self
}
#[allow(unused_mut)]
#[inline]
pub fn vertex_offset(mut self, vertex_offset: i32) -> Self {
self.0.vertex_offset = vertex_offset;
self
}
#[allow(unused_mut)]
#[inline]
pub fn first_instance(mut self, first_instance: u32) -> Self {
self.0.first_instance = first_instance;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DrawIndexedIndirectCommand {
self.0
}
}
impl<'a> std::fmt::Debug for DrawIndexedIndirectCommandBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DrawIndexedIndirectCommandBuilder<'a> {
type Target = DrawIndexedIndirectCommand;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DrawIndexedIndirectCommandBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndirectCommand.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct DrawIndirectCommand {
pub vertex_count: u32,
pub instance_count: u32,
pub first_vertex: u32,
pub first_instance: u32,
}
impl DrawIndirectCommand {
#[inline]
pub fn builder<'a>(self) -> DrawIndirectCommandBuilder<'a> {
DrawIndirectCommandBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for DrawIndirectCommand {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("DrawIndirectCommand")
.field("vertex_count", &self.vertex_count)
.field("instance_count", &self.instance_count)
.field("first_vertex", &self.first_vertex)
.field("first_instance", &self.first_instance)
.finish()
}
}
impl Default for DrawIndirectCommand {
fn default() -> DrawIndirectCommand {
DrawIndirectCommand {
vertex_count: Default::default(),
instance_count: Default::default(),
first_vertex: Default::default(),
first_instance: Default::default(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkDrawIndirectCommand.html) · Builder of [`DrawIndirectCommand`](struct.DrawIndirectCommand.html)"]
#[repr(transparent)]
pub struct DrawIndirectCommandBuilder<'a>(DrawIndirectCommand, std::marker::PhantomData<&'a ()>);
impl<'a> DrawIndirectCommandBuilder<'a> {
#[inline]
pub fn new() -> DrawIndirectCommandBuilder<'a> {
DrawIndirectCommandBuilder(Default::default(), std::marker::PhantomData)
}
#[allow(unused_mut)]
#[inline]
pub fn vertex_count(mut self, vertex_count: u32) -> Self {
self.0.vertex_count = vertex_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn instance_count(mut self, instance_count: u32) -> Self {
self.0.instance_count = instance_count;
self
}
#[allow(unused_mut)]
#[inline]
pub fn first_vertex(mut self, first_vertex: u32) -> Self {
self.0.first_vertex = first_vertex;
self
}
#[allow(unused_mut)]
#[inline]
pub fn first_instance(mut self, first_instance: u32) -> Self {
self.0.first_instance = first_instance;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> DrawIndirectCommand {
self.0
}
}
impl<'a> std::fmt::Debug for DrawIndirectCommandBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for DrawIndirectCommandBuilder<'a> {
type Target = DrawIndirectCommand;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for DrawIndirectCommandBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkObjectType.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct ObjectType(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl ObjectType {
pub const UNKNOWN: Self = Self(0);
pub const INSTANCE: Self = Self(1);
pub const PHYSICAL_DEVICE: Self = Self(2);
pub const DEVICE: Self = Self(3);
pub const QUEUE: Self = Self(4);
pub const SEMAPHORE: Self = Self(5);
pub const COMMAND_BUFFER: Self = Self(6);
pub const FENCE: Self = Self(7);
pub const DEVICE_MEMORY: Self = Self(8);
pub const BUFFER: Self = Self(9);
pub const IMAGE: Self = Self(10);
pub const EVENT: Self = Self(11);
pub const QUERY_POOL: Self = Self(12);
pub const BUFFER_VIEW: Self = Self(13);
pub const IMAGE_VIEW: Self = Self(14);
pub const SHADER_MODULE: Self = Self(15);
pub const PIPELINE_CACHE: Self = Self(16);
pub const PIPELINE_LAYOUT: Self = Self(17);
pub const RENDER_PASS: Self = Self(18);
pub const PIPELINE: Self = Self(19);
pub const DESCRIPTOR_SET_LAYOUT: Self = Self(20);
pub const SAMPLER: Self = Self(21);
pub const DESCRIPTOR_POOL: Self = Self(22);
pub const DESCRIPTOR_SET: Self = Self(23);
pub const FRAMEBUFFER: Self = Self(24);
pub const COMMAND_POOL: Self = Self(25);
}
#[doc = "[Part of `vk1_1`](../vk1_1/index.html)"]
impl ObjectType {
pub const SAMPLER_YCBCR_CONVERSION: Self = Self(1000156000);
pub const DESCRIPTOR_UPDATE_TEMPLATE: Self = Self(1000085000);
}
#[doc = "[Part of `extensions::ext_debug_report`](../extensions/ext_debug_report/index.html)"]
impl ObjectType {
pub const DEBUG_REPORT_CALLBACK_EXT: Self = Self(1000011000);
}
#[doc = "[Part of `extensions::ext_debug_utils`](../extensions/ext_debug_utils/index.html)"]
impl ObjectType {
pub const DEBUG_UTILS_MESSENGER_EXT: Self = Self(1000128000);
}
#[doc = "[Part of `extensions::ext_private_data`](../extensions/ext_private_data/index.html)"]
impl ObjectType {
pub const PRIVATE_DATA_SLOT_EXT: Self = Self(1000295000);
}
#[doc = "[Part of `extensions::ext_validation_cache`](../extensions/ext_validation_cache/index.html)"]
impl ObjectType {
pub const VALIDATION_CACHE_EXT: Self = Self(1000160000);
}
#[doc = "[Part of `extensions::intel_performance_query`](../extensions/intel_performance_query/index.html)"]
impl ObjectType {
pub const PERFORMANCE_CONFIGURATION_INTEL: Self = Self(1000210000);
}
#[doc = "[Part of `extensions::khr_deferred_host_operations`](../extensions/khr_deferred_host_operations/index.html)"]
impl ObjectType {
pub const DEFERRED_OPERATION_KHR: Self = Self(1000268000);
}
#[doc = "[Part of `extensions::khr_descriptor_update_template`](../extensions/khr_descriptor_update_template/index.html)"]
impl ObjectType {
pub const DESCRIPTOR_UPDATE_TEMPLATE_KHR: Self = Self::DESCRIPTOR_UPDATE_TEMPLATE;
}
#[doc = "[Part of `extensions::khr_display`](../extensions/khr_display/index.html)"]
impl ObjectType {
pub const DISPLAY_KHR: Self = Self(1000002000);
pub const DISPLAY_MODE_KHR: Self = Self(1000002001);
}
#[doc = "[Part of `extensions::khr_ray_tracing`](../extensions/khr_ray_tracing/index.html)"]
impl ObjectType {
pub const ACCELERATION_STRUCTURE_KHR: Self = Self(1000165000);
}
#[doc = "[Part of `extensions::khr_sampler_ycbcr_conversion`](../extensions/khr_sampler_ycbcr_conversion/index.html)"]
impl ObjectType {
pub const SAMPLER_YCBCR_CONVERSION_KHR: Self = Self::SAMPLER_YCBCR_CONVERSION;
}
#[doc = "[Part of `extensions::khr_surface`](../extensions/khr_surface/index.html)"]
impl ObjectType {
pub const SURFACE_KHR: Self = Self(1000000000);
}
#[doc = "[Part of `extensions::khr_swapchain`](../extensions/khr_swapchain/index.html)"]
impl ObjectType {
pub const SWAPCHAIN_KHR: Self = Self(1000001000);
}
#[doc = "[Part of `extensions::nv_device_generated_commands`](../extensions/nv_device_generated_commands/index.html)"]
impl ObjectType {
pub const INDIRECT_COMMANDS_LAYOUT_NV: Self = Self(1000277000);
}
#[doc = "[Part of `extensions::nv_ray_tracing`](../extensions/nv_ray_tracing/index.html)"]
impl ObjectType {
pub const ACCELERATION_STRUCTURE_NV: Self = Self::ACCELERATION_STRUCTURE_KHR;
}
impl std::fmt::Debug for ObjectType {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::UNKNOWN => "UNKNOWN",
&Self::INSTANCE => "INSTANCE",
&Self::PHYSICAL_DEVICE => "PHYSICAL_DEVICE",
&Self::DEVICE => "DEVICE",
&Self::QUEUE => "QUEUE",
&Self::SEMAPHORE => "SEMAPHORE",
&Self::COMMAND_BUFFER => "COMMAND_BUFFER",
&Self::FENCE => "FENCE",
&Self::DEVICE_MEMORY => "DEVICE_MEMORY",
&Self::BUFFER => "BUFFER",
&Self::IMAGE => "IMAGE",
&Self::EVENT => "EVENT",
&Self::QUERY_POOL => "QUERY_POOL",
&Self::BUFFER_VIEW => "BUFFER_VIEW",
&Self::IMAGE_VIEW => "IMAGE_VIEW",
&Self::SHADER_MODULE => "SHADER_MODULE",
&Self::PIPELINE_CACHE => "PIPELINE_CACHE",
&Self::PIPELINE_LAYOUT => "PIPELINE_LAYOUT",
&Self::RENDER_PASS => "RENDER_PASS",
&Self::PIPELINE => "PIPELINE",
&Self::DESCRIPTOR_SET_LAYOUT => "DESCRIPTOR_SET_LAYOUT",
&Self::SAMPLER => "SAMPLER",
&Self::DESCRIPTOR_POOL => "DESCRIPTOR_POOL",
&Self::DESCRIPTOR_SET => "DESCRIPTOR_SET",
&Self::FRAMEBUFFER => "FRAMEBUFFER",
&Self::COMMAND_POOL => "COMMAND_POOL",
&Self::SAMPLER_YCBCR_CONVERSION => "SAMPLER_YCBCR_CONVERSION",
&Self::DESCRIPTOR_UPDATE_TEMPLATE => "DESCRIPTOR_UPDATE_TEMPLATE",
&Self::DEBUG_REPORT_CALLBACK_EXT => "DEBUG_REPORT_CALLBACK_EXT",
&Self::DEBUG_UTILS_MESSENGER_EXT => "DEBUG_UTILS_MESSENGER_EXT",
&Self::PRIVATE_DATA_SLOT_EXT => "PRIVATE_DATA_SLOT_EXT",
&Self::VALIDATION_CACHE_EXT => "VALIDATION_CACHE_EXT",
&Self::PERFORMANCE_CONFIGURATION_INTEL => "PERFORMANCE_CONFIGURATION_INTEL",
&Self::DEFERRED_OPERATION_KHR => "DEFERRED_OPERATION_KHR",
&Self::DISPLAY_KHR => "DISPLAY_KHR",
&Self::DISPLAY_MODE_KHR => "DISPLAY_MODE_KHR",
&Self::ACCELERATION_STRUCTURE_KHR => "ACCELERATION_STRUCTURE_KHR",
&Self::SURFACE_KHR => "SURFACE_KHR",
&Self::SWAPCHAIN_KHR => "SWAPCHAIN_KHR",
&Self::INDIRECT_COMMANDS_LAYOUT_NV => "INDIRECT_COMMANDS_LAYOUT_NV",
_ => "(unknown)",
})
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseOutStructure.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BaseOutStructure {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *mut crate::vk1_0::BaseOutStructure,
}
impl BaseOutStructure {
#[inline]
pub fn builder<'a>(self) -> BaseOutStructureBuilder<'a> {
BaseOutStructureBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BaseOutStructure {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BaseOutStructure")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.finish()
}
}
impl Default for BaseOutStructure {
fn default() -> BaseOutStructure {
BaseOutStructure {
s_type: Default::default(),
p_next: std::ptr::null_mut(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseOutStructure.html) · Builder of [`BaseOutStructure`](struct.BaseOutStructure.html)"]
#[repr(transparent)]
pub struct BaseOutStructureBuilder<'a>(BaseOutStructure, std::marker::PhantomData<&'a ()>);
impl<'a> BaseOutStructureBuilder<'a> {
#[inline]
pub fn new() -> BaseOutStructureBuilder<'a> {
BaseOutStructureBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BaseOutStructure {
self.0
}
}
impl<'a> std::fmt::Debug for BaseOutStructureBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BaseOutStructureBuilder<'a> {
type Target = BaseOutStructure;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BaseOutStructureBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseInStructure.html) · Structure"]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct BaseInStructure {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const crate::vk1_0::BaseInStructure,
}
impl BaseInStructure {
#[inline]
pub fn builder<'a>(self) -> BaseInStructureBuilder<'a> {
BaseInStructureBuilder(self, std::marker::PhantomData)
}
}
impl std::fmt::Debug for BaseInStructure {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.debug_struct("BaseInStructure")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.finish()
}
}
impl Default for BaseInStructure {
fn default() -> BaseInStructure {
BaseInStructure {
s_type: Default::default(),
p_next: std::ptr::null(),
}
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkBaseInStructure.html) · Builder of [`BaseInStructure`](struct.BaseInStructure.html)"]
#[repr(transparent)]
pub struct BaseInStructureBuilder<'a>(BaseInStructure, std::marker::PhantomData<&'a ()>);
impl<'a> BaseInStructureBuilder<'a> {
#[inline]
pub fn new() -> BaseInStructureBuilder<'a> {
BaseInStructureBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub unsafe fn discard(self) -> BaseInStructure {
self.0
}
}
impl<'a> std::fmt::Debug for BaseInStructureBuilder<'a> {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, fmt)
}
}
impl<'a> std::ops::Deref for BaseInStructureBuilder<'a> {
type Target = BaseInStructure;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for BaseInStructureBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkVendorId.html) · Enum"]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default)]
#[repr(transparent)]
pub struct VendorId(pub i32);
#[doc = "[Part of `vk1_0`](../vk1_0/index.html)"]
impl VendorId {
pub const VIV: Self = Self(0x10001);
pub const VSI: Self = Self(0x10002);
pub const KAZAN: Self = Self(0x10003);
pub const CODEPLAY: Self = Self(0x10004);
}
impl std::fmt::Debug for VendorId {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
fmt.write_str(match self {
&Self::VIV => "VIV",
&Self::VSI => "VSI",
&Self::KAZAN => "KAZAN",
&Self::CODEPLAY => "CODEPLAY",
_ => "(unknown)",
})
}
}