core1_0

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2022 License: MIT Imports: 11 Imported by: 57

Documentation

Index

Constants

View Source
const (
	// BufferCreateSparseBinding specifies that the buffer will be backed using sparse memory
	// binding.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html
	BufferCreateSparseBinding BufferCreateFlags = C.VK_BUFFER_CREATE_SPARSE_BINDING_BIT
	// BufferCreateSparseResidency  specifies that the buffer can be partially backed using
	// sparse memory binding. Buffers created with this flag must also be created with the
	// BufferCreateSparseBinding flag.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html
	BufferCreateSparseResidency BufferCreateFlags = C.VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
	// BufferCreateSparseAliased specifies that the buffer will be backed using sparse memory
	// binding with memory ranges that might also simultaneously be backing another buffer
	// (or another portion of the same buffer). Buffers created with this flag must also be
	// created with the BufferCreateSparseBinding flag.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html
	BufferCreateSparseAliased BufferCreateFlags = C.VK_BUFFER_CREATE_SPARSE_ALIASED_BIT

	// BufferUsageTransferSrc specifies that the buffer can be used as the source of a transfer command
	// (see the definition of PipelineStageTransfer).
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageTransferSrc BufferUsageFlags = C.VK_BUFFER_USAGE_TRANSFER_SRC_BIT
	// BufferUsageTransferDst specifies that the buffer can be used as the destination of a transfer
	// command.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageTransferDst BufferUsageFlags = C.VK_BUFFER_USAGE_TRANSFER_DST_BIT
	// BufferUsageUniformTexelBuffer  specifies that the buffer can be used to create a BufferView
	// suitable for occupying a DescriptorSet slot of type DescriptorTypeUniformTexelBuffer.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageUniformTexelBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
	// BufferUsageStorageTexelBuffer specifies that the buffer can be used to create a BufferView
	// suitable for occupying a DescriptorSet slot of type DescriptorTypeStorageTexelBuffer.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageStorageTexelBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
	// BufferUsageUniformBuffer specifies that the buffer can be used in a DescriptorBufferInfo
	// suitable for occupying a DescriptorSet slot either of type DescriptorTypeUniformBuffer
	// or DescriptorTypeUniformBufferDynamic
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageUniformBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
	// BufferUsageStorageBuffer specifies that the buffer can be used in a DescriptorBufferInfo
	// suitable for occupying a DescriptorSet slot either of type DescriptorTypeStorageBuffer or
	// DescriptorTypeStorageBufferDynamic.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageStorageBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
	// BufferUsageIndexBuffer specifies that the buffer is suitable for passing as the buffer parameter
	// to CommandBuffer.CmdBindIndexBuffer.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageIndexBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_INDEX_BUFFER_BIT
	// BufferUsageVertexBuffer specifies that the buffer is suitable for passing as an element of the
	// buffers slice to CommandBuffer.CmdBindVertexBuffers.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageVertexBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
	// BufferUsageIndirectBuffer specifies that the buffer is suitable for passing as the buffer parameter
	// to CommandBuffer.CmdDrawIndirect, CommandBuffer.CmdDrawIndexedIndirect,
	// or CommandBuffer.CmdDispatchIndirect.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html
	BufferUsageIndirectBuffer BufferUsageFlags = C.VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT

	// SharingModeExclusive specifies that access to any range or image subresource of the object will be
	// exclusive to a single queue family at a time.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSharingMode.html
	SharingModeExclusive SharingMode = C.VK_SHARING_MODE_EXCLUSIVE
	// SharingModeConcurrent  specifies that concurrent access to any range or image subresource of the
	// object from multiple queue families is supported.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSharingMode.html
	SharingModeConcurrent SharingMode = C.VK_SHARING_MODE_CONCURRENT
)
View Source
const (
	// CommandBufferUsageOneTimeSubmit specifies that each recording of the CommandBuffer will only
	// be submitted once, and the CommandBuffer will be reset and recorded again between each submission
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html
	CommandBufferUsageOneTimeSubmit CommandBufferUsageFlags = C.VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
	// CommandBufferUsageRenderPassContinue specifies that a secondary CommandBuffer is considered to
	// be entirely inside a RenderPass.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html
	CommandBufferUsageRenderPassContinue CommandBufferUsageFlags = C.VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
	// CommandBufferUsageSimultaneousUse specifies that a CommandBuffer can be resubmitted to a Queue
	// while it is in the pending state, and recorded into multiple primary CommandBuffer objects
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html
	CommandBufferUsageSimultaneousUse CommandBufferUsageFlags = C.VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT

	// QueryControlPrecise specifies the precision of occlusion queries
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlagBits.html
	QueryControlPrecise QueryControlFlags = C.VK_QUERY_CONTROL_PRECISE_BIT

	// QueryPipelineStatisticInputAssemblyVertices specifies that queries managed by the pool
	// will count the number of vertices processed by the input assembly stage.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticInputAssemblyVertices QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT
	// QueryPipelineStatisticInputAssemblyPrimitives specifies that queries managed by the pool
	// will count the number of primitives processed by the input assembly stage.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticInputAssemblyPrimitives QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT
	// QueryPipelineStatisticVertexShaderInvocations specifies that queries managed by the pool
	// will count the number of vertex shader invocations.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticVertexShaderInvocations QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT
	// QueryPipelineStatisticGeometryShaderInvocations specifies that queries managed by the pool
	// will count the number of geometry shader invocations.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticGeometryShaderInvocations QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT
	// QueryPipelineStatisticGeometryShaderPrimitives specifies that queries managed by the pool will
	// count the number of primitives generated by geometry shader invocations.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticGeometryShaderPrimitives QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT
	// QueryPipelineStatisticClippingInvocations specifies that queries managed by the pool will
	// count the number of primitives processed by the primitive clipping stage of the pipeline.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticClippingInvocations QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT
	// QueryPipelineStatisticClippingPrimitives specifies that the queries managed by the pool
	// will count the number of primitives output by the primitive clipping stage of the pipeline.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticClippingPrimitives QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT
	// QueryPipelineStatisticFragmentShaderInvocations specifies that the queries managed by the
	// pool will count the number of fragment shader invocations.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticFragmentShaderInvocations QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT
	// QueryPipelineStatisticTessellationControlShaderPatches specifies that the queries managed by
	// the pool will count the number of patches processed by the tessellation control shader.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticTessellationControlShaderPatches QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT
	// QueryPipelineStatisticTessellationEvaluationShaderInvocations specifies that the queries managed
	// by the pool will count the number of invocations of the tessellation evaluation shader.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticTessellationEvaluationShaderInvocations QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
	// QueryPipelineStatisticComputeShaderInvocations specifies that queries managed by the pool will
	// count the number of compute shader invocations.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html
	QueryPipelineStatisticComputeShaderInvocations QueryPipelineStatisticFlags = C.VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
)
View Source
const (
	// CommandBufferResetReleaseResources specifies that most or all memory resources currently owned
	// by the CommandBuffer should be returned to the parent CommandPool
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlagBits.html
	CommandBufferResetReleaseResources CommandBufferResetFlags = C.VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT

	// CommandBufferLevelPrimary specifies a primary CommandBuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferLevel.html
	CommandBufferLevelPrimary CommandBufferLevel = C.VK_COMMAND_BUFFER_LEVEL_PRIMARY
	// CommandBufferLevelSecondary specifies a secondary CommandBuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferLevel.html
	CommandBufferLevelSecondary CommandBufferLevel = C.VK_COMMAND_BUFFER_LEVEL_SECONDARY

	// IndexTypeUInt16 specifies that indices are 16-bit unsigned integer values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndexType.html
	IndexTypeUInt16 IndexType = C.VK_INDEX_TYPE_UINT16
	// IndexTypeUInt32 specifies that indices are 32-bit unsigned integer values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndexType.html
	IndexTypeUInt32 IndexType = C.VK_INDEX_TYPE_UINT32

	// StencilFaceFront specifies that only the front set of stencil state is updated
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilFaceFlagBits.html
	StencilFaceFront StencilFaceFlags = C.VK_STENCIL_FACE_FRONT_BIT
	// StencilFaceBack specifies that only the back set of stencil state is updated
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilFaceFlagBits.html
	StencilFaceBack StencilFaceFlags = C.VK_STENCIL_FACE_BACK_BIT
)
View Source
const (
	// CommandPoolResetReleaseResources specifies that resetting a CommandPool recycles all of the
	// resources from the CommandPool back to the system
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlagBits.html
	CommandPoolResetReleaseResources CommandPoolResetFlags = C.VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT

	// CommandPoolCreateTransient specifies that CommandBuffer objects allocated from the pool
	// will be short-lived, meaning that they will be reset within a relatively short timeframe.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html
	CommandPoolCreateTransient CommandPoolCreateFlags = C.VK_COMMAND_POOL_CREATE_TRANSIENT_BIT
	// CommandPoolCreateResetBuffer allows any CommandBuffer allocated from a pool to be individually
	// reset to the initial state.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html
	CommandPoolCreateResetBuffer CommandPoolCreateFlags = C.VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
)
View Source
const (
	// SparseImageFormatSingleMipTail specifies that the Image uses a single mip tail region for all
	// array layers
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatFlagBits.html
	SparseImageFormatSingleMipTail SparseImageFormatFlags = C.VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT
	// SparseImageFormatAlignedMipSize specifies that the first mip level whose dimensions are not
	// integer multiples of the corresponding dimensions of the sparse Image block begins the
	// mip tail region
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatFlagBits.html
	SparseImageFormatAlignedMipSize SparseImageFormatFlags = C.VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT
	// SparseImageFormatNonstandardBlockSize specifies that the Image uses non-standard sparse Image
	// block dimensions
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatFlagBits.html
	SparseImageFormatNonstandardBlockSize SparseImageFormatFlags = C.VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT

	// ImageAspectColor specifies the color aspect
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html
	ImageAspectColor ImageAspectFlags = C.VK_IMAGE_ASPECT_COLOR_BIT
	// ImageAspectDepth speciifies the depth aspect
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html
	ImageAspectDepth ImageAspectFlags = C.VK_IMAGE_ASPECT_DEPTH_BIT
	// ImageAspectStencil specifies the stencil aspect
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html
	ImageAspectStencil ImageAspectFlags = C.VK_IMAGE_ASPECT_STENCIL_BIT
	// ImageAspectMetadata specifies the metadata aspect, used for sparse resource operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html
	ImageAspectMetadata ImageAspectFlags = C.VK_IMAGE_ASPECT_METADATA_BIT
)
View Source
const (
	// ImageCreateSparseBinding specifies that the Image will be backed using sparse memory
	// binding
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html
	ImageCreateSparseBinding ImageCreateFlags = C.VK_IMAGE_CREATE_SPARSE_BINDING_BIT
	// ImageCreateSparseResidency specifies that the Image can be partially backed using sparse
	// memory binding
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html
	ImageCreateSparseResidency ImageCreateFlags = C.VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
	// ImageCreateSparseAliased specifies that the Image will be backed using sparse memory binding
	// with memory ranges that might also simultaneously be backing another Image or another portion
	// of the same Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html
	ImageCreateSparseAliased ImageCreateFlags = C.VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
	// ImageCreateMutableFormat specifies that the Image can be used to create an ImageView with
	// a different format from the Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html
	ImageCreateMutableFormat ImageCreateFlags = C.VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
	// ImageCreateCubeCompatible specifies that the Image can be used to create an ImageView of
	// type ImageViewTypeCube or ImageViewTypeCubeArray
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html
	ImageCreateCubeCompatible ImageCreateFlags = C.VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT

	// ImageLayoutUndefined specifies that the layout is unknown
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutUndefined ImageLayout = C.VK_IMAGE_LAYOUT_UNDEFINED
	// ImageLayoutGeneral supports all types of Device access
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutGeneral ImageLayout = C.VK_IMAGE_LAYOUT_GENERAL
	// ImageLayoutColorAttachmentOptimal must only be used as a color or resolve attachment
	// in a Framebuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutColorAttachmentOptimal ImageLayout = C.VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
	// ImageLayoutDepthStencilAttachmentOptimal specifies a layout for both the depth and stencil
	// aspects of a depth/stencil format Image allowing read and write access as a depth/stencil
	// attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutDepthStencilAttachmentOptimal ImageLayout = C.VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
	// ImageLayoutDepthStencilReadOnlyOptimal specifies a layout for both the depth and stencil
	// aspects of a depth/stencil format Image allowing read only access as a depth/stencil attachment
	// or in shaders as a sampled Image, combined Image/Sampler, or input attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutDepthStencilReadOnlyOptimal ImageLayout = C.VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
	// ImageLayoutShaderReadOnlyOptimal specifies a layout allowing read-only access in a shader
	// as a sampled Image, combined Image/Sampler, or input attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutShaderReadOnlyOptimal ImageLayout = C.VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
	// ImageLayoutTransferSrcOptimal must only be used as a source Image of a transfer command
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutTransferSrcOptimal ImageLayout = C.VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
	// ImageLayoutTransferDstOptimal must only be used as a destination Image of a transfer
	// command
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutTransferDstOptimal ImageLayout = C.VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
	// ImageLayoutPreInitialized specifies that an Image object's memory is in a defined layout
	// and can be populated by data, but that it has not yet been initialized by the driver
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html
	ImageLayoutPreInitialized ImageLayout = C.VK_IMAGE_LAYOUT_PREINITIALIZED

	// ImageTilingOptimal specifies optimal tiling
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageTiling.html
	ImageTilingOptimal ImageTiling = C.VK_IMAGE_TILING_OPTIMAL
	// ImageTilingLinear specifies linear tiling
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageTiling.html
	ImageTilingLinear ImageTiling = C.VK_IMAGE_TILING_LINEAR

	// ImageType1D specifies a one-dimensional Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageType.html
	ImageType1D ImageType = C.VK_IMAGE_TYPE_1D
	// ImageType2D specifies a two-dimensional Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageType.html
	ImageType2D ImageType = C.VK_IMAGE_TYPE_2D
	// ImageType3D specifies a three-dimensional Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageType.html
	ImageType3D ImageType = C.VK_IMAGE_TYPE_3D

	// ImageUsageTransferSrc specifies that the Image can be used as the source of a transfer
	// command
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageTransferSrc ImageUsageFlags = C.VK_IMAGE_USAGE_TRANSFER_SRC_BIT
	// ImageUsageTransferDst specifies that the Image can be used as the destination of a
	// transfer command
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageTransferDst ImageUsageFlags = C.VK_IMAGE_USAGE_TRANSFER_DST_BIT
	// ImageUsageSampled specifies that the Image can be used to create an ImageView suitable
	// for occupying a DescriptorSet slot either of DescriptorTypeSampledImage or
	// DescriptorTypeCombinedImageSampler, and be sampled by a shader
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageSampled ImageUsageFlags = C.VK_IMAGE_USAGE_SAMPLED_BIT
	// ImageUsageStorage specifies that the Image can be used to create an ImageView suitable for
	// occupying a DescriptorSet slot of type DescriptorTypeStorageImage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageStorage ImageUsageFlags = C.VK_IMAGE_USAGE_STORAGE_BIT
	// ImageUsageColorAttachment specifies that the image can be used to create an ImageView
	// suitable for use as a color or resolve attachment in a Framebuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageColorAttachment ImageUsageFlags = C.VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
	// ImageUsageDepthStencilAttachment specifies that the Image can be used to create an ImageView
	// suitable for use as a depth/stencil or depth/stencil resolve attachment in a Framebuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageDepthStencilAttachment ImageUsageFlags = C.VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
	// ImageUsageTransientAttachment specifies that implementations may support using memory
	// allocations with MemoryPropertyLazilyAllocated to back an image with this usage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageTransientAttachment ImageUsageFlags = C.VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
	// ImageUsageInputAttachment specifies that the image can be used to create an ImageView
	// suitable for occupying a DescriptorSet slot of type DescriptorTypeInputAttachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html
	ImageUsageInputAttachment ImageUsageFlags = C.VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT

	// Samples1 specifies an Image with one sample per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples1 SampleCountFlags = C.VK_SAMPLE_COUNT_1_BIT
	// Samples2 specifies an Image with 2 samples per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples2 SampleCountFlags = C.VK_SAMPLE_COUNT_2_BIT
	// Samples4 specifies an Image with 4 samples per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples4 SampleCountFlags = C.VK_SAMPLE_COUNT_4_BIT
	// Samples8 specifies an Image with 8 samples per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples8 SampleCountFlags = C.VK_SAMPLE_COUNT_8_BIT
	// Samples16 specifies an Image with 16 samples per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples16 SampleCountFlags = C.VK_SAMPLE_COUNT_16_BIT
	// Samples32 specifies an Image with 32 samples per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples32 SampleCountFlags = C.VK_SAMPLE_COUNT_32_BIT
	// Samples64 specifies an Image with 64 samples per pixel
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html
	Samples64 SampleCountFlags = C.VK_SAMPLE_COUNT_64_BIT
)
View Source
const (
	// ComponentSwizzleIdentity specifies that the component is set to the identity swizzle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleIdentity ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_IDENTITY
	// ComponentSwizzleZero specifies that the component is set to zero
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleZero ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_ZERO
	// ComponentSwizzleOne specifies that hte component is set to either 1 or 1.0, depending
	// on the type of the ImageView format
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleOne ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_ONE
	// ComponentSwizzleRed specifies that the component is set to the value of the R component
	// of the Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleRed ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_R
	// ComponentSwizzleGreen specifies that the component is set to the value of the G component
	// of the Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleGreen ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_G
	// ComponentSwizzleBlue specifies that the component is set to the value of the B component
	// of the Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleBlue ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_B
	// ComponentSwizzleAlpha specifies that the component is set to the value of the A component
	// of the Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html
	ComponentSwizzleAlpha ComponentSwizzle = C.VK_COMPONENT_SWIZZLE_A

	// ImageViewType1D specifies a 1-dimensional ImageView
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewType1D ImageViewType = C.VK_IMAGE_VIEW_TYPE_1D
	// ImageViewType2D specifies a 2-dimensional ImageView
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewType2D ImageViewType = C.VK_IMAGE_VIEW_TYPE_2D
	// ImageViewType3D specifies a 3-dimensional ImageView
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewType3D ImageViewType = C.VK_IMAGE_VIEW_TYPE_3D
	// ImageViewTypeCube specifies a cube map
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewTypeCube ImageViewType = C.VK_IMAGE_VIEW_TYPE_CUBE
	// ImageViewType1DArray specifies an ImageView that is an array of 1-dimensional images
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewType1DArray ImageViewType = C.VK_IMAGE_VIEW_TYPE_1D_ARRAY
	// ImageViewType2DArray specifies an ImageView that is an array of 2-dimensional images
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewType2DArray ImageViewType = C.VK_IMAGE_VIEW_TYPE_2D_ARRAY
	// ImageViewTypeCubeArray specifies an ImageView that is an array of cube maps
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html
	ImageViewTypeCubeArray ImageViewType = C.VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
)
View Source
const (
	// QueueGraphics specifies that Queue objects in this Queue family support graphics operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html
	QueueGraphics QueueFlags = C.VK_QUEUE_GRAPHICS_BIT
	// QueueCompute specifies that Queue objects in this Queue family support compute operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html
	QueueCompute QueueFlags = C.VK_QUEUE_COMPUTE_BIT
	// QueueTransfer specifies that Queue objects in this Queue family support transfer operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html
	QueueTransfer QueueFlags = C.VK_QUEUE_TRANSFER_BIT
	// QueueSparseBinding specifies that Queue objects in this Queue family support sparse
	// memory management operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html
	QueueSparseBinding QueueFlags = C.VK_QUEUE_SPARSE_BINDING_BIT

	// MemoryPropertyDeviceLocal specifies that memory allocated with this type is the most efficient
	// for Device access
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html
	MemoryPropertyDeviceLocal MemoryPropertyFlags = C.VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
	// MemoryPropertyHostVisible specifies that memory allocated with this type can be mapped
	// for host access using DeviceMemory.Map
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html
	MemoryPropertyHostVisible MemoryPropertyFlags = C.VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
	// MemoryPropertyHostCoherent specifies that the host cache management commands
	// Device.FlushMappedMemoryRanges and Device.InvalidateMappedMemoryRanges are not needed
	// to flush host writes to the Device or make Device writes visible to the host, respectively
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html
	MemoryPropertyHostCoherent MemoryPropertyFlags = C.VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
	// MemoryPropertyLazilyAllocated specifies that the memory type only allows Device access to
	// the memory
	MemoryPropertyLazilyAllocated MemoryPropertyFlags = C.VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT

	// MemoryHeapDeviceLocal specifies that the heap corresponds to device-local memory
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryHeapFlagBits.html
	MemoryHeapDeviceLocal MemoryHeapFlags = C.VK_MEMORY_HEAP_DEVICE_LOCAL_BIT

	// PhysicalDeviceTypeOther specifies that the Device does not match any other available types
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html
	PhysicalDeviceTypeOther PhysicalDeviceType = C.VK_PHYSICAL_DEVICE_TYPE_OTHER
	// PhysicalDeviceTypeIntegratedGPU specifies that the Device is typically one embedded in or
	// tightly coupled with the host
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html
	PhysicalDeviceTypeIntegratedGPU PhysicalDeviceType = C.VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	// PhysicalDeviceTypeDiscreteGPU specifies that the Device is typically a separate processor
	// connected to the host via an interlink
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html
	PhysicalDeviceTypeDiscreteGPU PhysicalDeviceType = C.VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
	// PhysicalDeviceTypeVirtualGPU specifies that the Device is typically a virtual node in
	// a virtualization environment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html
	PhysicalDeviceTypeVirtualGPU PhysicalDeviceType = C.VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
	// PhysicalDeviceTypeCPU specifies that the Device is typically running on the same processors
	// as the host
	PhysicalDeviceTypeCPU PhysicalDeviceType = C.VK_PHYSICAL_DEVICE_TYPE_CPU
)
View Source
const (
	// QueryTypeOcclusion specifies an occlusion query
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryType.html
	QueryTypeOcclusion QueryType = C.VK_QUERY_TYPE_OCCLUSION
	// QueryTypePipelineStatistics specifies a pipeline statistics query
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryType.html
	QueryTypePipelineStatistics QueryType = C.VK_QUERY_TYPE_PIPELINE_STATISTICS
	// QueryTypeTimestamp specifies a timestamp query
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryType.html
	QueryTypeTimestamp QueryType = C.VK_QUERY_TYPE_TIMESTAMP

	// QueryResult64Bit specifies the results will be written as an array of 64-bit unsigned
	// integer values (instead of 32-bit unsigned integer values)
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html
	QueryResult64Bit QueryResultFlags = C.VK_QUERY_RESULT_64_BIT
	// QueryResultWait specifies that Vulkan will wait for each query's status to become available
	// before retrieving its results
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html
	QueryResultWait QueryResultFlags = C.VK_QUERY_RESULT_WAIT_BIT
	// QueryResultWithAvailability specifies that the availability status accompanies the results
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html
	QueryResultWithAvailability QueryResultFlags = C.VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
	// QueryResultPartial specifies that returning partial results is acceptable
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html
	QueryResultPartial QueryResultFlags = C.VK_QUERY_RESULT_PARTIAL_BIT
)
View Source
const (
	// AttachmentDescriptionMayAlias specifies that the attachment aliases the same DeviceMemory
	// as other attachments
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentDescriptionFlagBits.html
	AttachmentDescriptionMayAlias AttachmentDescriptionFlags = C.VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT

	// AttachmentLoadOpLoad specifies that the previous contents of the Image within the render
	// area will be preserved
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html
	AttachmentLoadOpLoad AttachmentLoadOp = C.VK_ATTACHMENT_LOAD_OP_LOAD
	// AttachmentLoadOpClear specifies that the contents within the rendera area will be cleared
	// to a uniform value, which is specified when a RenderPass instance is begun
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html
	AttachmentLoadOpClear AttachmentLoadOp = C.VK_ATTACHMENT_LOAD_OP_CLEAR
	// AttachmentLoadOpDontCare specifies that the previous contents within the area need not
	// be preserved
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html
	AttachmentLoadOpDontCare AttachmentLoadOp = C.VK_ATTACHMENT_LOAD_OP_DONT_CARE

	// AttachmentStoreOpStore specifies the contents generated during the RenderPass and within
	// the render area are written to memory
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentStoreOp.html
	AttachmentStoreOpStore AttachmentStoreOp = C.VK_ATTACHMENT_STORE_OP_STORE
	// AttachmentStoreOpDontCare specifies the contents within the render area are not
	// needed after rendering, and may be discarded
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentStoreOp.html
	AttachmentStoreOpDontCare AttachmentStoreOp = C.VK_ATTACHMENT_STORE_OP_DONT_CARE

	// DependencyByRegion specifies that dependencies will be Framebuffer local
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDependencyFlagBits.html
	DependencyByRegion DependencyFlags = C.VK_DEPENDENCY_BY_REGION_BIT

	// PipelineBindPointGraphics specifies binding as a graphics Pipeline
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineBindPoint.html
	PipelineBindPointGraphics PipelineBindPoint = C.VK_PIPELINE_BIND_POINT_GRAPHICS
	// PipelineBindPointCompute specifies binding as a compute Pipeline
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineBindPoint.html
	PipelineBindPointCompute PipelineBindPoint = C.VK_PIPELINE_BIND_POINT_COMPUTE

	// SubpassExternal is a subpass index sentinel expanding synchronization scope outside a
	// subpass
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_SUBPASS_EXTERNAL.html
	SubpassExternal = int(C.VK_SUBPASS_EXTERNAL)
)
View Source
const (
	// LodClampNone is a special constant value used for SamplerCreateInfo.MaxLod to indicate
	// that maximum LOD clamping should not be performed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_LOD_CLAMP_NONE.html
	LodClampNone float32 = C.VK_LOD_CLAMP_NONE

	// BorderColorFloatTransparentBlack specifies a transparent, floating-point format,
	// black color
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html
	BorderColorFloatTransparentBlack BorderColor = C.VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
	// BorderColorIntTransparentBlack specifies a transparent, integer format, black color
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html
	BorderColorIntTransparentBlack BorderColor = C.VK_BORDER_COLOR_INT_TRANSPARENT_BLACK
	// BorderColorFloatOpaqueBlack specifies an opaque, floating-point format, black color
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html
	BorderColorFloatOpaqueBlack BorderColor = C.VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK
	// BorderColorIntOpaqueBlack specifies an opaque, integer format, black color
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html
	BorderColorIntOpaqueBlack BorderColor = C.VK_BORDER_COLOR_INT_OPAQUE_BLACK
	// BorderColorFloatOpaqueWhite specifies an opaque, floating-point format, white color
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html
	BorderColorFloatOpaqueWhite BorderColor = C.VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE
	// BorderColorIntOpaqueWhite specifies an opaque, integer format, white color
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html
	BorderColorIntOpaqueWhite BorderColor = C.VK_BORDER_COLOR_INT_OPAQUE_WHITE

	// CompareOpNever specifies that the comparison always evaluates false
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpNever CompareOp = C.VK_COMPARE_OP_NEVER
	// CompareOpLess specifies that the comparison evaluates reference < test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpLess CompareOp = C.VK_COMPARE_OP_LESS
	// CompareOpEqual specifies that the comparison evaluates reference == test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpEqual CompareOp = C.VK_COMPARE_OP_EQUAL
	// CompareOpLessOrEqual specifies that the comparison evaluates reference <= test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpLessOrEqual CompareOp = C.VK_COMPARE_OP_LESS_OR_EQUAL
	// CompareOpGreater specifies that the comparison evaluates reference > test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpGreater CompareOp = C.VK_COMPARE_OP_GREATER
	// CompareOpNotEqual specifies that the comparison evaluates reference != test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpNotEqual CompareOp = C.VK_COMPARE_OP_NOT_EQUAL
	// CompareOpGreaterOrEqual specifies that the comparison evaluates reference >= test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpGreaterOrEqual CompareOp = C.VK_COMPARE_OP_GREATER_OR_EQUAL
	// CompareOpAlways specifies that the comparison always evaluates true
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html
	CompareOpAlways CompareOp = C.VK_COMPARE_OP_ALWAYS

	// FilterNearest specifies nearest filtering
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFilter.html
	FilterNearest Filter = C.VK_FILTER_NEAREST
	// FilterLinear specifies linear filtering
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFilter.html
	FilterLinear Filter = C.VK_FILTER_LINEAR

	// SamplerMipmapModeNearest specifies nearest filtering
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerMipmapMode.html
	SamplerMipmapModeNearest SamplerMipmapMode = C.VK_SAMPLER_MIPMAP_MODE_NEAREST
	// SamplerMipmapModeLinear specifiest linear filtering
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerMipmapMode.html
	SamplerMipmapModeLinear SamplerMipmapMode = C.VK_SAMPLER_MIPMAP_MODE_LINEAR

	// SamplerAddressModeRepeat specifies that the repeat wrap mode will be used
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html
	SamplerAddressModeRepeat SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_REPEAT
	// SamplerAddressModeMirroredRepeat specifies that the mirrored repeat wrap mode will be used
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html
	SamplerAddressModeMirroredRepeat SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT
	// SamplerAddressModeClampToEdge specifies that the clamp-to-edge wrap mode will be used
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html
	SamplerAddressModeClampToEdge SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
	// SamplerAddressModeClampToBorder specifies that the clamp-to-border wrap mode will be used
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html
	SamplerAddressModeClampToBorder SamplerAddressMode = C.VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
)
View Source
const (
	// BlendFactorZero provides 0 for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorZero BlendFactor = C.VK_BLEND_FACTOR_ZERO
	// BlendFactorOne provides 1 for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOne BlendFactor = C.VK_BLEND_FACTOR_ONE
	// BlendFactorSrcColor provides R(s0), G(s0), and B(s0) to color blend operations and
	// A(s0) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorSrcColor BlendFactor = C.VK_BLEND_FACTOR_SRC_COLOR
	// BlendFactorOneMinusSrcColor provides 1-R(s0), 1-G(s0), and 1-B(s0) to color blend operations
	// and 1-A(s0) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusSrcColor BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR
	// BlendFactorDstColor provides R(d), G(d), and B(d) to color blend operations and A(d)
	// to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorDstColor BlendFactor = C.VK_BLEND_FACTOR_DST_COLOR
	// BlendFactorOneMinusDstColor provides 1-R(d), 1-G(d), and 1-B(d) to color blend operations
	// and 1-A(d) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusDstColor BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR
	// BlendFactorSrcAlpha provides A(s0) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorSrcAlpha BlendFactor = C.VK_BLEND_FACTOR_SRC_ALPHA
	// BlendFactorOneMinusSrcAlpha provides 1-A(s0) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusSrcAlpha BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
	// BlendFactorDstAlpha provides A(d) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorDstAlpha BlendFactor = C.VK_BLEND_FACTOR_DST_ALPHA
	// BlendFactorOneMinusDstAlpha provides 1-A(d) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusDstAlpha BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA
	// BlendFactorConstantColor provides R(c), G(c), and B(c) to color blend operations and
	// A(c) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorConstantColor BlendFactor = C.VK_BLEND_FACTOR_CONSTANT_COLOR
	// BlendFactorOneMinusConstantColor provides 1-R(c), 1-G(c), and 1-B(c) to color blend
	// operations and 1-A(c) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusConstantColor BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
	// BlendFactorConstantAlpha provides A(c) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorConstantAlpha BlendFactor = C.VK_BLEND_FACTOR_CONSTANT_ALPHA
	// BlendFactorOneMinusConstantAlpha provides 1-A(c) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusConstantAlpha BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
	// BlendFactorSrcAlphaSaturate provides MIN(A(s0), 1-A(d)) for all channels to color blend
	// operations and 1 to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorSrcAlphaSaturate BlendFactor = C.VK_BLEND_FACTOR_SRC_ALPHA_SATURATE
	// BlendFactorSrc1Color provides R(s1), G(s1), and B(s1) to color blend operations and
	// A(s1) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorSrc1Color BlendFactor = C.VK_BLEND_FACTOR_SRC1_COLOR
	// BlendFactorOneMinusSrc1Color provides 1-R(s1), 1-G(s1), and 1-B(s1) to color blend
	// operations and 1-A(s1) to alpha blend operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusSrc1Color BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
	// BlendFactorSrc1Alpha provides A(s1) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorSrc1Alpha BlendFactor = C.VK_BLEND_FACTOR_SRC1_ALPHA
	// BlendFactorOneMinusSrc1Alpha provides 1-A(s1) for all channels to the blend operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html
	BlendFactorOneMinusSrc1Alpha BlendFactor = C.VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA

	// BlendOpAdd outputs the following, given s0 is the source color, d is the destination
	// color, sf is the source blend factor, and df is the destination blend factor:
	// * Color blend operation: [R(s0) * R(sf) + R(d) * R(df), G(s0) * G(sf) + G(d) * G(df),
	// B(s0) * B(sf) + B(d) * B(df)]
	// * Alpha blend operation: A(s0) * A(sf) + A(d) * A(df)
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html
	BlendOpAdd BlendOp = C.VK_BLEND_OP_ADD
	// BlendOpSubtract  outputs the following, given s0 is the source color, d is the destination
	// color, sf is the source blend factor, and df is the destination blend factor:
	// * Color blend operation: [R(s0) * R(sf) - R(d) * R(df), G(s0) * G(sf) - G(d) * G(df),
	// B(s0) * B(sf) - B(d) * B(df)]
	// * Alpha blend operation: A(s0) * A(sf) - A(d) * A(df)
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html
	BlendOpSubtract BlendOp = C.VK_BLEND_OP_SUBTRACT
	// BlendOpMin outputs the following, given s0 is the source color and d is the destination color:
	// * Color blend operation: [MIN(R(s0), R(d)), MIN(G(s0), G(d)), MIN(B(s0), B(d))]
	// * Alpha blend operation: MIN(A(s0), A(d))
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html
	BlendOpMin BlendOp = C.VK_BLEND_OP_MIN
	// BlendOpMax outputs the following, given s0 is the source color and d is the destination color:
	// * Color blend operation: [MAX(R(s0), R(d)), MAX(G(s0), G(d)), MAX(B(s0), B(d))]
	// * Alpha blend operation: MAX(A(s0), A(d))
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html
	BlendOpMax BlendOp = C.VK_BLEND_OP_MAX

	// LogicOpClear sets the output value to 0
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpClear LogicOp = C.VK_LOGIC_OP_CLEAR
	// LogicOpAnd sets the output value to s0 & d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpAnd LogicOp = C.VK_LOGIC_OP_AND
	// LogicOpAndReverse sets the output value to s0 & ~d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpAndReverse LogicOp = C.VK_LOGIC_OP_AND_REVERSE
	// LogicOpCopy sets the output value to s0
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpCopy LogicOp = C.VK_LOGIC_OP_COPY
	// LogicOpAndInverted sets the output value to ~s0 & d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpAndInverted LogicOp = C.VK_LOGIC_OP_AND_INVERTED
	// LogicOpNoop sets the output value to d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpNoop LogicOp = C.VK_LOGIC_OP_NO_OP
	// LogicOpXor sets the output value to s0 ^ d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpXor LogicOp = C.VK_LOGIC_OP_XOR
	// LogicOpOr sets the output value to s0 | d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpOr LogicOp = C.VK_LOGIC_OP_OR
	// LogicOpNor sets the output value to ~(s0 | d)
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpNor LogicOp = C.VK_LOGIC_OP_NOR
	// LogicOpEquivalent sets the output value to ~(s0 ^ d)
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpEquivalent LogicOp = C.VK_LOGIC_OP_EQUIVALENT
	// LogicOpInvert sets the output value to ~d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpInvert LogicOp = C.VK_LOGIC_OP_INVERT
	// LogicOpOrReverse sets the output value to s0 | ~d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpOrReverse LogicOp = C.VK_LOGIC_OP_OR_REVERSE
	// LogicOpCopyInverted sets the output value to ~s0
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpCopyInverted LogicOp = C.VK_LOGIC_OP_COPY_INVERTED
	// LogicOpOrInverted sets the output value to ~s0 | d
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpOrInverted LogicOp = C.VK_LOGIC_OP_OR_INVERTED
	// LogicOpNand sets the output value to ~(s0 & d)
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpNand LogicOp = C.VK_LOGIC_OP_NAND
	// LogicOpSet sets the output value to 0xFFFFF...
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html
	LogicOpSet LogicOp = C.VK_LOGIC_OP_SET
)
View Source
const (
	// PolygonModeFill specifies that polygons are rendered using the polygon rasterization rules
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPolygonMode.html
	PolygonModeFill PolygonMode = C.VK_POLYGON_MODE_FILL
	// PolygonModeLine specifies that polygon edges are drawn as line segments
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPolygonMode.html
	PolygonModeLine PolygonMode = C.VK_POLYGON_MODE_LINE
	// PolygonModePoint specifies that polygon vertices are drawn as points
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPolygonMode.html
	PolygonModePoint PolygonMode = C.VK_POLYGON_MODE_POINT

	// CullModeFront specifies that front-facing triangles are discarded
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCullModeFlagBits.html
	CullModeFront CullModeFlags = C.VK_CULL_MODE_FRONT_BIT
	// CullModeBack specifies that back-facing triangles are discarded
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCullModeFlagBits.html
	CullModeBack CullModeFlags = C.VK_CULL_MODE_BACK_BIT

	// FrontFaceCounterClockwise specifies that a triangle with positive area is considered
	// front-facing
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFrontFace.html
	FrontFaceCounterClockwise FrontFace = C.VK_FRONT_FACE_COUNTER_CLOCKWISE
	// FrontFaceClockwise specifies that a triangle with negative area is considered front-facing
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFrontFace.html
	FrontFaceClockwise FrontFace = C.VK_FRONT_FACE_CLOCKWISE
)
View Source
const (
	// VKSuccess indicates the command was successfully completed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKSuccess common.VkResult = C.VK_SUCCESS
	// VKNotReady indicates a Fence or query has not yet completed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKNotReady common.VkResult = C.VK_NOT_READY
	// VKTimeout indicates a wait operation has not completed in the specified time
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKTimeout common.VkResult = C.VK_TIMEOUT
	// VKEventSet indicates an Event is signaled
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKEventSet common.VkResult = C.VK_EVENT_SET
	// VKEventReset indicates an Event is unsignaled
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKEventReset common.VkResult = C.VK_EVENT_RESET
	// VKIncomplete indicates a return array was too small for the result
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKIncomplete common.VkResult = C.VK_INCOMPLETE
	// VKErrorOutOfHostMemory indicates a host memory allocation has failed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorOutOfHostMemory common.VkResult = C.VK_ERROR_OUT_OF_HOST_MEMORY
	// VKErrorOutOfDeviceMemory indicates a DeviceMemory allocation has failed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorOutOfDeviceMemory common.VkResult = C.VK_ERROR_OUT_OF_DEVICE_MEMORY
	// VKErrorInitializationFailed indicates initialization of an object could not be completed
	// for implementation-specific reasons
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorInitializationFailed common.VkResult = C.VK_ERROR_INITIALIZATION_FAILED
	// VKErrorDeviceLost indicates the logical or physical device has been lost
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorDeviceLost common.VkResult = C.VK_ERROR_DEVICE_LOST
	// VKErrorMemoryMapFailed indicates mapping of a memory object has failed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorMemoryMapFailed common.VkResult = C.VK_ERROR_MEMORY_MAP_FAILED
	// VKErrorLayerNotPresent indicates a requested layer is not present or could not be loaded
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorLayerNotPresent common.VkResult = C.VK_ERROR_LAYER_NOT_PRESENT
	// VKErrorExtensionNotPresent indicates a requested extension is not supported
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorExtensionNotPresent common.VkResult = C.VK_ERROR_EXTENSION_NOT_PRESENT
	// VKErrorFeatureNotPresent indicates a requested feature is not supported
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorFeatureNotPresent common.VkResult = C.VK_ERROR_FEATURE_NOT_PRESENT
	// VKErrorIncompatibleDriver indicates the requested version of Vulkan is not supported
	// by the driver or is otherwise incompatible for implementation-specific reasons
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorIncompatibleDriver common.VkResult = C.VK_ERROR_INCOMPATIBLE_DRIVER
	// VKErrorTooManyObjects indicates too many objects of the type have already been created
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorTooManyObjects common.VkResult = C.VK_ERROR_TOO_MANY_OBJECTS
	// VKErrorFormatNotSupported indicates a requested format is not supported on this Device
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorFormatNotSupported common.VkResult = C.VK_ERROR_FORMAT_NOT_SUPPORTED
	// VKErrorFragmentedPool indicates a pool allocation has failed due to fragmentation of the
	// pool's memory
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorFragmentedPool common.VkResult = C.VK_ERROR_FRAGMENTED_POOL
	// VKErrorUnknown indicates an unknown error has occurred, either the application has
	// provided invalid input, or an implementation failure has occurred
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkResult.html
	VKErrorUnknown common.VkResult = C.VK_ERROR_UNKNOWN
)
View Source
const AttachmentUnused int = C.VK_ATTACHMENT_UNUSED

AttachmentUnused indicates that a render pass attachment is not used

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_ATTACHMENT_UNUSED.html

Variables

View Source
var FormatMapping = make(map[Format]string)

Functions

This section is empty.

Types

type AccessFlags

type AccessFlags int32

AccessFlags specifies memory access types that will participate in a memory dependency

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html

const (
	// AccessIndirectCommandRead specifies read access to indirect command data read as part
	// of an indirect build, trace, drawing or dispatching command. Such access occurs in the
	// PipelineStageDrawIndirect pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessIndirectCommandRead AccessFlags = C.VK_ACCESS_INDIRECT_COMMAND_READ_BIT
	// AccessIndexRead specifies read access to an index buffer as part of an indexed drawing
	// command, bound by vkCmdBindIndexBuffer. Such access occurs in the
	// PipelineStageVertexInput pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessIndexRead AccessFlags = C.VK_ACCESS_INDEX_READ_BIT
	// AccessVertexAttributeRead specifies read access to a vertex buffer as part of a drawing
	// command, bound by vkCmdBindVertexBuffers. Such access occurs in the
	// PipelineStageVertexInput pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessVertexAttributeRead AccessFlags = C.VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT
	// AccessUniformRead specifies read access to a uniform buffer in any shader pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessUniformRead AccessFlags = C.VK_ACCESS_UNIFORM_READ_BIT
	// AccessInputAttachmentRead specifies read access to an input attachment within a render
	// pass during subpass shading or fragment shading. Such access occurs in the
	// PipelineStage2SubpassShadingHuawei or PipelineStageFragmentShader
	// pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessInputAttachmentRead AccessFlags = C.VK_ACCESS_INPUT_ATTACHMENT_READ_BIT
	// AccessShaderRead specifies read access to a uniform buffer, uniform texel buffer,
	// sampled image, storage buffer, physical storage buffer, shader binding table, storage
	// texel buffer, or storage image in any shader pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessShaderRead AccessFlags = C.VK_ACCESS_SHADER_READ_BIT
	// AccessShaderWrite specifies write access to a storage buffer, physical storage buffer,
	// storage texel buffer, or storage image in any shader pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessShaderWrite AccessFlags = C.VK_ACCESS_SHADER_WRITE_BIT
	// AccessColorAttachmentRead specifies read access to a color attachment, such as via
	// blending, logic operations, or via certain subpass load operations. It does not include
	// advanced blend operations. Such access occurs in the
	// PipelineStageColorAttachmentOutput pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessColorAttachmentRead AccessFlags = C.VK_ACCESS_COLOR_ATTACHMENT_READ_BIT
	// AccessColorAttachmentWrite specifies write access to a color, resolve, or depth/stencil
	// resolve attachment during a render pass or via certain subpass load and store operations.
	// Such access occurs in the PipelineStageColorAttachmentOutput pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessColorAttachmentWrite AccessFlags = C.VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT
	// AccessDepthStencilAttachmentRead specifies read access to a depth/stencil attachment, via
	// depth or stencil operations or via certain subpass load operations. Such access occurs in
	// the PipelineStageEarlyFragmentTests or PipelineStageLateFramentTests
	// pipeline stages.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessDepthStencilAttachmentRead AccessFlags = C.VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
	// AccessDepthStencilAttachmentWrite specifies write access to a depth/stencil attachment,
	// via depth or stencil operations or via certain subpass load and store operations. Such
	// access occurs in the PipelineStageEarlyFragmentTests or
	// PipelineStageLateFragmentTests pipeline stages.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessDepthStencilAttachmentWrite AccessFlags = C.VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
	// AccessTransferRead specifies read access to an image or buffer in a copy operation. Such
	// access occurs in the PipelineStage2AllTransfer pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessTransferRead AccessFlags = C.VK_ACCESS_TRANSFER_READ_BIT
	// AccessTransferWrite specifies write access to an image or buffer in a clear or copy
	// operation. Such access occurs in the PipelineStage2AllTransfer pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessTransferWrite AccessFlags = C.VK_ACCESS_TRANSFER_WRITE_BIT
	// AccessHostRead specifies read access by a host operation. Accesses of this type are not
	// performed through a resource, but directly on memory. Such access occurs in the
	// PipelineStageHost pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessHostRead AccessFlags = C.VK_ACCESS_HOST_READ_BIT
	// AccessHostWrite specifies write access by a host operation. Accesses of this type are not
	// performed through a resource, but directly on memory. Such access occurs in the
	// PipelineStageHost pipeline stage.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessHostWrite AccessFlags = C.VK_ACCESS_HOST_WRITE_BIT
	// AccessMemoryRead specifies all read accesses. It is always valid in any access mask,
	// and is treated as equivalent to setting all READ access flags that are valid where it is
	// used.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessMemoryRead AccessFlags = C.VK_ACCESS_MEMORY_READ_BIT
	// AccessMemoryWrite specifies all write accesses. It is always valid in any access mask,
	// and is treated as equivalent to setting all WRITE access flags that are valid where it
	// is used.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAccessFlags.html
	AccessMemoryWrite AccessFlags = C.VK_ACCESS_MEMORY_WRITE_BIT
)

func (AccessFlags) Register

func (f AccessFlags) Register(str string)

func (AccessFlags) String

func (f AccessFlags) String() string

type AttachmentDescription

type AttachmentDescription struct {
	// Flags specifies additional properties of the attachment
	Flags AttachmentDescriptionFlags
	// Format specifies the format of the ImageView that will be used for the attachment
	Format Format
	// Samples specifies the number of samples of the Image
	Samples SampleCountFlags

	// LoadOp specifies how the contents of color and depth components of the attachment are
	// treated at the beginning of the subpass where it is first used
	LoadOp AttachmentLoadOp
	// StoreOp specifies how the contents of color and depth components of the attachment are
	// treated at the end of the subpass where it is last used
	StoreOp AttachmentStoreOp
	// StencilLoadOp specifies how the contents of stencil components of the attachment are treated
	// at the beginning of the subpass where it is first used
	StencilLoadOp AttachmentLoadOp
	// StencilStoreOp specifies how the contents of stencil components of the attachment are treated
	// at the end of the subpass where it is last used
	StencilStoreOp AttachmentStoreOp

	// InitialLayout is the layout the attachment Image subresource will be in when a RenderPass
	// instance begins
	InitialLayout ImageLayout
	// FinalLayout is the layout the attachment Image subresource will be transitioned to when
	// a RenderPass instance ends
	FinalLayout ImageLayout
}

AttachmentDescription specifies an attachment description

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentDescription.html

type AttachmentDescriptionFlags

type AttachmentDescriptionFlags int32

AttachmentDescriptionFlags specifies additional properties of an attachment

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentDescriptionFlagBits.html

func (AttachmentDescriptionFlags) Register

func (f AttachmentDescriptionFlags) Register(str string)

func (AttachmentDescriptionFlags) String

type AttachmentLoadOp

type AttachmentLoadOp int32

AttachmentLoadOp specifies how contents of an attachment are treated at the beginning of a subpass

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentLoadOp.html

func (AttachmentLoadOp) Register

func (e AttachmentLoadOp) Register(str string)

func (AttachmentLoadOp) String

func (e AttachmentLoadOp) String() string

type AttachmentReference

type AttachmentReference struct {
	// Attachment is either an integer value identifying an attachment at the corresponding
	// index or AttachmentUnused to signify that it is not used
	Attachment int
	// Layout specifies the layout the attachment uses during the subpass
	Layout ImageLayout
}

AttachmentReference specifies an attachment reference

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAttachmentReference.html

type AttachmentStoreOp

type AttachmentStoreOp int32

AttachmentStoreOp specifies how contents of an attachment are treated at the end of a subpass

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkAttachmentStoreOp.html

func (AttachmentStoreOp) Register

func (e AttachmentStoreOp) Register(str string)

func (AttachmentStoreOp) String

func (e AttachmentStoreOp) String() string

type BindSparseInfo added in v0.2.0

type BindSparseInfo struct {
	// WaitSemaphores is a slice of Semaphore objects upon which to wait before the sparse
	// binding operations for this batch begin execution
	WaitSemaphores []Semaphore
	// SignalSemaphores a slice of Semaphore objects which will be signaled when the sparse binding
	// operations for this batch have completed execution
	SignalSemaphores []Semaphore

	// BufferBinds is a slice of SparseBufferMemoryBindInfo structures
	BufferBinds []SparseBufferMemoryBindInfo
	// ImageOpaqueBinds is a slice of SparseImageOpaqueBindInfo structures, indicating opaque
	// sparse Image bindings to perform
	ImageOpaqueBinds []SparseImageOpaqueMemoryBindInfo
	// ImageBinds is a slice of SparseImageMemoryBindInfo structures, indicating sparse Image
	// bindings to perform
	ImageBinds []SparseImageMemoryBindInfo

	common.NextOptions
}

BindSparseInfo specifies a sparse binding operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBindSparseInfo.html

func (BindSparseInfo) PopulateCPointer added in v0.2.0

func (b BindSparseInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type BlendFactor

type BlendFactor int32

BlendFactor specifies Framebuffer blending factors

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendFactor.html

func (BlendFactor) Register

func (e BlendFactor) Register(str string)

func (BlendFactor) String

func (e BlendFactor) String() string

type BlendOp

type BlendOp int32

BlendOp specifies Framebuffer blending operations

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBlendOp.html

func (BlendOp) Register

func (e BlendOp) Register(str string)

func (BlendOp) String

func (e BlendOp) String() string

type BorderColor

type BorderColor int32

BorderColor specifies border color used for texture lookups

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBorderColor.html

func (BorderColor) Register

func (e BorderColor) Register(str string)

func (BorderColor) String

func (e BorderColor) String() string

type Buffer

type Buffer interface {
	// Handle is the internal Vulkan object handle for this Buffer
	Handle() driver.VkBuffer
	// DeviceHandle is the internal Vulkan object handle for the Device this Buffer belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Buffer
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Buffer. If it is
	// at least vulkan 1.1, core1_1.PromoteBuffer can be used to promote this to a
	// core1_1.Buffer, etc.
	APIVersion() common.APIVersion

	// Destroy deletes this buffer and underlying structures from the device. **Warning**
	// after destruction, this object will still exist, but the Vulkan object handle
	// that backs it will be invalid. Do not call further methods on this object.
	//
	// callbacks - An set of allocation callbacks to control the memory free behavior of this command
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyBuffer.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// MemoryRequirements returns the memory requirements for this Buffer.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetBufferMemoryRequirements.html
	MemoryRequirements() *MemoryRequirements
	// BindBufferMemory binds DeviceMemory to this Buffer
	//
	// memory - A DeviceMemory object describing the device memory to attach
	//
	// offset - The start offset of the region of memory which is to be bound to the buffer.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkBindBufferMemory.html
	BindBufferMemory(memory DeviceMemory, offset int) (common.VkResult, error)
}

Buffer represents a linear array of data, which is used for various purposes by binding it to a graphics or compute pipeline.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBuffer.html

type BufferCopy

type BufferCopy struct {
	// SrcOffset is the starting offset in bytes from the start of the source Buffer
	SrcOffset int
	// DstOffset is the starting offset in bytes from the start of the dest Buffer
	DstOffset int
	// Size is the number of bytes to copy
	Size int
}

BufferCopy specifies a buffer copy operation via CommandBuffer.CmdCopyBuffer

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCopy.html

func (BufferCopy) PopulateCPointer

func (c BufferCopy) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type BufferCreateFlags

type BufferCreateFlags int32

BufferCreateFlags specifies additional parameters of a Buffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferCreateFlagBits.html

func (BufferCreateFlags) Register

func (f BufferCreateFlags) Register(str string)

func (BufferCreateFlags) String

func (f BufferCreateFlags) String() string

type BufferCreateInfo

type BufferCreateInfo struct {
	// Flags specifies additional parameters of the buffer
	Flags BufferCreateFlags
	// Size is the size in bytes of the buffer to be created
	Size int
	// Usage spcifies allowed usages of the buffer
	Usage BufferUsageFlags
	// SharingMode specifies the sharing mode of the buffer when it will be accessed by multiple
	// queue families
	SharingMode SharingMode
	// QueueFamilyIndices is a slice of queue families that will access this buffer. It is ignored
	// if SharingMode is not SharingModeConcurrent.
	QueueFamilyIndices []int

	// NextOptions allows additional creation option structures to be chained
	common.NextOptions
}

BufferCreateInfo specifies the parameters of a newly-created buffer object

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferCreateInfo.html

func (BufferCreateInfo) PopulateCPointer

func (o BufferCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type BufferImageCopy

type BufferImageCopy struct {
	// BufferOffset is the offset in bytes from the start of the Buffer
	BufferOffset int
	// BufferRowLength is the size in texels of the rows of the image stored in the Buffer.
	// 0 indicates that the ImageExtent controls this value
	BufferRowLength int
	// BufferImageHeight is the height in texels of the image stored in the Buffer
	// 0 indicates that the ImageExtent controls this value
	BufferImageHeight int

	// ImageSubresource is used to specify the specific image subresources of the Image
	ImageSubresource ImageSubresourceLayers
	// ImageOffset selects the initial x, y, and z offset in texels of the Image subregion
	ImageOffset Offset3D
	// ImageExtent is the size in texels of the Image subregion
	ImageExtent Extent3D
}

BufferImageCopy specifies a buffer image copy operation via CommandBuffer.CmdCopyBufferToImage or CommandBuffer.CmdCopyImageToBuffer

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferImageCopy.html

func (BufferImageCopy) PopulateCPointer

func (c BufferImageCopy) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type BufferMemoryBarrier

type BufferMemoryBarrier struct {
	// SrcAccessMask specifies a source access mask
	SrcAccessMask AccessFlags
	// DstAccessMask specifies a destination access mask
	DstAccessMask AccessFlags

	// SrcQueueFamilyIndex is the source queue family for a queue family ownership transfer
	SrcQueueFamilyIndex int
	// DstQueueFamilyIndex is the source queue family for a queue family ownership transfer
	DstQueueFamilyIndex int

	// Buffer is the buffer whose backing memory is affected by the barrier
	Buffer Buffer

	// Offset is an offset in bytes into the backing memory for Buffer
	Offset int
	// Size is a size in bytes of the affected area of backing memory for Buffer
	Size int

	common.NextOptions
}

BufferMemoryBarrier specifies a buffer memory barrier

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferMemoryBarrier.html

func (BufferMemoryBarrier) PopulateCPointer

func (o BufferMemoryBarrier) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type BufferUsageFlags

type BufferUsageFlags int32

BufferUsageFlags specifies allowed usage of a Buffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferUsageFlagBits.html

func (BufferUsageFlags) Register

func (f BufferUsageFlags) Register(str string)

func (BufferUsageFlags) String

func (f BufferUsageFlags) String() string

type BufferView

type BufferView interface {
	// Handle is the internal Vulkan object handle for this BufferView
	Handle() driver.VkBufferView
	// DeviceHandle is the internal Vulkan object handle for the Device this BufferView belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the vulkan wrapper driver used by this BufferView
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Buffer. If it is
	// at least vulkan 1.1, core1_1.PromoteBufferView can be used to promote this to a
	// core1_1.BufferView, etc.
	APIVersion() common.APIVersion

	// Destroy deletes this buffer and the underlying structures from the device. **Warning**
	// after destruction, this object will continue to exist, but the Vulkan object handle
	// that backs it will be invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyBufferView.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

BufferView represents a contiguous range of a buffer and a specific format to be used to interpret the data.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkBufferView.html

type BufferViewCreateFlags

type BufferViewCreateFlags int32

BufferViewCreateFlags is a set of flags reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferViewCreateFlags.html

func (BufferViewCreateFlags) Register

func (f BufferViewCreateFlags) Register(str string)

func (BufferViewCreateFlags) String

func (f BufferViewCreateFlags) String() string

type BufferViewCreateInfo

type BufferViewCreateInfo struct {
	// Buffer is the Buffer on which the view will be created
	Buffer Buffer
	// Flags is reserved for future use
	Flags BufferViewCreateFlags
	// Format describes the format of the data element in the Buffer
	Format Format
	// Offset is the offset in bytes from the base address of the Buffer
	Offset int
	// Range is the size in bytes of the BufferView
	Range int

	common.NextOptions
}

BufferViewCreateInfo specifies the parameters of a newly-created BufferView object

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkBufferViewCreateInfo.html

func (BufferViewCreateInfo) PopulateCPointer

func (o BufferViewCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ClearAttachment

type ClearAttachment struct {
	// AspectMask is a mask selecting the color, depth, and/or stencil aspects of the attachment
	// to be cleared
	AspectMask ImageAspectFlags
	// ColorAttachment is an index into the currently-bound color attachments
	ColorAttachment int
	// ClearValue is the color or depth/stencil value to clear the attachment to
	ClearValue ClearValue
}

ClearAttachment specifies a clear attachment

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClearAttachment.html

func (ClearAttachment) PopulateCPointer

func (c ClearAttachment) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type ClearColorValue

type ClearColorValue interface {
	PopulateColorUnion(c unsafe.Pointer)
}

ClearColorValue specifies a clear color value

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClearColorValue.html

type ClearRect

type ClearRect struct {
	// Rect is the two-dimensional region to be cleared
	Rect Rect2D
	// BaseArrayLayer is the first layer to be cleared
	BaseArrayLayer int
	// LayerCount is the number of layers to clear
	LayerCount int
}

ClearRect specifies a clear rectangle

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClearRect.html

func (ClearRect) PopulateCPointer

func (r ClearRect) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type ClearValue

type ClearValue interface {
	PopulateValueUnion(v unsafe.Pointer)
}

ClearValue specifies a clear value

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClearValue.html

type ClearValueDepthStencil

type ClearValueDepthStencil struct {
	// Depth is the clear value for the depth aspect of the depth/stencil attachment
	Depth float32
	// Stencil is the clear value of the stencil aspect of the depth/stencil attachment
	Stencil uint32
}

ClearValueDepthStencil is a ClearValue specifying a clear depth stencil value

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkClearDepthStencilValue.html

func (ClearValueDepthStencil) PopulateValueUnion

func (s ClearValueDepthStencil) PopulateValueUnion(c unsafe.Pointer)

type ClearValueFloat

type ClearValueFloat [4]float32

ClearValueFloat is a ClearValue and ClearColorValue representing 4 32-bit float color channels

func (ClearValueFloat) PopulateColorUnion

func (v ClearValueFloat) PopulateColorUnion(c unsafe.Pointer)

func (ClearValueFloat) PopulateValueUnion

func (v ClearValueFloat) PopulateValueUnion(c unsafe.Pointer)

type ClearValueInt32

type ClearValueInt32 [4]int32

ClearValueInt32 is a ClearValue and ClearColorValue representing 4 signed 32-bit integer color channels

func (ClearValueInt32) PopulateColorUnion

func (v ClearValueInt32) PopulateColorUnion(c unsafe.Pointer)

func (ClearValueInt32) PopulateValueUnion

func (v ClearValueInt32) PopulateValueUnion(c unsafe.Pointer)

type ClearValueUint32

type ClearValueUint32 [4]uint32

ClearValueUint32 is a ClearValue and ClearColorValue representing 4 unsigned 32-bit integer color channels

func (ClearValueUint32) PopulateColorUnion

func (v ClearValueUint32) PopulateColorUnion(c unsafe.Pointer)

func (ClearValueUint32) PopulateValueUnion

func (v ClearValueUint32) PopulateValueUnion(c unsafe.Pointer)

type ColorComponentFlags

type ColorComponentFlags int32

ColorComponentFlags controls which components are written to the framebuffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html

const (
	// ColorComponentRed specifies that the R value is written to the color attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html
	ColorComponentRed ColorComponentFlags = C.VK_COLOR_COMPONENT_R_BIT
	// ColorComponentGreen specifies that the G value is written to the color attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html
	ColorComponentGreen ColorComponentFlags = C.VK_COLOR_COMPONENT_G_BIT
	// ColorComponentBlue specifies that the B value is written to the color attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html
	ColorComponentBlue ColorComponentFlags = C.VK_COLOR_COMPONENT_B_BIT
	// ColorComponentAlpha specifies that the A value is written to the color attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkColorComponentFlagBits.html
	ColorComponentAlpha ColorComponentFlags = C.VK_COLOR_COMPONENT_A_BIT
)

func (ColorComponentFlags) String

func (c ColorComponentFlags) String() string

type CommandBuffer

type CommandBuffer interface {
	// Handle is the internal Vulkan object handle for this CommandBuffer
	Handle() driver.VkCommandBuffer
	// Driver is the vulkan wrapper driver used by this CommandBuffer
	Driver() driver.Driver
	// DeviceHandle is the internal Vulkan object handle for the Device this CommandBuffer belongs to
	DeviceHandle() driver.VkDevice
	// CommandPoolHandle is the internal Vulkan object handle for the CommandPool used to allocate
	// this CommandBuffer
	CommandPoolHandle() driver.VkCommandPool
	// APIVersion is the maximum Vulkan API version supported by this CommandBuffer. If it is at
	// least vulkan 1.1, core1_1.PromoteCommandBuffer can be used to promote this to a core1_1.CommandBuffer,
	// etc.
	APIVersion() common.APIVersion

	// Free frees this command buffer and usually returns the underlying memory to the CommandPool
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeCommandBuffers.html
	Free()
	// Begin starts recording on this CommandBuffer
	//
	// o - Defines additional information about how the CommandBuffer begins recording
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkBeginCommandBuffer.html
	Begin(o CommandBufferBeginInfo) (common.VkResult, error)
	// End finishes recording on this command buffer
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEndCommandBuffer.html
	End() (common.VkResult, error)
	// Reset returns this CommandBuffer to its initial state
	//
	// flags - Options controlling the reset operation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetCommandBuffer.html
	Reset(flags CommandBufferResetFlags) (common.VkResult, error)
	// CommandsRecorded returns the number of commands recorded to this CommandBuffer since the last time
	// Begin was called
	CommandsRecorded() int
	// DrawsRecorded returns the number of draw commands recorded to this CommandBuffer since the last time
	// Begin was called
	DrawsRecorded() int
	// DispatchesRecorded returns the number of dispatch commands recorded to this CommandBuffer since
	// the last time Begin was called
	DispatchesRecorded() int

	// CmdBeginRenderPass begins a new RenderPass
	//
	// contents - Specifies how the commands in the first subpass will be provided
	//
	// o - Specifies the RenderPass to begin an instance of, and the Framebuffer the instance uses
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBeginRenderPass.html
	CmdBeginRenderPass(contents SubpassContents, o RenderPassBeginInfo) error
	// CmdEndRenderPass ends the current RenderPass
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdEndRenderPass.html
	CmdEndRenderPass()
	// CmdBindPipeline binds a pipeline object to this CommandBuffer
	//
	// bindPoint - Specifies to which bind point the Pipeline is bound
	//
	// pipeline - The Pipeline to be bound
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindPipeline.html
	CmdBindPipeline(bindPoint PipelineBindPoint, pipeline Pipeline)
	// CmdDraw draws primitives without indexing the vertices
	//
	// vertexCount - The number of vertices to draw
	//
	// instanceCount - The number of instances to draw
	//
	// firstVertex - The index of the first vertex to draw
	//
	// firstInstance - The instance ID of the first instance to draw
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDraw.html
	CmdDraw(vertexCount, instanceCount int, firstVertex, firstInstance uint32)
	// CmdDrawIndexed draws primitives with indexed vertices
	//
	// indexCount - The number of vertices to draw
	//
	// instanceCount - The number of instances to draw
	//
	// firstIndex - The base index within the index Buffer
	//
	// vertexOffset - The value added to the vertex index before indexing into the vertex Buffer
	//
	// firstInstance - The instance ID of the first instance to draw
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawIndexed.html
	CmdDrawIndexed(indexCount, instanceCount int, firstIndex uint32, vertexOffset int, firstInstance uint32)
	// CmdBindVertexBuffers binds vertex Buffers to this CommandBuffer
	//
	// firstBinding - The index of the first input binding whose state is updated by the command
	//
	// buffers - A slice of Buffer objects
	//
	// bufferOffsets - A slice of Buffer offsets
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindVertexBuffers.html
	CmdBindVertexBuffers(firstBinding int, buffers []Buffer, bufferOffsets []int)
	// CmdBindIndexBuffer binds an index Buffer to this CommandBuffer
	//
	// buffer - The Buffer being bound
	//
	// offset - The starting offset in bytes within Buffer, used in index Buffer address calculations
	//
	// indexType - Specifies the size of the indices
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindIndexBuffer.html
	CmdBindIndexBuffer(buffer Buffer, offset int, indexType IndexType)
	// CmdCopyBuffer copies data between Buffer regions
	//
	// srcBuffer - The source Buffer
	//
	// dstBuffer - The destination Buffer
	//
	// copyRegions - A slice of structures specifying the regions to copy
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBuffer.html
	CmdCopyBuffer(srcBuffer Buffer, dstBuffer Buffer, copyRegions []BufferCopy) error
	// CmdBindDescriptorSets binds DescriptorSets to this CommandBuffer
	//
	// bindPoint - Indicates the type of the pipeline that will use the descriptors
	//
	// layout - A PipelineLayout object used to program the bindings
	//
	// sets - A slice of DescriptorSet objects describing the DescriptorSets to bind
	//
	// dynamicOffsets - A slice of values specifying dynamic offsets
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBindDescriptorSets.html
	CmdBindDescriptorSets(bindPoint PipelineBindPoint, layout PipelineLayout, sets []DescriptorSet, dynamicOffsets []int)
	// CmdPipelineBarrier inserts a memory dependency into the recorded commands
	//
	// srcStageMask - Specifies the source stages
	//
	// dstStageMask - Specifies the destination stages
	//
	// dependencies - Specifies how execution and memory dependencies are formed
	//
	// memoryBarriers - A slice of MemoryBarrier structures
	//
	// bufferMemoryBarriers - A slice of BufferMemoryBarrier structures
	//
	// imageMemoryBarriers - A slice of ImageMemoryBarrier structures
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdPipelineBarrier.html
	CmdPipelineBarrier(srcStageMask, dstStageMask PipelineStageFlags, dependencies DependencyFlags, memoryBarriers []MemoryBarrier, bufferMemoryBarriers []BufferMemoryBarrier, imageMemoryBarriers []ImageMemoryBarrier) error
	// CmdCopyBufferToImage copies data from a Buffer to an Image
	//
	// buffer - The source buffer
	//
	// image - The destination Image
	//
	// layout - The layout of the destination Image subresources for the copy
	//
	// regions - A slice of BufferImageCopy structures specifying the regions to copy
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyBufferToImage.html
	CmdCopyBufferToImage(buffer Buffer, image Image, layout ImageLayout, regions []BufferImageCopy) error
	// CmdBlitImage copies regions of an Image, potentially performing format conversion
	//
	// sourceImage - The source Image
	//
	// sourceImageLayout - The layout of the source Image subresources for the blit
	//
	// destinationImage - The destination Image
	//
	// destinationImageLayout - The layout of the destination Image subresources for the blit
	//
	// regions - A slice of ImageBlit structures specifying the regions to blit
	//
	// filter - Specifies the filter to apply if the blits require scaling
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBlitImage.html
	CmdBlitImage(sourceImage Image, sourceImageLayout ImageLayout, destinationImage Image, destinationImageLayout ImageLayout, regions []ImageBlit, filter Filter) error
	// CmdPushConstants updates the values of push constants
	//
	// layout - The pipeline layout used to program the push constant updates
	//
	// stageFlags - Specifies the shader stages that will use the push constants in the updated range
	//
	// offset - The start offset of the push constant range to update, in units of bytes
	//
	// valueBytes - A slice of bytes containing the new push constant values
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdPushConstants.html
	CmdPushConstants(layout PipelineLayout, stageFlags ShaderStageFlags, offset int, valueBytes []byte)
	// CmdSetViewport sets the viewport dynamically for a CommandBuffer
	//
	// viewports - A slice of Viewport structures specifying viewport parameters
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetViewport.html
	CmdSetViewport(viewports []Viewport)
	// CmdSetScissor sets scissor rectangles dynamically for a CommandBuffer
	//
	// scissors - A slice of Rect2D structures specifying scissor rectangles
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetScissor.html
	CmdSetScissor(scissors []Rect2D)
	// CmdCopyImage copies data between Images
	//
	// srcImage - The source Image
	//
	// srcImageLayout - The current layout of the source Image subresource
	//
	// dstImage - The destination Image
	//
	// dstImageLayout - The current layout of the destination Image subresource
	//
	// regions - A slice of ImageCopy structures specifying the regions to copy
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImage.html
	CmdCopyImage(srcImage Image, srcImageLayout ImageLayout, dstImage Image, dstImageLayout ImageLayout, regions []ImageCopy) error
	// CmdNextSubpass transitions to the next subpass of a RenderPass
	//
	// contents - Specifies how the commands in the next subpass will be provided
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdNextSubpass.html
	CmdNextSubpass(contents SubpassContents)
	// CmdWaitEvents waits for one or more events and inserts a set of memory
	//
	// events - A slice of Event objects to wait on
	//
	// srcStageMask - Specifies the source stage mask
	//
	// dstStageMask - Specifies the destination stage mask
	//
	// memoryBarriers - A slice of MemoryBarrier structures
	//
	// bufferMemoryBarriers - A slice of BufferMemoryBarrier structures
	//
	// imageMemoryBarriers - A slice of ImageMemoryBarrier structures
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdWaitEvents.html
	CmdWaitEvents(events []Event, srcStageMask PipelineStageFlags, dstStageMask PipelineStageFlags, memoryBarriers []MemoryBarrier, bufferMemoryBarriers []BufferMemoryBarrier, imageMemoryBarriers []ImageMemoryBarrier) error
	// CmdSetEvent sets an Event object to the signaled state
	//
	// event - The Event that will be signaled
	//
	// stageMask - Specifies teh source stage mask used to determine the first synchronization scope
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetEvent.html
	CmdSetEvent(event Event, stageMask PipelineStageFlags)
	// CmdClearColorImage clears regions of a color Image
	//
	// image - The Image to be cleared
	//
	// imageLayout - Specifies the current layout of the Image subresource ranges to be cleared
	//
	// color - A ClearColorValue containing the values that the Image subresource ranges will be cleared to
	//
	// ranges - A slice of ImageSubresourceRange structures describing a range of mipmap levels, array layers,
	// and aspects to be cleared.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdClearColorImage.html
	CmdClearColorImage(image Image, imageLayout ImageLayout, color ClearColorValue, ranges []ImageSubresourceRange)
	// CmdResetQueryPool resets queries in a QueryPool
	//
	// queryPool - The QueryPool managing the queries being reset
	//
	// startQuery - The initial query index to reset
	//
	// queryCount - The number of queries to reset
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdResetQueryPool.html
	CmdResetQueryPool(queryPool QueryPool, startQuery, queryCount int)
	// CmdBeginQuery begins a query
	//
	// queryPool - The QueryPool that will manage the results of the query
	//
	// query - The query index within the QueryPool that will contain the results
	//
	// flags - Specifies constraints on the types of queries that can be performed
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdBeginQuery.html
	CmdBeginQuery(queryPool QueryPool, query int, flags QueryControlFlags)
	// CmdEndQuery ends a query
	//
	// queryPool - The QueryPool that is managing the results of the query
	//
	// query - The query index within the QueryPool where the result is stored
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdEndQuery.html
	CmdEndQuery(queryPool QueryPool, query int)
	// CmdCopyQueryPoolResults copies the results of queries in a QueryPool to a Buffer object
	//
	// queryPool - The QueryPool managing the queries containing the desired results
	//
	// firstQuery - The initial query index
	//
	// queryCount - The number of queries
	//
	// dstBuffer - A Buffer object that will receive the results of the copy command
	//
	// dstOffset - An offset into the destination Buffer
	//
	// stride - The stride in bytes between the results for individual queries within the destination Buffer
	//
	// flags - Specifies how and when results are returned
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyQueryPoolResults.html
	CmdCopyQueryPoolResults(queryPool QueryPool, firstQuery, queryCount int, dstBuffer Buffer, dstOffset, stride int, flags QueryResultFlags)
	// CmdExecuteCommands executes a secondary CommandBuffer from a primary CommandBuffer
	//
	// commandBuffers - A slice of CommandBuffer objects, which are recorded to execute in the primary CommandBuffer
	// in the order they are listed in the slice
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdExecuteCommands.html
	CmdExecuteCommands(commandBuffers []CommandBuffer)
	// CmdClearAttachments clears regions within bound Framebuffer attachments
	//
	// attachments - A slice of ClearAttachment structures defining the attachments to clear and the clear values to use.
	//
	// rects - A slice of ClearRect structures defining regions within each selected attachment to clear
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdClearAttachments.html
	CmdClearAttachments(attachments []ClearAttachment, rects []ClearRect) error
	// CmdClearDepthStencilImage fills regions of a combined depth/stencil image
	//
	// image - The Image to be cleared
	//
	// imageLayout - Specifies the current layout of the Image subresource ranges to be cleared
	//
	// depthStencil - Contains the values that the depth and stencil images will be cleared to
	//
	// ranges - A slice of ImageSubrsourceRange structures describing a range of mipmap levels, array layers,
	// and aspects to be cleared
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdClearDepthStencilImage.html
	CmdClearDepthStencilImage(image Image, imageLayout ImageLayout, depthStencil *ClearValueDepthStencil, ranges []ImageSubresourceRange)
	// CmdCopyImageToBuffer copies image data into a buffer
	//
	// srcImage - The source Image
	//
	// srcImageLayout - The layout of the source Image subresources for the copy
	//
	// dstBuffer - The desination Buffer
	//
	// regions - A slice of BufferImageCopy structures specifying the regions to copy
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdCopyImageToBuffer.html
	CmdCopyImageToBuffer(srcImage Image, srcImageLayout ImageLayout, dstBuffer Buffer, regions []BufferImageCopy) error
	// CmdDispatch dispatches compute work items
	//
	// groupCountX - the number of local workgroups to dispatch in the X dimension
	//
	// groupCountY - the number of local workgroups to dispatch in the Y dimension
	//
	// groupCountZ - the number of local workgroups to dispatch in the Z dimension
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDispatch.html
	CmdDispatch(groupCountX, groupCountY, groupCountZ int)
	// CmdDispatchIndirect dispatches compute work items with indirect parameters
	//
	// buffer - The Buffer containing dispatch parameters
	//
	// offset - The byte offset into the Buffer where parameters begin
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDispatchIndirect.html
	CmdDispatchIndirect(buffer Buffer, offset int)
	// CmdDrawIndexedIndirect draws primitives with indirect parameters and indexed vertices
	//
	// buffer - The Buffer containing draw parameters
	//
	// offset - The byte offset into the Buffer where parameters begin
	//
	// drawCount - The number of draws to execute, which can be zero
	//
	// stride - The byte stride between successive sets of draw parameters
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawIndexedIndirect.html
	CmdDrawIndexedIndirect(buffer Buffer, offset int, drawCount, stride int)
	// CmdDrawIndirect draws primitives with indirect parameters
	//
	// buffer - The buffer containing draw parameters
	//
	// offset - The byte offset into the Buffer where parameters begin
	//
	// drawCount - The number of draws to execute, which can be zero
	//
	// stride - The byte stride between successive sets of draw parameters
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdDrawIndirect.html
	CmdDrawIndirect(buffer Buffer, offset int, drawCount, stride int)
	// CmdFillBuffer fills a region of a buffer with a fixed value
	//
	// dstBuffer - The Buffer to be filled
	//
	// dstOffset - The byte offset into the Buffer at which to start filling, must be a multiple of 4
	//
	// size - The number of bytes to fill
	//
	// data - The 4-byte word written repeatedly to the Buffer to fill size bytes of data.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdFillBuffer.html
	CmdFillBuffer(dstBuffer Buffer, dstOffset int, size int, data uint32)
	// CmdResetEvent resets an Event object to non-signaled state
	//
	// event - The Event that will be unsignaled
	//
	// stageMask - Specifies the source stage mask used to determine when the Event is unsignaled
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdResetEvent.html
	CmdResetEvent(event Event, stageMask PipelineStageFlags)
	// CmdResolveImage resolves regions of an Image
	//
	// srcImage - The source Image
	//
	// srcImageLayout - The layout of the source Image subresources for the resolve
	//
	// dstImage - The destination Image
	//
	// dstImageLayout - The layout of the destination Image subresources for the resolve
	//
	// regions - A slice of ImageResolve structure specifying the regions to resolve
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdResolveImage.html
	CmdResolveImage(srcImage Image, srcImageLayout ImageLayout, dstImage Image, dstImageLayout ImageLayout, regions []ImageResolve) error
	// CmdSetBlendConstants sets the values of the blend constants
	//
	// blendConstants - An array of four values specifying the R, G, B, and A components of the blend
	// color used in blending, depending on the blend factor
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetBlendConstants.html
	CmdSetBlendConstants(blendConstants [4]float32)
	// CmdSetDepthBias sets depth bias factors and clamp dynamically for the CommandBuffer
	//
	// depthBiasConstantFactor - The scalar factor controlling the constant depth value added to each fragment
	//
	// depthBiasClamp - The maximum (or minimum) depth bias of a fragment
	//
	// depthBiasSlopeFactor - The scalar factor applied to a fragment's slope in depth bias calculations
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthBias.html
	CmdSetDepthBias(depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor float32)
	// CmdSetDepthBounds sets depth bounds range dynamically for the CommandBuffer
	//
	// min - The minimum depth bound
	//
	// max - The maximum depth bound
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthBounds.html
	CmdSetDepthBounds(min, max float32)
	// CmdSetLineWidth sets line width dynamically for the CommandBuffer
	//
	// lineWidth - The width of rasterized line segments
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetLineWidth.html
	CmdSetLineWidth(lineWidth float32)
	// CmdSetStencilCompareMask sets the stencil compare mask dynamically for the CommandBuffer
	//
	// faceMask - Specifies the set of stencil state for which to update the compare mask
	//
	// compareMask - The new value to use as the stencil compare mask
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetStencilCompareMask.html
	CmdSetStencilCompareMask(faceMask StencilFaceFlags, compareMask uint32)
	// CmdSetStencilReference sets stencil reference value dynamically for the CommandBuffer
	//
	// faceMask - Specifies the set of stencil state for which to update the reference value
	//
	// reference - The new value to use as the stencil reference value
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetStencilReference.html
	CmdSetStencilReference(faceMask StencilFaceFlags, reference uint32)
	// CmdSetStencilWriteMask sets the stencil write mask dynamically for the CommandBuffer
	//
	// faceMask - Specifies the set of stencil state for which to update the write mask
	//
	// reference - The new value to use as the stencil write mask
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetStencilWriteMask.html
	CmdSetStencilWriteMask(faceMask StencilFaceFlags, writeMask uint32)
	// CmdUpdateBuffer updates a buffer's contents from host memory
	//
	// dstBuffer - The Buffer to be updated
	//
	// dstOffset - The byte offset into the Buffer to start updating, must be a multiple of 4
	//
	// dataSize - The number of bytes to update, must be a multiple of 4
	//
	// data - The source data for the buffer update, must be at least dataSize bytes in size
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdUpdateBuffer.html
	CmdUpdateBuffer(dstBuffer Buffer, dstOffset int, dataSize int, data []byte)
	// CmdWriteTimestamp writes a device timestamp into a query object
	//
	// pipelineStage - Specifies a stage of the pipeline
	//
	// queryPool - The QueryPool that will manage the timestamp
	//
	// query - The query within the QueryPool that will contain the timestamp
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdWriteTimestamp.html
	CmdWriteTimestamp(pipelineStage PipelineStageFlags, queryPool QueryPool, query int)
}

CommandBuffer is an object used to record commands which can be subsequently submitted to a device queue for execution.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandBuffer.html

type CommandBufferAllocateInfo

type CommandBufferAllocateInfo struct {
	// Level specifies the CommandBuffer level
	Level CommandBufferLevel
	// CommandBufferCount is the number of CommandBuffer objects to allocate from the CommandPool
	CommandBufferCount int
	// CommandPool is the CommandPool from which the CommandBuffer objects are allocated
	CommandPool CommandPool

	common.NextOptions
}

CommandBufferAllocateInfo specifies the allocation parameters for the CommandBuffer object

func (CommandBufferAllocateInfo) PopulateCPointer

func (o CommandBufferAllocateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type CommandBufferBeginInfo

type CommandBufferBeginInfo struct {
	// Flags specifies usage behavior for the CommandBuffer
	Flags CommandBufferUsageFlags
	// InheritanceInfo specifies inheritance from the primary to secondary CommandBuffer. If this
	// structure is used with a primary CommandBuffer, then this field is ignored
	InheritanceInfo *CommandBufferInheritanceInfo

	common.NextOptions
}

CommandBufferBeginInfo specifies a CommandBuffer begin operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferBeginInfo.html

func (CommandBufferBeginInfo) PopulateCPointer

func (o CommandBufferBeginInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type CommandBufferInheritanceInfo

type CommandBufferInheritanceInfo struct {
	// Framebuffer refers to the Framebuffer object that the CommandBuffer will be rendering to
	// if it is executed within a RenderPass instance. It can be nil if the Framebuffer is not
	// known.
	Framebuffer Framebuffer
	// RenderPass is a RenderPass object defining which render passes the CommandBuffer will be
	// compatible with and can be executed within
	RenderPass RenderPass
	// Subpass is the index of hte subpass within the RenderPass instance that the CommandBuffer
	// will be executed within
	Subpass int

	// OcclusionQueryEnable specifies whether the CommandBuffer can be executed while an occlusion
	// query is active in the primary CommandBuffer
	OcclusionQueryEnable bool
	// QueryFlags specifies the query flags that can be used by an active occlusion query in the
	// primary CommandBuffer when this secondary CommandBuffer is executed
	QueryFlags QueryControlFlags
	// PipelineStatistics specifies the set of pipeline statistics that can be counted by an
	// active query in the primary CommandBuffer when this secondary CommandBuffer is executed
	PipelineStatistics QueryPipelineStatisticFlags

	common.NextOptions
}

CommandBufferInheritanceInfo specifies CommandBuffer inheritance information

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferInheritanceInfo.html

func (CommandBufferInheritanceInfo) PopulateCPointer

func (o CommandBufferInheritanceInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type CommandBufferLevel

type CommandBufferLevel int32

CommandBufferLevel specifies a CommandBuffer level

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferLevel.html

func (CommandBufferLevel) Register

func (e CommandBufferLevel) Register(str string)

func (CommandBufferLevel) String

func (e CommandBufferLevel) String() string

type CommandBufferResetFlags

type CommandBufferResetFlags int32

CommandBufferResetFlags controls behavior of a CommandBuffer reset

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferResetFlagBits.html

func (CommandBufferResetFlags) Register

func (f CommandBufferResetFlags) Register(str string)

func (CommandBufferResetFlags) String

func (f CommandBufferResetFlags) String() string

type CommandBufferUsageFlags

type CommandBufferUsageFlags int32

CommandBufferUsageFlags specifies usage behavior for a CommandBuffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandBufferUsageFlagBits.html

func (CommandBufferUsageFlags) Register

func (f CommandBufferUsageFlags) Register(str string)

func (CommandBufferUsageFlags) String

func (f CommandBufferUsageFlags) String() string

type CommandCounter

type CommandCounter struct {
	CommandCount  int
	DrawCallCount int
	DispatchCount int
}

CommandCounter stores the number of commands, draws, dispatches, etc. executed since the last time the CommandBuffer was restarted. These are stored in a struct so that different CommandBuffer objects with the same CommandBuffer.Handle can share these counts

type CommandPool

type CommandPool interface {
	// Handle is the internal Vulkan object handle for this CommandPool
	Handle() driver.VkCommandPool
	// DeviceHandle is the internal Vulkan object handle for the Device this CommandPool belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this CommandPool
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this CommandPool. If it is
	// at least Vulkan 1.1, core1_1.PromoteCommandPool can be used to promote this to a core1_1.CommandPool,
	// etc.
	APIVersion() common.APIVersion

	// Destroy destroys the CommandPool object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs
	// it will be invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyCommandPool.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// Reset resets the CommandPool, recycling all the resources from all the CommandBuffer objects
	// allocated from the CommandPool back to the CommandPool.  All CommandBuffer objects that
	// have been allocated from the CommandPool are put in the initial state.
	//
	// flags - Controls the reset operation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetCommandPool.html
	Reset(flags CommandPoolResetFlags) (common.VkResult, error)
}

CommandPool is an opaque object that CommandBuffer memory is allocated from

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkCommandPool.html

type CommandPoolCreateFlags

type CommandPoolCreateFlags int32

CommandPoolCreateFlags specifies usage behavior for a CommandPool

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolCreateFlagBits.html

func (CommandPoolCreateFlags) Register

func (f CommandPoolCreateFlags) Register(str string)

func (CommandPoolCreateFlags) String

func (f CommandPoolCreateFlags) String() string

type CommandPoolCreateInfo

type CommandPoolCreateInfo struct {
	// QueueFamilyIndex designates a queue family. All CommandBuffer objects allocated from this
	// CommandPool must be submitted on queues from the same queue family
	QueueFamilyIndex int
	// Flags indicates usage behavior for the pool and CommandBuffer objects allocated from it
	Flags CommandPoolCreateFlags

	common.NextOptions
}

CommandPoolCreateInfo specifies parameters of a newly-created CommandPool

func (CommandPoolCreateInfo) PopulateCPointer

func (o CommandPoolCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type CommandPoolResetFlags

type CommandPoolResetFlags int32

CommandPoolResetFlags controls behavior of a CommandPool reset

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCommandPoolResetFlagBits.html

func (CommandPoolResetFlags) Register

func (f CommandPoolResetFlags) Register(str string)

func (CommandPoolResetFlags) String

func (f CommandPoolResetFlags) String() string

type CompareOp

type CompareOp int32

CompareOp is comparison operators for depth, stencil, and Sampler operations

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCompareOp.html

func (CompareOp) Register

func (e CompareOp) Register(str string)

func (CompareOp) String

func (e CompareOp) String() string

type ComponentMapping

type ComponentMapping struct {
	// R specifies the component value placed in the R component of the output vector
	R ComponentSwizzle
	// G specifies the component value placed in the G component of the output vector
	G ComponentSwizzle
	// B specifies the component value placed in the B component of the output vector
	B ComponentSwizzle
	// A specifies the component value placed in the A component of the output vector
	A ComponentSwizzle
}

ComponentMapping specifies a color component mapping

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentMapping.html

type ComponentSwizzle

type ComponentSwizzle int32

ComponentSwizzle specifies how a component is swizzled

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComponentSwizzle.html

func (ComponentSwizzle) Register

func (e ComponentSwizzle) Register(str string)

func (ComponentSwizzle) String

func (e ComponentSwizzle) String() string

type ComputePipelineCreateInfo

type ComputePipelineCreateInfo struct {
	// Flags specifies how the Pipeline will be generated
	Flags PipelineCreateFlags
	// Stage describes the compute shader
	Stage PipelineShaderStageCreateInfo
	// Layout is the description of binding locations used by both the Pipeline and DescriptorSet
	// objects used with the Pipeline
	Layout PipelineLayout

	// BasePipeline is a Pipeline to derive from
	BasePipeline Pipeline
	// BasePipelineIndex is an index into the createInfos parameters to use as a Pipeline to derive from
	BasePipelineIndex int

	common.NextOptions
}

ComputePipelineCreateInfo specifies parameters of a newly-created compute Pipeline

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkComputePipelineCreateInfo.html

func (ComputePipelineCreateInfo) PopulateCPointer

func (o ComputePipelineCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type CopyDescriptorSet

type CopyDescriptorSet struct {
	// SrcSet is the source descriptor set
	SrcSet DescriptorSet
	// SrcBinding is the source descriptor binding
	SrcBinding int
	// SrcArrayElement is the source descriptor array element
	SrcArrayElement int

	// DstSet is the destination descriptor set
	DstSet DescriptorSet
	// DstBinding is the destination descriptor binding
	DstBinding int
	// DstArrayElement is the destination descriptor array element
	DstArrayElement int

	// DescriptorCount is number of descriptors to copy from source to destination
	DescriptorCount int

	common.NextOptions
}

CopyDescriptorSet specifies a copy descriptor set operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCopyDescriptorSet.html

func (CopyDescriptorSet) PopulateCPointer

func (o CopyDescriptorSet) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type CullModeFlags

type CullModeFlags int32

CullModeFlags controls triangle culling

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkCullModeFlagBits.html

func (CullModeFlags) Register

func (f CullModeFlags) Register(str string)

func (CullModeFlags) String

func (f CullModeFlags) String() string

type DependencyFlags

type DependencyFlags int32

DependencyFlags specifies how execution and memory dependencies are formed

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDependencyFlagBits.html

func (DependencyFlags) Register

func (f DependencyFlags) Register(str string)

func (DependencyFlags) String

func (f DependencyFlags) String() string

type DescriptorBufferInfo

type DescriptorBufferInfo struct {
	// Buffer is the Buffer resource
	Buffer Buffer
	// Offset is the offset in bytes from the start of Buffer
	Offset int
	// Range is the size in bytes that is used for this descriptor update
	Range int
}

DescriptorBufferInfo specifies descriptor Buffer information

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorBufferInfo.html

type DescriptorImageInfo

type DescriptorImageInfo struct {
	// Sampler is a Sampler object, and is used in descriptor updates for DescriptorTypeSampler and
	// DescriptorTypeCombinedImageSampler descriptors if the binding being update does not use
	// immutable sampler
	Sampler Sampler
	// ImageView is an ImageView object, and is used in descriptor updates for DescriptorTypeSampledImage,
	// DescriptorTypeStorageImage, DescriptorTypeCombinedImageSampler, and DescriptorTypeInputAttachment
	ImageView ImageView
	// ImageLayout is the layout that the Image subresources accessible form ImageView will be in
	// at the time this descriptor is accessed
	ImageLayout ImageLayout
}

DescriptorImageInfo specifies descriptor Image information

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorImageInfo.html

type DescriptorPool

type DescriptorPool interface {
	// Handle is the internal Vulkan object handle for this DescriptorPool
	Handle() driver.VkDescriptorPool
	// DeviceHandle is the internal Vulkan object handle for the Device this DescriptorPool belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this DescriptorPool
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this DescriptorPool. If it is at
	// least Vulkan 1.1, core1_1.PromoteDescriptorPool can be used to promote this to a core1_1.DescriptorPool,
	// etc.
	APIVersion() common.APIVersion

	// Destroy destroys the DescriptorPool object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will
	// be invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyDescriptorPool.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// Reset resets the DescriptorPool and recycles all of the resources from all of the DescriptorSet
	// objects allocated from the DescriptorPool back to the DescriptorPool, and the DescriptorSet
	// objects are implicitly freed.
	//
	// flags - Reserved (always 0)
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetDescriptorPool.html
	Reset(flags DescriptorPoolResetFlags) (common.VkResult, error)
}

DescriptorPool maintains a pool of descriptors, from which DescriptorSet objects are allocated.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorPool.html

type DescriptorPoolCreateFlags

type DescriptorPoolCreateFlags int32

DescriptorPoolCreateFlags specifies parameters of a newly-created DescriptorPool

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorPoolCreateInfo.html

const (
	// DescriptorPoolCreateFreeDescriptorSet specifies that DescriptorSet objects can return their
	// individual allocations to the pool
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorPoolCreateFlagBits.html
	DescriptorPoolCreateFreeDescriptorSet DescriptorPoolCreateFlags = C.VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
)

func (DescriptorPoolCreateFlags) Register

func (f DescriptorPoolCreateFlags) Register(str string)

func (DescriptorPoolCreateFlags) String

func (f DescriptorPoolCreateFlags) String() string

type DescriptorPoolCreateInfo

type DescriptorPoolCreateInfo struct {
	// Flags specifies certain supported operations on the pool
	Flags DescriptorPoolCreateFlags

	// MaxSets is the maximum number of DescriptorSet objects that can be allocated from the pool
	MaxSets int
	// PoolSizes is a slice of DescriptorPoolSize structures, each containing a descriptor type
	// and number of descriptors of that type to be allocated in the pool
	PoolSizes []DescriptorPoolSize

	common.NextOptions
}

DescriptorPoolCreateInfo specifies parameters of a newly-created DescriptorPool

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorPoolCreateInfo.html

func (DescriptorPoolCreateInfo) PopulateCPointer

func (o DescriptorPoolCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type DescriptorPoolResetFlags

type DescriptorPoolResetFlags int32

DescriptorPoolResetFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorPoolResetFlags.html

func (DescriptorPoolResetFlags) Register

func (f DescriptorPoolResetFlags) Register(str string)

func (DescriptorPoolResetFlags) String

func (f DescriptorPoolResetFlags) String() string

type DescriptorPoolSize

type DescriptorPoolSize struct {
	// Type is the type of descriptor
	Type DescriptorType
	// DescriptorCount is the number of descriptors of that type ot allocate
	DescriptorCount int
}

DescriptorPoolSize specifies DescriptorPool size

type DescriptorSet

type DescriptorSet interface {
	// Handle is the internal Vulkan object handle for this DescriptorPool
	Handle() driver.VkDescriptorSet
	// DescriptorPoolHandle is the internal Vulkan object handle for the DescriptorPool this DescriptorSet
	// was allocated from
	DescriptorPoolHandle() driver.VkDescriptorPool
	// DeviceHandle is the internal Vulkan object handle for the Device this DescriptorSet belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this DescriptorSet
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this DescriptorSet. If it is at least
	// Vulkan 1.1, core1_1.PromoteDescriptorSet can be used to promote this to a core1_1.DescriptorSet,
	// etc.
	APIVersion() common.APIVersion

	// Free frees this DescriptorSet
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeDescriptorSets.html
	Free() (common.VkResult, error)
}

DescriptorSet is an opaque object allocated from a DescriptorPool

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetDescriptorPool.html

type DescriptorSetAllocateInfo

type DescriptorSetAllocateInfo struct {
	// DescriptorPool is the pool which the sets will be allocated from
	DescriptorPool DescriptorPool

	// SetLayouts is a slice of DescriptorSetLayout objects, which each member specifying how the
	// corresponding DescriptorSet is allocated
	SetLayouts []DescriptorSetLayout

	common.NextOptions
}

DescriptorSetAllocateInfo specifies the allocation parameters for DescritporSet objects

func (DescriptorSetAllocateInfo) PopulateCPointer

func (o DescriptorSetAllocateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type DescriptorSetLayout

type DescriptorSetLayout interface {
	// Handle is the internal Vulkan object handle for this DescriptorSetLayout
	Handle() driver.VkDescriptorSetLayout
	// DeviceHandle is the internal Vulkan object handle for the Device this DescriptorSetLayout belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this DescriptorSetLayout
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this DescriptorSetLayout. If it is at
	// least Vulkan 1.1, core1_1.PromoteDescriptorSetLayout can be used to promote this to a
	// core1_1.DescriptorSetLayout, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the DescriptorSetLayout object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will
	// be invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyDescriptorSetLayout.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

DescriptorSetLayout is a group of zero or more descriptor bindings definitions.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayout.html

type DescriptorSetLayoutBinding

type DescriptorSetLayoutBinding struct {
	// Binding is the binding number of this entry and corresponds to a resource of the same
	// binding number in the shader stages
	Binding int
	// DescriptorType specifies which type of resource descriptors are used for this binding
	DescriptorType DescriptorType
	// DescriptorCount is the number of descriptors contained in the binding
	DescriptorCount int
	// StageFlags specifies which pipeline shader stages can access a resource for this binding
	StageFlags ShaderStageFlags

	// ImmutableSamplers is a slice of Sampler objects that will be copied into the set layout
	// and used for the corresponding binding.
	ImmutableSamplers []Sampler
}

DescriptorSetLayoutBinding specifies a DescriptorSetLayout binding

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutBinding.html

type DescriptorSetLayoutCreateFlags

type DescriptorSetLayoutCreateFlags int32

DescriptorSetLayoutCreateFlags specifies DescriptorSetLayout properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateFlagBits.html

func (DescriptorSetLayoutCreateFlags) Register

func (f DescriptorSetLayoutCreateFlags) Register(str string)

func (DescriptorSetLayoutCreateFlags) String

type DescriptorSetLayoutCreateInfo

type DescriptorSetLayoutCreateInfo struct {
	// Flags specifies options for DescriptorSetLayout creation
	Flags DescriptorSetLayoutCreateFlags
	// Bindings is a slice of DescriptorSetLayoutBinding structures
	Bindings []DescriptorSetLayoutBinding

	common.NextOptions
}

DescriptorSetLayoutCreateInfo specifies parameters of a newly-created DescriptorSetLayout

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorSetLayoutCreateInfo.html

func (DescriptorSetLayoutCreateInfo) PopulateCPointer

func (o DescriptorSetLayoutCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type DescriptorType

type DescriptorType int32

DescriptorType specifies the type of a descriptor in a DescriptorSet

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html

const (
	// DescriptorTypeSampler specifies a Sampler descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeSampler DescriptorType = C.VK_DESCRIPTOR_TYPE_SAMPLER
	// DescriptorTypeCombinedImageSampler specifies a combined Image Sampler descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeCombinedImageSampler DescriptorType = C.VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
	// DescriptorTypeSampledImage specifies a sampled Image descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeSampledImage DescriptorType = C.VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
	// DescriptorTypeStorageImage specifies a storage Image descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeStorageImage DescriptorType = C.VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
	// DescriptorTypeUniformTexelBuffer specifies a uniform texel Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeUniformTexelBuffer DescriptorType = C.VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
	// DescriptorTypeStorageTexelBuffer specifies a storage texel Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeStorageTexelBuffer DescriptorType = C.VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
	// DescriptorTypeUniformBuffer specifies a uniform Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeUniformBuffer DescriptorType = C.VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
	// DescriptorTypeStorageBuffer specifies a storage Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeStorageBuffer DescriptorType = C.VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
	// DescriptorTypeUniformBufferDynamic specifies a dynamic uniform Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeUniformBufferDynamic DescriptorType = C.VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
	// DescriptorTypeStorageBufferDynamic specifies a dynamic storage Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeStorageBufferDynamic DescriptorType = C.VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
	// DescriptorTypeInputAttachment specifies an input attachment descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDescriptorType.html
	DescriptorTypeInputAttachment DescriptorType = C.VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
)

func (DescriptorType) Register

func (e DescriptorType) Register(str string)

func (DescriptorType) String

func (e DescriptorType) String() string

type Device

type Device interface {
	// Handle is the internal Vulkan object handle for this Device
	Handle() driver.VkDevice
	// Driver is the Vulkan wrapper drive used by this Device
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Device. If it is at least
	// Vulkan 1.1, core1_1.PromoteDevice can be used to promote this to a core1_1.Device, etc.
	APIVersion() common.APIVersion

	// IsDeviceExtensionActive will return true if a Device extension with the provided name was
	// activated on Device creation
	//
	// extensionName - The name of the extension to query
	IsDeviceExtensionActive(extensionName string) bool

	// CreateBuffer creates a new Buffer object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Buffer
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateBuffer.html
	CreateBuffer(allocationCallbacks *driver.AllocationCallbacks, o BufferCreateInfo) (Buffer, common.VkResult, error)
	// CreateBufferView creates a new BufferView object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the BufferView
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateBufferView.html
	CreateBufferView(allocationCallbacks *driver.AllocationCallbacks, o BufferViewCreateInfo) (BufferView, common.VkResult, error)
	// CreateCommandPool creates a new CommandPool object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the CommandPool
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateCommandPool.html
	CreateCommandPool(allocationCallbacks *driver.AllocationCallbacks, o CommandPoolCreateInfo) (CommandPool, common.VkResult, error)
	// CreateDescriptorPool creates a new DescriptorPool object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the DescriptorPool
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDescriptorPool.html
	CreateDescriptorPool(allocationCallbacks *driver.AllocationCallbacks, o DescriptorPoolCreateInfo) (DescriptorPool, common.VkResult, error)
	// CreateDescriptorSetLayout creates a new DescriptorSetLayout object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the DescriptorSetLayout
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDescriptorSetLayout.html
	CreateDescriptorSetLayout(allocationCallbacks *driver.AllocationCallbacks, o DescriptorSetLayoutCreateInfo) (DescriptorSetLayout, common.VkResult, error)
	// CreateEvent creates a new Event object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Event
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateEvent.html
	CreateEvent(allocationCallbacks *driver.AllocationCallbacks, options EventCreateInfo) (Event, common.VkResult, error)
	// CreateFence creates a new Fence object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Fence
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateFence.html
	CreateFence(allocationCallbacks *driver.AllocationCallbacks, o FenceCreateInfo) (Fence, common.VkResult, error)
	// CreateFramebuffer creates a new Framebuffer object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Framebuffer
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateFramebuffer.html
	CreateFramebuffer(allocationCallbacks *driver.AllocationCallbacks, o FramebufferCreateInfo) (Framebuffer, common.VkResult, error)
	// CreateGraphicsPipelines creates a slice of new Pipeline objects which can be used for drawing graphics
	//
	// pipelineCache - A PipelineCache object which can be used to accelerate pipeline creation
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - A slice of GraphicsPipelineCreateInfo structures containing parameters affecting the creation of the Pipeline objects
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateGraphicsPipelines.html
	CreateGraphicsPipelines(pipelineCache PipelineCache, allocationCallbacks *driver.AllocationCallbacks, o []GraphicsPipelineCreateInfo) ([]Pipeline, common.VkResult, error)
	// CreateComputePipelines creates a slice of new Pipeline objects which can be used for dispatching compute workloads
	//
	// pipelineCache - A PipelineCache object which can be used to accelerate pipeline creation
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - A slice of ComputePipelineCreateInfo structures containing parameters affecting the creation of the Pipeline objects
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateComputePipelines.html
	CreateComputePipelines(pipelineCache PipelineCache, allocationCallbacks *driver.AllocationCallbacks, o []ComputePipelineCreateInfo) ([]Pipeline, common.VkResult, error)
	// CreateImage creates a new Image object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Image
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateImage.html
	CreateImage(allocationCallbacks *driver.AllocationCallbacks, options ImageCreateInfo) (Image, common.VkResult, error)
	// CreateImageView creates a new ImageView object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the ImageView
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateImageView.html
	CreateImageView(allocationCallbacks *driver.AllocationCallbacks, o ImageViewCreateInfo) (ImageView, common.VkResult, error)
	// CreatePipelineCache creates a new PipelineCache object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the PipelineCache
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreatePipelineCache.html
	CreatePipelineCache(allocationCallbacks *driver.AllocationCallbacks, o PipelineCacheCreateInfo) (PipelineCache, common.VkResult, error)
	// CreatePipelineLayout creates a new PipelineLayout object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the PipelineLayout
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreatePipelineLayout.html
	CreatePipelineLayout(allocationCallbacks *driver.AllocationCallbacks, o PipelineLayoutCreateInfo) (PipelineLayout, common.VkResult, error)
	// CreateQueryPool creates a new QueryPool object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the QueryPool
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateQueryPool.html
	CreateQueryPool(allocationCallbacks *driver.AllocationCallbacks, o QueryPoolCreateInfo) (QueryPool, common.VkResult, error)
	// CreateRenderPass creates a new RenderPass object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the RenderPass
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateRenderPass.html
	CreateRenderPass(allocationCallbacks *driver.AllocationCallbacks, o RenderPassCreateInfo) (RenderPass, common.VkResult, error)
	// CreateSampler creates a new Sampler object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Sampler
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateSampler.html
	CreateSampler(allocationCallbacks *driver.AllocationCallbacks, o SamplerCreateInfo) (Sampler, common.VkResult, error)
	// CreateSemaphore creates a new Semaphore object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the Semaphore
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateSemaphore.html
	CreateSemaphore(allocationCallbacks *driver.AllocationCallbacks, o SemaphoreCreateInfo) (Semaphore, common.VkResult, error)
	// CreateShaderModule creates a new ShaderModule object
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Parameters affecting the creation of the ShaderModule
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateShaderModule.html
	CreateShaderModule(allocationCallbacks *driver.AllocationCallbacks, o ShaderModuleCreateInfo) (ShaderModule, common.VkResult, error)

	// GetQueue gets a Queue object from the Device
	//
	// queueFamilyIndex - The index of the queue family to which the Queue belongs
	//
	// queueIndex - The index within this queue family of the Queue to retrieve
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDeviceQueue.html
	GetQueue(queueFamilyIndex int, queueIndex int) Queue
	// AllocateMemory allocates DeviceMemory
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// o - Describes the parameters of the allocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAllocateMemory.html
	AllocateMemory(allocationCallbacks *driver.AllocationCallbacks, o MemoryAllocateInfo) (DeviceMemory, common.VkResult, error)
	// FreeMemory frees DeviceMemory. **Warning** after freeing, the DeviceMemory object will continue to
	// exist, but the Vulkan object handle that backs it will be invalid. Do not call further methods
	// on the DeviceMemory object.
	//
	// deviceMemory - The DeviceMemory object to be freed
	//
	// allocationCallbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeMemory.html
	FreeMemory(deviceMemory DeviceMemory, allocationCallbacks *driver.AllocationCallbacks)

	// AllocateCommandBuffers allocates CommandBuffer objects from an existing CommandPool
	//
	// o - Describes parameters of the allocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAllocateCommandBuffers.html
	AllocateCommandBuffers(o CommandBufferAllocateInfo) ([]CommandBuffer, common.VkResult, error)
	// FreeCommandBuffers frees CommandBuffer objects. **Warning** after freeing, these objects will
	// continue to exist, but the Vulkan object handles that back them will be invalid. Do not call
	// further methods on these objects.
	//
	// buffers - A slice of CommandBuffer objects to free
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeCommandBuffers.html
	FreeCommandBuffers(buffers []CommandBuffer)
	// AllocateDescriptorSets allocates one or more DescriptorSet objects from a DescriptorPool
	//
	// o - Describes the parameters of the allocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkAllocateDescriptorSets.html
	AllocateDescriptorSets(o DescriptorSetAllocateInfo) ([]DescriptorSet, common.VkResult, error)
	// FreeDescriptorSets frees one or more DescriptorSet objects. **Warning** after freeing, these objects
	// will continue to exist, but the Vulkan object handles that back them will be invalid. Do not call
	// further methods on these objects.
	//
	// sets - A slice of DescriptorSet objects to free
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeDescriptorSets.html
	FreeDescriptorSets(sets []DescriptorSet) (common.VkResult, error)

	// Destroy destroys a logical Device object.  **Warning** after destruction, this object will continue
	// to exist, but the Vulkan object handle that backs it will be invalid. Do not call further methods
	// on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyDevice.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// WaitIdle waits for the Device to become idle
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDeviceWaitIdle.html
	WaitIdle() (common.VkResult, error)
	// WaitForFences waits for one or more Fence objects to become signaled
	//
	// waitForAll - If true, then the call will wait until all fences in `fences` are signaled. If
	// false, the call will wait until any fence in `fences` is signaled.
	//
	// timeout - How long to wait before returning VKTimeout. May be common.NoTimeout to wait indefinitely.
	// The timeout is adjusted to the closest value allowed by the implementation timeout accuracy,
	// which may be substantially longer than the requested timeout.
	//
	// fences - A slice of Fence objects to wait for
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkWaitForFences.html
	WaitForFences(waitForAll bool, timeout time.Duration, fences []Fence) (common.VkResult, error)
	// ResetFences resets one or more objects to the unsignaled state
	//
	// fences - A slice of Fence objects to reset
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetFences.html
	ResetFences(fences []Fence) (common.VkResult, error)
	// UpdateDescriptorSets updates the contents of one or more DescriptorSet objects
	//
	// writes - A slice of WriteDescriptorSet structures describing the DescriptorSet objects to
	// write to
	//
	// copies - A slice of CopyDescriptorSet structures describing the DescriptorSet objects to
	// copy between
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkUpdateDescriptorSets.html
	UpdateDescriptorSets(writes []WriteDescriptorSet, copies []CopyDescriptorSet) error
	// FlushMappedMemoryRanges flushes one or more mapped memory ranges
	//
	// ranges - A slice of MappedMemoryRange structures describing the memory ranges to flush
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFlushMappedMemoryRanges.html
	FlushMappedMemoryRanges(ranges []MappedMemoryRange) (common.VkResult, error)
	// InvalidateMappedMemoryRanges invalidates one or more mapped memory ranges
	//
	// ranges - A slice of MappedMemoryRange structures describing the memory ranges to invalidate
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkInvalidateMappedMemoryRanges.html
	InvalidateMappedMemoryRanges(ranges []MappedMemoryRange) (common.VkResult, error)
}

Device represents a logical device on the host

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDevice.html

type DeviceCreateFlags

type DeviceCreateFlags int32

DeviceCreateFlags is reserved for future use

func (DeviceCreateFlags) Register

func (f DeviceCreateFlags) Register(str string)

func (DeviceCreateFlags) String

func (f DeviceCreateFlags) String() string

type DeviceCreateInfo

type DeviceCreateInfo struct {
	// Flags is reserved for future use
	Flags DeviceCreateFlags
	// QueueCreateInfos is a slice of DeviceQueueCreateInfo structures describing the Queue objects
	// that are requested to be created along with the logical Device
	QueueCreateInfos []DeviceQueueCreateInfo
	// EnabledFeatures contains boolean indicators of all the features to be enabled
	EnabledFeatures *PhysicalDeviceFeatures
	// EnabledExtensionNames is a slice of strings containing the names of extensions to enable
	// for the created Device
	EnabledExtensionNames []string

	common.NextOptions
}

DeviceCreateInfo specifies parameters of a newly-created Device

func (DeviceCreateInfo) PopulateCPointer

func (o DeviceCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type DeviceMemory

type DeviceMemory interface {
	// Handle is the internal Vulkan object handle for this DeviceMemory
	Handle() driver.VkDeviceMemory
	// DeviceHandle is the internal Vulkan object handle for the Device this DeviceMemory belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this DeviceMemory
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this DeviceMemory. If it is at least
	// Vulkan 1.1, core1_1.PromoteDeviceMemory can be used to promote this to a core1_1.DeviceMemory,
	// etc.
	APIVersion() common.APIVersion

	// Map maps a memory object into application address space
	//
	// offset - A zero-based byte offset from the beginning of the memory object
	//
	// size - The size of the memory range to map, or -1 to map from offset to the end of the
	// allocation
	//
	// flags - Reserved (always 0)
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkMapMemory.html
	Map(offset int, size int, flags MemoryMapFlags) (unsafe.Pointer, common.VkResult, error)
	// Unmap unmaps a previously-mapped memory object
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkUnmapMemory.html
	Unmap()
	// Free frees the DeviceMemory. **Warning** after freeing, this object will continue to exist,
	// but the Vulkan object handle that backs it will be invalid. Do not call further methods on
	// this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFreeMemory.html
	Free(callbacks *driver.AllocationCallbacks)
	// Commitment returns the current number of bytes currently committed to this DeviceMemory
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDeviceMemoryCommitment.html
	Commitment() int
	// FlushAll flushes all mapped memory ranges in this DeviceMemory
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkFlushMappedMemoryRanges.html
	FlushAll() (common.VkResult, error)
	// InvalidateAll invalidates all mapped memory ranges in this DeviceMemory
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkInvalidateMappedMemoryRanges.html
	InvalidateAll() (common.VkResult, error)
}

DeviceMemory represents a block of memory on the device

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDeviceMemory.html

type DeviceQueueCreateFlags

type DeviceQueueCreateFlags int32

DeviceQueueCreateFlags specifies behavior of a Queue

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateFlagBits.html

func (DeviceQueueCreateFlags) Register

func (f DeviceQueueCreateFlags) Register(str string)

func (DeviceQueueCreateFlags) String

func (f DeviceQueueCreateFlags) String() string

type DeviceQueueCreateInfo

type DeviceQueueCreateInfo struct {
	// Flags indicates behavior of the Queue objects
	Flags DeviceQueueCreateFlags
	// QueueFamilyIndex indicates the index of the Queue family in which to create the Queue objects
	// on this Device
	QueueFamilyIndex int
	// QueuePriorities is a slice of normalized floating point values, specifying priorities of work
	// that will be submitted to each created queue
	QueuePriorities []float32

	common.NextOptions
}

DeviceQueueCreateInfo specifies parameters of a newly-created Device Queue

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDeviceQueueCreateInfo.html

func (DeviceQueueCreateInfo) PopulateCPointer

func (o DeviceQueueCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type DynamicState

type DynamicState int32

DynamicState indicates which dynamic state is taken from dynamic state commands

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html

const (
	// DynamicStateViewport specifies that PipelineViewportStateCreateInfo.Viewports will be ignored
	// and must be set dynamically with CommandBuffer.CmdSetViewport before any drawing commands
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateViewport DynamicState = C.VK_DYNAMIC_STATE_VIEWPORT
	// DynamicStateScissor specifies that PipelineViewportStateCreateInfo.Scissors will be ignored
	// and must be set dynamically with CommandBuffer.CmdSetScissor before any drawing commands
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateScissor DynamicState = C.VK_DYNAMIC_STATE_SCISSOR
	// DynamicStateLineWidth specifies that PipelineRasterizationStateCreateInfo.LineWidth
	// will be ignored and must be set dynamically with CommandBuffer.CmdSetLineWidth before any
	// drawing commands
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateLineWidth DynamicState = C.VK_DYNAMIC_STATE_LINE_WIDTH
	// DynamicStateDepthBias specifies that PipelineRasterizationStateCreateInfo.DepthBiasConstantFactor,
	// PipelineRasterizationStateCreateInfo.DepthBiasClamp, and PipelineRasterizationStateCreateInfo.DepthBiasSlopeFactor
	// will be ignored and must be set dynamically with CommandBuffer.CmdSetDepthBias before any
	// draws are performed with PipelineRasterizationStateCreateInfo.DepthBiasEnabled set to true
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateDepthBias DynamicState = C.VK_DYNAMIC_STATE_DEPTH_BIAS
	// DynamicStateBlendConstants specifies that PipelineColorBlendStateCreateInfo.BlendConstants
	// will be ignored and must be set dynamically with CommandBuffer.CmdSetBlendConstants before
	// any draws are performed with PipelineColorBlendAttachmentState.BlendEnabled set to true
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateBlendConstants DynamicState = C.VK_DYNAMIC_STATE_BLEND_CONSTANTS
	// DynamicStateDepthBounds specifies that PipelineDepthStencilStateCreateInfo.MinDepthBounds and
	// PipelineDepthStencilStateCreateInfo.MaxDepthBounds will be ignored and must be set dynamically
	// with CommandBuffer.CmdSetDepthBounds before any draws are performed with
	// PipelineDepthStencilStateCreateInfo.DepthBoundsTestEnable set to true
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateDepthBounds DynamicState = C.VK_DYNAMIC_STATE_DEPTH_BOUNDS
	// DynamicStateStencilCompareMask specifies that PipelineDepthStencilStateCreateInfo.Front.CompareMask and
	// PipelineDepthStencilStateCreateInfo.Back.CompareMask will be ignored and must be set dynamically with
	// CommandBuffer.CmdSetStencilCompareMask before any draws are performed with
	// PipelineDepthStencilStateCreateInfo.StencilTestEnable set to true
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateStencilCompareMask DynamicState = C.VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
	// DynamicStateStencilWriteMask specifies that
	// PipelineDepthStencilStateCreateInfo.Front.WriteMask and PipelineDepthStencilStateCreateInfo.Back.WriteMask
	// will be ignored and must be set dynamically with CommandBuffer.CmdSetStencilWriteMask before any draws
	// are performed with PipelineDepthStencilStateCreateInfo.StencilTestEnable
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateStencilWriteMask DynamicState = C.VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
	// DynamicStateStencilReference specifies that PipelineDepthStencilStateCreateInfo.Front.Reference
	// and PipelineDepthStencilStateCreateInfo.Back.Reference must be set dynamically with
	// CommandBuffer.CmdSetStencilReference before any draws are performed with
	// PipelineDepthStencilStateCreateInfo.StencilTestEnable set to true
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkDynamicState.html
	DynamicStateStencilReference DynamicState = C.VK_DYNAMIC_STATE_STENCIL_REFERENCE
)

func (DynamicState) Register

func (e DynamicState) Register(str string)

func (DynamicState) String

func (e DynamicState) String() string

type Event

type Event interface {
	// Handle is the internal Vulkan object handle for this Event
	Handle() driver.VkEvent
	// DeviceHandle is the internal Vulkan object handle for the Device this Event belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Event
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Event. If it is at least Vulkan
	// 1.1, core1_1.PromoteEvent can be used to promote this to a core1_1.Event, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the Event and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid.
	// Do not call further methods on this object.
	Destroy(callbacks *driver.AllocationCallbacks)
	// Set sets this Event to the signaled state
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkSetEvent.html
	Set() (common.VkResult, error)
	// Reset sets this Event to the unsignaled state
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetEvent.html
	Reset() (common.VkResult, error)
	// Status retrieves the status of this Event
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetEventStatus.html
	Status() (common.VkResult, error)
}

Event is a synchronization primitive that can be used to insert fine-grained dependencies between commands submitted to the same queue, or between the host and a queue.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkEvent.html

type EventCreateFlags

type EventCreateFlags int32

EventCreateFlags represents event creation flag bits

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkEventCreateFlagBits.html

func (EventCreateFlags) Register

func (f EventCreateFlags) Register(str string)

func (EventCreateFlags) String

func (f EventCreateFlags) String() string

type EventCreateInfo

type EventCreateInfo struct {
	// Flags defines additional creation parameters
	Flags EventCreateFlags

	common.NextOptions
}

EventCreateInfo specifies parameters of a newly-created Event

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkEventCreateInfo.html

func (EventCreateInfo) PopulateCPointer

func (o EventCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ExtensionProperties

type ExtensionProperties struct {
	// ExtensionName is a string which is the name of the extension
	ExtensionName string
	// SpecVersion is the version of this extension
	SpecVersion uint
}

ExtensionProperties specifies an extension's properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExtensionProperties.html

type Extent2D

type Extent2D struct {
	// Width is the width of the extent
	Width int
	// Height is the height of the extent
	Height int
}

Extent2D specifies a two-dimensional extent

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExtent2D.html

type Extent3D

type Extent3D struct {
	// Width is the width of the extent
	Width int
	// Height is the height of the extent
	Height int
	// Depth is the depth of the extent
	Depth int
}

Extent3D specifies a three-dimensional extent

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkExtent3D.html

type Fence

type Fence interface {
	// Handle is the internal Vulkan object handle for this Fence
	Handle() driver.VkFence
	// DeviceHandle is the internal Vulkan object handle for the Device this Fence belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Fence
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Fence. If it is at least
	// Vulkan 1.1, core1_1.PromoteFence can be used to promote this to a core1_1.Fence, etc.
	APIVersion() common.APIVersion

	// Destroy destroys this Fence object and the underlying structures.  **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid.
	// Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocatoin
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyFence.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// Wait waits for this fence to become signaled
	//
	// timeout - How long to wait before returning VKTimeout. May be common.NoTimeout to wait indefinitely.
	// The timeout is adjusted to the closest value allowed by the implementation timeout accuracy,
	// which may be substantially longer than the requested timeout.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkWaitForFences.html
	Wait(timeout time.Duration) (common.VkResult, error)
	// Reset resets this Fence object to the unsignaled state
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkResetFences.html
	Reset() (common.VkResult, error)
	// Status returns the status of this Fence
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetFenceStatus.html
	Status() (common.VkResult, error)
}

Fence is a synchronization primitive that can be used to insert a dependency from a queue to the host.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFence.html

type FenceCreateFlags

type FenceCreateFlags int32

FenceCreateFlags specifies initial state and behavior of a Fence

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceCreateFlagBits.html

const (
	// FenceCreateSignaled specifies that the Fence object is created in the signaled state
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceCreateFlagBits.html
	FenceCreateSignaled FenceCreateFlags = C.VK_FENCE_CREATE_SIGNALED_BIT
)

func (FenceCreateFlags) Register

func (f FenceCreateFlags) Register(str string)

func (FenceCreateFlags) String

func (f FenceCreateFlags) String() string

type FenceCreateInfo

type FenceCreateInfo struct {
	// Flags specifies the initial state and behavior of the Fence
	Flags FenceCreateFlags

	common.NextOptions
}

FenceCreateInfo specifies parameters of a newly-created Fence

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFenceCreateInfo.html

func (FenceCreateInfo) PopulateCPointer

func (o FenceCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type Filter

type Filter int32

Filter specifies filters to use for texture lookups

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFilter.html

func (Filter) Register

func (e Filter) Register(str string)

func (Filter) String

func (e Filter) String() string

type Format

type Format int32

Format specifies available image formats

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html

const (
	// FormatUndefined specifies that the format is not specified
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatUndefined Format = C.VK_FORMAT_UNDEFINED
	// FormatR4G4UnsignedNormalizedPacked specifies a two-comonent, 8-bit packed unsigned
	// normalized format that has a 4-bit R components in bits 4..7 and a 4-bit G component
	// in bits 0..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR4G4UnsignedNormalizedPacked Format = C.VK_FORMAT_R4G4_UNORM_PACK8

	// FormatR4G4B4A4UnsignedNormalizedPacked specifies a four-component, 16-bit packed unsigned
	// normalized format that has a 4-bit R component in bits 12..15, a 4-bit G component in bits
	// 8..11, a 4-bit B comonent in bits 4..7, and a 4-bit A component in bits 0..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR4G4B4A4UnsignedNormalizedPacked Format = C.VK_FORMAT_R4G4B4A4_UNORM_PACK16
	// FormatB4G4R4A4UnsignedNormalizedPacked specifies a four-component 16-bit packed unsigned
	// normalized format that has a 4-bit B component in bits 12..15, a 4-bit G component in bits
	// 8..11, a 4-bit R component in bits 4..7, and a 4-bit A component in bits 0..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB4G4R4A4UnsignedNormalizedPacked Format = C.VK_FORMAT_B4G4R4A4_UNORM_PACK16
	// FormatR5G6B5UnsignedNormalizedPacked specifies a three-component, 16-bit packed unsigned
	// normalized format that has a 5-bit R component in bits 11..15, a 6-bit G component in bits
	// 5..10, and a 5-bit B component in bits 0..4
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR5G6B5UnsignedNormalizedPacked Format = C.VK_FORMAT_R5G6B5_UNORM_PACK16
	// FormatB5G6R5UnsignedNormalizedPacked specifies a three-component, 16-bit packed unsigned
	// normalized format that has a 5-bit B component in bits 11..15, a 6-bit G component in bits
	// 5..10, and a 5-bit R component in bits 0..4
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB5G6R5UnsignedNormalizedPacked Format = C.VK_FORMAT_B5G6R5_UNORM_PACK16
	// FormatR5G5B5A1UnsignedNormalizedPacked specifies a four-component, 16-bit packed unsigned
	// normalized format that has a 5-bit R component in bits 11..15, a 5-bit G component in bits
	// 6..10 a 5-bit B component in bits 1..5, and a 1-bit A component in bit 0.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR5G5B5A1UnsignedNormalizedPacked Format = C.VK_FORMAT_R5G5B5A1_UNORM_PACK16
	// FormatB5G5R5A1UnsignedNormalizedPacked specifies a four-component, 16-bit packed unsigned
	// normalized format that has a 5-bit B component inb its 11..15, a 5-bit G comonent in bits 6..10,
	// a 5-bit R component in bits 1..5, and a 1-bit A component in bit 0.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB5G5R5A1UnsignedNormalizedPacked Format = C.VK_FORMAT_B5G5R5A1_UNORM_PACK16
	// FormatA1R5G5B5UnsignedNormalizedPacked specifies a four-component, 16-bit packed unsigned
	// normalized format that has a 1-bit A component in bit 15, a 5-bit R component in bits 10..14,
	// a 5-bit G component in bits 5..9, and a 5-bit B component in bits 0..4
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA1R5G5B5UnsignedNormalizedPacked Format = C.VK_FORMAT_A1R5G5B5_UNORM_PACK16

	// FormatR8UnsignedNormalized specifies a one-component, 8-bit unsigned normalized format that has
	// a single 8-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8UnsignedNormalized Format = C.VK_FORMAT_R8_UNORM
	// FormatR8SignedNormalized specifies a one-component, 8-bit signed normalized format that has a
	// single 8-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8SignedNormalized Format = C.VK_FORMAT_R8_SNORM
	// FormatR8UnsignedScaled specifies a one-component, 8-bit unsigned scaled integer format that
	// has a single 8-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8UnsignedScaled Format = C.VK_FORMAT_R8_USCALED
	// FormatR8SignedScaled specifies a one-component, 8-bit signed scaled integer format that has a
	// single 8-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8SignedScaled Format = C.VK_FORMAT_R8_SSCALED
	// FormatR8UnsignedInt specifies a one-component, 8-bit unsigned integer format that has a single
	// 8-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8UnsignedInt Format = C.VK_FORMAT_R8_UINT
	// FormatR8SignedInt specifies a one-component, 8-bit signed integer format that has a single
	// 8-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8SignedInt Format = C.VK_FORMAT_R8_SINT
	// FormatR8SRGB specifies a one-component, 8-bit unsigned normalized format that has a single
	// 8-bit R component stored with sRGB nonlinear encoding
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8SRGB Format = C.VK_FORMAT_R8_SRGB

	// FormatR8G8UnsignedNormalized specifies a two-component, 16-bit unsigned normalized format
	// that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8UnsignedNormalized Format = C.VK_FORMAT_R8G8_UNORM
	// FormatR8G8SignedNormalized specifies a two-component, 16-bit signed normalized format that
	// has an 8-bit R component in byte 0, and an 8-bit G component in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8SignedNormalized Format = C.VK_FORMAT_R8G8_SNORM
	// FormatR8G8UnsignedScaled specifies a two-component, 16-bit unsigned scaled integer format
	// that has an 8-bit R component in byte 0, and an 8-bit G component in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8UnsignedScaled Format = C.VK_FORMAT_R8G8_USCALED
	// FormatR8G8SignedScaled specifies a two-component, 16-bit signed scaled integer format that
	// has an 8-bit R component in byte 0, and an 8-bit G component in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8SignedScaled Format = C.VK_FORMAT_R8G8_SSCALED
	// FormatR8G8UnsignedInt specifies a two-component, 16-bit unsigned integer format that has an
	// 8-bit R component in byte 0, and an 8-bit G component in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8UnsignedInt Format = C.VK_FORMAT_R8G8_UINT
	// FormatR8G8SignedInt specifies a two-component, 16-bit signed integer format that has an 8-bit
	// R component in byte 0, and an 8-bit G component in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8SignedInt Format = C.VK_FORMAT_R8G8_SINT
	// FormatR8G8SRGB specifies a two-component, 16-bit unsigned normalized function that has an 8-bit
	// R component stored with sRGB nonlinear encoding in byte 0, and an 8-bit G component stored with
	// sRGB nonlinear encoding in byte 1
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8SRGB Format = C.VK_FORMAT_R8G8_SRGB

	// FormatR8G8B8UnsignedNormalized specifies a three-component, 24-bit unsigned normalized format
	// that has an 8-bit R component in byte 0, and 8-bit G component in byte 1, and an 8-bit B
	// component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8UnsignedNormalized Format = C.VK_FORMAT_R8G8B8_UNORM
	// FormatR8G8B8SignedNormalized specifies a three-component, 24-bit signed normalized format that
	// has an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in
	// byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8SignedNormalized Format = C.VK_FORMAT_R8G8B8_SNORM
	// FormatR8G8B8UnsignedScaled specifies a three-component, 24-bit unsigned scaled format that has
	// an 8-bit R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8UnsignedScaled Format = C.VK_FORMAT_R8G8B8_USCALED
	// FormatR8G8B8SignedScaled specifies a three-component, 24-bit signed scaled format that has an 8-bit
	// R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8SignedScaled Format = C.VK_FORMAT_R8G8B8_SSCALED
	// FormatR8G8B8UnsignedInt specifies a three-component, 24-bit unsigned integer format that has an 8-bit
	// R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8UnsignedInt Format = C.VK_FORMAT_R8G8B8_UINT
	// FormatR8G8B8SignedInt  specifies a three-component, 24-bit signed integer format that has an 8-bit
	// R component in byte 0, an 8-bit G component in byte 1, and an 8-bit B component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8SignedInt Format = C.VK_FORMAT_R8G8B8_SINT
	// FormatR8G8B8SRGB specifies a three-component, 24-bit unsigned normalized format that has an 8-bit
	// R component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
	// nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB nonlinear encoding in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8SRGB Format = C.VK_FORMAT_R8G8B8_SRGB

	// FormatB8G8R8UnsignedNormalized specifies a three-component, 24-bit unsigned normalized format that has
	// an 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8UnsignedNormalized Format = C.VK_FORMAT_B8G8R8_UNORM
	// FormatB8G8R8SignedNormalized specifies a three-component, 24-bit signed normalized format that has an 8-bit
	//	// B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8SignedNormalized Format = C.VK_FORMAT_B8G8R8_SNORM
	// FormatB8G8R8UnsignedScaled specifies a three-component, 24-bit unsigned scaled format that has an 8-bit
	// B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8UnsignedScaled Format = C.VK_FORMAT_B8G8R8_USCALED
	// FormatB8G8R8SignedScaled specifies a three-component, 24-bit signed scaled format that has an 8-bit
	// B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8SignedScaled Format = C.VK_FORMAT_B8G8R8_SSCALED
	// FormatB8G8R8UnsignedInt specifies a three-component, 24-bit unsigned integer format that has an
	// 8-bit B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8UnsignedInt Format = C.VK_FORMAT_B8G8R8_UINT
	// FormatB8G8R8SignedInt specifies a three-component, 24-bit signed integer format that has an 8-bit
	// B component in byte 0, an 8-bit G component in byte 1, and an 8-bit R component in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8SignedInt Format = C.VK_FORMAT_B8G8R8_SINT
	// FormatB8G8R8SRGB specifies a three-component, 24-bit unsigned normalized format that has an 8-bit
	// B component stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB
	// nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB nonlinear encoding in byte 2
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8SRGB Format = C.VK_FORMAT_B8G8R8_SRGB

	// FormatR8G8B8A8UnsignedNormalized specifies a four-component, 32-bit unsigned normalized format that
	// has an 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2,
	// and an 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8UnsignedNormalized Format = C.VK_FORMAT_R8G8B8A8_UNORM
	// FormatR8G8B8A8SignedNormalized specifies a four-component, 32-bit signed normalized format that has an
	// 8-bit R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an
	// 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8SignedNormalized Format = C.VK_FORMAT_R8G8B8A8_SNORM
	// FormatR8G8B8A8UnsignedScaled specifies a four-component, 32-bit unsigned scaled format that has an 8-bit
	// R component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
	// component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8UnsignedScaled Format = C.VK_FORMAT_R8G8B8A8_USCALED
	// FormatR8G8B8A8SignedScaled specifies a four-component, 32-bit signed scaled format that has an 8-bit R
	// component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
	// component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8SignedScaled Format = C.VK_FORMAT_R8G8B8A8_SSCALED
	// FormatR8G8B8A8UnsignedInt specifies a four-component, 32-bit unsigned integer format that has an 8-bit R
	// component in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A
	// component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8UnsignedInt Format = C.VK_FORMAT_R8G8B8A8_UINT
	// FormatR8G8B8A8SignedInt specifies a four-component, 32-bit signed integer format that has an 8-bit R component
	// in byte 0, an 8-bit G component in byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8SignedInt Format = C.VK_FORMAT_R8G8B8A8_SINT
	// FormatR8G8B8A8SRGB specifies a four-component, 32-bit unsigned normalized format that has an 8-bit R component
	// stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte
	// 1, an 8-bit B component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR8G8B8A8SRGB Format = C.VK_FORMAT_R8G8B8A8_SRGB

	// FormatB8G8R8A8UnsignedNormalized specifies a four-component, 32-bit unsigned normalized format that has an 8-bit
	// B component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component
	// in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8UnsignedNormalized Format = C.VK_FORMAT_B8G8R8A8_UNORM
	// FormatB8G8R8A8SignedNormalized specifies a four-component, 32-bit signed normalized format that has an 8-bit B
	// component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in
	// byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8SignedNormalized Format = C.VK_FORMAT_B8G8R8A8_SNORM
	// FormatB8G8R8A8UnsignedScaled specifies a four-component, 32-bit unsigned scaled format that has an 8-bit B
	// component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component
	// in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8UnsignedScaled Format = C.VK_FORMAT_B8G8R8A8_USCALED
	// FormatB8G8R8A8SignedScaled specifies a four-component, 32-bit signed scaled format that has an 8-bit B component
	// in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8SignedScaled Format = C.VK_FORMAT_B8G8R8A8_SSCALED
	// FormatB8G8R8A8UnsignedInt specifies a four-component, 32-bit unsigned integer format that has an 8-bit B
	// component in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component
	// in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8UnsignedInt Format = C.VK_FORMAT_B8G8R8A8_UINT
	// FormatB8G8R8A8SignedInt specifies a four-component, 32-bit signed integer format that has an 8-bit B component
	// in byte 0, an 8-bit G component in byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8SignedInt Format = C.VK_FORMAT_B8G8R8A8_SINT
	// FormatB8G8R8A8SRGB specifies a four-component, 32-bit unsigned normalized format that has an 8-bit B component
	// stored with sRGB nonlinear encoding in byte 0, an 8-bit G component stored with sRGB nonlinear encoding in byte
	// 1, an 8-bit R component stored with sRGB nonlinear encoding in byte 2, and an 8-bit A component in byte 3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB8G8R8A8SRGB Format = C.VK_FORMAT_B8G8R8A8_SRGB

	// FormatA8B8G8R8UnsignedNormalizedPacked specifies a four-component, 32-bit packed unsigned normalized format that
	// has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
	// and an 8-bit R component in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8UnsignedNormalizedPacked Format = C.VK_FORMAT_A8B8G8R8_UNORM_PACK32
	// FormatA8B8G8R8SignedNormalizedPacked specifies a four-component, 32-bit packed signed normalized format that has
	// an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
	// and an 8-bit R component in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8SignedNormalizedPacked Format = C.VK_FORMAT_A8B8G8R8_SNORM_PACK32
	// FormatA8B8G8R8UnsignedScaledPacked specifies a four-component, 32-bit packed unsigned scaled integer format that
	// has an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
	// and an 8-bit R component in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8UnsignedScaledPacked Format = C.VK_FORMAT_A8B8G8R8_USCALED_PACK32
	// FormatA8B8G8R8SignedScaledPacked specifies a four-component, 32-bit packed signed scaled integer format that has
	// an 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,
	// and an 8-bit R component in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8SignedScaledPacked Format = C.VK_FORMAT_A8B8G8R8_SSCALED_PACK32
	// FormatA8B8G8R8UnsignedIntPacked specifies a four-component, 32-bit packed unsigned integer format that has an
	// 8-bit A component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and
	// an 8-bit R component in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8UnsignedIntPacked Format = C.VK_FORMAT_A8B8G8R8_UINT_PACK32
	// FormatA8B8G8R8SignedIntPacked specifies a four-component, 32-bit packed signed integer format that has an 8-bit A
	// component in bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15, and an 8-bit
	// R component in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8SignedIntPacked Format = C.VK_FORMAT_A8B8G8R8_SINT_PACK32
	// FormatA8B8G8R8SRGBPacked specifies a four-component, 32-bit packed unsigned normalized format that has an 8-bit
	// A component in bits 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23, an 8-bit G
	// component stored with sRGB nonlinear encoding in bits 8..15, and an 8-bit R component stored with sRGB nonlinear
	// encoding in bits 0..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA8B8G8R8SRGBPacked Format = C.VK_FORMAT_A8B8G8R8_SRGB_PACK32

	// FormatA2R10G10B10UnsignedNormalizedPacked specifies a four-component, 32-bit packed unsigned normalized format
	// that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits
	// 10..19, and a 10-bit B component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2R10G10B10UnsignedNormalizedPacked Format = C.VK_FORMAT_A2R10G10B10_UNORM_PACK32
	// FormatA2R10G10B10SignedNormalizedPacked specifies a four-component, 32-bit packed signed normalized format that
	// has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19,
	// and a 10-bit B component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2R10G10B10SignedNormalizedPacked Format = C.VK_FORMAT_A2R10G10B10_SNORM_PACK32
	// FormatA2R10G10B10UnsignedScaledPacked specifies a four-component, 32-bit packed unsigned scaled integer format
	// that has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits
	// 10..19, and a 10-bit B component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2R10G10B10UnsignedScaledPacked Format = C.VK_FORMAT_A2R10G10B10_USCALED_PACK32
	// FormatA2R10G10B10SignedScaledPacked specifies a four-component, 32-bit packed signed scaled integer format that
	// has a 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19,
	// and a 10-bit B component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2R10G10B10SignedScaledPacked Format = C.VK_FORMAT_A2R10G10B10_SSCALED_PACK32
	// FormatA2R10G10B10UnsignedIntPacked specifies a four-component, 32-bit packed unsigned integer format that has a
	// 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and
	// a 10-bit B component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2R10G10B10UnsignedIntPacked Format = C.VK_FORMAT_A2R10G10B10_UINT_PACK32
	// FormatA2R10G10B10SignedIntPacked specifies a four-component, 32-bit packed signed integer format that has a
	// 2-bit A component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in bits 10..19, and
	// a 10-bit B component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2R10G10B10SignedIntPacked Format = C.VK_FORMAT_A2R10G10B10_SINT_PACK32

	// FormatA2B10G10R10UnsignedNormalizedPacked specifies a four-component, 32-bit packed unsigned normalized format
	// that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits
	// 10..19, and a 10-bit R component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2B10G10R10UnsignedNormalizedPacked Format = C.VK_FORMAT_A2B10G10R10_UNORM_PACK32
	// FormatA2B10G10R10SignedNormalizedPacked specifies a four-component, 32-bit packed signed normalized format that
	// has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19,
	// and a 10-bit R component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2B10G10R10SignedNormalizedPacked Format = C.VK_FORMAT_A2B10G10R10_SNORM_PACK32
	// FormatA2B10G10R10UnsignedScaledPacked specifies a four-component, 32-bit packed unsigned scaled integer format
	// that has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits
	// 10..19, and a 10-bit R component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2B10G10R10UnsignedScaledPacked Format = C.VK_FORMAT_A2B10G10R10_USCALED_PACK32
	// FormatA2B10G10R10SignedScaledPacked specifies a four-component, 32-bit packed signed scaled integer format that
	// has a 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19,
	// and a 10-bit R component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2B10G10R10SignedScaledPacked Format = C.VK_FORMAT_A2B10G10R10_SSCALED_PACK32
	// FormatA2B10G10R10UnsignedIntPacked specifies a four-component, 32-bit packed unsigned integer format that has a
	// 2-bit A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a
	// 10-bit R component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2B10G10R10UnsignedIntPacked Format = C.VK_FORMAT_A2B10G10R10_UINT_PACK32
	// FormatA2B10G10R10SignedIntPacked specifies a four-component, 32-bit packed signed integer format that has a 2-bit
	// A component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in bits 10..19, and a
	// 10-bit R component in bits 0..9
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatA2B10G10R10SignedIntPacked Format = C.VK_FORMAT_A2B10G10R10_SINT_PACK32

	// FormatR16UnsignedNormalized specifies a one-component, 16-bit unsigned normalized format that has a single
	// 16-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16UnsignedNormalized Format = C.VK_FORMAT_R16_UNORM
	// FormatR16SignedNormalized specifies a one-component, 16-bit signed normalized format that has a single 16-bit
	// R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16SignedNormalized Format = C.VK_FORMAT_R16_SNORM
	// FormatR16UnsignedScaled specifies a one-component, 16-bit unsigned scaled integer format that has a single
	// 16-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16UnsignedScaled Format = C.VK_FORMAT_R16_USCALED
	// FormatR16SignedScaled specifies a one-component, 16-bit signed scaled integer format that has a single
	// 16-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16SignedScaled Format = C.VK_FORMAT_R16_SSCALED
	// FormatR16UnsignedInt specifies a one-component, 16-bit unsigned integer format that has a single 16-bit
	// R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16UnsignedInt Format = C.VK_FORMAT_R16_UINT
	// FormatR16SignedInt specifies a one-component, 16-bit signed integer format that has a single 16-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16SignedInt Format = C.VK_FORMAT_R16_SINT
	// FormatR16SignedFloat specifies a one-component, 16-bit signed floating-point format that has a single 16-bit
	// R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16SignedFloat Format = C.VK_FORMAT_R16_SFLOAT

	// FormatR16G16UnsignedNormalized specifies a two-component, 32-bit unsigned normalized format that has a 16-bit
	// R component in bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16UnsignedNormalized Format = C.VK_FORMAT_R16G16_UNORM
	// FormatR16G16SignedNormalized specifies a two-component, 32-bit signed normalized format that has a 16-bit R
	// component in bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16SignedNormalized Format = C.VK_FORMAT_R16G16_SNORM
	// FormatR16G16UnsignedScaled specifies a two-component, 32-bit unsigned scaled integer format that has a 16-bit R
	// component in bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16UnsignedScaled Format = C.VK_FORMAT_R16G16_USCALED
	// FormatR16G16SignedScaled specifies a two-component, 32-bit signed scaled integer format that has a 16-bit R
	// component in bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16SignedScaled Format = C.VK_FORMAT_R16G16_SSCALED
	// FormatR16G16UnsignedInt specifies a two-component, 32-bit unsigned integer format that has a 16-bit R component in
	// bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16UnsignedInt Format = C.VK_FORMAT_R16G16_UINT
	// FormatR16G16SignedInt specifies a two-component, 32-bit signed integer format that has a 16-bit R component in
	// bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16SignedInt Format = C.VK_FORMAT_R16G16_SINT
	// FormatR16G16SignedFloat specifies a two-component, 32-bit signed floating-point format that has a 16-bit R
	// component in bytes 0..1, and a 16-bit G component in bytes 2..3
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16SignedFloat Format = C.VK_FORMAT_R16G16_SFLOAT

	// FormatR16G16B16UnsignedNormalized specifies a three-component, 48-bit unsigned normalized format that has a
	// 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16UnsignedNormalized Format = C.VK_FORMAT_R16G16B16_UNORM
	// FormatR16G16B16SignedNormalized specifies a three-component, 48-bit signed normalized format that has a 16-bit R
	// component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16SignedNormalized Format = C.VK_FORMAT_R16G16B16_SNORM
	// FormatR16G16B16UnsignedScaled specifies a three-component, 48-bit unsigned scaled integer format that has a
	// 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16UnsignedScaled Format = C.VK_FORMAT_R16G16B16_USCALED
	// FormatR16G16B16SignedScaled specifies a three-component, 48-bit signed scaled integer format that has a
	// 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16SignedScaled Format = C.VK_FORMAT_R16G16B16_SSCALED
	// FormatR16G16B16UnsignedInt specifies a three-component, 48-bit unsigned integer format that has a 16-bit R
	// component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16UnsignedInt Format = C.VK_FORMAT_R16G16B16_UINT
	// FormatR16G16B16SignedInt specifies a three-component, 48-bit signed integer format that has a 16-bit R component
	// in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16SignedInt Format = C.VK_FORMAT_R16G16B16_SINT
	// FormatR16G16B16SignedFloat specifies a three-component, 48-bit signed floating-point format that has a 16-bit R
	// component in bytes 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in bytes 4..5
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16SignedFloat Format = C.VK_FORMAT_R16G16B16_SFLOAT

	// FormatR16G16B16A16UnsignedNormalized specifies a four-component, 64-bit unsigned normalized format that has a
	// 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
	// 16-bit A component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16UnsignedNormalized Format = C.VK_FORMAT_R16G16B16A16_UNORM
	// FormatR16G16B16A16SignedNormalized specifies a four-component, 64-bit signed normalized format that has a 16-bit
	// R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit
	// A component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16SignedNormalized Format = C.VK_FORMAT_R16G16B16A16_SNORM
	// FormatR16G16B16A16UnsignedScaled specifies a four-component, 64-bit unsigned scaled integer format that has a
	// 16-bit R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a
	// 16-bit A component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16UnsignedScaled Format = C.VK_FORMAT_R16G16B16A16_USCALED
	// FormatR16G16B16A16SignedScaled specifies a four-component, 64-bit signed scaled integer format that has a 16-bit
	// R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit
	// A component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16SignedScaled Format = C.VK_FORMAT_R16G16B16A16_SSCALED
	// FormatR16G16B16A16UnsignedInt specifies a four-component, 64-bit unsigned integer format that has a 16-bit R
	// component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit
	// A component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16UnsignedInt Format = C.VK_FORMAT_R16G16B16A16_UINT
	// FormatR16G16B16A16SignedInt specifies a four-component, 64-bit signed integer format that has a 16-bit R
	// component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit A
	// component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16SignedInt Format = C.VK_FORMAT_R16G16B16A16_SINT
	// FormatR16G16B16A16SignedFloat specifies a four-component, 64-bit signed floating-point format that has a 16-bit
	// R component in bytes 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a 16-bit
	// A component in bytes 6..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR16G16B16A16SignedFloat Format = C.VK_FORMAT_R16G16B16A16_SFLOAT

	// FormatR32UnsignedInt specifies a one-component, 32-bit unsigned integer format that has a single 32-bit R
	// component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32UnsignedInt Format = C.VK_FORMAT_R32_UINT
	// FormatR32SignedInt specifies a one-component, 32-bit signed integer format that has a single 32-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32SignedInt Format = C.VK_FORMAT_R32_SINT
	// FormatR32SignedFloat specifies a one-component, 32-bit signed floating-point format that has a single 32-bit R
	// component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32SignedFloat Format = C.VK_FORMAT_R32_SFLOAT
	// FormatR32G32UnsignedInt specifies a two-component, 64-bit unsigned integer format that has a 32-bit R component
	// in bytes 0..3, and a 32-bit G component in bytes 4..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32UnsignedInt Format = C.VK_FORMAT_R32G32_UINT
	// FormatR32G32SignedInt specifies a two-component, 64-bit signed integer format that has a 32-bit R component in
	// bytes 0..3, and a 32-bit G component in bytes 4..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32SignedInt Format = C.VK_FORMAT_R32G32_SINT
	// FormatR32G32SignedFloat specifies a two-component, 64-bit signed floating-point format that has a 32-bit R
	// component in bytes 0..3, and a 32-bit G component in bytes 4..7
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32SignedFloat Format = C.VK_FORMAT_R32G32_SFLOAT
	// FormatR32G32B32UnsignedInt specifies a three-component, 96-bit unsigned integer format that has a 32-bit R
	// component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32B32UnsignedInt Format = C.VK_FORMAT_R32G32B32_UINT
	// FormatR32G32B32SignedInt specifies a three-component, 96-bit signed integer format that has a 32-bit R component
	// in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32B32SignedInt Format = C.VK_FORMAT_R32G32B32_SINT
	// FormatR32G32B32SignedFloat specifies a three-component, 96-bit signed floating-point format that has a 32-bit
	// R component in bytes 0..3, a 32-bit G component in bytes 4..7, and a 32-bit B component in bytes 8..11
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32B32SignedFloat Format = C.VK_FORMAT_R32G32B32_SFLOAT
	// FormatR32G32B32A32UnsignedInt specifies a four-component, 128-bit unsigned integer format that has a 32-bit R
	// component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit
	// A component in bytes 12..15
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32B32A32UnsignedInt Format = C.VK_FORMAT_R32G32B32A32_UINT
	// FormatR32G32B32A32SignedInt specifies a four-component, 128-bit signed integer format that has a 32-bit R
	// component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit A
	// component in bytes 12..15
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32B32A32SignedInt Format = C.VK_FORMAT_R32G32B32A32_SINT
	// FormatR32G32B32A32SignedFloat specifies a four-component, 128-bit signed floating-point format that has a 32-bit
	// R component in bytes 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11, and a 32-bit
	// A component in bytes 12..15
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR32G32B32A32SignedFloat Format = C.VK_FORMAT_R32G32B32A32_SFLOAT

	// FormatR64UnsignedInt specifies a one-component, 64-bit unsigned integer format that has a single 64-bit R
	// component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64UnsignedInt Format = C.VK_FORMAT_R64_UINT
	// FormatR64SignedInt specifies a one-component, 64-bit signed integer format that has a single 64-bit R component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64SignedInt Format = C.VK_FORMAT_R64_SINT
	// FormatR64SignedFloat specifies a one-component, 64-bit signed floating-point format that has a single 64-bit R
	// component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64SignedFloat Format = C.VK_FORMAT_R64_SFLOAT
	// FormatR64G64UnsignedInt specifies a two-component, 128-bit unsigned integer format that has a 64-bit R component
	// in bytes 0..7, and a 64-bit G component in bytes 8..15
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64UnsignedInt Format = C.VK_FORMAT_R64G64_UINT
	// FormatR64G64SignedInt specifies a two-component, 128-bit signed integer format that has a 64-bit R component in
	// bytes 0..7, and a 64-bit G component in bytes 8..15
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64SignedInt Format = C.VK_FORMAT_R64G64_SINT
	// FormatR64G64SignedFloat specifies a two-component, 128-bit signed floating-point format that has a 64-bit R
	// component in bytes 0..7, and a 64-bit G component in bytes 8..15
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64SignedFloat Format = C.VK_FORMAT_R64G64_SFLOAT
	// FormatR64G64B64UnsignedInt specifies a three-component, 192-bit unsigned integer format that has a 64-bit R
	// component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64B64UnsignedInt Format = C.VK_FORMAT_R64G64B64_UINT
	// FormatR64G64B64SignedInt specifies a three-component, 192-bit signed integer format that has a 64-bit R
	// component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64B64SignedInt Format = C.VK_FORMAT_R64G64B64_SINT
	// FormatR64G64B64SignedFloat specifies a three-component, 192-bit signed floating-point format that has a 64-bit
	// R component in bytes 0..7, a 64-bit G component in bytes 8..15, and a 64-bit B component in bytes 16..23
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64B64SignedFloat Format = C.VK_FORMAT_R64G64B64_SFLOAT
	// FormatR64G64B64A64UnsignedInt specifies a four-component, 256-bit unsigned integer format that has a 64-bit R
	// component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit
	// A component in bytes 24..31
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64B64A64UnsignedInt Format = C.VK_FORMAT_R64G64B64A64_UINT
	// FormatR64G64B64A64SignedInt specifies a four-component, 256-bit signed integer format that has a 64-bit R
	// component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a 64-bit
	// A component in bytes 24..31
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64B64A64SignedInt Format = C.VK_FORMAT_R64G64B64A64_SINT
	// FormatR64G64B64A64SignedFloat specifies a four-component, 256-bit signed floating-point format that has a 64-bit
	// R component in bytes 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23, and a
	// 64-bit A component in bytes 24..31
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatR64G64B64A64SignedFloat Format = C.VK_FORMAT_R64G64B64A64_SFLOAT

	// FormatB10G11R11UnsignedFloatPacked specifies a three-component, 32-bit packed unsigned floating-point format
	// that has a 10-bit B component in bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component in
	// bits 0..10
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatB10G11R11UnsignedFloatPacked Format = C.VK_FORMAT_B10G11R11_UFLOAT_PACK32
	// FormatE5B9G9R9UnsignedFloatPacked specifies a three-component, 32-bit packed unsigned floating-point format that
	// has a 5-bit shared exponent in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G component
	// mantissa in bits 9..17, and a 9-bit R component mantissa in bits 0..8
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatE5B9G9R9UnsignedFloatPacked Format = C.VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
	// FormatD16UnsignedNormalized specifies a one-component, 16-bit unsigned normalized format that has a single
	// 16-bit depth component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatD16UnsignedNormalized Format = C.VK_FORMAT_D16_UNORM
	// FormatD24X8UnsignedNormalizedPacked specifies a two-component, 32-bit format that has 24 unsigned normalized
	// bits in the depth component and, optionally, 8 bits that are unused
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatD24X8UnsignedNormalizedPacked Format = C.VK_FORMAT_X8_D24_UNORM_PACK32
	// FormatD32SignedFloat specifies a one-component, 32-bit signed floating-point format that has 32 bits in the
	// depth component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatD32SignedFloat Format = C.VK_FORMAT_D32_SFLOAT
	// FormatS8UnsignedInt specifies a one-component, 8-bit unsigned integer format that has 8 bits in the stencil
	// component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatS8UnsignedInt Format = C.VK_FORMAT_S8_UINT

	// FormatD16UnsignedNormalizedS8UnsignedInt specifies a two-component, 24-bit format that has 16 unsigned
	// normalized bits in the depth component and 8 unsigned integer bits in the stencil component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatD16UnsignedNormalizedS8UnsignedInt Format = C.VK_FORMAT_D16_UNORM_S8_UINT
	// FormatD24UnsignedNormalizedS8UnsignedInt specifies a two-component, 32-bit packed format that has 8 unsigned
	// integer bits in the stencil component, and 24 unsigned normalized bits in the depth component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatD24UnsignedNormalizedS8UnsignedInt Format = C.VK_FORMAT_D24_UNORM_S8_UINT
	// FormatD32SignedFloatS8UnsignedInt specifies a two-component format that has 32 signed float bits in the depth
	// component and 8 unsigned integer bits in the stencil component. There are optionally 24 bits that are unused
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatD32SignedFloatS8UnsignedInt Format = C.VK_FORMAT_D32_SFLOAT_S8_UINT

	// FormatBC1_RGBUnsignedNormalized specifies a three-component, block-compressed format where each 64-bit
	// compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha
	// and is considered opaque
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC1_RGBUnsignedNormalized Format = C.VK_FORMAT_BC1_RGB_UNORM_BLOCK
	// FormatBC1_RGBsRGB specifies a three-component, block-compressed format where each 64-bit compressed texel block
	// encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format has no
	// alpha and is considered opaque.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC1_RGBsRGB Format = C.VK_FORMAT_BC1_RGB_SRGB_BLOCK
	// FormatBC1_RGBAUnsignedNormalized specifies a four-component, block-compressed format where each 64-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of alpha
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC1_RGBAUnsignedNormalized Format = C.VK_FORMAT_BC1_RGBA_UNORM_BLOCK
	// FormatBC1_RGBAsRGB specifies a four-component, block-compressed format where each 64-bit compressed texel block
	// encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides 1 bit
	// of alpha.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC1_RGBAsRGB Format = C.VK_FORMAT_BC1_RGBA_SRGB_BLOCK

	// FormatBC2_UnsignedNormalized specifies a four-component, block-compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha
	// values followed by 64 bits encoding RGB values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC2_UnsignedNormalized Format = C.VK_FORMAT_BC2_UNORM_BLOCK
	// FormatBC2_sRGB specifies a four-component, block-compressed format where each 128-bit compressed texel block
	// encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values
	// followed by 64 bits encoding RGB values with sRGB nonlinear encoding
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC2_sRGB Format = C.VK_FORMAT_BC2_SRGB_BLOCK

	// FormatBC3_UnsignedNormalized specifies a four-component, block-compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha
	// values followed by 64 bits encoding RGB values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC3_UnsignedNormalized Format = C.VK_FORMAT_BC3_UNORM_BLOCK
	// FormatBC3_sRGB specifies a four-component, block-compressed format where each 128-bit compressed texel block
	// encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha values
	// followed by 64 bits encoding RGB values with sRGB nonlinear encoding
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC3_sRGB Format = C.VK_FORMAT_BC3_SRGB_BLOCK

	// FormatBC4_UnsignedNormalized specifies a one-component, block-compressed format where each 64-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized red texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC4_UnsignedNormalized Format = C.VK_FORMAT_BC4_UNORM_BLOCK
	// FormatBC4_SignedNormalized specifies a one-component, block-compressed format where each 64-bit compressed texel
	// block encodes a 4×4 rectangle of signed normalized red texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC4_SignedNormalized Format = C.VK_FORMAT_BC4_SNORM_BLOCK

	// FormatBC5_UnsignedNormalized specifies a two-component, block-compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits encoding red
	// values followed by 64 bits encoding green values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC5_UnsignedNormalized Format = C.VK_FORMAT_BC5_UNORM_BLOCK
	// FormatBC5_SignedNormalized specifies a two-component, block-compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red
	// values followed by 64 bits encoding green values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC5_SignedNormalized Format = C.VK_FORMAT_BC5_SNORM_BLOCK

	// FormatBC6_UnsignedFloat specifies a three-component, block-compressed format where each 128-bit compressed texel
	// block encodes a 4×4 rectangle of unsigned floating-point RGB texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC6_UnsignedFloat Format = C.VK_FORMAT_BC6H_UFLOAT_BLOCK
	// FormatBC6_SignedFloat specifies a three-component, block-compressed format where each 128-bit compressed texel
	// block encodes a 4×4 rectangle of signed floating-point RGB texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC6_SignedFloat Format = C.VK_FORMAT_BC6H_SFLOAT_BLOCK

	// FormatBC7_UnsignedNormalized specifies a four-component, block-compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC7_UnsignedNormalized Format = C.VK_FORMAT_BC7_UNORM_BLOCK
	// FormatBC7_sRGB specifies a four-component, block-compressed format where each 128-bit compressed texel block
	// encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatBC7_sRGB Format = C.VK_FORMAT_BC7_SRGB_BLOCK

	// FormatETC2_R8G8B8UnsignedNormalized specifies a three-component, ETC2 compressed format where each 64-bit
	// compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data. This format has no alpha
	// and is considered opaque
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatETC2_R8G8B8UnsignedNormalized Format = C.VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
	// FormatETC2_R8G8B8sRGB specifies a three-component, ETC2 compressed format where each 64-bit compressed texel
	// block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding. This format
	// has no alpha and is considered opaque
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatETC2_R8G8B8sRGB Format = C.VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
	// FormatETC2_R8G8B8A1UnsignedNormalized specifies a four-component, ETC2 compressed format where each 64-bit
	// compressed texel block encodes a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1 bit of
	// alpha
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatETC2_R8G8B8A1UnsignedNormalized Format = C.VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
	// FormatETC2_R8G8B8A1sRGB specifies a four-component, ETC2 compressed format where each 64-bit compressed texel
	// block encodes a 4×4 rectangle of unsigned normalized RGB texel data with sRGB nonlinear encoding, and provides
	// 1 bit of alpha
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatETC2_R8G8B8A1sRGB Format = C.VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
	// FormatETC2_R8G8B8A8UnsignedNormalized specifies a four-component, ETC2 compressed format where each 128-bit
	// compressed texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits
	// encoding alpha values followed by 64 bits encoding RGB values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatETC2_R8G8B8A8UnsignedNormalized Format = C.VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
	// FormatETC2_R8G8B8A8sRGB specifies a four-component, ETC2 compressed format where each 128-bit compressed texel
	// block encodes a 4×4 rectangle of unsigned normalized RGBA texel data with the first 64 bits encoding alpha
	// values followed by 64 bits encoding RGB values with sRGB nonlinear encoding applied
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatETC2_R8G8B8A8sRGB Format = C.VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK

	// FormatEAC_R11UnsignedNormalized specifies a one-component, ETC2 compressed format where each 64-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized red texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatEAC_R11UnsignedNormalized Format = C.VK_FORMAT_EAC_R11_UNORM_BLOCK
	// FormatEAC_R11SignedNormalized specifies a one-component, ETC2 compressed format where each 64-bit compressed
	// texel block encodes a 4×4 rectangle of signed normalized red texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatEAC_R11SignedNormalized Format = C.VK_FORMAT_EAC_R11_SNORM_BLOCK
	// FormatEAC_R11G11UnsignedNormalized specifies a two-component, ETC2 compressed format where each 128-bit
	// compressed texel block encodes a 4×4 rectangle of unsigned normalized RG texel data with the first 64 bits
	// encoding red values followed by 64 bits encoding green values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatEAC_R11G11UnsignedNormalized Format = C.VK_FORMAT_EAC_R11G11_UNORM_BLOCK
	// FormatEAC_R11G11SignedNormalized specifies a two-component, ETC2 compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of signed normalized RG texel data with the first 64 bits encoding red values
	// followed by 64 bits encoding green values
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatEAC_R11G11SignedNormalized Format = C.VK_FORMAT_EAC_R11G11_SNORM_BLOCK

	// FormatASTC4x4_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes a 4×4 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC4x4_UnsignedNormalized Format = C.VK_FORMAT_ASTC_4x4_UNORM_BLOCK
	// FormatASTC4x4_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC4x4_sRGB Format = C.VK_FORMAT_ASTC_4x4_SRGB_BLOCK
	// FormatASTC5x4_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit
	// compressed texel block encodes a 5×4 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC5x4_UnsignedNormalized Format = C.VK_FORMAT_ASTC_5x4_UNORM_BLOCK
	// FormatASTC5x4_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 5×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC5x4_sRGB Format = C.VK_FORMAT_ASTC_5x4_SRGB_BLOCK
	// FormatASTC5x5_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes a 5×5 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC5x5_UnsignedNormalized Format = C.VK_FORMAT_ASTC_5x5_UNORM_BLOCK
	// FormatASTC5x5_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 5×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// component
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC5x5_sRGB Format = C.VK_FORMAT_ASTC_5x5_SRGB_BLOCK
	// FormatASTC6x5_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes a 6×5 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC6x5_UnsignedNormalized Format = C.VK_FORMAT_ASTC_6x5_UNORM_BLOCK
	// FormatASTC6x5_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 6×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC6x5_sRGB Format = C.VK_FORMAT_ASTC_6x5_SRGB_BLOCK
	// FormatASTC6x6_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes a 6×6 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC6x6_UnsignedNormalized Format = C.VK_FORMAT_ASTC_6x6_UNORM_BLOCK
	// FormatASTC6x6_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 6×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC6x6_sRGB Format = C.VK_FORMAT_ASTC_6x6_SRGB_BLOCK
	// FormatASTC8x5_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes an 8×5 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC8x5_UnsignedNormalized Format = C.VK_FORMAT_ASTC_8x5_UNORM_BLOCK
	// FormatASTC8x5_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes an 8×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC8x5_sRGB Format = C.VK_FORMAT_ASTC_8x5_SRGB_BLOCK
	// FormatASTC8x6_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes an 8×6 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC8x6_UnsignedNormalized Format = C.VK_FORMAT_ASTC_8x6_UNORM_BLOCK
	// FormatASTC8x6_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes an 8×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC8x6_sRGB Format = C.VK_FORMAT_ASTC_8x6_SRGB_BLOCK
	// FormatASTC8x8_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit compressed
	// texel block encodes an 8×8 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC8x8_UnsignedNormalized Format = C.VK_FORMAT_ASTC_8x8_UNORM_BLOCK
	// FormatASTC8x8_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes an 8×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC8x8_sRGB Format = C.VK_FORMAT_ASTC_8x8_SRGB_BLOCK
	// FormatASTC10x5_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit
	// compressed texel block encodes a 10×5 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x5_UnsignedNormalized Format = C.VK_FORMAT_ASTC_10x5_UNORM_BLOCK
	// FormatASTC10x5_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 10×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x5_sRGB Format = C.VK_FORMAT_ASTC_10x5_SRGB_BLOCK
	// FormatASTC10x6_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit
	// compressed texel block encodes a 10×6 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x6_UnsignedNormalized Format = C.VK_FORMAT_ASTC_10x6_UNORM_BLOCK
	// FormatASTC10x6_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 10×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x6_sRGB Format = C.VK_FORMAT_ASTC_10x6_SRGB_BLOCK
	// FormatASTC10x8_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit
	// compressed texel block encodes a 10×8 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x8_UnsignedNormalized Format = C.VK_FORMAT_ASTC_10x8_UNORM_BLOCK
	// FormatASTC10x8_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel block
	// encodes a 10×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to the RGB
	// components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x8_sRGB Format = C.VK_FORMAT_ASTC_10x8_SRGB_BLOCK
	// FormatASTC10x10_UnsignedNormalized
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x10_UnsignedNormalized Format = C.VK_FORMAT_ASTC_10x10_UNORM_BLOCK
	// FormatASTC10x10_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel
	// block encodes a 10×10 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC10x10_sRGB Format = C.VK_FORMAT_ASTC_10x10_SRGB_BLOCK
	// FormatASTC12x10_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit
	// compressed texel block encodes a 12×10 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC12x10_UnsignedNormalized Format = C.VK_FORMAT_ASTC_12x10_UNORM_BLOCK
	// FormatASTC12x10_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel
	// block encodes a 12×10 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to
	// the RGB components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC12x10_sRGB Format = C.VK_FORMAT_ASTC_12x10_SRGB_BLOCK
	// FormatASTC12x12_UnsignedNormalized specifies a four-component, ASTC compressed format where each 128-bit
	// compressed texel block encodes a 12×12 rectangle of unsigned normalized RGBA texel data
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC12x12_UnsignedNormalized Format = C.VK_FORMAT_ASTC_12x12_UNORM_BLOCK
	// FormatASTC12x12_sRGB specifies a four-component, ASTC compressed format where each 128-bit compressed texel
	// block encodes a 12×12 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear encoding applied to
	// the RGB components
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormat.html
	FormatASTC12x12_sRGB Format = C.VK_FORMAT_ASTC_12x12_SRGB_BLOCK
)

func (Format) Register

func (e Format) Register(str string)

func (Format) String

func (e Format) String() string

type FormatFeatureFlags

type FormatFeatureFlags int32

FormatFeatureFlags specifies features supported by a Buffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html

const (
	// FormatFeatureSampledImage specifies that an ImageView can be sampled from
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureSampledImage FormatFeatureFlags = C.VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
	// FormatFeatureStorageImage specifies that an ImageView can be used as a storage Image
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureStorageImage FormatFeatureFlags = C.VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
	// FormatFeatureStorageImageAtomic specifies that an ImageView can be used as a storage Image
	// that supports atomic operations
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureStorageImageAtomic FormatFeatureFlags = C.VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
	// FormatFeatureUniformTexelBuffer specifies that the format can be used to create a BufferView
	// that can be bound to a uniform texel Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureUniformTexelBuffer FormatFeatureFlags = C.VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
	// FormatFeatureStorageTexelBuffer specifies that the format can be used to create a BufferView
	// that can be bound to a storage texel Buffer descriptor
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureStorageTexelBuffer FormatFeatureFlags = C.VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
	// FormatFeatureStorageTexelBufferAtomic specifies that atomic operations are supported on
	// storage texel Buffer objects with this format
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureStorageTexelBufferAtomic FormatFeatureFlags = C.VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
	// FormatFeatureVertexBuffer specifies that the format can be used as a vertex attribute
	// format
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureVertexBuffer FormatFeatureFlags = C.VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT
	// FormatFeatureColorAttachment specifies that an ImageView can be used as a Framebuffer color
	// attachment and as an input attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureColorAttachment FormatFeatureFlags = C.VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
	// FormatFeatureColorAttachmentBlend specifies that an ImageView can be used as a Framebuffer
	// color attachment that supports blending and as an input attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureColorAttachmentBlend FormatFeatureFlags = C.VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
	// FormatFeatureDepthStencilAttachment specifies that an ImageView can be used as a Framebuffer
	// depth/stencil attachment and as an input attachment
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureDepthStencilAttachment FormatFeatureFlags = C.VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
	// FormatFeatureBlitSource specifies that an Image can be used as a source Image in a blit
	// operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureBlitSource FormatFeatureFlags = C.VK_FORMAT_FEATURE_BLIT_SRC_BIT
	// FormatFeatureBlitDestination specifies that an Image can be used as a destination Image in a
	// blit operation
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureBlitDestination FormatFeatureFlags = C.VK_FORMAT_FEATURE_BLIT_DST_BIT
	// FormatFeatureSampledImageFilterLinear specifies that an ImageView can be used with a Sampler
	// that has either of magFilter or minFilter set to FilterLinear, or mipmapMode set to
	// SamplerMipmapModeLinear
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatFeatureFlagBits.html
	FormatFeatureSampledImageFilterLinear FormatFeatureFlags = C.VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
)

func (FormatFeatureFlags) Register

func (f FormatFeatureFlags) Register(str string)

func (FormatFeatureFlags) String

func (f FormatFeatureFlags) String() string

type FormatProperties

type FormatProperties struct {
	// LinearTilingFeatures specifies features supported by Image objects created with a tiling
	// parameter of ImageTilingLinear
	LinearTilingFeatures FormatFeatureFlags
	// OptimalTilingFeatures specifies features supported by Image objects created with a tiling
	// parameter of ImageTilingOptimal
	OptimalTilingFeatures FormatFeatureFlags
	// BufferFeatures specifies features supported by Buffer objects
	BufferFeatures FormatFeatureFlags
}

FormatProperties specifies Image format properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFormatProperties.html

type Framebuffer

type Framebuffer interface {
	// Handle is the internal Vulkan object handle for this Framebuffer
	Handle() driver.VkFramebuffer
	// DeviceHandle is the internal Vulkan object handle for the Device this Framebuffer belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Framebuffer
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Framebuffer. If it is at least
	// Vulkan 1.1, core1_1.PromoteFramebuffer can be used to promote this to a core1_1.Framebuffer, etc.
	APIVersion() common.APIVersion

	// Destroy destroys this Framebuffer object and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid. Do
	// not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyFramebuffer.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

Framebuffer represents a collection of specific memory attachments that a RenderPass uses

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkFramebuffer.html

type FramebufferCreateFlags

type FramebufferCreateFlags int32

FramebufferCreateFlags specifies Framebuffer properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFramebufferCreateFlagBits.html

func (FramebufferCreateFlags) Register

func (f FramebufferCreateFlags) Register(str string)

func (FramebufferCreateFlags) String

func (f FramebufferCreateFlags) String() string

type FramebufferCreateInfo

type FramebufferCreateInfo struct {
	// Attachments is a slice ImageView objects, each of which will be used as the corresponding
	// attachment in a RenderPass instance
	Attachments []ImageView
	// Flags is a bitmask of FramebufferCreateFlags
	Flags FramebufferCreateFlags

	// Width is the width of the Framebuffer
	Width int
	// Height is the height of the Framebuffer
	Height int
	// Layers is the depth of the Framebuffer
	Layers uint32

	// RenderPass is a RenderPass defining what render passes the Framebuffer will be compatible with
	RenderPass RenderPass

	common.NextOptions
}

FramebufferCreateInfo specifies parameters of a newly-created Framebuffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFramebufferCreateInfo.html

func (FramebufferCreateInfo) PopulateCPointer

func (o FramebufferCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type FrontFace

type FrontFace int32

FrontFace interprets polygon front-facing orientation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkFrontFace.html

func (FrontFace) Register

func (e FrontFace) Register(str string)

func (FrontFace) String

func (e FrontFace) String() string

type GraphicsPipelineCreateInfo

type GraphicsPipelineCreateInfo struct {
	// Flags specifies how the Pipeline will be generated
	Flags PipelineCreateFlags

	// Stages is a slice of PipelineShaderStageCreateInfo structures describing the set of shader
	// stages to be included in the graphics Pipeline
	Stages []PipelineShaderStageCreateInfo
	// VertexInputState defines vertex input state for use with vertex shading
	VertexInputState *PipelineVertexInputStateCreateInfo
	// InputAssemblyState determines input assembly behavior for vertex shading
	InputAssemblyState *PipelineInputAssemblyStateCreateInfo
	// TessellationState defines tessellation state used by tessellation shaders
	TessellationState *PipelineTessellationStateCreateInfo
	// ViewportState defines viewport state used when rasterization is enabled
	ViewportState *PipelineViewportStateCreateInfo
	// RasterizationState defines rasterization state
	RasterizationState *PipelineRasterizationStateCreateInfo
	// MultisampleState defines multisample state used when rasterization is enabled
	MultisampleState *PipelineMultisampleStateCreateInfo
	// DepthStencilState defines depth/stencil state used when rasterization is enabled for depth
	// or stencil attachments accessed during rendering
	DepthStencilState *PipelineDepthStencilStateCreateInfo
	// ColorBlendState defines color blend state used when rasterization is enabled for any
	// color attachments accessed during rendering
	ColorBlendState *PipelineColorBlendStateCreateInfo
	// DynamicState defines which properties of the Pipeline state object are dynamic and can
	// be changed independently of the Pipeline state
	DynamicState *PipelineDynamicStateCreateInfo

	// Layout is the description of binding locations used by both the Pipeline and DescriptorSet
	// objects used with the Pipeline
	Layout PipelineLayout
	// RenderPass is a RenderPass object describing the environment in which the Pipeline will be used
	RenderPass RenderPass

	// Subpass is the index of the subpass in the RenderPass where this Pipeline will be used
	Subpass int
	// BasePipeline is a Pipeline object to derive from
	BasePipeline Pipeline
	// BasePipelineIndex is an index into the createInfos parameter to use as a Pipeline to derive from
	BasePipelineIndex int

	common.NextOptions
}

GraphicsPipelineCreateInfo specifies parameters of a newly-created graphics Pipeline

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkGraphicsPipelineCreateInfo.html

func (GraphicsPipelineCreateInfo) PopulateCPointer

func (o GraphicsPipelineCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type Image

type Image interface {
	// Handle is the internal Vulkan object handle for this Image
	Handle() driver.VkImage
	// DeviceHandle is the internal Vulkan object handle for the Device this Image belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Image
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Image. If it is at least Vulkan
	// 1.1, core1_1.PromoteImage can be used to promote this to a core1_1.Image, etc.
	APIVersion() common.APIVersion

	// Destroy destroys this Image object and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid.
	// Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyImage.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// MemoryRequirements returns the memory requirements for this Image
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetImageMemoryRequirements.html
	MemoryRequirements() *MemoryRequirements
	// BindImageMemory binds a DeviceMemory object to this Image object
	//
	// memory - Describes the DeviceMemory to attach
	//
	// offset - The start offset of the region of memory which is to be bound to the image.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkBindImageMemory.html
	BindImageMemory(memory DeviceMemory, offset int) (common.VkResult, error)
	// SubresourceLayout retrieves information about an Image subresource
	//
	// subresource - Selects a specific subresource from the Image
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetImageSubresourceLayout.html
	SubresourceLayout(subresource *ImageSubresource) *SubresourceLayout
	// SparseMemoryRequirements queries the memory requirements for a sparse image
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetImageSparseMemoryRequirements.html
	SparseMemoryRequirements() []SparseImageMemoryRequirements
}

Image represents multidimensional arrays of data which can be used for various purposes.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImage.html

type ImageAspectFlags

type ImageAspectFlags int32

ImageAspectFlags specifies which aspects of an Image are included in a view

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageAspectFlagBits.html

func (ImageAspectFlags) Register

func (f ImageAspectFlags) Register(str string)

func (ImageAspectFlags) String

func (f ImageAspectFlags) String() string

type ImageBlit

type ImageBlit struct {
	// SrcSubresource is the subresource to blit from
	SrcSubresource ImageSubresourceLayers
	// SrcOffsets is a slice of Offset3D structures specifying the bounds of the source region
	// within the source subresource
	SrcOffsets [2]Offset3D

	// DstSubresource is the subresource to blit to
	DstSubresource ImageSubresourceLayers
	// DstOffsets is a slice of Offset3D structures specifying the bounds of the destination region
	// within the destination subresource
	DstOffsets [2]Offset3D
}

ImageBlit specifies an Image blit operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageBlit.html

func (ImageBlit) PopulateCPointer

func (b ImageBlit) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type ImageCopy

type ImageCopy struct {
	// SrcSubresource specifies the Image subresources of the Image objects used for the
	// source Image data
	SrcSubresource ImageSubresourceLayers
	// SrcOffset selects the initial x, y, and z offsets in texels of the sub-regions of the
	// source Image data
	SrcOffset Offset3D
	// DstSubresource specifies the Image subresource of the Image objects used for the
	// destination Image data
	DstSubresource ImageSubresourceLayers
	// DstOffset selects the initial x, y, and z offsets in texels of the sub-regions of the
	// destination Image data
	DstOffset Offset3D
	// Extent is the size in texels of the Image to copy in width, height, and depth
	Extent Extent3D
}

ImageCopy specifies an Image copy operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCopy.html

func (ImageCopy) PopulateCPointer

func (c ImageCopy) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type ImageCreateFlags

type ImageCreateFlags int32

ImageCreateFlags specifies additional parameters of an Image

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateFlagBits.html

func (ImageCreateFlags) Register

func (f ImageCreateFlags) Register(str string)

func (ImageCreateFlags) String

func (f ImageCreateFlags) String() string

type ImageCreateInfo added in v0.2.0

type ImageCreateInfo struct {
	// Flags describes additional parameters of the Image
	Flags ImageCreateFlags
	// ImageType specifies the basic dimensionality of the Image
	ImageType ImageType
	// Format describes the format and type of the texel blocks that will be contained in the Image
	Format Format
	// Extent Describes the number of data elements in each dimension of the base level
	Extent Extent3D

	// MipLevels describes the number of levels of detail available for minified sampling of the image
	MipLevels int
	// ArrayLayers is the number of layers in the IMage
	ArrayLayers int

	// Samples specifies the number of samples per texel
	Samples SampleCountFlags
	// Tiling specifies the tiling arrangement of the texel blocks in memory
	Tiling ImageTiling
	// Usage describes the intended usage of the Image
	Usage ImageUsageFlags
	// SharingMode specifies the sharing mode of the Image when it will be accessed by multiple
	// Queue families
	SharingMode SharingMode

	// QueueFamilyIndices is a slice of queue families that will access this Image
	QueueFamilyIndices []uint32

	// InitialLayout specifies the initial ImageLayout of all Image subresources of the Image
	InitialLayout ImageLayout

	common.NextOptions
}

ImageCreateInfo specifies the parameters of a newly-created Image object

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageCreateInfo.html

func (ImageCreateInfo) PopulateCPointer added in v0.2.0

func (o ImageCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ImageFormatProperties

type ImageFormatProperties struct {
	// MaxExtent are the maximum Image dimensions
	MaxExtent Extent3D
	// MaxMipLevels is the maximum number of mipmap levels
	MaxMipLevels int
	// MaxArrayLayers is the maximum number of array layers
	MaxArrayLayers int
	// SampleCounts specifies all the supported sample counts for this Image
	SampleCounts SampleCountFlags
	// MaxResourceSize is an upper bound on the total Image size in bytes
	MaxResourceSize int
}

ImageFormatProperties specifies an Image format properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageFormatProperties.html

type ImageLayout

type ImageLayout int32

ImageLayout represents the layout of Image and image subresources

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageLayout.html

func (ImageLayout) Register

func (e ImageLayout) Register(str string)

func (ImageLayout) String

func (e ImageLayout) String() string

type ImageMemoryBarrier

type ImageMemoryBarrier struct {
	// SrcAccessMask specifies a source access mask
	SrcAccessMask AccessFlags
	// DstAccessMask specifies a destination access mask
	DstAccessMask AccessFlags

	// OldLayout is the old layout in an image layout transition
	OldLayout ImageLayout
	// NewLayout is the new layout in an image layout transition
	NewLayout ImageLayout

	// SrcQueueFamilyIndex is the source queue family for a queue family ownership transfer
	SrcQueueFamilyIndex int
	// DstQueueFamilyIndex is the destination queue family for a queue family ownership transfer
	DstQueueFamilyIndex int

	// Image is the Image object affected by this barrier
	Image Image
	// SubresourceRange describes the image subresource range within Image that is affected by this barrier
	SubresourceRange ImageSubresourceRange

	common.NextOptions
}

ImageMemoryBarrier specifies the parameters of an image memory barrier

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageMemoryBarrier.html

func (ImageMemoryBarrier) PopulateCPointer

func (o ImageMemoryBarrier) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ImageResolve

type ImageResolve struct {
	// SrcSubresource specifies the Image subresources of the Image objects used for the source
	// destination Image data
	SrcSubresource ImageSubresourceLayers
	// SrcOffset selects the initial x, y, and z offsets in texels of the sub-regions of the
	// source Image data
	SrcOffset Offset3D
	// DstSubresource specifies the Image subresources of the Image objects used for the
	// destination Image data, respectively
	DstSubresource ImageSubresourceLayers
	// DstOffset selects the initial x, y, and z offsets in texels of the sub-regions of the
	// destination Image data
	DstOffset Offset3D
	// Extent is the size in texels of the source Image to resolve in width, height, and depth
	Extent Extent3D
}

ImageResolve specifies an Image resolve operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageResolve.html

func (ImageResolve) PopulateCPointer

func (r ImageResolve) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type ImageSubresource

type ImageSubresource struct {
	// AspectMask selects the Image aspect
	AspectMask ImageAspectFlags
	// MipLevel selects the mipmap level
	MipLevel uint32
	// ArrayLayer selects the array layer
	ArrayLayer uint32
}

ImageSubresource specifies an Image subresource

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageSubresource.html

type ImageSubresourceLayers

type ImageSubresourceLayers struct {
	// AspectMask selects the color, depth, and/or stencil aspects to be copied
	AspectMask ImageAspectFlags
	// MipLevel is the mipmap level to copy
	MipLevel int
	// BaseArrayLayer is the starting layer to copy
	BaseArrayLayer int
	// LayerCount is the number of layers to copy
	LayerCount int
}

ImageSubresourceLayers specifies an Image subresource layers

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageSubresourceLayers.html

type ImageSubresourceRange

type ImageSubresourceRange struct {
	// AspectMask specifies which aspect(s) of the Image are included in the view
	AspectMask ImageAspectFlags
	// BaseMipLevel is the first mipmap level accessible to the view
	BaseMipLevel int
	// LevelCount is the number of mipmap levels accessible to the view
	LevelCount int
	// BaseArrayLayer is the first array layer accessible to the view
	BaseArrayLayer int
	// LayerCount is the number of array layers accessible to the view
	LayerCount int
}

ImageSubresourceRange specifies an Image subresource range

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageSubresourceRange.html

type ImageTiling

type ImageTiling int32

ImageTiling specifies the tiling arrangement of data in an Image

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageTiling.html

func (ImageTiling) Register

func (e ImageTiling) Register(str string)

func (ImageTiling) String

func (e ImageTiling) String() string

type ImageType

type ImageType int32

ImageType specifies the type of an Image object

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageType.html

func (ImageType) Register

func (e ImageType) Register(str string)

func (ImageType) String

func (e ImageType) String() string

type ImageUsageFlags

type ImageUsageFlags int32

ImageUsageFlags specifies intended usage of an Image

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageUsageFlagBits.html

func (ImageUsageFlags) Register

func (f ImageUsageFlags) Register(str string)

func (ImageUsageFlags) String

func (f ImageUsageFlags) String() string

type ImageView

type ImageView interface {
	// Handle is the internal Vulkan object handle for this ImageView
	Handle() driver.VkImageView
	// DeviceHandle is the internal Vulkan object handle for the Device this ImageView belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this ImageView
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this ImageView. If it is at least Vulkan
	// 1.1, core1_1.PromoteImageView can be used to promote this to a core1_1.ImageView, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the ImageView object and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid. Do not
	// call further methods on this object.
	Destroy(callbacks *driver.AllocationCallbacks)
}

ImageView represents contiguous ranges of Image subresources and contains additional metadata

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkImageView.html

type ImageViewCreateFlags

type ImageViewCreateFlags int32

ImageViewCreateFlags specifies additional parameters of an ImageView

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewCreateFlagBits.html

func (ImageViewCreateFlags) Register

func (f ImageViewCreateFlags) Register(str string)

func (ImageViewCreateFlags) String

func (f ImageViewCreateFlags) String() string

type ImageViewCreateInfo

type ImageViewCreateInfo struct {
	// Image is an Image on which the view will be created
	Image Image

	// Flags describes additional parameters of the ImageView
	Flags ImageViewCreateFlags
	// ViewType specifies the type of the ImageView
	ViewType ImageViewType
	// Format describes the format and type used to interpret texel blocks in the Image
	Format Format
	// Components specifies a remapping of color components
	Components ComponentMapping
	// SubresourceRange selects the set of mipmap levels and array layers to be accessible
	// to the view
	SubresourceRange ImageSubresourceRange

	common.NextOptions
}

ImageViewCreateInfo specifies parameters of a newly-created ImageView

func (ImageViewCreateInfo) PopulateCPointer

func (o ImageViewCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ImageViewType

type ImageViewType int32

ImageViewType represents the type of ImageView objects that can be created

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkImageViewType.html

func (ImageViewType) Register

func (e ImageViewType) Register(str string)

func (ImageViewType) String

func (e ImageViewType) String() string

type IndexType

type IndexType int32

IndexType represents the type of index buffer indices

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkIndexType.html

func (IndexType) Register

func (e IndexType) Register(str string)

func (IndexType) String

func (e IndexType) String() string

type Instance

type Instance interface {
	// Handle is the internal Vulkan object handle for this Instance
	Handle() driver.VkInstance
	// Driver ist he Vulkan wrapper driver used by this Instance
	Driver() driver.Driver
	// APIVersion is the maximum VUlkan API supported by this Instance. If it is at least Vulkan 1.1,
	// core1_1.PromoteInstance can be used to promote this to a core1_1.Instance, etc.
	APIVersion() common.APIVersion

	// IsInstanceExtensionActive will return true if an Instance extension with the provided name was
	// activated on Instance creation
	//
	// extensionName - THe name of the extension to query
	IsInstanceExtensionActive(extensionName string) bool
	// EnumeratePhysicalDevices enumerates the physical devices accessible to this Instance
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEnumeratePhysicalDevices.html
	EnumeratePhysicalDevices() ([]PhysicalDevice, common.VkResult, error)

	// Destroy destroys the Instance object and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid.
	// Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyInstance.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

Instance stores per-application state for Vulkan

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkInstance.html

type InstanceCreateFlags

type InstanceCreateFlags int32

InstanceCreateFlags specifies behavior of the Instance

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkInstanceCreateFlagBits.html

func (InstanceCreateFlags) Register

func (f InstanceCreateFlags) Register(str string)

func (InstanceCreateFlags) String

func (f InstanceCreateFlags) String() string

type InstanceCreateInfo

type InstanceCreateInfo struct {
	// ApplicationName is a string containing the name of the application
	ApplicationName string
	// ApplicationVersion contains the developer-supplied verison number of the application
	ApplicationVersion common.Version
	// EngineName is a string containing the name of the engine, if any, used to create
	// the application
	EngineName string
	// EngineVersion contains the developer-supplied version number of the engine used to
	// create the application
	EngineVersion common.Version
	// APIVersion must be the highest version of Vulkan that the application is designed to use
	APIVersion common.APIVersion

	// Flags indicates the behavior of the Instance
	Flags InstanceCreateFlags

	// EnabledExtensionNames is a slice of strings containing the names of extensions to enable
	EnabledExtensionNames []string
	// EnabledLayerNames is a slice of strings containing the names of layers to enable for the
	// created Instance
	EnabledLayerNames []string

	common.NextOptions
}

InstanceCreateInfo specifies parameters of a newly-created Instance

func (InstanceCreateInfo) PopulateCPointer

func (o InstanceCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type LayerProperties

type LayerProperties struct {
	// LayerName is a string which is the name of the layer
	LayerName string
	// SpecVersion is the Vulkan version the layer was written to
	SpecVersion common.Version
	// ImplementationVersion is the version of this layer
	ImplementationVersion common.Version
	// Description is a string which provides additional details that can be used by the
	// application to identify the layer
	Description string
}

LayerProperties specifies layer properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLayerProperties.html

type LogicOp

type LogicOp int32

LogicOp represents Framebuffer logical operations

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkLogicOp.html

func (LogicOp) Register

func (e LogicOp) Register(str string)

func (LogicOp) String

func (e LogicOp) String() string

type MappedMemoryRange

type MappedMemoryRange struct {
	// Memory is the DeviceMemory object to which this range belongs
	Memory DeviceMemory
	// Offset is the zero-based byte offset from the beginning of the DeviceMemory objects
	Offset int
	// Size is either the size of the range or -1 to affect the range from offset to the end
	// of the current mapping of the allocation
	Size int

	common.NextOptions
}

MappedMemoryRange specifies a mapped memory range

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMappedMemoryRange.html

func (MappedMemoryRange) PopulateCPointer

func (r MappedMemoryRange) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type MemoryAllocateInfo

type MemoryAllocateInfo struct {
	// AllocationSize is the size of the allocation in bytes
	AllocationSize int
	// MemoryTypeIndex is an index identifying a memory type from the MemoryTypes slice of
	// PhysicalDeviceMemoryProperties
	MemoryTypeIndex int

	common.NextOptions
}

MemoryAllocateInfo contains parameters of a memory allocation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryAllocateInfo.html

func (MemoryAllocateInfo) PopulateCPointer

func (o MemoryAllocateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type MemoryBarrier

type MemoryBarrier struct {
	// SrcAccessMask specifies a source access mask
	SrcAccessMask AccessFlags
	// DstAccessMask specifies a destination access mask
	DstAccessMask AccessFlags

	common.NextOptions
}

MemoryBarrier specifies a global memory barrier

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryBarrier.html

func (MemoryBarrier) PopulateCPointer

func (o MemoryBarrier) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type MemoryHeap

type MemoryHeap struct {
	// Size is the total memory size in bytes in the heap
	Size int
	// Flags specifies attribute flags for the heap
	Flags MemoryHeapFlags
}

MemoryHeap specifies a memory heap

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryHeap.html

type MemoryHeapFlags

type MemoryHeapFlags int32

MemoryHeapFlags specifies attribute flags for a heap

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryHeapFlagBits.html

func (MemoryHeapFlags) Register

func (f MemoryHeapFlags) Register(str string)

func (MemoryHeapFlags) String

func (f MemoryHeapFlags) String() string

type MemoryMapFlags

type MemoryMapFlags int32

MemoryMapFlags reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryMapFlags.html

func (MemoryMapFlags) String

func (f MemoryMapFlags) String() string

type MemoryPropertyFlags

type MemoryPropertyFlags int32

MemoryPropertyFlags specifies properties for a memory type

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryPropertyFlagBits.html

func (MemoryPropertyFlags) Register

func (f MemoryPropertyFlags) Register(str string)

func (MemoryPropertyFlags) String

func (f MemoryPropertyFlags) String() string

type MemoryRequirements

type MemoryRequirements struct {
	// Size is the size, in bytes, of the memory allocation required for the resource
	Size int
	// Alignment is the alignment, in bytes, of the offset within the allocation required
	// for the resource
	Alignment int
	// MemoryTypeBits is a bitmask and contains one bit set for every supported memory type
	// for the resource. Bit i is set if and only if the memory type i in PhysicalDeviceMemoryProperties
	// for the PhysicalDevice is supported for the resource
	MemoryTypeBits uint32
}

MemoryRequirements specifies memory requirements

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryRequirements.html

type MemoryType

type MemoryType struct {
	// PropertyFlags specifies properties for this memory type
	PropertyFlags MemoryPropertyFlags
	// HeapIndex describes which memory heap this memory type corresponds to
	HeapIndex int
}

MemoryType specifies memory type

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkMemoryType.html

type ObjectType

type ObjectType int32

ObjectType specifies an enumeration to track object handle types

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html

const (
	// ObjectTypeUnknown specifies an unknown or undefined handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeUnknown ObjectType = C.VK_OBJECT_TYPE_UNKNOWN
	// ObjectTypeInstance specifies an Instance handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeInstance ObjectType = C.VK_OBJECT_TYPE_INSTANCE
	// ObjectTypePhysicalDevice specifies a PhysicalDevice handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypePhysicalDevice ObjectType = C.VK_OBJECT_TYPE_PHYSICAL_DEVICE
	// ObjectTypeDevice specifies a Device handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeDevice ObjectType = C.VK_OBJECT_TYPE_DEVICE
	// ObjectTypeQueue specifies a Queue handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeQueue ObjectType = C.VK_OBJECT_TYPE_QUEUE
	// ObjectTypeSemaphore specifies a Semaphore handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeSemaphore ObjectType = C.VK_OBJECT_TYPE_SEMAPHORE
	// ObjectTypeCommandBuffer specifies a CommandBuffer handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeCommandBuffer ObjectType = C.VK_OBJECT_TYPE_COMMAND_BUFFER
	// ObjectTypeFence specifies a Fence handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeFence ObjectType = C.VK_OBJECT_TYPE_FENCE
	// ObjectTypeDeviceMemory specifies a DeviceMemory handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeDeviceMemory ObjectType = C.VK_OBJECT_TYPE_DEVICE_MEMORY
	// ObjectTypeBuffer specifies a Buffer handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeBuffer ObjectType = C.VK_OBJECT_TYPE_BUFFER
	// ObjectTypeImage specifies an Image handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeImage ObjectType = C.VK_OBJECT_TYPE_IMAGE
	// ObjectTypeEvent specifies an Event handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeEvent ObjectType = C.VK_OBJECT_TYPE_EVENT
	// ObjectTypeQueryPool specifies a QueryPool handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeQueryPool ObjectType = C.VK_OBJECT_TYPE_QUERY_POOL
	// ObjectTypeBufferView specifies a BufferView handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeBufferView ObjectType = C.VK_OBJECT_TYPE_BUFFER_VIEW
	// ObjectTypeImageView specifies an ImageView handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeImageView ObjectType = C.VK_OBJECT_TYPE_IMAGE_VIEW
	// ObjectTypeShaderModule specifies a ShaderModule handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeShaderModule ObjectType = C.VK_OBJECT_TYPE_SHADER_MODULE
	// ObjectTypePipelineCache specifies a PipelineCache handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypePipelineCache ObjectType = C.VK_OBJECT_TYPE_PIPELINE_CACHE
	// ObjectTypePipelineLayout specifies a PipelineLayout handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypePipelineLayout ObjectType = C.VK_OBJECT_TYPE_PIPELINE_LAYOUT
	// ObjectTypeRenderPass specifies a RenderPass handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeRenderPass ObjectType = C.VK_OBJECT_TYPE_RENDER_PASS
	// ObjectTypePipeline specifies a Pipeline handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypePipeline ObjectType = C.VK_OBJECT_TYPE_PIPELINE
	// ObjectTypeDescriptorSetLayout specifies a DescriptorSetLayout handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeDescriptorSetLayout ObjectType = C.VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT
	// ObjectTypeSampler specifies a Sampler handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeSampler ObjectType = C.VK_OBJECT_TYPE_SAMPLER
	// ObjectTypeDescriptorPool specifies a DescriptorPool handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeDescriptorPool ObjectType = C.VK_OBJECT_TYPE_DESCRIPTOR_POOL
	// ObjectTypeDescriptorSet specifies a DescriptorSet handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeDescriptorSet ObjectType = C.VK_OBJECT_TYPE_DESCRIPTOR_SET
	// ObjectTypeFramebuffer specifies a Framebuffer handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeFramebuffer ObjectType = C.VK_OBJECT_TYPE_FRAMEBUFFER
	// ObjectTypeCommandPool specifies a CommandPool handle
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkObjectType.html
	ObjectTypeCommandPool ObjectType = C.VK_OBJECT_TYPE_COMMAND_POOL
)

func (ObjectType) Register

func (e ObjectType) Register(str string)

func (ObjectType) String

func (e ObjectType) String() string

type Offset2D

type Offset2D struct {
	// X is the x offset
	X int
	// Y is the y offset
	Y int
}

Offset2D specifies a 2-dimensional offset

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOffset2D.html

type Offset3D

type Offset3D struct {
	// X is the x offset
	X int
	// Y is the y offset
	Y int
	// Z is the z offset
	Z int
}

Offset3D specifies a 3-dimensional offset

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkOffset3D.html

type PhysicalDevice

type PhysicalDevice interface {
	// Handle is the internal Vulkan object handle for this PhysicalDevice
	Handle() driver.VkPhysicalDevice
	// Driver is the Vulkan wrapper driver used by this PhysicalDevice
	Driver() driver.Driver
	// InstanceAPIVersion is the maximum Vulkan API version supported by instance-scoped functionality
	// on this PhysicalDevice. This is usually the same as DeviceAPIVersion, but in some rare cases, it
	// may be higher. If it is at least Vulkan 1.1, core1_1.PromoteInstanceScopedPhysicalDevice can
	// be used to promote this to a core1_1.InstanceScopedPhysicalDevice, etc.
	InstanceAPIVersion() common.APIVersion
	// DeviceAPIVersion is the maximum Vulkan API version supported by device-scoped functionality on this
	// PhysicalDevice. This represents the highest API version supported by ALL functionality on this
	// PhysicalDevice. If it is at least Vulkan 1.1, core1_1.PromotePhysicalDevice can be used to promote
	// this to a core1_1.PhysicalDevice, etc.
	DeviceAPIVersion() common.APIVersion

	// CreateDevice creates a new logical device as a connection to this PhysicalDevice
	//
	// allocationCallbacks - Controls host memory allocation
	//
	// options - Parameters affecting the creation of the Device
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDevice.html
	CreateDevice(allocationCallbacks *driver.AllocationCallbacks, options DeviceCreateInfo) (Device, common.VkResult, error)

	// QueueFamilyProperties reports properties of the queues of this PhysicalDevice
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html
	QueueFamilyProperties() []*QueueFamilyProperties

	// Properties returns properties of this PhysicalDevice
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceProperties.html
	Properties() (*PhysicalDeviceProperties, error)
	// Features reports capabilities of this PhysicalDevice
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceFeatures.html
	Features() *PhysicalDeviceFeatures
	// EnumerateDeviceExtensionProperties returns properties of available PhysicalDevice extensions
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEnumerateDeviceExtensionProperties.html
	EnumerateDeviceExtensionProperties() (map[string]*ExtensionProperties, common.VkResult, error)
	// EnumerateDeviceExtensionPropertiesForLayer returns properties of available PhysicalDevice extensions
	// for the specifies layer
	//
	// layerName - Name of the layer to retrieve extensions from
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEnumerateDeviceExtensionProperties.html
	EnumerateDeviceExtensionPropertiesForLayer(layerName string) (map[string]*ExtensionProperties, common.VkResult, error)
	// EnumerateDeviceLayerProperties returns properties of available PhysicalDevice layers
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkEnumerateDeviceLayerProperties.html
	EnumerateDeviceLayerProperties() (map[string]*LayerProperties, common.VkResult, error)
	// MemoryProperties reports memory information for this PhysicalDevice
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceMemoryProperties.html
	MemoryProperties() *PhysicalDeviceMemoryProperties
	// FormatProperties lists this PhysicalDevice object's format capabilities
	//
	// format - The format whose properties are queried
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceFormatProperties.html
	FormatProperties(format Format) *FormatProperties
	// ImageFormatProperties lists this PhysicalDevice object's image format capabilities
	//
	// format - Specifies the Image format
	//
	// imageType - Specifies the Image type
	//
	// tiling - Specifies the Image tiling
	//
	// usages - Specifies the intended usage of the Image
	//
	// flags - Specifies additional parmeters of the Image
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceImageFormatProperties.html
	ImageFormatProperties(format Format, imageType ImageType, tiling ImageTiling, usages ImageUsageFlags, flags ImageCreateFlags) (*ImageFormatProperties, common.VkResult, error)
	// SparseImageFormatProperties retrieves properties of an image format applied to sparse images
	//
	// format - The Image format
	//
	// imageType - The dimensionality of the Image
	//
	// samples - Specifies the number of samples per texel
	//
	// usages - Describes the intended usage of the Image
	//
	// tiling - The tiling arrangement of the texel blocks in memory
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html
	SparseImageFormatProperties(format Format, imageType ImageType, samples SampleCountFlags, usages ImageUsageFlags, tiling ImageTiling) []SparseImageFormatProperties
}

PhysicalDevice represents a single complete implementation of Vulkan available to the host, of which there are a finite number.

PhysicalDevice objects are unusual in that they exist between the Instance and (logical) Device level. As a result, PhysicalDevices are the only object that can be extended by both Instance and Device extensions. As a result, there are some unusual cases in which a higher core version may be available for some PhysicalDevice functionality but not others. In order to represent this, physical devices are split into two objects at core1.1+, the PhysicalDevice and the "instance-scoped" PhysicalDevice.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPhysicalDevice.html

type PhysicalDeviceFeatures

type PhysicalDeviceFeatures struct {
	// RobustBufferAccess specifies that access to Buffer objects are bounds-checked against the
	// range of the Buffer descriptor
	RobustBufferAccess bool
	// FullDrawIndexUint32 specifies the full 32-bit range of indices is supported for indexed
	// draw calls when using an IndexType of IndexTypeUInt32
	FullDrawIndexUint32 bool
	// ImageCubeArray specifies whether ImageView objects with an ImageViewType of ImageViewTypeCubeArray
	// can be created
	ImageCubeArray bool
	// IndependentBlend specifies whether the PipelineColorBlendAttachmentState settings are controlled
	// independently per-attachment. If this feature is not enabled, the PipelineColorBlendAttachmentState
	// settings for all color attachments must be identical
	IndependentBlend bool
	// GeometryShader specifies whether geometry shaders are supported
	GeometryShader bool
	// TessellationShader specifies whether tessellation control and evaluation shaders are supported
	TessellationShader bool
	// SampleRateShading specifies whether sample shading and multisample interpolation are supported
	SampleRateShading bool
	// DualSrcBlend specifies whether blend operations which take two sources are supported
	DualSrcBlend bool
	// LogicOp specifies whether logic operations are supported
	LogicOp bool
	// MultiDrawIndirect specifies whether multiple draw indirect is supported. If this feature is not
	// enabled, the drawCount parameter to CommandBuffer.CmdDrawIndirect and CommandBuffer.CmdDrawIndexedIndirect
	// must be 0 or 1
	MultiDrawIndirect bool
	// DrawIndirectFirstInstance specifies whether indirect drawing calls support the firstInstance
	// parameter
	DrawIndirectFirstInstance bool
	// DepthClamp specifies whether depth clamping is supported
	DepthClamp bool
	// DepthBiasClamp specifies whether depth bias clamping is supported
	DepthBiasClamp bool
	// FillModeNonSolid specifies whether point and wireframe fill modes are supported
	FillModeNonSolid bool
	// DepthBounds specifies whether depth bounds tests are supported
	DepthBounds bool
	// WideLines specifies whether lines with width other than 1.0 are supported
	WideLines bool
	// LargePoints specifies whether points with size greater than 1.0 are supported
	LargePoints bool
	// AlphaToOne specifies whether the implementation is able to replace the alpha
	// value of the fragment shader color output in the multisample coverage fragment
	// operation. If this feature is not enabled, then the alphaToOneEnable member
	// of PipelineMultisampleStateCreateInfo must be set to false
	AlphaToOne bool
	// MultiViewport specifies whether more than one viewport is supported
	MultiViewport bool
	// SamplerAnisotropy specifies whether anisotropic filtering is supported
	SamplerAnisotropy bool
	// TextureCompressionEtc2 specifies whether all of the ETC2 and EAC compressed texture
	// formats are supported. If the feature is not enabled, PhysicalDevice.FormatProperties
	// and PhysicalDevice.ImageFormatProperties can be used to check for supported properties
	// of individual formats as normal
	TextureCompressionEtc2 bool
	// TextureCompressionAstcLdc specifies whether all of the ASTC LDR compressed texture
	// formats are supported. If the feature is not enabled, PhysicalDevice.FormatProperties
	// and PhysicalDevice.ImageFormatProperties can be used to check for supported properties
	// of individual formats as normal
	TextureCompressionAstcLdc bool
	// TextureCompressionBc specifies whether all of the BC compressed texture formats are supported
	// If the feature is not enabled, PhysicalDevice.FormatProperties and
	// PhysicalDevice.ImageFormatProperties can be used to check for supported properties of
	//individual formats as normal
	TextureCompressionBc bool
	// OcclusionQueryPrecise specifies whether occlusion queries returning actual sample counts
	// are supported
	OcclusionQueryPrecise bool
	// PipelineStatisticsQuery specifies whether the Pipeline statistics queries are supported
	PipelineStatisticsQuery bool
	// VertexPipelineStoresAndAtomics specifies whether storage Buffer objects and Image objects
	// support stores and atomic operations in the vertex, tessellation, and geometry shader stages
	VertexPipelineStoresAndAtomics bool
	// FragmentStoresAndAtomics specifies whether storage Buffer objects and Image objects support
	// stores and atomic operations in the fragment shader stages
	FragmentStoresAndAtomics bool
	// ShaderTessellationAndGeometryPointSize specifies whether the PointSize built-in decoration
	// is available in the tessellation control, tessellation evaluation, and geometry shader stages
	ShaderTessellationAndGeometryPointSize bool
	// ShaderImageGatherExtended specifies whether the extended set of Image gather instructions
	// are available in shader code
	ShaderImageGatherExtended bool
	// ShaderStorageImageExtendedFormats specifies whether all the "storage Image extended formats"
	// are supported
	ShaderStorageImageExtendedFormats bool
	// ShaderStorageImageMultisample specifies whether multisampled storage Image objects are supported
	ShaderStorageImageMultisample bool
	// ShaderStorageImageReadWithoutFormat specifies whether storage Image objects require a format
	// qualifier to be specified when reading
	ShaderStorageImageReadWithoutFormat bool
	// ShaderStorageImageWriteWithoutFormat specifies whether storage Image objects require a format
	// qualifier to be specified when writing
	ShaderStorageImageWriteWithoutFormat bool
	// ShaderUniformBufferArrayDynamicIndexing specifies whether arrays of uniform Buffrer objects can
	// be indexed by dynamically uniform integer expressions in shader code
	ShaderUniformBufferArrayDynamicIndexing bool
	// ShaderSampledImageArrayDynamicIndexing specifies whether arrays of Sampler objects or sampled Image
	// objects can be indexed by dynamically uniform expressions in shader code
	ShaderSampledImageArrayDynamicIndexing bool
	// ShaderStorageBufferArrayDynamicIndexing specifies whether arrays of storage Buffer objects
	// can be indexed by dynamically uniform integer expressions in shader code
	ShaderStorageBufferArrayDynamicIndexing bool
	// ShaderStorageImageArrayDynamicIndexing specifies arrays of storage Image objects can be
	// indexed by dynamically uniform integer expressions in shader code
	ShaderStorageImageArrayDynamicIndexing bool
	// ShaderClipDistance specifies whether clip distances are supported in shader code
	ShaderClipDistance bool
	// ShaderCullDistance specifies whether cull distances are supported in shader code
	ShaderCullDistance bool
	// ShaderFloat64 specifies whether 64-bit floats (doubles) are supported in shader code
	ShaderFloat64 bool
	// ShaderInt64 specifies whether 64-bit integer (signed and unsigned) are supported in shader
	// code
	ShaderInt64 bool
	// ShaderInt16 specifies whether 16-bit integers (signed and unsigned) are supported in shader
	// code
	ShaderInt16 bool
	// ShaderResourceResidency specifies whether Image operations that return resource residency
	// information are supported in shader code
	ShaderResourceResidency bool
	// ShaderResourceMinLod specifies whether Image operations specifying the minimum resource LOD
	// are supported in shader code
	ShaderResourceMinLod bool
	// SparseBinding specifies whether resource memory can be managed at opaque sparse block level
	// instead of at object level
	SparseBinding bool
	// SparseResidencyBuffer specifies whether the Device can access partially resident Buffer objects
	SparseResidencyBuffer bool
	// SparseResidencyImage2D specifies whether the Device can access partially resident 2D Image
	// objects with 1 sample per pixel
	SparseResidencyImage2D bool
	// SparseResidencyImage3D specifies whether the Device can access partially resident 3D Image
	// objects
	SparseResidencyImage3D bool
	// SparseResidency2Samples specifies whether the PhysicalDevice can access partially resident
	// 2D Image objects with 2 samples per pixel
	SparseResidency2Samples bool
	// SparseResidency4Samples specifies whether the PhysicalDevice can access partially resident
	// 2D Image objects with 4 samples per pixel
	SparseResidency4Samples bool
	// SparseResidency8Samples specifies whether the PhysicalDevice can access partially resident
	// 2D Image objects with 8 samples per pixel
	SparseResidency8Samples bool
	// SparseResidency16Samples specifies whether the PhysicalDevice can access partially resident
	// 2D Image objects with 16 samples per pixel
	SparseResidency16Samples bool
	// SparseResidencyAliased specifies whether the PhysicalDevice can correctly access data aliased
	// into multiple locations
	SparseResidencyAliased bool
	// VariableMultisampleRate specifies whether all Pipeline objects that will be bound to a
	// CommandBuffer during a subpass which uses no attachments must have the same value for
	// PipelineMultisampleStateCreateInfo.rasterizationSamples
	VariableMultisampleRate bool
	// InheritedQueries specifies whether a secondary CommandBuffer may be executed while a
	// query is active
	InheritedQueries bool
}

PhysicalDeviceFeatures describes the fine-grained features that can be supported by an implementation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceFeatures.html

func (*PhysicalDeviceFeatures) PopulateCPointer

func (p *PhysicalDeviceFeatures) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

func (*PhysicalDeviceFeatures) PopulateFromCPointer

func (p *PhysicalDeviceFeatures) PopulateFromCPointer(cPointer unsafe.Pointer)

type PhysicalDeviceLimits

type PhysicalDeviceLimits struct {
	// MaxImageDimension1D is the largest dimension (width) that is guaranteed to be supported
	// for all Image objects created with an ImageType of ImageType1D
	MaxImageDimension1D int
	// MaxImageDimension2D is the largest dimension (width or height) that is guaranteed to be
	// supported for all Image objects created with an ImageType of ImageType2D and without
	// ImageCreateCubeCompatible set in flags
	MaxImageDimension2D int
	// MaxImageDimension3D is the largest dimension (width, height, or depth) that is guaranteed
	// to be supported for all Image objects created with an ImageType of ImageType3D
	MaxImageDimension3D int
	// MaxImageDimensionCube is the largest dimension (width or height) that is guaranteed to
	// be supported for all Image objects created with an ImageType of ImageType2D and with
	// ImageCreateCubeCompatible set in flags
	MaxImageDimensionCube int
	// MaxImageArrayLayers is the maximum number of layers for an Image
	MaxImageArrayLayers int
	// MaxTexelBufferElements is the maximum number of addressable texels for a BufferView
	// created on a Buffer which was created with the BufferUsageUniformTexelBuffer or
	// BufferUsageStorageTexelBuffer usages set in BufferCreateInfo
	MaxTexelBufferElements int

	// MaxUniformBufferRange is the maximum value that can be specified in the range member
	// of a DescriptorBufferInfo structure passed to Device.UpdateDescriptorSets for
	// descriptors of type DescriptorTypeUniformBuffer or DescriptorTypeUniformBufferDynamic
	MaxUniformBufferRange int
	// MaxStorageBufferRange is the maximum value that can be specified in the range member of
	// a DescriptorBufferInfo structure passed to Device.UpdateDescriptorSets for
	// descriptors of type DescriptorTypeStorageBuffer or DescriptorTypeStorageBufferDynamic
	MaxStorageBufferRange int
	// MaxPushConstantsSize is the maximum size, in bytes, of the pool of push constant memory
	MaxPushConstantsSize int

	// MaxMemoryAllocationCount is the maximum number of DeviceMemory allocations, as created
	// by Device.AllocateMemory, which can simultaneously exist
	MaxMemoryAllocationCount int
	// MaxSamplerAllocationCount is the maximum number of Sampler objects, as created by
	// Device.CreateSampler, which can simultaneously exist on a device
	MaxSamplerAllocationCount int

	// BufferImageGranularity si the granularity, in bytes, at which Buffer or linear
	// Image resources, and optimal Image resources can be bound to adjacent offsets in the
	// same DeviceMemory object without aliasing
	BufferImageGranularity int
	// SparseAddressSpaceSize is the total amount of address space available, in bytes,
	// for sparse memory resources
	SparseAddressSpaceSize int

	// MaxBoundDescriptorSets is the maximum number of DescriptorSet objects that can be
	// simultaneously used by a Pipeline
	MaxBoundDescriptorSets int
	// MaxPerStageDescriptorSamplers is the maximum number of Sample objects that can be
	// accessible to a single shader stage in a PipelineLayout
	MaxPerStageDescriptorSamplers int
	// MaxPerStageDescriptorUniformBuffers is the maximum number of uniform Buffer objects
	// that can be accessible to a single shader stage in a PipelineLayout
	MaxPerStageDescriptorUniformBuffers int
	// MaxPerStageDescriptorStorageBuffers is the maximum number of storage Buffer objects
	// that can be accessible to a single shader stage in a PipelineLayout
	MaxPerStageDescriptorStorageBuffers int
	// MaxPerStageDescriptorSampledImages is the maximum number of sampled Image objects that
	// can be accessible to a single shader stage in a PipelineLayout
	MaxPerStageDescriptorSampledImages int
	// MaxPerStageDescriptorStorageImages is the maximum number of storage Image objects that
	// can be accessible to a single shader stage in a PipelineLayout
	MaxPerStageDescriptorStorageImages int
	// MaxPerStageDescriptorInputAttachments is the maximum number of input attachments that
	// can be accessible to a single shader stage in a PipelineLayout
	MaxPerStageDescriptorInputAttachments int
	// MaxPerStageResources is the maximum number of resources that can be accessible to a single
	// shader stage in a PipelineLayout. Descriptors with a type of DescriptorTypeCombinedImageSampler,
	// DescriptorTypeSampledImage, DescriptorTypeStorageImage, DescriptorTypeUniformTexelBuffer
	// DescriptorTypeStorageTexelBuffer, DescriptorTypeUniformBuffer, DescriptorTypeStorageBuffer,
	// DescriptorTypeUniformBufferDynamic, DescriptorTypeStorageBufferDynamic, and
	// DescriptorTypeInputAttachment all count against this limit
	MaxPerStageResources int

	// MaxDescriptorSetSamplers is the maximum number of Sampler objects that can be included in
	// a PipelineLayout
	MaxDescriptorSetSamplers int
	// MaxDescriptorSetUniformBuffers ist he maximum number of uniform Buffer objects that can
	// be included in a PipelineLayout
	MaxDescriptorSetUniformBuffers int
	// MaxDescriptorSetUniformBuffersDynamic is the maximum number of dynamic uniform Buffer
	// objects that can be included in a PipelineLayout
	MaxDescriptorSetUniformBuffersDynamic int
	// MaxDescriptorSetStorageBuffers is the maximum number of storage Buffer objects that can be
	// included in a PipelineLayout
	MaxDescriptorSetStorageBuffers int
	// MaxDescriptorSetStorageBuffersDynamic is the maximum number of dynamic storage Buffer
	// objects that can be included in a PipelineLayout
	MaxDescriptorSetStorageBuffersDynamic int
	// MaxDescriptorSetSampledImages is the maximum number of sampled Image objects that can
	// be included in a PipelineLayout
	MaxDescriptorSetSampledImages int
	// MaxDescriptorSetStorageImages is the maximum number of storage Image objects that can
	// be included in a PipelineLayout
	MaxDescriptorSetStorageImages int
	// MaxDescriptorSetInputAttachments is the maximum number of input attachments that can be
	// included in a PipelineLayout
	MaxDescriptorSetInputAttachments int

	// MaxVertexInputAttributes is the maximum number of vertex input attributes that can
	// be specified for a graphics Pipeline
	MaxVertexInputAttributes int
	// MaxVertexInputBindings is the maximum number of vertex Buffer objects that can be specified
	// for providing vertex attributes to a graphics Pipeline
	MaxVertexInputBindings int
	// MaxVertexInputAttributeOffset is the maximum vertex input attribute offset that can be added
	// to the vertex input binding stride
	MaxVertexInputAttributeOffset int
	// MaxVertexInputBindingStride is the maximum vertex input binding stride that can be specified
	// in a vertex input binding
	MaxVertexInputBindingStride int
	// MaxVertexOutputComponents is the maximum number of components of output variables which
	// can be output by a vertex shader
	MaxVertexOutputComponents int

	// MaxTessellationGenerationLevel is the maximum tessellation generation level supported
	// by the fixed-function tessellation primitive generator
	MaxTessellationGenerationLevel int
	// MaxTessellationPatchSize is the maximum patch size, in vertices, of patches that can
	// be processed by the tessellation control shader and tessellation primitive generator
	MaxTessellationPatchSize int
	// MaxTessellationControlPerVertexInputComponents is the maximum number of components
	// of input variables which can be provided as per-vertex inputs to the tessellation
	// control shader
	MaxTessellationControlPerVertexInputComponents int
	// MaxTessellationControlPerVertexOutputComponents is the maximum number of components of
	// per-vertex output variables which can be output from the tessellation control shader
	// stage
	MaxTessellationControlPerVertexOutputComponents int
	// MaxTessellationControlPerPatchOutputComponents is the maximum number of comonents of
	// per-patch output variables which can be output from the tessellation control shader
	// stage
	MaxTessellationControlPerPatchOutputComponents int
	// MaxTessellationControlTotalOutputComponents is the maximum total number of components
	// of per-vertex and per-patch output variables which can be output from the tessellation
	// control shader stage
	MaxTessellationControlTotalOutputComponents int
	// MaxTessellationEvaluationInputComponents is the maximum number of components of input
	// variables which can be provided as per-vertex inputs to the tessellation evaluation shader
	// stage
	MaxTessellationEvaluationInputComponents int
	// MaxTessellationEvaluationOutputComponents is the maximum number of components of per-vertex
	// output variables which can be output from the tessellation evaluation shader stage
	MaxTessellationEvaluationOutputComponents int

	// MaxGeometryShaderInvocations is the maximum invocation count supported for instanced
	// geometry shaders
	MaxGeometryShaderInvocations int
	// MaxGeometryInputComponents is the maximum number of components of input variables which
	// can be provided as inputs to the geometry shader stage
	MaxGeometryInputComponents int
	// MaxGeometryOutputComponents is the maximum number of components of output variables
	// which can be output from the geometry shader stage
	MaxGeometryOutputComponents int
	// MaxGeometryOutputVertices is the maximum number of vertices which can be emitted by any
	// geometry shader
	MaxGeometryOutputVertices int
	// MaxGeometryTotalOutputComponents is the maximum total number of components of output variables,
	// across all emitted vertices, which can be output from the geometry shader stage
	MaxGeometryTotalOutputComponents int

	// MaxFragmentInputComponents is the maximum number of components of input variables which can
	// be provided as inputs to the fragment shader stage
	MaxFragmentInputComponents int
	// MaxFragmentOutputAttachments is the maximum number of output attachments which can be
	// written to by the fragment shader stage
	MaxFragmentOutputAttachments int
	// MaxFragmentDualSrcAttachments is the maximum number of output attachments which can be
	// written to by the fragment shader stage when blending is enabled and one of the dual source
	// blend modes is in use
	MaxFragmentDualSrcAttachments int
	// MaxFragmentCombinedOutputResources is the total number of storage Buffer objects, storage
	// Image objects, and output Location decorated color attachments which can be used in the
	// fragment shader stage
	MaxFragmentCombinedOutputResources int

	// MaxComputeSharedMemorySize is the maximum total storage size, in bytes, available for
	// variables declared with the Workgroup storage class in shader modules in the compute shader
	// stage
	MaxComputeSharedMemorySize int
	// MaxComputeWorkGroupCount is the maximum number of local workgroups that can be dispatched
	// by a single dispatching command
	MaxComputeWorkGroupCount [3]int
	// MaxComputeWorkGroupInvocations is the maximum total number of compute shader invocations in
	// a single local workgroup
	MaxComputeWorkGroupInvocations int
	// MaxComputeWorkGroupSize is the maximum size of a local compute workgroup, per dimension
	MaxComputeWorkGroupSize [3]int

	// SubPixelPrecisionBits is the number of bits of subpixel precision in Framebuffer coordinates
	// xf and yf
	SubPixelPrecisionBits int
	// SubTexelPrecisionBits is the number of bits of precision in the division along an axis of
	// an Image used for minification and magnification filters
	SubTexelPrecisionBits int
	// MipmapPrecisionBits is the number of bits of division that the LOD calculation for mipmap
	// fetching get snapped to when determining the contribution from each mip level to the mip
	// filtered results
	MipmapPrecisionBits int

	// MaxDrawIndexedIndexValue is the maximum index value that can be used for indexed draw
	// calls when using 32-bit indices
	MaxDrawIndexedIndexValue int
	// MaxDrawIndirectCount is the maximum draw count that is supported for indirect drawing calls
	MaxDrawIndirectCount int

	// MaxSamplerLodBias is the maximum absolute sampler LOD bias
	MaxSamplerLodBias float32
	// MaxSamplerAnisotropy is the maximum degree of sampler anisotropy
	MaxSamplerAnisotropy float32

	// MaxViewports is the maximum number of active viewports
	MaxViewports int
	// MaxViewportDimensions are the maximum viewport dimensions in the X (width) and Y (height)
	// dimensions, respectively
	MaxViewportDimensions [2]int
	// ViewportBoundsRange is the [minimum, maximum] range that the corners of a viewport must be
	// contained in
	ViewportBoundsRange [2]float32
	// ViewportSubPixelBits is the number of bits of subpixel precision for viewport bounds
	ViewportSubPixelBits int

	// MinMemoryMapAlignment is the minimum required alignment, in bytes, of host visible memory
	// allocations within the host address space
	MinMemoryMapAlignment int
	// MinTexelBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset
	// member of the BufferViewCreateInfo structure for texel Buffer objects
	MinTexelBufferOffsetAlignment int
	// MinUniformBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset
	// member of the DescriptorBufferInfo structure for uniform Buffer objects
	MinUniformBufferOffsetAlignment int
	// MinStorageBufferOffsetAlignment is the minimum required alignment, in bytes, for the offset
	// member of the DescriptorBufferInfo structure for storage Buffer objects
	MinStorageBufferOffsetAlignment int

	// MinTexelOffset is the minimum offset value for the ConstOffset Image operand and any of the
	// OpImageSample... or OpImageFetch... Image instructions
	MinTexelOffset int
	// MaxTexelOffset is the maximum offset value for the ConstOffset Image operand and any of the
	// OpImageSample... or OpImageFetch... Image instructions
	MaxTexelOffset int
	// MinTexelGatherOffset is the minimum offset value for the Offset, ConstOffset, or ConstOffsets
	// image operands of any of the OpImage...Gather Image instructions
	MinTexelGatherOffset int
	// MaxTexelGatherOffset is the maximum offset value for the Offset, ConstOffset, or ConstOffsets
	// image operands of any of the OpImage...Gather Image instructions
	MaxTexelGatherOffset int
	// MinInterpolationOffset is the base minimum (inclusive) negative offset value for the Offset
	// operand of the InterpolateAtOffset extended instruction.
	MinInterpolationOffset float32
	// MaxInterpolationOffset is the base maximum (inclusive) negative offset value for the Offset
	// operand of the InterpolateAtOffset extended instruction.
	MaxInterpolationOffset float32
	// SubPixelInterpolationOffsetBits is the number of fractional bits that the x and y offsets
	// to the InterpolateAtOffset extended instruction may be rounded to as fixed-point values.
	SubPixelInterpolationOffsetBits int

	// MaxFramebufferWidth is the maximum width for a Framebuffer
	MaxFramebufferWidth int
	// MaxFramebufferHeight is the maximum height for a Framebuffer
	MaxFramebufferHeight int
	// MaxFramebufferLayers is the maximum layer count for a layered Framebuffer
	MaxFramebufferLayers int

	// FramebufferColorSampleCounts indicates the color sample counts that are supported for all
	// Framebuffer color atttachments with floating- or fixed-point formats
	FramebufferColorSampleCounts SampleCountFlags
	// FramebufferDepthSampleCounts indicates the supported depth sample counts for all Framebuffer
	// depth/stencil attachments, when the format includes a depth component
	FramebufferDepthSampleCounts SampleCountFlags
	// FramebufferStencilSampleCounts indicates the supported stencil sample counts for all
	// Framebuffer depth/stencil attachments, when the format includes a stencil component
	FramebufferStencilSampleCounts SampleCountFlags
	// FramebufferNoAttachmentsSampleCount indicates the supported sample counts for a subpass which
	// uses no attachments
	FramebufferNoAttachmentsSampleCounts SampleCountFlags

	// MaxColorAttachments is the maximum number of color attachments that can be used by a
	// subpass in a RenderPass
	MaxColorAttachments int
	// SampledImageColorSampleCounts indicates the sample counts supported for all 2D Image objects
	// created with ImageTilingOptimal, usage containing ImageUsageSampled, and a non-integer color
	// format
	SampledImageColorSampleCounts SampleCountFlags
	// SampledImageIntegerSampleCounts indicates the sample counts supported for all 2D Image objects
	// created with ImageTilingOptimal, usage containing UsageSampled, and an integer color format
	SampledImageIntegerSampleCounts SampleCountFlags
	// SampledImageDepthSampleCounts indicates the sample counts supported for all 2D Image objects
	// created with ImageTilingOptimal, usage containing ImageUsageSampled, and a depth format
	SampledImageDepthSampleCounts SampleCountFlags
	// SampledImageStencilSampleCounts indicates the sample counts supported for all 2D Image objects
	// created with ImageTilingOptimal, usage containing ImageUsageSampled, and a stencil format
	SampledImageStencilSampleCounts SampleCountFlags
	// StorageImageSampleCounts indicates the Sample counts supported for all 2D images created
	// with ImageTilingOptimal, and usage containing ImageUsageStorage
	StorageImageSampleCounts SampleCountFlags
	// MaxSampleMaskWords is the maximum number of array elements in a variable decorated with
	// the SampleMask built-in decoration
	MaxSampleMaskWords int

	// TimestampComputeAndGraphics specifies support for timestamps on all graphics and compute
	// queues
	TimestampComputeAndGraphics bool
	// TimestampPeriod is the number of nanoseconds required for a timestamp query to be incremented
	// by 1
	TimestampPeriod float32

	// MaxClipDistances is the maximum number of clip distances that can be used in a single shader
	// stage
	MaxClipDistances int
	// MaxCullDistances is the maximum number of cull distances that can be used in a single shader
	// stage
	MaxCullDistances int
	// MaxCombinedClipAndCullDistances is the maximum combined number of clip and cull distances
	// that can be used in a single shader stage
	MaxCombinedClipAndCullDistances int

	// DiscreteQueuePriorities is the number of discrete priorities that can be assigned to a Queue
	// based on the value of each member of DeviceQueueCreateInfo.QueuePriorities
	DiscreteQueuePriorities int

	// PointSizeRange is the range [minimum,maximum] of supported sizes for points
	PointSizeRange [2]float32
	// LineWidthRange is the range [minimum,maximum] of supported widths for lines
	LineWidthRange [2]float32
	// PointSizeGranularity is the granularity of supported point sizes
	PointSizeGranularity float32
	// LineWidthGranularity is the granularity of supported line widths
	LineWidthGranularity float32

	// StrictLines specifies whether lines are rasterized according to the preferred method of
	// rasterization
	StrictLines bool
	// StandardSampleLocations specifies whether rasterization uses the standard sample locations
	StandardSampleLocations bool

	// OptimalBufferCopyOffsetAlignment is the optimal Buffer offset alignment in bytes for
	// CommandBuffer.CmdCopyBufferToImage and CommandBuffer.CmdCopyImageToBuffer
	OptimalBufferCopyOffsetAlignment int
	// OptimalBufferCopyRowPitchAlignment is the optimal Buffer row pitch alignment in bytes
	// for CommandBuffer.CmdCopyBufferToImage and CommandBuffer.CmdCopyImageToBuffer
	OptimalBufferCopyRowPitchAlignment int
	// NonCoherentAtomSize is the size and alignment in bytes that bounds concurrent access
	// to host-mapped device memory
	NonCoherentAtomSize int
}

PhysicalDeviceLimits reports implementation-dependent PhysicalDevice limits

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceLimits.html

type PhysicalDeviceMemoryProperties

type PhysicalDeviceMemoryProperties struct {
	// MemoryTypes is a slice of MemoryType structures describing the memory types that can be
	// used to access memory allocated from the heaps specified by MemoryHeaps
	MemoryTypes []MemoryType
	// MemoryHeaps is a slice of MemoryHeap structures describing the memory heaps from which
	// memory can be allocated
	MemoryHeaps []MemoryHeap
}

PhysicalDeviceMemoryProperties specifies PhysicalDevice memory properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceMemoryProperties.html

type PhysicalDeviceProperties

type PhysicalDeviceProperties struct {
	// DeviceType specifies the type of this device
	DriverType PhysicalDeviceType
	// DriverName is the name of the PhysicalDevice
	DriverName string

	// APIVersion is the version of Vulkan supported by this PhysicalDevice
	APIVersion common.APIVersion
	// DriverVersion is the vendor-specified version of the driver
	DriverVersion common.Version
	// VendorID is a unique identifier for the vendor of the PhysicalDevice
	VendorID uint32
	// DeviceID is a unique identifier for the PhysicalDevice among all devices available from
	// the vendor
	DeviceID uint32

	// PipelineCacheUUID represents a UUID for the Device
	PipelineCacheUUID uuid.UUID
	// Limits specifies device-specific limits of the PhysicalDevice
	Limits *PhysicalDeviceLimits
	// SparseProperties specifies various sparse related properties of the PhysicalDevice
	SparseProperties *PhysicalDeviceSparseProperties
}

PhysicalDeviceProperties specifies PhysicalDevice properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceProperties.html

func (*PhysicalDeviceProperties) PopulateFromCPointer

func (p *PhysicalDeviceProperties) PopulateFromCPointer(cPointer unsafe.Pointer) error

type PhysicalDeviceSparseProperties

type PhysicalDeviceSparseProperties struct {
	// ResidencyStandard2DBlockShape is true if the PhysicalDevice will access all single-sample
	// 2D sparse resources using th standard sparse Image block shapes
	ResidencyStandard2DBlockShape bool
	// ResidencyStandard2DMultisampleBlockShape is true if the PhysicalDevice will access all
	// multisample 2D sparse resources using the standard sparse Image block shapes
	ResidencyStandard2DMultisampleBlockShape bool
	// ResidencyStandard3DBlockShape is true if the PhysicalDevice will access all 3D sparse
	// resources using the standard sparse Image block shapes
	ResidencyStandard3DBlockShape bool
	// ResidencyAlignedMipSize is true if Image objects with mip level dimensions that are not integer
	// multiples of the corresponding dimensions of the sparse Image block may be placed in the
	// mip tail
	ResidencyAlignedMipSize bool
	// ResidencyNonResidentStrict specifies whether the PhysicalDevice can consistently access non-
	// resident regions of a resource
	ResidencyNonResidentStrict bool
}

PhysicalDeviceSparseProperties specifies PhysicalDevice sparse memory properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceSparseProperties.html

type PhysicalDeviceType

type PhysicalDeviceType int32

PhysicalDeviceType represents supported PhysicalDevice types

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPhysicalDeviceType.html

func (PhysicalDeviceType) Register

func (e PhysicalDeviceType) Register(str string)

func (PhysicalDeviceType) String

func (e PhysicalDeviceType) String() string

type Pipeline

type Pipeline interface {
	// Handle is the internal Vulkan object handle for this Pipeline
	Handle() driver.VkPipeline
	// DeviceHandle is the internal Vulkan object handle for the Device this Pipeline belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Pipeline
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Pipeline. If it is at least Vulkan
	// 1.1, core1_1.PromotePipeline can be used to promote this to a core1_1.Pipeline, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the Pipeline object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will be
	// invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyPipeline.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

Pipeline represents compute, ray tracing, and graphics pipelines

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipeline.html

type PipelineBindPoint

type PipelineBindPoint int32

PipelineBindPoint specifies the bind point of a Pipeline object to a CommandBuffer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineBindPoint.html

func (PipelineBindPoint) Register

func (e PipelineBindPoint) Register(str string)

func (PipelineBindPoint) String

func (e PipelineBindPoint) String() string

type PipelineCache

type PipelineCache interface {
	// Handle is the internal Vulkan object handle for this PipelineCache
	Handle() driver.VkPipelineCache
	// DeviceHandle is the internal Vulkan object handle for the Device this PipelineCache belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this PipelineCache
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this PipelineCache. If it is at least
	// Vulkan 1.1, core1_1.PromotePipelineCache can be used to promote this to a core1_1.PipelineCache,
	// etc.
	APIVersion() common.APIVersion

	// Destroy destroys the PipelineCache object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will
	// be invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyPipelineCache.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// CacheData gets the data store from this PipelineCache
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPipelineCacheData.html
	CacheData() ([]byte, common.VkResult, error)
	// MergePipelineCaches combines the data stores of multiple PipelineCache object into this one
	//
	// srcCaches - A slice of PipelineCache objects which will be merged into this PipelineCache
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkMergePipelineCaches.html
	MergePipelineCaches(srcCaches []PipelineCache) (common.VkResult, error)
}

PipelineCache allows the result of Pipeline construction to be reused between Pipeline objects and between runs of an application.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineCache.html

type PipelineCacheCreateFlags

type PipelineCacheCreateFlags int32

PipelineCacheCreateFlags specifies the behavior of the PipelineCache

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheCreateFlagBits.html

func (PipelineCacheCreateFlags) Register

func (f PipelineCacheCreateFlags) Register(str string)

func (PipelineCacheCreateFlags) String

func (f PipelineCacheCreateFlags) String() string

type PipelineCacheCreateInfo

type PipelineCacheCreateInfo struct {
	// Flags specifies the behavior of the PipelineCache
	Flags PipelineCacheCreateFlags
	// InitialData contains previously-retrieved PipelineCache data
	InitialData []byte

	common.NextOptions
}

PipelineCacheCreateInfo specifies parameters of a newly-created PipelineCache

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheCreateInfo.html

func (PipelineCacheCreateInfo) PopulateCPointer

func (o PipelineCacheCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineCacheHeaderVersion

type PipelineCacheHeaderVersion int32

PipelineCacheHeaderVersion encodes the PipelineCache version

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheHeaderVersion.html

const (
	// PipelineCacheHeaderVersionOne specifies version 1 of the PipelineCache
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCacheHeaderVersion.html
	PipelineCacheHeaderVersionOne PipelineCacheHeaderVersion = C.VK_PIPELINE_CACHE_HEADER_VERSION_ONE
)

func (PipelineCacheHeaderVersion) Register

func (e PipelineCacheHeaderVersion) Register(str string)

func (PipelineCacheHeaderVersion) String

type PipelineColorBlendAttachmentState

type PipelineColorBlendAttachmentState struct {
	// BlendEnabled controls whether blending is enabled for the corresponding color attachment
	BlendEnabled bool

	// SrcColorBlendFactor selects which blend factor is used to determine the source factors
	// [R(sf), G(sf), B(sf)]
	SrcColorBlendFactor BlendFactor
	// DstColorBlendFactor selects which blend factor is used to determine the destination factors
	// [R(df), G(df), B(df)]
	DstColorBlendFactor BlendFactor
	// ColorBlendOp selects which blend operation is used to calculate the RGBG values to write to
	// the color attachment
	ColorBlendOp BlendOp

	// SrcAlphaBlendFactor selects which blend factor is used to determine the source factor A(sf)
	SrcAlphaBlendFactor BlendFactor
	// DstAlphaBlendFactor selects which blend factor is used to determine the detination factor A(sf)
	DstAlphaBlendFactor BlendFactor
	// AlphaBlendOp selects which blend operation is used to calculate the alpha values to write to the color
	// attachment
	AlphaBlendOp BlendOp

	// ColorWriteMask specifies which of the R, G, B, and/or A components are enabled for writing
	ColorWriteMask ColorComponentFlags
}

PipelineColorBlendAttachmentState specifies a Pipeline color blend attachment state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineColorBlendAttachmentState.html

type PipelineColorBlendStateCreateFlags

type PipelineColorBlendStateCreateFlags uint32

PipelineColorBlendStateCreateFlags specifies additional parameters of an Image

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineColorBlendStateCreateFlagBits.html

func (PipelineColorBlendStateCreateFlags) Register

func (PipelineColorBlendStateCreateFlags) String

type PipelineColorBlendStateCreateInfo

type PipelineColorBlendStateCreateInfo struct {
	// Flags specifies additional color blending information
	Flags PipelineColorBlendStateCreateFlags
	// LogicOpEnabled controls whether to apply logical operations
	LogicOpEnabled bool
	// LogicOp selects which logical operation to apply
	LogicOp LogicOp

	// BlendConstants is an array of 4 values used as the R, G, B, and A components of the
	// blend constant that are used in blending, depending on the blend factor
	BlendConstants [4]float32
	// Attachments is a slice of PipelineColorBlendAttachmentState structures defining blend state
	// for each color attachment
	Attachments []PipelineColorBlendAttachmentState

	common.NextOptions
}

PipelineColorBlendStateCreateInfo specifies parameters of a newly-created Pipeline color blend state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineColorBlendStateCreateInfo.html

func (PipelineColorBlendStateCreateInfo) PopulateCPointer

func (o PipelineColorBlendStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineCreateFlags

type PipelineCreateFlags int32

PipelineCreateFlags controls how a Pipeline is created

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlagBits.html

const (
	// PipelineCreateDisableOptimization specifies that the created Pipeline will not be optimized
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineCreateFlagBits.html
	PipelineCreateDisableOptimization PipelineCreateFlags = C.VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
	// PipelineCreateAllowDerivatives specifies that the Pipeline to be created is allowed to
	// be the parent of a Pipeline that will be created in a subsequent Pipeline creation call
	PipelineCreateAllowDerivatives PipelineCreateFlags = C.VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
	// PipelineCreateDerivative specifies that the Pipeline to be created will be a child of a
	// previously-created parent Pipeline
	PipelineCreateDerivative PipelineCreateFlags = C.VK_PIPELINE_CREATE_DERIVATIVE_BIT
)

func (PipelineCreateFlags) Register

func (f PipelineCreateFlags) Register(str string)

func (PipelineCreateFlags) String

func (f PipelineCreateFlags) String() string

type PipelineDepthStencilStateCreateFlags

type PipelineDepthStencilStateCreateFlags uint32

PipelineDepthStencilStateCreateFlags are reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineDepthStencilStateCreateFlags.html

func (PipelineDepthStencilStateCreateFlags) Register

func (PipelineDepthStencilStateCreateFlags) String

type PipelineDepthStencilStateCreateInfo

type PipelineDepthStencilStateCreateInfo struct {
	// Flags specifies additional depth/stencil state information
	Flags PipelineDepthStencilStateCreateFlags

	// DepthTestEnable controls whether depth testing is enabled
	DepthTestEnable bool
	// DepthWriteEnable controls whether depth writes are enabled when DepthTestEnable is true
	DepthWriteEnable bool
	// DepthCompareOp specifies the comparison operator to use in the depth comparison step
	// of the depth test
	DepthCompareOp CompareOp

	// DepthBoundsTestEnable controls whether depth bounds testing is enabled
	DepthBoundsTestEnable bool
	// StencilTestEnable controls whether stencil testing is enabled
	StencilTestEnable bool

	// Front controls the parameters of the stencil test for front-facing triangles
	Front StencilOpState
	// Back controls the parameters of the stencil test for back-facing triangles
	Back StencilOpState

	// MinDepthBounds is the minimum depth bound used in the depth bounds test
	MinDepthBounds float32
	// MaxDepthBounds is the maximum depth bound used in the depth bounds test
	MaxDepthBounds float32

	common.NextOptions
}

PipelineDepthStencilStateCreateInfo specifies parameters of a newly-created Pipeline depth stencil state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineDepthStencilStateCreateInfo.html

func (PipelineDepthStencilStateCreateInfo) PopulateCPointer

func (o PipelineDepthStencilStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineDynamicStateCreateFlags

type PipelineDynamicStateCreateFlags uint32

PipelineDynamicStateCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineDynamicStateCreateFlags.html

func (PipelineDynamicStateCreateFlags) Register

func (f PipelineDynamicStateCreateFlags) Register(str string)

func (PipelineDynamicStateCreateFlags) String

type PipelineDynamicStateCreateInfo

type PipelineDynamicStateCreateInfo struct {
	// Flags is reserved for future use
	Flags PipelineDynamicStateCreateFlags
	// DynamicStates is a slice of DynamicState values specifying which pieces of Pipeline state
	// will use the values from dynamic state commands rather than from Pipeline state creation
	// information
	DynamicStates []DynamicState

	common.NextOptions
}

PipelineDynamicStateCreateInfo specifies parameters of a newly-created Pipeline dynamic state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineDynamicStateCreateInfo.html

func (PipelineDynamicStateCreateInfo) PopulateCPointer

func (o PipelineDynamicStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineInputAssemblyStateCreateFlags

type PipelineInputAssemblyStateCreateFlags uint32

PipelineInputAssemblyStateCreateFlags reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineInputAssemblyStateCreateFlags.html

func (PipelineInputAssemblyStateCreateFlags) Register

func (PipelineInputAssemblyStateCreateFlags) String

type PipelineInputAssemblyStateCreateInfo

type PipelineInputAssemblyStateCreateInfo struct {
	// Flags is reserved for future use
	Flags PipelineInputAssemblyStateCreateFlags
	// Topology defines the primitive topology
	Topology PrimitiveTopology
	// PrimitiveRestartEnable controls whether a special vertex index value is treated as
	// restarting the assembly of primitives
	PrimitiveRestartEnable bool

	common.NextOptions
}

PipelineInputAssemblyStateCreateInfo specifies parameters of a newly-created Pipeline input assembly state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineInputAssemblyStateCreateInfo.html

func (PipelineInputAssemblyStateCreateInfo) PopulateCPointer

func (o PipelineInputAssemblyStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineLayout

type PipelineLayout interface {
	// Handle is the internal Vulkan object handle for this PipelineLayout
	Handle() driver.VkPipelineLayout
	// DeviceHandle is the internal Vulkan object handle for the Device this PipelineLayout belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this PipelineLayout
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this PipelineLayout. If it is at least
	// Vulkan 1.1, core1_1.PromotePipelineLayout can be used to promote this to a core1_1.PipelineLayout,
	// etc.
	APIVersion() common.APIVersion

	// Destroy destroys the PipelineLayout object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will be
	// invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyPipelineLayout.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

PipelineLayout provides access to descriptor sets to Pipeline objects by combining zero or more descriptor sets and zero or more push constant ranges.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkPipelineLayout.html

type PipelineLayoutCreateFlags

type PipelineLayoutCreateFlags uint32

PipelineLayoutCreateFlags represents PipelineLayout creation flag bits

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateFlagBits.html

func (PipelineLayoutCreateFlags) Register

func (f PipelineLayoutCreateFlags) Register(str string)

func (PipelineLayoutCreateFlags) String

func (f PipelineLayoutCreateFlags) String() string

type PipelineLayoutCreateInfo

type PipelineLayoutCreateInfo struct {
	// Flags specifies options for PipelineLayout creation
	Flags PipelineLayoutCreateFlags

	// SetLayouts is a slice of DescriptorSetLayout objects
	SetLayouts []DescriptorSetLayout
	// PushConstantRanges is a slice of PushConstantRange structures defining a set of push constant
	// ranges for use in a single PipelineLayout
	PushConstantRanges []PushConstantRange

	common.NextOptions
}

PipelineLayoutCreateInfo creates a new PipelineLayout object

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineLayoutCreateInfo.html

func (PipelineLayoutCreateInfo) PopulateCPointer

func (o PipelineLayoutCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineMultisampleStateCreateFlags

type PipelineMultisampleStateCreateFlags uint32

PipelineMultisampleStateCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineMultisampleStateCreateFlags.html

func (PipelineMultisampleStateCreateFlags) Register

func (PipelineMultisampleStateCreateFlags) String

type PipelineMultisampleStateCreateInfo

type PipelineMultisampleStateCreateInfo struct {
	// Flags is reserved for future use
	Flags PipelineMultisampleStateCreateFlags
	// RasterizationSamples specifies the number of samples used in rasterization
	RasterizationSamples SampleCountFlags

	// SampleShadingEnable can be used to enable sample shading
	SampleShadingEnable bool
	// MinSampleShading specifies a minimum fraction of sample shading if SampleShadingEnable
	// is set to true
	MinSampleShading float32
	// SampleMask is a slice of unsigned 32-bit integers used in the sample mask test
	SampleMask []uint32

	// AlphaToCoverageEnable controls whether a temporary coverage value is generated based on
	// the alpha component of the fragment's first color output
	AlphaToCoverageEnable bool
	// AlphaToOneEnable controls whether the alpha component of the fragment's first color output
	// is replaced with 1
	AlphaToOneEnable bool

	common.NextOptions
}

PipelineMultisampleStateCreateInfo specifies parameters of a newly-created Pipeline multisample state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineMultisampleStateCreateInfo.html

func (PipelineMultisampleStateCreateInfo) PopulateCPointer

func (o PipelineMultisampleStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineRasterizationStateCreateFlags

type PipelineRasterizationStateCreateFlags uint32

PipelineRasterizationStateCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineRasterizationStateCreateFlags.html

func (PipelineRasterizationStateCreateFlags) Register

func (PipelineRasterizationStateCreateFlags) String

type PipelineRasterizationStateCreateInfo

type PipelineRasterizationStateCreateInfo struct {
	// Flags is reserved for future use
	Flags PipelineRasterizationStateCreateFlags
	// DepthClampEnable controls whether to clamp the fragment's depth values
	DepthClampEnable bool
	// RasterizerDiscardEnable controls whether primitives are discarded immediately before the
	// rasterization stage
	RasterizerDiscardEnable bool

	// PolygonMode is the triangle rendering mode
	PolygonMode PolygonMode
	// CullMode is the triangle facing direction used for primitive culling
	CullMode CullModeFlags
	// FrontFace specifies the front-facing triangle orientation to be used for culling
	FrontFace FrontFace

	// DepthBiasEnable controls whether to bias fragment depth values
	DepthBiasEnable bool
	// DepthBiasClamp is the maximum (or minimum) depth bias of a fragment
	DepthBiasClamp float32
	// DepthBiasConstantFactor is a scalar factor controlling the constant depth value added
	// to each fragment
	DepthBiasConstantFactor float32
	// DepthBiasSlopeFactor is a scalar factor applied to a fragment's slope in depth bias
	// calculations
	DepthBiasSlopeFactor float32

	// LineWidth is the width of rasterized line segments
	LineWidth float32

	common.NextOptions
}

PipelineRasterizationStateCreateInfo specifies parameters of a newly-created Pipeline rasterization state

func (PipelineRasterizationStateCreateInfo) PopulateCPointer

func (o PipelineRasterizationStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineShaderStageCreateFlags added in v0.2.0

type PipelineShaderStageCreateFlags int32

PipelineShaderStageCreateFlags controls how a Pipeline shader stage is created

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateFlagBits.html

func (PipelineShaderStageCreateFlags) Register added in v0.2.0

func (f PipelineShaderStageCreateFlags) Register(str string)

func (PipelineShaderStageCreateFlags) String added in v0.2.0

type PipelineShaderStageCreateInfo

type PipelineShaderStageCreateInfo struct {
	// Flags specifies how the Pipeline shader stage will be generated
	Flags PipelineShaderStageCreateFlags
	// Name is a string specifying the entry point name of the shader for this stage
	Name string
	// Stage specifies a single Pipeline stage
	Stage ShaderStageFlags
	// Module contains the shader code for this stage
	Module ShaderModule
	// SpecializationInfo is a map specifying specialization contents
	SpecializationInfo map[uint32]any

	common.NextOptions
}

PipelineShaderStageCreateInfo specifies parameters of a newly-created Pipeline shader stage

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineShaderStageCreateInfo.html

func (PipelineShaderStageCreateInfo) PopulateCPointer

func (s PipelineShaderStageCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineStageFlags

type PipelineStageFlags int32

PipelineStageFlags specifies Pipeline stages

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html

const (
	// PipelineStageTopOfPipe is equivalent to PipelineStageAllCommands with AccessFlags set to 0
	// when specified in the second synchronization scope, but specifies no stage of execution when
	// specified in the first scope
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageTopOfPipe PipelineStageFlags = C.VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
	// PipelineStageDrawIndirect specifies the stage of the Pipeline where DrawIndirect...
	// and DispatchIndirect... data structures are consumed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageDrawIndirect PipelineStageFlags = C.VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
	// PipelineStageVertexInput specifies the stage of the Pipeline where vertex and index buffers are
	// consumed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageVertexInput PipelineStageFlags = C.VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
	// PipelineStageVertexShader specifies the vertex shader stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageVertexShader PipelineStageFlags = C.VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
	// PipelineStageTessellationControlShader specifies the tessellation control shader stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageTessellationControlShader PipelineStageFlags = C.VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
	// PipelineStageTessellationEvaluationShader specifies the tessellation evaluation shader stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageTessellationEvaluationShader PipelineStageFlags = C.VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
	// PipelineStageGeometryShader specifies the geometry shader stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageGeometryShader PipelineStageFlags = C.VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
	// PipelineStageFragmentShader specifies the fragment shader stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageFragmentShader PipelineStageFlags = C.VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
	// PipelineStageEarlyFragmentTests specifies the stage of the Pipeline where early fragment tests
	// (depth and stencil tests before fragment shading) are performed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageEarlyFragmentTests PipelineStageFlags = C.VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
	// PipelineStageLateFragmentTests specifies the stage of the Pipeline where late fragment tests
	// (depth and stencil tests after fragment shading) are performed
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageLateFragmentTests PipelineStageFlags = C.VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
	// PipelineStageColorAttachmentOutput specifies the stage of the Pipeline after blending where
	// the final color values are output from the Pipeline
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageColorAttachmentOutput PipelineStageFlags = C.VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
	// PipelineStageComputeShader specifies the execution of a compute shader
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageComputeShader PipelineStageFlags = C.VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT
	// PipelineStageTransfer specifies the following commands:
	// * All copy commands including CommandBuffer.CmdCopyQueryPoolResults
	// * CommandBuffer.CmdBlitImage
	// * CommandBuffer.CmdResolveImage
	// * All clear commands, with the exception of CommandBuffer.CmdClearAttachments
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageTransfer PipelineStageFlags = C.VK_PIPELINE_STAGE_TRANSFER_BIT
	// PipelineStageBottomOfPipe is equivalent to PipelineStageAllCommands with AccessFlags set to 0
	// when specified in the first synchronization scope, but specifies no stage of execution when
	// specified in the second scope
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageBottomOfPipe PipelineStageFlags = C.VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
	// PipelineStageHost specifies a pseudo-stage indicating execution on the host of reads/writes
	// of DeviceMemory. This stage is not invoked by any commands recorded in a CommandBuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageHost PipelineStageFlags = C.VK_PIPELINE_STAGE_HOST_BIT
	// PipelineStageAllGraphics specifies the execution of all graphics Pipeline stages, and is
	// equivalent to the logical OR of:
	// * PipelineStageDrawIndirect
	// * PipelineStageVertexInput
	// * PipelineStageVertexShader
	// * PipelineStageTessellationControlShader
	// * PipelineStageTessellationEvaluationShader
	// * PipelineStageGeometryShader
	// * PipelineStageFragmentShader
	// * PipelineStageEarlyFragmentTests
	// * PipelineStageLateFragmentTests
	// * PipelineColorAttachmentOutput
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageAllGraphics PipelineStageFlags = C.VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
	// PipelineStageAllCommands specifies all operations performed by all commands supported on the
	// queue it is used with
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineStageFlagBits.html
	PipelineStageAllCommands PipelineStageFlags = C.VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
)

func (PipelineStageFlags) Register

func (f PipelineStageFlags) Register(str string)

func (PipelineStageFlags) String

func (f PipelineStageFlags) String() string

type PipelineTessellationStateCreateFlags

type PipelineTessellationStateCreateFlags uint32

PipelineTessellationStateCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineTessellationStateCreateFlags.html

func (PipelineTessellationStateCreateFlags) Register

func (PipelineTessellationStateCreateFlags) String

type PipelineTessellationStateCreateInfo

type PipelineTessellationStateCreateInfo struct {
	// Flags is reserved for future use
	Flags PipelineTessellationStateCreateFlags
	// PatchControlPoints is the number of control points per patch
	PatchControlPoints uint32

	common.NextOptions
}

PipelineTessellationStateCreateInfo specifies parameters of a newly-created Pipeline tessellation state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineTessellationStateCreateInfo.html

func (PipelineTessellationStateCreateInfo) PopulateCPointer

func (o PipelineTessellationStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatePointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineVertexInputStateCreateInfo

type PipelineVertexInputStateCreateInfo struct {
	// VertexBindingDescriptions is a slice of VertexInputBindingDescription structures
	VertexBindingDescriptions []VertexInputBindingDescription
	// VertexAttributeDescriptions is a slice of VertexInputAttributeDescription structures
	VertexAttributeDescriptions []VertexInputAttributeDescription

	common.NextOptions
}

PipelineVertexInputStateCreateInfo specifies parameters of a newly-created Pipeline vertex input state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineVertexInputStateCreateInfo.html

func (PipelineVertexInputStateCreateInfo) PopulateCPointer

func (o PipelineVertexInputStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PipelineViewportStateCreateFlags

type PipelineViewportStateCreateFlags uint32

PipelineViewportStateCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPipelineViewportStateCreateFlags.html

func (PipelineViewportStateCreateFlags) Register

func (f PipelineViewportStateCreateFlags) Register(str string)

func (PipelineViewportStateCreateFlags) String

type PipelineViewportStateCreateInfo

type PipelineViewportStateCreateInfo struct {
	// Viewports is a slice of Viewport structures, defining viewport transforms
	Viewports []Viewport
	// Scissors is a slice of Rect2D structures defining the rectangular bounds of the scissor for
	// the corresponding viewport
	Scissors []Rect2D
	// Flags is reserved for future use
	Flags PipelineViewportStateCreateFlags

	common.NextOptions
}

PipelineViewportStateCreateInfo specifies parameters of a newly-created Pipeline viewport state

func (PipelineViewportStateCreateInfo) PopulateCPointer

func (o PipelineViewportStateCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type PolygonMode

type PolygonMode int32

PolygonMode controls polygon rasterization mode

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPolygonMode.html

func (PolygonMode) Register

func (e PolygonMode) Register(str string)

func (PolygonMode) String

func (e PolygonMode) String() string

type PrimitiveTopology

type PrimitiveTopology int32

PrimitiveTopology represents supported primitive topologies

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html

const (
	// PrimitiveTopologyPointList specifies a series of separate point primitives
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyPointList PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_POINT_LIST
	// PrimitiveTopologyLineList specifies a series of separate line primitives
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyLineList PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_LINE_LIST
	// PrimitiveTopologyLineStrip specifies a series of connected line primitives with consecutive
	// lines sharing a vertex
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyLineStrip PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
	// PrimitiveTopologyTriangleList specifies a series of separate triangle primitives
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyTriangleList PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
	// PrimitiveTopologyTriangleStrip specifies a series of connected triangle primitives with
	// consecutive triangles sharing an edge
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyTriangleStrip PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
	// PrimitiveTopologyTriangleFan specifies a series of connected triangle primitives with all triangles
	// sharing a common vertex
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyTriangleFan PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
	// PrimitiveTopologyLineListWithAdjacency specifies a series of separate line primitives with adjacency
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyLineListWithAdjacency PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
	// PrimitiveTopologyLineStripWithAdjacency specifies a series of connected line primitives
	// with adjacency, with consecutive primitives sharing three vertices
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyLineStripWithAdjacency PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
	// PrimitiveTopologyTriangleListWithAdjacency specifies a series of separate triangle primitives
	// with adjacency
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyTriangleListWithAdjacency PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
	// PrimitiveTopologyTriangleStripWithAdjacency specifies connected triangle primitives with
	// adjacency, with consecutive triangles sharing an edge
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyTriangleStripWithAdjacency PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
	// PrimitiveTopologyPatchList specifies separate patch primitives
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPrimitiveTopology.html
	PrimitiveTopologyPatchList PrimitiveTopology = C.VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
)

func (PrimitiveTopology) Register

func (e PrimitiveTopology) Register(str string)

func (PrimitiveTopology) String

func (e PrimitiveTopology) String() string

type PushConstantRange

type PushConstantRange struct {
	// StageFlags describes the shader stages that will access a range of push constants
	StageFlags ShaderStageFlags
	// Offset is the start offset consumed by the range, in bytes. Must be a multiple of 4
	Offset int
	// Size is the size consumed by the range, in bytes. Must be a multiple of 4
	Size int
}

PushConstantRange specifies a push constant range

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkPushConstantRange.html

type QueryControlFlags

type QueryControlFlags int32

QueryControlFlags specifies constraints on a query

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryControlFlagBits.html

func (QueryControlFlags) Register

func (f QueryControlFlags) Register(str string)

func (QueryControlFlags) String

func (f QueryControlFlags) String() string

type QueryPipelineStatisticFlags

type QueryPipelineStatisticFlags int32

QueryPipelineStatisticFlags specifies queried Pipeline statistics

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPipelineStatisticFlagBits.html

func (QueryPipelineStatisticFlags) Register

func (f QueryPipelineStatisticFlags) Register(str string)

func (QueryPipelineStatisticFlags) String

type QueryPool

type QueryPool interface {
	// Handle is the internal Vulkan object handle for this QueryPool
	Handle() driver.VkQueryPool
	// DeviceHandle is the internal Vulkan object handle for the Device this QueryPool belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this QueryPool
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this QueryPool. If it is at least
	// Vulkan 1.1, core1_1.PromoteQueryPool can be used to promote this to a core1_1.QueryPool, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the QueryPool object and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid.
	// Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyQueryPool.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// PopulateResults retrieves the status and results for a set of queries, and populates those results
	// into a preallocated byte array
	//
	// firstQuery - The initial query index
	//
	// queryCount - The number of queries to read
	//
	// results - A user-allocated slice of bytes where the results will be written
	//
	// resultStride - The stride in bytes between results for individual queries
	//
	// flags - Specifies how and when results are returned
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetQueryPoolResults.html
	PopulateResults(firstQuery, queryCount int, results []byte, resultStride int, flags QueryResultFlags) (common.VkResult, error)
}

QueryPool is a collection of a specific number of queries of a particular type.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueryPool.html

type QueryPoolCreateFlags

type QueryPoolCreateFlags uint32

QueryPoolCreateFlags is reserved for future use

func (QueryPoolCreateFlags) Register

func (f QueryPoolCreateFlags) Register(str string)

func (QueryPoolCreateFlags) String

func (f QueryPoolCreateFlags) String() string

type QueryPoolCreateInfo

type QueryPoolCreateInfo struct {
	// Flags is reserved for future use
	Flags QueryPoolCreateFlags

	// QueryType specifies the type of queries managed by the QueryPool
	QueryType QueryType
	// QueryCount is the number of queries managed by the QueryPool
	QueryCount int
	// PipelineStatistics specifies which counters will be returned in queries on the
	// new QueryPool
	PipelineStatistics QueryPipelineStatisticFlags

	common.NextOptions
}

QueryPoolCreateInfo specifies parameters of a newly-created QueryPool

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryPoolCreateInfo.html

func (QueryPoolCreateInfo) PopulateCPointer

func (o QueryPoolCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type QueryResultFlags

type QueryResultFlags int32

QueryResultFlags specifies how and when query results are returned

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryResultFlagBits.html

func (QueryResultFlags) Register

func (f QueryResultFlags) Register(str string)

func (QueryResultFlags) String

func (f QueryResultFlags) String() string

type QueryType

type QueryType int32

QueryType specifies the type of queries managed by a QueryPool

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueryType.html

func (QueryType) Register

func (e QueryType) Register(str string)

func (QueryType) String

func (e QueryType) String() string

type Queue

type Queue interface {
	// Handle is the internal Vulkan object handle for this Queue
	Handle() driver.VkQueue
	// DeviceHandle is the internal Vulkan object handle for the Device this Queue belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Queue
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Queue. If it is at least Vulkan 1.1,
	// core1_1.PromoteQueue can be used to promote this to a core1_1.Queue, etc.
	APIVersion() common.APIVersion

	// WaitIdle waits for this Queue to become idle
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkQueueWaitIdle.html
	WaitIdle() (common.VkResult, error)
	// Submit submits a sequence of Semaphore or CommandBuffer objects to this queue
	//
	// fence - An optional Fence object to be signaled once all submitted CommandBuffer objects have
	// completed execution.
	//
	// o - A slice of SubmitInfo structures, each specifying a CommandBuffer submission batch
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkQueueSubmit.html
	Submit(fence Fence, o []SubmitInfo) (common.VkResult, error)
	// BindSparse binds DeviceMemory to a sparse resource object
	//
	// fence - An optional Fence object to be signaled.
	//
	// bindInfos - A slice of BindSparseInfo structures, each speicfying a sparse binding submission batch
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkQueueBindSparse.html
	BindSparse(fence Fence, bindInfos []BindSparseInfo) (common.VkResult, error)
}

Queue represents a Device resource on which work is performed

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkQueue.html

type QueueFamilyProperties added in v0.2.0

type QueueFamilyProperties struct {
	// QueueFlags indicates capabilities of the Queue objects in this Queue family
	QueueFlags QueueFlags
	// QueueCount is the number of Queue objects in this Queue family
	QueueCount int
	// TimestampValidBits is the number of meaningful bits in the timestamps written via
	// CommandBuffer.CmdWriteTimestamp
	TimestampValidBits uint32
	// MinImageTransferGranularity is the minimum granularity supported for Image transfer
	// operations on the Queue objects in this Queue family
	MinImageTransferGranularity Extent3D
}

QueueFamilyProperties provides information about a Queue family

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFamilyProperties.html

type QueueFlags

type QueueFlags int32

QueueFlags specifies capabilities of Queue objects in a Queue family

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkQueueFlagBits.html

func (QueueFlags) Register

func (f QueueFlags) Register(str string)

func (QueueFlags) String

func (f QueueFlags) String() string

type Rect2D

type Rect2D struct {
	// Offset specifies the rectangle offset
	Offset Offset2D
	// Extent specifies the rectangle extent
	Extent Extent2D
}

Rect2D specifies a two-dimensional subregion

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRect2D.html

type RenderPass

type RenderPass interface {
	// Handle is the internal Vulkan object handle for this RenderPass
	Handle() driver.VkRenderPass
	// DeviceHandle is the internal Vulkan object handle for the Device this RenderPass belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this RenderPass
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this RenderPass. If it is at least Vulkan
	// 1.1, core1_1.PromoteRenderPass can be used to promote this to a core1_1.RenderPass, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the RenderPass object and the underlying structures.  **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will
	// be invalid. Do not call further methods on this object.
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyRenderPass.html
	Destroy(callbacks *driver.AllocationCallbacks)
	// RenderAreaGranularity returns the granularity for optimal render area
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetRenderAreaGranularity.html
	RenderAreaGranularity() Extent2D
}

RenderPass represents a collection of attachments, subpasses, and dependencies between the subpasses and describes how the attachments are used over the course of the subpasses

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkRenderPass.html

type RenderPassBeginInfo

type RenderPassBeginInfo struct {
	// RenderPass is the RenderPass to begin an instance of
	RenderPass RenderPass
	// Framebuffer is the Framebuffer containing the attachments that are used with the
	// RenderPass
	Framebuffer Framebuffer

	// RenderArea is the render area that is affected by this RenderPass instance
	RenderArea Rect2D
	// ClearValues is a slice of ClearValue structures containing clear values for each attachment
	// if the attachment uses an AttachmentLoadOp value of AttachmentLoadOpClear. Elements of the slice
	// corresponding to attachments that do not use AttachmentLoadOpClear are ignored
	ClearValues []ClearValue

	common.NextOptions
}

RenderPassBeginInfo specifies RenderPass begin information

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderPassBeginInfo.html

func (RenderPassBeginInfo) PopulateCPointer

func (o RenderPassBeginInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type RenderPassCreateFlags

type RenderPassCreateFlags int32

RenderPassCreateFlags specifies additional properties of a RenderPass

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderPassCreateFlagBits.html

func (RenderPassCreateFlags) Register

func (f RenderPassCreateFlags) Register(str string)

func (RenderPassCreateFlags) String

func (f RenderPassCreateFlags) String() string

type RenderPassCreateInfo

type RenderPassCreateInfo struct {
	// Flags is a bitmask of RenderPassCreateFlags
	Flags RenderPassCreateFlags
	// Attachments is a slice of AttachmentDescription structures describing the attachments
	// used by the RenderPass
	Attachments []AttachmentDescription
	// Subpasses is a slice of SubpassDescription structures describing each subpass
	Subpasses []SubpassDescription
	// SubpassDependencies is a slice of SubpassDependency structures describing dependencies
	// between pairs of subpasses
	SubpassDependencies []SubpassDependency

	common.NextOptions
}

RenderPassCreateInfo specifies parameters of a newly-created RenderPass

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkRenderPassCreateInfo.html

func (RenderPassCreateInfo) PopulateCPointer

func (o RenderPassCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type SampleCountFlags

type SampleCountFlags int32

SampleCountFlags specifies sample counts supported for an Image used for storage operations

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSampleCountFlagBits.html

func (SampleCountFlags) Count

func (f SampleCountFlags) Count() int

func (SampleCountFlags) RegisterSamples

func (f SampleCountFlags) RegisterSamples(str string, sampleCount int)

func (SampleCountFlags) String

func (f SampleCountFlags) String() string

type Sampler

type Sampler interface {
	// Handle is the internal Vulkan object handle for this Sampler
	Handle() driver.VkSampler
	// DeviceHandle is the internal Vulkan object handle for the Device this Sampler belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Sampler
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Sampler. If it is at least Vulkan
	// 1.1, core1_1.PromoteSampler can be used to promote this to a core1_1.Sampler, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the Sampler object and the underlying structures. **Warning** after destruction,
	// this object will continue to exist, but the Vulkan objec thandle that backs it will be invalid.
	// Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroySampler.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

Sampler represents the state of an Image sampler, which is used by the implementation to read Image data and apply filtering and other transformations for the shader.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSampler.html

type SamplerAddressMode

type SamplerAddressMode int32

SamplerAddressMode specifies behavior of sampling with texture coordinates outside an Image

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerAddressMode.html

func (SamplerAddressMode) Register

func (e SamplerAddressMode) Register(str string)

func (SamplerAddressMode) String

func (e SamplerAddressMode) String() string

type SamplerCreateFlags

type SamplerCreateFlags int32

SamplerCreateFlags specifies additional parameters of a Sampler

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateFlagBits.html

func (SamplerCreateFlags) Register

func (f SamplerCreateFlags) Register(str string)

func (SamplerCreateFlags) String

func (f SamplerCreateFlags) String() string

type SamplerCreateInfo

type SamplerCreateInfo struct {
	// Flags describes additional parameters of the Sampler
	Flags SamplerCreateFlags
	// MagFilter specifies the magnification filter to apply to lookups
	MagFilter Filter
	// MinFilter specifies the minification filter to apply to lookups
	MinFilter Filter
	// MipmapMode specifies the mipmap filter to apply to lookups
	MipmapMode SamplerMipmapMode
	// AddressModeU specifies the addressing mode for U coordinates outside [0,1)
	AddressModeU SamplerAddressMode
	// AddressModeV specifies the addressing mode for V coordinates outside [0,1)
	AddressModeV SamplerAddressMode
	// AddressModeW specifies the addressing mode for W coordinates outside [0,1)
	AddressModeW SamplerAddressMode

	// MipLodBias is the bias to be added to mipmap level-of-detail calculations and bias provided
	// by Image sampling functions
	MipLodBias float32
	// MinLod is used to clamp the minimum of the computed level-of-detail value
	MinLod float32
	// MaxLod is used to clamp the maximum of the computed level-of-detail value- to avoid
	// clamping the maximum value, set MaxLod to the constant LodClampNone
	MaxLod float32

	// AnisotropyEnable is true to enable anisotropic filtering
	AnisotropyEnable bool
	// MaxAnisotropy is the anisotropy value clamp used by the Sampler when AnisotropyEnable is true
	MaxAnisotropy float32

	// CompareEnable is true to enable comparison against a reference value during lookups, or
	// false otherwise
	CompareEnable bool
	// CompareOp specifies the comparison operator to apply to fetched data before filtering
	CompareOp CompareOp

	// BorderColor specifies the predefined border color to use
	BorderColor BorderColor
	// UnnormalizedCoordinates controls whether to use unnormalized or normalized texel coordinates
	// to address texels of the image. When set to true, the range of the Image coordinates used
	// to lookup the texel is in the range of 0 to the Image size in each dimension. When set to
	// false, the range of Image coordinates is 0..1
	UnnormalizedCoordinates bool

	common.NextOptions
}

SamplerCreateInfo specifies parameters of a newly-created Sampler

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerCreateInfo.html

func (SamplerCreateInfo) PopulateCPointer

func (o SamplerCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type SamplerMipmapMode

type SamplerMipmapMode int32

SamplerMipmapMode specifies the mipmap mode used for texture lookups

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSamplerMipmapMode.html

func (SamplerMipmapMode) Register

func (e SamplerMipmapMode) Register(str string)

func (SamplerMipmapMode) String

func (e SamplerMipmapMode) String() string

type Semaphore

type Semaphore interface {
	// Handle is the internal Vulkan object handle for this Semaphore
	Handle() driver.VkSemaphore
	// DeviceHandle is the internal Vulkan object handle for the Device this Semaphore belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this Semaphore
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this Semaphore. If it is at least
	// Vulkan 1.1, core1_1.PromoteSemaphore can be used to promote this to a core1_1.Semaphore
	APIVersion() common.APIVersion

	// Destroy destroys the Semaphore object and the underlying structures. **Warning** after destruciton,
	// this object will continue to exist, but the Vulkan object handle that backs it will be invalid.
	// Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroySemaphore.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

Semaphore is a synchronization primitive that can be used to insert a dependency between Queue operations or between a Queue operation and the host.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkSemaphore.html

type SemaphoreCreateFlags

type SemaphoreCreateFlags int32

SemaphoreCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreCreateFlags.html

func (SemaphoreCreateFlags) Register

func (f SemaphoreCreateFlags) Register(str string)

func (SemaphoreCreateFlags) String

func (f SemaphoreCreateFlags) String() string

type SemaphoreCreateInfo

type SemaphoreCreateInfo struct {
	// Flags is reserved future use
	Flags SemaphoreCreateFlags

	common.NextOptions
}

SemaphoreCreateInfo specifies parameters of a newly-created Semaphore

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSemaphoreCreateInfo.html

func (SemaphoreCreateInfo) PopulateCPointer

func (o SemaphoreCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ShaderModule

type ShaderModule interface {
	// Handle is the internal Vulkan object handle for this ShaderModule
	Handle() driver.VkShaderModule
	// DeviceHandle is the internal Vulkan object handle for the Device this ShaderModule belongs to
	DeviceHandle() driver.VkDevice
	// Driver is the Vulkan wrapper driver used by this ShaderModule
	Driver() driver.Driver
	// APIVersion is the maximum Vulkan API version supported by this ShaderModule. If it is at least
	// Vulkan 1.1, core1_1.PromoteShaderModule can be used to promote this to a core1_1.ShaderModule, etc.
	APIVersion() common.APIVersion

	// Destroy destroys the ShaderModule object and the underlying structures. **Warning** after
	// destruction, this object will continue to exist, but the Vulkan object handle that backs it will
	// be invalid. Do not call further methods on this object.
	//
	// callbacks - Controls host memory deallocation
	//
	// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkDestroyShaderModule.html
	Destroy(callbacks *driver.AllocationCallbacks)
}

ShaderModule objects contain shader code and one or more entry points.

https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkShaderModule.html

type ShaderModuleCreateFlags

type ShaderModuleCreateFlags int32

ShaderModuleCreateFlags is reserved for future use

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderModuleCreateFlags.html

func (ShaderModuleCreateFlags) Register

func (f ShaderModuleCreateFlags) Register(str string)

func (ShaderModuleCreateFlags) String

func (f ShaderModuleCreateFlags) String() string

type ShaderModuleCreateInfo

type ShaderModuleCreateInfo struct {
	// Code is the code that is used to create the ShaderModule. The type and format of the code
	// is determined from the content of the data
	Code []uint32
	// Flags is reserved for future use
	Flags ShaderModuleCreateFlags

	common.NextOptions
}

ShaderModuleCreateInfo specifies parameters of a newly-created ShaderModule

func (ShaderModuleCreateInfo) PopulateCPointer

func (o ShaderModuleCreateInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type ShaderStageFlags

type ShaderStageFlags int32

ShaderStageFlags specifies a Pipeline stage

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html

const (
	// StageVertex specifies the vertex stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html
	StageVertex ShaderStageFlags = C.VK_SHADER_STAGE_VERTEX_BIT
	// StageTessellationControl specifies the tessellation control stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html
	StageTessellationControl ShaderStageFlags = C.VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
	// StageTessellationEvaluation specifies the tessellation evaluation stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html
	StageTessellationEvaluation ShaderStageFlags = C.VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
	// StageGeometry specifies the geometry stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html
	StageGeometry ShaderStageFlags = C.VK_SHADER_STAGE_GEOMETRY_BIT
	// StageFragment specifies the fragment stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html
	StageFragment ShaderStageFlags = C.VK_SHADER_STAGE_FRAGMENT_BIT
	// StageCompute specifies the compute stage
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkShaderStageFlagBits.html
	StageCompute ShaderStageFlags = C.VK_SHADER_STAGE_COMPUTE_BIT
	// StageAllGraphics is a combination of bits used as shorthand to specify all graphics
	// stages (excluding the compute stage)
	StageAllGraphics ShaderStageFlags = C.VK_SHADER_STAGE_ALL_GRAPHICS
	// StageAll is a combination of bits used as a shorthand to specify all shader stages
	// supported by the Device, including all additional stages which are introduced by
	// extensions
	StageAll ShaderStageFlags = C.VK_SHADER_STAGE_ALL
)

func (ShaderStageFlags) Register

func (f ShaderStageFlags) Register(str string)

func (ShaderStageFlags) String

func (f ShaderStageFlags) String() string

type SharingMode

type SharingMode int32

SharingMode represents Buffer and Image sharing modes

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSharingMode.html

func (SharingMode) Register

func (e SharingMode) Register(str string)

func (SharingMode) String

func (e SharingMode) String() string

type SparseBufferMemoryBindInfo

type SparseBufferMemoryBindInfo struct {
	// Buffer is the Buffer object to be bound
	Buffer Buffer
	// Binds is a slice of SparseMemoryBind structures
	Binds []SparseMemoryBind
}

SparseBufferMemoryBindInfo specifies a sparse buffer memory bind operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseBufferMemoryBindInfo.html

type SparseImageFormatFlags

type SparseImageFormatFlags int32

SparseImageFormatFlags specifies additional information about a sparse Image resource

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatFlagBits.html

func (SparseImageFormatFlags) Register

func (f SparseImageFormatFlags) Register(str string)

func (SparseImageFormatFlags) String

func (f SparseImageFormatFlags) String() string

type SparseImageFormatProperties

type SparseImageFormatProperties struct {
	// AspectMask specifies which aspects of the Image the properties apply to
	AspectMask ImageAspectFlags
	// ImageGranularity is the width, height, and depth of the sparse Image block in texels
	// or compressed texel blocks
	ImageGranularity Extent3D
	// Flags specifies additional information about the sparse resource
	Flags SparseImageFormatFlags
}

SparseImageFormatProperties specifies sparse Image format properties

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageFormatProperties.html

type SparseImageMemoryBind

type SparseImageMemoryBind struct {
	// Subresource is the Image aspect and region of interest in the Image
	Subresource ImageSubresource
	// Offset are the coordinates of the first texel within the Image subresource to bind
	Offset Offset3D
	// Extent is the size in texels of the region within the Image subresource to bind
	Extent Extent3D

	// Memory is the DeviceMemory object that the sparse Image blocks of the Image are bound to
	Memory DeviceMemory
	// MemoryOffset is an offset into the DeviceMemory object
	MemoryOffset int

	// Flags are sparse memory binding flags
	Flags SparseMemoryBindFlags
}

SparseImageMemoryBind specifies sparse Image memory bind

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageMemoryBind.html

type SparseImageMemoryBindInfo

type SparseImageMemoryBindInfo struct {
	// Image is the Image object to be bound
	Image Image
	// Binds is a slice of SparseImageMemoryBind structures
	Binds []SparseImageMemoryBind
}

SparseImageMemoryBindInfo specifies sparse Image memory bind information

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageMemoryBindInfo.html

type SparseImageMemoryRequirements

type SparseImageMemoryRequirements struct {
	// FormatProperties specifies properties of the Image format
	FormatProperties SparseImageFormatProperties
	// ImageMipTailFirstLod is the first mip level at which Image subresources are included in the mip tail region
	ImageMipTailFirstLod int
	// ImageMipTailSize is the memory size in (in bytes) of the mip tail region
	ImageMipTailSize int
	// ImageMipTailOffset is the opaque memory offset used to bind the mip tail region(s)
	ImageMipTailOffset int
	// ImageMipTailStride is the offset stride between each array-layer's mip tail
	ImageMipTailStride int
}

SparseImageMemoryRequirements specifies sparse image memory requirements

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageMemoryRequirements.html

type SparseImageOpaqueMemoryBindInfo

type SparseImageOpaqueMemoryBindInfo struct {
	// Image is the Image object to be bound
	Image Image
	// Binds is a slice of SparseMemoryBind structures
	Binds []SparseMemoryBind
}

SparseImageOpaqueMemoryBindInfo specifies sparse Image opaque memory bind information

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseImageOpaqueMemoryBindInfo.html

type SparseMemoryBind

type SparseMemoryBind struct {
	// ResourceOffset is the offset into the resource
	ResourceOffset int
	// Size is the size of the memory region to be bound
	Size int

	// Memory is the DeviceMemory object that the range of the resource is bound to
	Memory DeviceMemory
	// MemoryOffset is the offset into the DeviceMemory object to bind the resource range to
	MemoryOffset int

	// Flags specifies usage of the binding operation
	Flags SparseMemoryBindFlags
}

SparseMemoryBind specifies a sparse memory bind operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseMemoryBind.html

func (SparseMemoryBind) PopulateCPointer

func (b SparseMemoryBind) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer) (unsafe.Pointer, error)

type SparseMemoryBindFlags

type SparseMemoryBindFlags int32

SparseMemoryBindFlags specifies usage of a sparse memory binding operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseMemoryBindFlagBits.html

const (
	// SparseMemoryBindMetadata specifies that the memory being bound is only for the
	// metadata aspect
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSparseMemoryBindFlagBits.html
	SparseMemoryBindMetadata SparseMemoryBindFlags = C.VK_SPARSE_MEMORY_BIND_METADATA_BIT
)

func (SparseMemoryBindFlags) Register

func (f SparseMemoryBindFlags) Register(str string)

func (SparseMemoryBindFlags) String

func (f SparseMemoryBindFlags) String() string

type StencilFaceFlags

type StencilFaceFlags int32

StencilFaceFlags specifies sets of stencil state for which to update the compare mask

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilFaceFlagBits.html

func (StencilFaceFlags) Register

func (f StencilFaceFlags) Register(str string)

func (StencilFaceFlags) String

func (f StencilFaceFlags) String() string

type StencilOp

type StencilOp int32

StencilOp represents the stencil comparison function

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html

const (
	// StencilKeep keeps the current value
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilKeep StencilOp = C.VK_STENCIL_OP_KEEP
	// StencilZero sets the value to 0
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilZero StencilOp = C.VK_STENCIL_OP_ZERO
	// StencilReplace sets the value to Reference
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilReplace StencilOp = C.VK_STENCIL_OP_REPLACE
	// StencilIncrementAndClamp increments the current value and clamps to the maximum
	// representable unsigned value
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilIncrementAndClamp StencilOp = C.VK_STENCIL_OP_INCREMENT_AND_CLAMP
	// StencilDecrementAndClamp decrements the current value and clamps to 0
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilDecrementAndClamp StencilOp = C.VK_STENCIL_OP_DECREMENT_AND_CLAMP
	// StencilInvert bitwise-inverts the current value
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilInvert StencilOp = C.VK_STENCIL_OP_INVERT
	// StencilIncrementAndWrap increments the current value and wraps to 0 when the
	// maximum would have been exceeded
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilIncrementAndWrap StencilOp = C.VK_STENCIL_OP_INCREMENT_AND_WRAP
	// StencilDecrementAndWrap decrements the current value and wraps to the maximum possible
	// value when the value would go below 0
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOp.html
	StencilDecrementAndWrap StencilOp = C.VK_STENCIL_OP_DECREMENT_AND_WRAP
)

func (StencilOp) Register

func (e StencilOp) Register(str string)

func (StencilOp) String

func (e StencilOp) String() string

type StencilOpState

type StencilOpState struct {
	// FailOp specifies the action performed on samples that fail the stencil test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOpState.html
	FailOp StencilOp
	// PassOp specifies the action performed on samples that pass both the depth and stencil tests
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOpState.html
	PassOp StencilOp
	// DepthFailOp specifies the action performed on samples that pass the stencil test and fail
	// the depth test
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOpState.html
	DepthFailOp StencilOp

	// CompareOp specifies the comparison operator used in the stencil test
	CompareOp CompareOp
	// CompareMask selects the bits of the unsigned integer stencil values participating in the
	// stencil test
	CompareMask uint32
	// WriteMask selects the bits of the unsigned integer stencil values updated by the stencil
	// test in the stencil Framebuffer attachment
	WriteMask uint32

	// Reference is an integer stencil reference value that is used in the unsigned stencil
	// comparison
	Reference uint32
}

StencilOpState specifies stencil operation state

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkStencilOpState.html

type SubmitInfo

type SubmitInfo struct {
	// CommandBuffers is a slice of CommandBuffer objects to execute in the batch
	CommandBuffers []CommandBuffer
	// WaitSemaphores is a slice of Semaphore objects upon which to wait before the CommandBuffer
	// objects for this batch begin execution
	WaitSemaphores []Semaphore
	// WaitDstStageMask is a slice of PipelineStageFlags at which each corresponding semaphore
	// wait will occur
	WaitDstStageMask []PipelineStageFlags
	// SignalSemaphores is a slice of Semaphore objects which will be signaled when the
	// CommandBuffer objects for this batch have completed execution
	SignalSemaphores []Semaphore

	common.NextOptions
}

SubmitInfo specifies a Queue submit operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubmitInfo.html

func (SubmitInfo) PopulateCPointer

func (o SubmitInfo) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type SubpassContents

type SubpassContents int32

SubpassContents specifies how commands in the first subpass of a RenderPass are provided

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassContents.html

const (
	// SubpassContentsInline specifies that the contents of the subpass will be recorded inline in
	// the primary CommandBuffer and secondary CommandBuffer objects must not be executed within
	// the subpass.
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassContents.html
	SubpassContentsInline SubpassContents = C.VK_SUBPASS_CONTENTS_INLINE
	// SubpassContentsSecondaryCommandBuffers specifies that the contents are recorded in
	// secondary CommandBuffer objects that will be called from the primary CommandBuffer
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassContents.html
	SubpassContentsSecondaryCommandBuffers SubpassContents = C.VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
)

func (SubpassContents) Register

func (e SubpassContents) Register(str string)

func (SubpassContents) String

func (e SubpassContents) String() string

type SubpassDependency

type SubpassDependency struct {
	// DependencyFlags is a bitmask of DependencyFlags
	DependencyFlags DependencyFlags

	// SrcSubpass is the subpass index of the first subpass in the dependency, or SubpassExternal
	SrcSubpass int
	// DstSubpass is the subpass index of the second subpass in the dependency, or SubpassExternal
	DstSubpass int

	// SrcStageMask specifies the source stage mask
	SrcStageMask PipelineStageFlags
	// DstStageMask specifies the destination stage mask
	DstStageMask PipelineStageFlags

	// SrcAccessMask specifies a source access mask
	SrcAccessMask AccessFlags
	// DstAccessMask specifies a destination access mask
	DstAccessMask AccessFlags
}

SubpassDependency specifies a subpass dependency

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassDependency.html

type SubpassDescription

type SubpassDescription struct {
	// Flags specifies usage of the subpass
	Flags SubpassDescriptionFlags
	// PipelineBindPoint specifies the Pipeline type supported by this subpass
	PipelineBindPoint PipelineBindPoint

	// InputAttachments is a slice of AttachmentReference structures defining the input attachments
	// for this subpass and their layouts
	InputAttachments []AttachmentReference
	// ColorAttachments is a slice of AttachmentReference structures defining the color attachments
	// for this subpass and their layouts
	ColorAttachments []AttachmentReference
	// ResolveAttachments is a slice of AttachmentReference structures defining the resolve
	// attachments for this subpass and their layouts
	ResolveAttachments []AttachmentReference
	// DepthStencilAttachment specifies the depth/stencil attachment for this subpass and its
	// layout
	DepthStencilAttachment *AttachmentReference
	// PreserveAttachments is a slice of indices identifying attachments that are not used by
	// this subpass, but whose contents must be preserved throughout the subpass
	PreserveAttachments []int
}

SubpassDescription specifies a subpass description

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassDescription.html

type SubpassDescriptionFlags

type SubpassDescriptionFlags int32

SubpassDescriptionFlags specifies usage of a subpass

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubpassDescriptionFlagBits.html

func (SubpassDescriptionFlags) Register

func (f SubpassDescriptionFlags) Register(str string)

func (SubpassDescriptionFlags) String

func (f SubpassDescriptionFlags) String() string

type SubresourceLayout

type SubresourceLayout struct {
	// Offset is the byte offset from the start of the Image or the plane where the Image
	// subresource begins
	Offset int
	// Size is the size in bytes of the image subresource
	Size int
	// RowPitch describes the number of bytes between each row of texels in an Image
	RowPitch int
	// ArrayPitch describes the number of bytes between each layer of an Image
	ArrayPitch int
	// DepthPitch describes the number of bytes between each slice of a 3D image
	DepthPitch int
}

SubresourceLayout specifies the subresource layer

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSubresourceLayout.html

type VertexInputAttributeDescription

type VertexInputAttributeDescription struct {
	// Location is the shader input location number for this attribute
	Location uint32
	// Binding is the binding number which this attribute takes its data from
	Binding int
	// Format is the size and type of the vertex attribute data
	Format Format
	// Offset is a byte offset of this attribute relative to the start of an element in the vertex
	// input binding
	Offset int
}

VertexInputAttributeDescription specifies a vertex input attribute description

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVertexInputAttributeDescription.html

type VertexInputBindingDescription

type VertexInputBindingDescription struct {
	// InputRate specifies whether vertex attribute addressing is a function of the vertex index
	// or the instance index
	InputRate VertexInputRate
	// Binding isthe bidning number that this structure describes
	Binding int
	// Stride is the byte stride between consecutive elements within the buffer
	Stride int
}

VertexInputBindingDescription specifies a vertex input binding description

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVertexInputBindingDescription.html

type VertexInputRate added in v0.2.0

type VertexInputRate int32

VertexInputRate specifies the rate at which vertex attributes are pulled from buffers

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVertexInputRate.html

const (
	// VertexInputRateVertex specifies that vertex attribute addressing is a function of the vertex index
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVertexInputRate.html
	VertexInputRateVertex VertexInputRate = C.VK_VERTEX_INPUT_RATE_VERTEX
	// VertexInputRateInstance specifies that vertex attribute addressing is a function of the
	// instance index
	//
	// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkVertexInputRate.html
	VertexInputRateInstance VertexInputRate = C.VK_VERTEX_INPUT_RATE_INSTANCE
)

func (VertexInputRate) Register added in v0.2.0

func (e VertexInputRate) Register(str string)

func (VertexInputRate) String added in v0.2.0

func (e VertexInputRate) String() string

type Viewport

type Viewport struct {
	// X is the x-coordinate of the viewport's upper-left corner
	X float32
	// Y is the y-coordinate of the viewport's upper-left corner
	Y float32
	// Width is the viewport's width
	Width float32
	// Height is the viewport's height
	Height float32
	// MinDepth is the near depth range for the viewport
	MinDepth float32
	// MaxDepth is the far depth range for the viewport
	MaxDepth float32
}

Viewport specifies a viewport

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkViewport.html

type VulkanBuffer

type VulkanBuffer struct {
	// contains filtered or unexported fields
}

VulkanBuffer is an implementation of the Buffer interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanBuffer) APIVersion

func (b *VulkanBuffer) APIVersion() common.APIVersion

func (*VulkanBuffer) BindBufferMemory

func (b *VulkanBuffer) BindBufferMemory(memory DeviceMemory, offset int) (common.VkResult, error)

func (*VulkanBuffer) Destroy

func (b *VulkanBuffer) Destroy(allocationCallbacks *driver.AllocationCallbacks)

func (*VulkanBuffer) DeviceHandle

func (b *VulkanBuffer) DeviceHandle() driver.VkDevice

func (*VulkanBuffer) Driver

func (b *VulkanBuffer) Driver() driver.Driver

func (*VulkanBuffer) Handle

func (b *VulkanBuffer) Handle() driver.VkBuffer

func (*VulkanBuffer) MemoryRequirements

func (b *VulkanBuffer) MemoryRequirements() *MemoryRequirements

type VulkanBufferView

type VulkanBufferView struct {
	// contains filtered or unexported fields
}

VulkanBufferView is an implementation of the BufferView interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanBufferView) APIVersion

func (v *VulkanBufferView) APIVersion() common.APIVersion

func (*VulkanBufferView) Destroy

func (v *VulkanBufferView) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanBufferView) DeviceHandle

func (v *VulkanBufferView) DeviceHandle() driver.VkDevice

func (*VulkanBufferView) Driver

func (v *VulkanBufferView) Driver() driver.Driver

func (*VulkanBufferView) Handle

func (v *VulkanBufferView) Handle() driver.VkBufferView

type VulkanCommandBuffer

type VulkanCommandBuffer struct {
	// contains filtered or unexported fields
}

VulkanCommandBuffer is an implementation of the CommandBuffer interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanCommandBuffer) APIVersion

func (c *VulkanCommandBuffer) APIVersion() common.APIVersion

func (*VulkanCommandBuffer) Begin

func (*VulkanCommandBuffer) CmdBeginQuery

func (c *VulkanCommandBuffer) CmdBeginQuery(queryPool QueryPool, query int, flags QueryControlFlags)

func (*VulkanCommandBuffer) CmdBeginRenderPass

func (c *VulkanCommandBuffer) CmdBeginRenderPass(contents SubpassContents, o RenderPassBeginInfo) error

func (*VulkanCommandBuffer) CmdBindDescriptorSets

func (c *VulkanCommandBuffer) CmdBindDescriptorSets(bindPoint PipelineBindPoint, layout PipelineLayout, sets []DescriptorSet, dynamicOffsets []int)

func (*VulkanCommandBuffer) CmdBindIndexBuffer

func (c *VulkanCommandBuffer) CmdBindIndexBuffer(buffer Buffer, offset int, indexType IndexType)

func (*VulkanCommandBuffer) CmdBindPipeline

func (c *VulkanCommandBuffer) CmdBindPipeline(bindPoint PipelineBindPoint, pipeline Pipeline)

func (*VulkanCommandBuffer) CmdBindVertexBuffers

func (c *VulkanCommandBuffer) CmdBindVertexBuffers(firstBinding int, buffers []Buffer, bufferOffsets []int)

func (*VulkanCommandBuffer) CmdBlitImage

func (c *VulkanCommandBuffer) CmdBlitImage(sourceImage Image, sourceImageLayout ImageLayout, destinationImage Image, destinationImageLayout ImageLayout, regions []ImageBlit, filter Filter) error

func (*VulkanCommandBuffer) CmdClearAttachments

func (c *VulkanCommandBuffer) CmdClearAttachments(attachments []ClearAttachment, rects []ClearRect) error

func (*VulkanCommandBuffer) CmdClearColorImage

func (c *VulkanCommandBuffer) CmdClearColorImage(image Image, imageLayout ImageLayout, color ClearColorValue, ranges []ImageSubresourceRange)

func (*VulkanCommandBuffer) CmdClearDepthStencilImage

func (c *VulkanCommandBuffer) CmdClearDepthStencilImage(image Image, imageLayout ImageLayout, depthStencil *ClearValueDepthStencil, ranges []ImageSubresourceRange)

func (*VulkanCommandBuffer) CmdCopyBuffer

func (c *VulkanCommandBuffer) CmdCopyBuffer(srcBuffer Buffer, dstBuffer Buffer, copyRegions []BufferCopy) error

func (*VulkanCommandBuffer) CmdCopyBufferToImage

func (c *VulkanCommandBuffer) CmdCopyBufferToImage(buffer Buffer, image Image, layout ImageLayout, regions []BufferImageCopy) error

func (*VulkanCommandBuffer) CmdCopyImage

func (c *VulkanCommandBuffer) CmdCopyImage(srcImage Image, srcImageLayout ImageLayout, dstImage Image, dstImageLayout ImageLayout, regions []ImageCopy) error

func (*VulkanCommandBuffer) CmdCopyImageToBuffer

func (c *VulkanCommandBuffer) CmdCopyImageToBuffer(srcImage Image, srcImageLayout ImageLayout, dstBuffer Buffer, regions []BufferImageCopy) error

func (*VulkanCommandBuffer) CmdCopyQueryPoolResults

func (c *VulkanCommandBuffer) CmdCopyQueryPoolResults(queryPool QueryPool, firstQuery, queryCount int, dstBuffer Buffer, dstOffset, stride int, flags QueryResultFlags)

func (*VulkanCommandBuffer) CmdDispatch

func (c *VulkanCommandBuffer) CmdDispatch(groupCountX, groupCountY, groupCountZ int)

func (*VulkanCommandBuffer) CmdDispatchIndirect

func (c *VulkanCommandBuffer) CmdDispatchIndirect(buffer Buffer, offset int)

func (*VulkanCommandBuffer) CmdDraw

func (c *VulkanCommandBuffer) CmdDraw(vertexCount, instanceCount int, firstVertex, firstInstance uint32)

func (*VulkanCommandBuffer) CmdDrawIndexed

func (c *VulkanCommandBuffer) CmdDrawIndexed(indexCount, instanceCount int, firstIndex uint32, vertexOffset int, firstInstance uint32)

func (*VulkanCommandBuffer) CmdDrawIndexedIndirect

func (c *VulkanCommandBuffer) CmdDrawIndexedIndirect(buffer Buffer, offset int, drawCount, stride int)

func (*VulkanCommandBuffer) CmdDrawIndirect

func (c *VulkanCommandBuffer) CmdDrawIndirect(buffer Buffer, offset int, drawCount, stride int)

func (*VulkanCommandBuffer) CmdEndQuery

func (c *VulkanCommandBuffer) CmdEndQuery(queryPool QueryPool, query int)

func (*VulkanCommandBuffer) CmdEndRenderPass

func (c *VulkanCommandBuffer) CmdEndRenderPass()

func (*VulkanCommandBuffer) CmdExecuteCommands

func (c *VulkanCommandBuffer) CmdExecuteCommands(commandBuffers []CommandBuffer)

func (*VulkanCommandBuffer) CmdFillBuffer

func (c *VulkanCommandBuffer) CmdFillBuffer(dstBuffer Buffer, dstOffset int, size int, data uint32)

func (*VulkanCommandBuffer) CmdNextSubpass

func (c *VulkanCommandBuffer) CmdNextSubpass(contents SubpassContents)

func (*VulkanCommandBuffer) CmdPipelineBarrier

func (c *VulkanCommandBuffer) CmdPipelineBarrier(srcStageMask, dstStageMask PipelineStageFlags, dependencies DependencyFlags, memoryBarriers []MemoryBarrier, bufferMemoryBarriers []BufferMemoryBarrier, imageMemoryBarriers []ImageMemoryBarrier) error

func (*VulkanCommandBuffer) CmdPushConstants

func (c *VulkanCommandBuffer) CmdPushConstants(layout PipelineLayout, stageFlags ShaderStageFlags, offset int, valueBytes []byte)

func (*VulkanCommandBuffer) CmdResetEvent

func (c *VulkanCommandBuffer) CmdResetEvent(event Event, stageMask PipelineStageFlags)

func (*VulkanCommandBuffer) CmdResetQueryPool

func (c *VulkanCommandBuffer) CmdResetQueryPool(queryPool QueryPool, startQuery, queryCount int)

func (*VulkanCommandBuffer) CmdResolveImage

func (c *VulkanCommandBuffer) CmdResolveImage(srcImage Image, srcImageLayout ImageLayout, dstImage Image, dstImageLayout ImageLayout, regions []ImageResolve) error

func (*VulkanCommandBuffer) CmdSetBlendConstants

func (c *VulkanCommandBuffer) CmdSetBlendConstants(blendConstants [4]float32)

func (*VulkanCommandBuffer) CmdSetDepthBias

func (c *VulkanCommandBuffer) CmdSetDepthBias(depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor float32)

func (*VulkanCommandBuffer) CmdSetDepthBounds

func (c *VulkanCommandBuffer) CmdSetDepthBounds(min, max float32)

func (*VulkanCommandBuffer) CmdSetEvent

func (c *VulkanCommandBuffer) CmdSetEvent(event Event, stageMask PipelineStageFlags)

func (*VulkanCommandBuffer) CmdSetLineWidth

func (c *VulkanCommandBuffer) CmdSetLineWidth(lineWidth float32)

func (*VulkanCommandBuffer) CmdSetScissor

func (c *VulkanCommandBuffer) CmdSetScissor(scissors []Rect2D)

func (*VulkanCommandBuffer) CmdSetStencilCompareMask

func (c *VulkanCommandBuffer) CmdSetStencilCompareMask(faceMask StencilFaceFlags, compareMask uint32)

func (*VulkanCommandBuffer) CmdSetStencilReference

func (c *VulkanCommandBuffer) CmdSetStencilReference(faceMask StencilFaceFlags, reference uint32)

func (*VulkanCommandBuffer) CmdSetStencilWriteMask

func (c *VulkanCommandBuffer) CmdSetStencilWriteMask(faceMask StencilFaceFlags, writeMask uint32)

func (*VulkanCommandBuffer) CmdSetViewport

func (c *VulkanCommandBuffer) CmdSetViewport(viewports []Viewport)

func (*VulkanCommandBuffer) CmdUpdateBuffer

func (c *VulkanCommandBuffer) CmdUpdateBuffer(dstBuffer Buffer, dstOffset int, dataSize int, data []byte)

func (*VulkanCommandBuffer) CmdWaitEvents

func (c *VulkanCommandBuffer) CmdWaitEvents(events []Event, srcStageMask PipelineStageFlags, dstStageMask PipelineStageFlags, memoryBarriers []MemoryBarrier, bufferMemoryBarriers []BufferMemoryBarrier, imageMemoryBarriers []ImageMemoryBarrier) error

func (*VulkanCommandBuffer) CmdWriteTimestamp

func (c *VulkanCommandBuffer) CmdWriteTimestamp(pipelineStage PipelineStageFlags, queryPool QueryPool, query int)

func (*VulkanCommandBuffer) CommandCounter

func (c *VulkanCommandBuffer) CommandCounter() *CommandCounter

func (*VulkanCommandBuffer) CommandPoolHandle

func (c *VulkanCommandBuffer) CommandPoolHandle() driver.VkCommandPool

func (*VulkanCommandBuffer) CommandsRecorded

func (c *VulkanCommandBuffer) CommandsRecorded() int

func (*VulkanCommandBuffer) DeviceHandle

func (c *VulkanCommandBuffer) DeviceHandle() driver.VkDevice

func (*VulkanCommandBuffer) DispatchesRecorded

func (c *VulkanCommandBuffer) DispatchesRecorded() int

func (*VulkanCommandBuffer) DrawsRecorded

func (c *VulkanCommandBuffer) DrawsRecorded() int

func (*VulkanCommandBuffer) Driver

func (c *VulkanCommandBuffer) Driver() driver.Driver

func (*VulkanCommandBuffer) End

func (*VulkanCommandBuffer) Free

func (c *VulkanCommandBuffer) Free()

func (*VulkanCommandBuffer) Handle

func (*VulkanCommandBuffer) Reset

type VulkanCommandPool

type VulkanCommandPool struct {
	// contains filtered or unexported fields
}

VulkanCommandPool is an implementation of the CommandPool interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanCommandPool) APIVersion

func (p *VulkanCommandPool) APIVersion() common.APIVersion

func (*VulkanCommandPool) Destroy

func (p *VulkanCommandPool) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanCommandPool) DeviceHandle

func (p *VulkanCommandPool) DeviceHandle() driver.VkDevice

func (*VulkanCommandPool) Driver

func (p *VulkanCommandPool) Driver() driver.Driver

func (*VulkanCommandPool) Handle

func (*VulkanCommandPool) Reset

type VulkanDescriptorPool

type VulkanDescriptorPool struct {
	// contains filtered or unexported fields
}

VulkanDescriptorPool is an implementation of the DescriptorPool interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanDescriptorPool) APIVersion

func (p *VulkanDescriptorPool) APIVersion() common.APIVersion

func (*VulkanDescriptorPool) Destroy

func (p *VulkanDescriptorPool) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanDescriptorPool) DeviceHandle

func (p *VulkanDescriptorPool) DeviceHandle() driver.VkDevice

func (*VulkanDescriptorPool) Driver

func (p *VulkanDescriptorPool) Driver() driver.Driver

func (*VulkanDescriptorPool) Handle

func (*VulkanDescriptorPool) Reset

type VulkanDescriptorSet

type VulkanDescriptorSet struct {
	// contains filtered or unexported fields
}

VulkanDescriptorSet is an implementation of the DescriptorSet interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanDescriptorSet) APIVersion

func (s *VulkanDescriptorSet) APIVersion() common.APIVersion

func (*VulkanDescriptorSet) DescriptorPoolHandle

func (s *VulkanDescriptorSet) DescriptorPoolHandle() driver.VkDescriptorPool

func (*VulkanDescriptorSet) DeviceHandle

func (s *VulkanDescriptorSet) DeviceHandle() driver.VkDevice

func (*VulkanDescriptorSet) Driver

func (s *VulkanDescriptorSet) Driver() driver.Driver

func (*VulkanDescriptorSet) Free

func (*VulkanDescriptorSet) Handle

type VulkanDescriptorSetLayout

type VulkanDescriptorSetLayout struct {
	// contains filtered or unexported fields
}

VulkanDescriptorSetLayout is an implementation of the DescriptorSetLayout interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanDescriptorSetLayout) APIVersion

func (*VulkanDescriptorSetLayout) Destroy

func (h *VulkanDescriptorSetLayout) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanDescriptorSetLayout) DeviceHandle

func (h *VulkanDescriptorSetLayout) DeviceHandle() driver.VkDevice

func (*VulkanDescriptorSetLayout) Driver

func (*VulkanDescriptorSetLayout) Handle

type VulkanDevice

type VulkanDevice struct {
	// contains filtered or unexported fields
}

VulkanDevice is an implementation of the Device interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanDevice) APIVersion

func (d *VulkanDevice) APIVersion() common.APIVersion

func (*VulkanDevice) AllocateCommandBuffers

func (d *VulkanDevice) AllocateCommandBuffers(o CommandBufferAllocateInfo) ([]CommandBuffer, common.VkResult, error)

func (*VulkanDevice) AllocateDescriptorSets

func (d *VulkanDevice) AllocateDescriptorSets(o DescriptorSetAllocateInfo) ([]DescriptorSet, common.VkResult, error)

func (*VulkanDevice) AllocateMemory

func (d *VulkanDevice) AllocateMemory(allocationCallbacks *driver.AllocationCallbacks, o MemoryAllocateInfo) (DeviceMemory, common.VkResult, error)

func (*VulkanDevice) CreateBuffer

func (d *VulkanDevice) CreateBuffer(allocationCallbacks *driver.AllocationCallbacks, o BufferCreateInfo) (Buffer, common.VkResult, error)

func (*VulkanDevice) CreateBufferView

func (d *VulkanDevice) CreateBufferView(allocationCallbacks *driver.AllocationCallbacks, options BufferViewCreateInfo) (BufferView, common.VkResult, error)

func (*VulkanDevice) CreateCommandPool

func (d *VulkanDevice) CreateCommandPool(allocationCallbacks *driver.AllocationCallbacks, o CommandPoolCreateInfo) (CommandPool, common.VkResult, error)

func (*VulkanDevice) CreateComputePipelines

func (d *VulkanDevice) CreateComputePipelines(pipelineCache PipelineCache, allocationCallbacks *driver.AllocationCallbacks, o []ComputePipelineCreateInfo) ([]Pipeline, common.VkResult, error)

func (*VulkanDevice) CreateDescriptorPool

func (d *VulkanDevice) CreateDescriptorPool(allocationCallbacks *driver.AllocationCallbacks, o DescriptorPoolCreateInfo) (DescriptorPool, common.VkResult, error)

func (*VulkanDevice) CreateDescriptorSetLayout

func (d *VulkanDevice) CreateDescriptorSetLayout(allocationCallbacks *driver.AllocationCallbacks, o DescriptorSetLayoutCreateInfo) (DescriptorSetLayout, common.VkResult, error)

func (*VulkanDevice) CreateEvent

func (d *VulkanDevice) CreateEvent(allocationCallbacks *driver.AllocationCallbacks, o EventCreateInfo) (Event, common.VkResult, error)

func (*VulkanDevice) CreateFence

func (d *VulkanDevice) CreateFence(allocationCallbacks *driver.AllocationCallbacks, o FenceCreateInfo) (Fence, common.VkResult, error)

func (*VulkanDevice) CreateFramebuffer

func (d *VulkanDevice) CreateFramebuffer(allocationCallbacks *driver.AllocationCallbacks, o FramebufferCreateInfo) (Framebuffer, common.VkResult, error)

func (*VulkanDevice) CreateGraphicsPipelines

func (d *VulkanDevice) CreateGraphicsPipelines(pipelineCache PipelineCache, allocationCallbacks *driver.AllocationCallbacks, o []GraphicsPipelineCreateInfo) ([]Pipeline, common.VkResult, error)

func (*VulkanDevice) CreateImage

func (d *VulkanDevice) CreateImage(allocationCallbacks *driver.AllocationCallbacks, o ImageCreateInfo) (Image, common.VkResult, error)

func (*VulkanDevice) CreateImageView

func (d *VulkanDevice) CreateImageView(allocationCallbacks *driver.AllocationCallbacks, o ImageViewCreateInfo) (ImageView, common.VkResult, error)

func (*VulkanDevice) CreatePipelineCache

func (d *VulkanDevice) CreatePipelineCache(allocationCallbacks *driver.AllocationCallbacks, o PipelineCacheCreateInfo) (PipelineCache, common.VkResult, error)

func (*VulkanDevice) CreatePipelineLayout

func (d *VulkanDevice) CreatePipelineLayout(allocationCallbacks *driver.AllocationCallbacks, o PipelineLayoutCreateInfo) (PipelineLayout, common.VkResult, error)

func (*VulkanDevice) CreateQueryPool

func (d *VulkanDevice) CreateQueryPool(allocationCallbacks *driver.AllocationCallbacks, o QueryPoolCreateInfo) (QueryPool, common.VkResult, error)

func (*VulkanDevice) CreateRenderPass

func (d *VulkanDevice) CreateRenderPass(allocationCallbacks *driver.AllocationCallbacks, o RenderPassCreateInfo) (RenderPass, common.VkResult, error)

func (*VulkanDevice) CreateSampler

func (d *VulkanDevice) CreateSampler(allocationCallbacks *driver.AllocationCallbacks, o SamplerCreateInfo) (Sampler, common.VkResult, error)

func (*VulkanDevice) CreateSemaphore

func (d *VulkanDevice) CreateSemaphore(allocationCallbacks *driver.AllocationCallbacks, o SemaphoreCreateInfo) (Semaphore, common.VkResult, error)

func (*VulkanDevice) CreateShaderModule

func (d *VulkanDevice) CreateShaderModule(allocationCallbacks *driver.AllocationCallbacks, o ShaderModuleCreateInfo) (ShaderModule, common.VkResult, error)

func (*VulkanDevice) Destroy

func (d *VulkanDevice) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanDevice) Driver

func (d *VulkanDevice) Driver() driver.Driver

func (*VulkanDevice) FlushMappedMemoryRanges

func (d *VulkanDevice) FlushMappedMemoryRanges(ranges []MappedMemoryRange) (common.VkResult, error)

func (*VulkanDevice) FreeCommandBuffers

func (d *VulkanDevice) FreeCommandBuffers(buffers []CommandBuffer)

func (*VulkanDevice) FreeDescriptorSets

func (d *VulkanDevice) FreeDescriptorSets(sets []DescriptorSet) (common.VkResult, error)

func (*VulkanDevice) FreeMemory

func (d *VulkanDevice) FreeMemory(deviceMemory DeviceMemory, allocationCallbacks *driver.AllocationCallbacks)

func (*VulkanDevice) GetQueue

func (d *VulkanDevice) GetQueue(queueFamilyIndex int, queueIndex int) Queue

func (*VulkanDevice) Handle

func (d *VulkanDevice) Handle() driver.VkDevice

func (*VulkanDevice) InvalidateMappedMemoryRanges

func (d *VulkanDevice) InvalidateMappedMemoryRanges(ranges []MappedMemoryRange) (common.VkResult, error)

func (*VulkanDevice) IsDeviceExtensionActive

func (d *VulkanDevice) IsDeviceExtensionActive(extensionName string) bool

func (*VulkanDevice) ResetFences

func (d *VulkanDevice) ResetFences(fences []Fence) (common.VkResult, error)

func (*VulkanDevice) UpdateDescriptorSets

func (d *VulkanDevice) UpdateDescriptorSets(writes []WriteDescriptorSet, copies []CopyDescriptorSet) error

func (*VulkanDevice) WaitForFences

func (d *VulkanDevice) WaitForFences(waitForAll bool, timeout time.Duration, fences []Fence) (common.VkResult, error)

func (*VulkanDevice) WaitIdle

func (d *VulkanDevice) WaitIdle() (common.VkResult, error)

type VulkanDeviceMemory

type VulkanDeviceMemory struct {
	// contains filtered or unexported fields
}

VulkanDeviceMemory is an implementation of the DeviceMemory interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanDeviceMemory) APIVersion

func (m *VulkanDeviceMemory) APIVersion() common.APIVersion

func (*VulkanDeviceMemory) Commitment

func (m *VulkanDeviceMemory) Commitment() int

func (*VulkanDeviceMemory) DeviceHandle

func (m *VulkanDeviceMemory) DeviceHandle() driver.VkDevice

func (*VulkanDeviceMemory) Driver

func (m *VulkanDeviceMemory) Driver() driver.Driver

func (*VulkanDeviceMemory) FlushAll

func (m *VulkanDeviceMemory) FlushAll() (common.VkResult, error)

func (*VulkanDeviceMemory) Free

func (m *VulkanDeviceMemory) Free(allocationCallbacks *driver.AllocationCallbacks)

func (*VulkanDeviceMemory) Handle

func (*VulkanDeviceMemory) InvalidateAll

func (m *VulkanDeviceMemory) InvalidateAll() (common.VkResult, error)

func (*VulkanDeviceMemory) Map

func (m *VulkanDeviceMemory) Map(offset int, size int, flags MemoryMapFlags) (unsafe.Pointer, common.VkResult, error)

func (*VulkanDeviceMemory) Unmap

func (m *VulkanDeviceMemory) Unmap()

type VulkanEvent

type VulkanEvent struct {
	// contains filtered or unexported fields
}

VulkanEvent is an implementation of the Event interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanEvent) APIVersion

func (e *VulkanEvent) APIVersion() common.APIVersion

func (*VulkanEvent) Destroy

func (e *VulkanEvent) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanEvent) DeviceHandle

func (e *VulkanEvent) DeviceHandle() driver.VkDevice

func (*VulkanEvent) Driver

func (e *VulkanEvent) Driver() driver.Driver

func (*VulkanEvent) Handle

func (e *VulkanEvent) Handle() driver.VkEvent

func (*VulkanEvent) Reset

func (e *VulkanEvent) Reset() (common.VkResult, error)

func (*VulkanEvent) Set

func (e *VulkanEvent) Set() (common.VkResult, error)

func (*VulkanEvent) Status

func (e *VulkanEvent) Status() (common.VkResult, error)

type VulkanFence

type VulkanFence struct {
	// contains filtered or unexported fields
}

VulkanFence is an implementation of the Fence interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanFence) APIVersion

func (f *VulkanFence) APIVersion() common.APIVersion

func (*VulkanFence) Destroy

func (f *VulkanFence) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanFence) DeviceHandle

func (f *VulkanFence) DeviceHandle() driver.VkDevice

func (*VulkanFence) Driver

func (f *VulkanFence) Driver() driver.Driver

func (*VulkanFence) Handle

func (f *VulkanFence) Handle() driver.VkFence

func (*VulkanFence) Reset

func (f *VulkanFence) Reset() (common.VkResult, error)

func (*VulkanFence) Status

func (f *VulkanFence) Status() (common.VkResult, error)

func (*VulkanFence) Wait

func (f *VulkanFence) Wait(timeout time.Duration) (common.VkResult, error)

type VulkanFramebuffer

type VulkanFramebuffer struct {
	// contains filtered or unexported fields
}

VulkanFramebuffer is an implementation of the Framebuffer interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanFramebuffer) APIVersion

func (b *VulkanFramebuffer) APIVersion() common.APIVersion

func (*VulkanFramebuffer) Destroy

func (b *VulkanFramebuffer) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanFramebuffer) DeviceHandle

func (b *VulkanFramebuffer) DeviceHandle() driver.VkDevice

func (*VulkanFramebuffer) Driver

func (b *VulkanFramebuffer) Driver() driver.Driver

func (*VulkanFramebuffer) Handle

type VulkanImage

type VulkanImage struct {
	// contains filtered or unexported fields
}

VulkanImage is an implementation of the Image interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanImage) APIVersion

func (i *VulkanImage) APIVersion() common.APIVersion

func (*VulkanImage) BindImageMemory

func (i *VulkanImage) BindImageMemory(memory DeviceMemory, offset int) (common.VkResult, error)

func (*VulkanImage) Destroy

func (i *VulkanImage) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanImage) DeviceHandle

func (i *VulkanImage) DeviceHandle() driver.VkDevice

func (*VulkanImage) Driver

func (i *VulkanImage) Driver() driver.Driver

func (*VulkanImage) Handle

func (i *VulkanImage) Handle() driver.VkImage

func (*VulkanImage) MemoryRequirements

func (i *VulkanImage) MemoryRequirements() *MemoryRequirements

func (*VulkanImage) SparseMemoryRequirements

func (i *VulkanImage) SparseMemoryRequirements() []SparseImageMemoryRequirements

func (*VulkanImage) SubresourceLayout

func (i *VulkanImage) SubresourceLayout(subresource *ImageSubresource) *SubresourceLayout

type VulkanImageView

type VulkanImageView struct {
	// contains filtered or unexported fields
}

VulkanImageView is an implementation of the ImageView interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanImageView) APIVersion

func (v *VulkanImageView) APIVersion() common.APIVersion

func (*VulkanImageView) Destroy

func (v *VulkanImageView) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanImageView) DeviceHandle

func (v *VulkanImageView) DeviceHandle() driver.VkDevice

func (*VulkanImageView) Driver

func (v *VulkanImageView) Driver() driver.Driver

func (*VulkanImageView) Handle

func (v *VulkanImageView) Handle() driver.VkImageView

type VulkanInstance

type VulkanInstance struct {
	ActiveInstanceExtensions map[string]struct{}
	// contains filtered or unexported fields
}

VulkanInstance is an implementation of the Instance interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanInstance) APIVersion

func (i *VulkanInstance) APIVersion() common.APIVersion

func (*VulkanInstance) Destroy

func (i *VulkanInstance) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanInstance) Driver

func (i *VulkanInstance) Driver() driver.Driver

func (*VulkanInstance) EnumeratePhysicalDevices

func (i *VulkanInstance) EnumeratePhysicalDevices() ([]PhysicalDevice, common.VkResult, error)

func (*VulkanInstance) Handle

func (i *VulkanInstance) Handle() driver.VkInstance

func (*VulkanInstance) IsInstanceExtensionActive

func (i *VulkanInstance) IsInstanceExtensionActive(extensionName string) bool

type VulkanPhysicalDevice

type VulkanPhysicalDevice struct {
	// contains filtered or unexported fields
}

VulkanPhysicalDevice is an implementation of the PhysicalDevice interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanPhysicalDevice) CreateDevice

func (d *VulkanPhysicalDevice) CreateDevice(allocationCallbacks *driver.AllocationCallbacks, options DeviceCreateInfo) (Device, common.VkResult, error)

func (*VulkanPhysicalDevice) DeviceAPIVersion

func (d *VulkanPhysicalDevice) DeviceAPIVersion() common.APIVersion

func (*VulkanPhysicalDevice) Driver

func (d *VulkanPhysicalDevice) Driver() driver.Driver

func (*VulkanPhysicalDevice) EnumerateDeviceExtensionProperties

func (d *VulkanPhysicalDevice) EnumerateDeviceExtensionProperties() (map[string]*ExtensionProperties, common.VkResult, error)

func (*VulkanPhysicalDevice) EnumerateDeviceExtensionPropertiesForLayer

func (d *VulkanPhysicalDevice) EnumerateDeviceExtensionPropertiesForLayer(layerName string) (map[string]*ExtensionProperties, common.VkResult, error)

func (*VulkanPhysicalDevice) EnumerateDeviceLayerProperties

func (d *VulkanPhysicalDevice) EnumerateDeviceLayerProperties() (map[string]*LayerProperties, common.VkResult, error)

func (*VulkanPhysicalDevice) Features

func (*VulkanPhysicalDevice) FormatProperties

func (d *VulkanPhysicalDevice) FormatProperties(format Format) *FormatProperties

func (*VulkanPhysicalDevice) Handle

func (*VulkanPhysicalDevice) ImageFormatProperties

func (d *VulkanPhysicalDevice) ImageFormatProperties(format Format, imageType ImageType, tiling ImageTiling, usages ImageUsageFlags, flags ImageCreateFlags) (*ImageFormatProperties, common.VkResult, error)

func (*VulkanPhysicalDevice) InstanceAPIVersion

func (d *VulkanPhysicalDevice) InstanceAPIVersion() common.APIVersion

func (*VulkanPhysicalDevice) MemoryProperties

func (*VulkanPhysicalDevice) Properties

func (*VulkanPhysicalDevice) QueueFamilyProperties

func (d *VulkanPhysicalDevice) QueueFamilyProperties() []*QueueFamilyProperties

func (*VulkanPhysicalDevice) SparseImageFormatProperties

func (d *VulkanPhysicalDevice) SparseImageFormatProperties(format Format, imageType ImageType, samples SampleCountFlags, usages ImageUsageFlags, tiling ImageTiling) []SparseImageFormatProperties

type VulkanPipeline

type VulkanPipeline struct {
	// contains filtered or unexported fields
}

VulkanPipeline is an implementation of the Pipeline interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanPipeline) APIVersion

func (p *VulkanPipeline) APIVersion() common.APIVersion

func (*VulkanPipeline) Destroy

func (p *VulkanPipeline) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanPipeline) DeviceHandle

func (p *VulkanPipeline) DeviceHandle() driver.VkDevice

func (*VulkanPipeline) Driver

func (p *VulkanPipeline) Driver() driver.Driver

func (*VulkanPipeline) Handle

func (p *VulkanPipeline) Handle() driver.VkPipeline

type VulkanPipelineCache

type VulkanPipelineCache struct {
	// contains filtered or unexported fields
}

VulkanPipelineCache is an implementation of the PipelineCache interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanPipelineCache) APIVersion

func (c *VulkanPipelineCache) APIVersion() common.APIVersion

func (*VulkanPipelineCache) CacheData

func (c *VulkanPipelineCache) CacheData() ([]byte, common.VkResult, error)

func (*VulkanPipelineCache) Destroy

func (c *VulkanPipelineCache) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanPipelineCache) DeviceHandle

func (c *VulkanPipelineCache) DeviceHandle() driver.VkDevice

func (*VulkanPipelineCache) Driver

func (c *VulkanPipelineCache) Driver() driver.Driver

func (*VulkanPipelineCache) Handle

func (*VulkanPipelineCache) MergePipelineCaches

func (c *VulkanPipelineCache) MergePipelineCaches(srcCaches []PipelineCache) (common.VkResult, error)

type VulkanPipelineLayout

type VulkanPipelineLayout struct {
	// contains filtered or unexported fields
}

VulkanPipelineLayout is an implementation of the PipelineLayout interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanPipelineLayout) APIVersion

func (l *VulkanPipelineLayout) APIVersion() common.APIVersion

func (*VulkanPipelineLayout) Destroy

func (l *VulkanPipelineLayout) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanPipelineLayout) DeviceHandle

func (l *VulkanPipelineLayout) DeviceHandle() driver.VkDevice

func (*VulkanPipelineLayout) Driver

func (l *VulkanPipelineLayout) Driver() driver.Driver

func (*VulkanPipelineLayout) Handle

type VulkanQueryPool

type VulkanQueryPool struct {
	// contains filtered or unexported fields
}

VulkanQueryPool is an implementation of the QueryPool interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanQueryPool) APIVersion

func (p *VulkanQueryPool) APIVersion() common.APIVersion

func (*VulkanQueryPool) Destroy

func (p *VulkanQueryPool) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanQueryPool) DeviceHandle

func (p *VulkanQueryPool) DeviceHandle() driver.VkDevice

func (*VulkanQueryPool) Driver

func (p *VulkanQueryPool) Driver() driver.Driver

func (*VulkanQueryPool) Handle

func (p *VulkanQueryPool) Handle() driver.VkQueryPool

func (*VulkanQueryPool) PopulateResults

func (p *VulkanQueryPool) PopulateResults(firstQuery, queryCount int, results []byte, resultStride int, flags QueryResultFlags) (common.VkResult, error)

type VulkanQueue

type VulkanQueue struct {
	// contains filtered or unexported fields
}

VulkanQueue is an implementation of the Queue interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanQueue) APIVersion

func (q *VulkanQueue) APIVersion() common.APIVersion

func (*VulkanQueue) BindSparse

func (q *VulkanQueue) BindSparse(fence Fence, bindInfos []BindSparseInfo) (common.VkResult, error)

func (*VulkanQueue) DeviceHandle

func (q *VulkanQueue) DeviceHandle() driver.VkDevice

func (*VulkanQueue) Driver

func (q *VulkanQueue) Driver() driver.Driver

func (*VulkanQueue) Handle

func (q *VulkanQueue) Handle() driver.VkQueue

func (*VulkanQueue) Submit

func (q *VulkanQueue) Submit(fence Fence, o []SubmitInfo) (common.VkResult, error)

func (*VulkanQueue) WaitIdle

func (q *VulkanQueue) WaitIdle() (common.VkResult, error)

type VulkanRenderPass

type VulkanRenderPass struct {
	// contains filtered or unexported fields
}

VulkanRenderPass is an implementation of the RenderPass interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanRenderPass) APIVersion

func (p *VulkanRenderPass) APIVersion() common.APIVersion

func (*VulkanRenderPass) Destroy

func (p *VulkanRenderPass) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanRenderPass) DeviceHandle

func (p *VulkanRenderPass) DeviceHandle() driver.VkDevice

func (*VulkanRenderPass) Driver

func (p *VulkanRenderPass) Driver() driver.Driver

func (*VulkanRenderPass) Handle

func (p *VulkanRenderPass) Handle() driver.VkRenderPass

func (*VulkanRenderPass) RenderAreaGranularity

func (p *VulkanRenderPass) RenderAreaGranularity() Extent2D

type VulkanSampler

type VulkanSampler struct {
	// contains filtered or unexported fields
}

VulkanSampler is an implementation of the Sampler interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanSampler) APIVersion

func (s *VulkanSampler) APIVersion() common.APIVersion

func (*VulkanSampler) Destroy

func (s *VulkanSampler) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanSampler) DeviceHandle

func (s *VulkanSampler) DeviceHandle() driver.VkDevice

func (*VulkanSampler) Driver

func (s *VulkanSampler) Driver() driver.Driver

func (*VulkanSampler) Handle

func (s *VulkanSampler) Handle() driver.VkSampler

type VulkanSemaphore

type VulkanSemaphore struct {
	// contains filtered or unexported fields
}

VulkanSemaphore is an implementation of the Semaphore interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanSemaphore) APIVersion

func (s *VulkanSemaphore) APIVersion() common.APIVersion

func (*VulkanSemaphore) Destroy

func (s *VulkanSemaphore) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanSemaphore) DeviceHandle

func (s *VulkanSemaphore) DeviceHandle() driver.VkDevice

func (*VulkanSemaphore) Driver

func (s *VulkanSemaphore) Driver() driver.Driver

func (*VulkanSemaphore) Handle

func (s *VulkanSemaphore) Handle() driver.VkSemaphore

type VulkanShaderModule

type VulkanShaderModule struct {
	// contains filtered or unexported fields
}

VulkanShaderModule is an implementation of the ShaderModule interface that actually communicates with Vulkan. This is the default implementation. See the interface for more documentation.

func (*VulkanShaderModule) APIVersion

func (m *VulkanShaderModule) APIVersion() common.APIVersion

func (*VulkanShaderModule) Destroy

func (m *VulkanShaderModule) Destroy(callbacks *driver.AllocationCallbacks)

func (*VulkanShaderModule) DeviceHandle

func (m *VulkanShaderModule) DeviceHandle() driver.VkDevice

func (*VulkanShaderModule) Driver

func (m *VulkanShaderModule) Driver() driver.Driver

func (*VulkanShaderModule) Handle

type WriteDescriptorSet

type WriteDescriptorSet struct {
	// DstSet is the destination DescriptorSet to update
	DstSet DescriptorSet
	// DstBinding is the descriptor binding within that set
	DstBinding int
	// DstArrayElement is the starting element in that array
	DstArrayElement int

	// DescriptorType specifies the type of each descriptor in ImageInfo, BufferInfo, or
	// TexelBufferView
	DescriptorType DescriptorType

	// ImageInfo is a slice of DescriptorImageInfo structures or is ignored
	ImageInfo []DescriptorImageInfo
	// BufferInfo is a slice of DescriptorBufferInfo structures or is ignored
	BufferInfo []DescriptorBufferInfo
	// TexelBufferView is a slice of BufferView objects or is ignored
	TexelBufferView []BufferView

	common.NextOptions
}

WriteDescriptorSet specifies the parameters of a DescriptorSet write operation

https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkWriteDescriptorSet.html

func (WriteDescriptorSet) PopulateCPointer

func (o WriteDescriptorSet) PopulateCPointer(allocator *cgoparam.Allocator, preallocatedPointer unsafe.Pointer, next unsafe.Pointer) (unsafe.Pointer, error)

type WriteDescriptorSetExtensionSource

type WriteDescriptorSetExtensionSource interface {
	WriteDescriptorSetCount() int
}

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL