tp namespace

Common Tephra namespace.

Namespaces

namespace ApplicationExtension
Collection of application extensions that are either specific to Tephra, or are Vulkan instance extensions with built-in support in Tephra. Vulkan extensions outside of the ones defined here may be used, but their support may be limited.
namespace DeviceExtension
Collection of device extensions that are either specific to Tephra, or are Vulkan device extensions with built-in support in Tephra. Vulkan extensions outside of the ones defined here may be used, but their support may be limited.
namespace utils
Convenience utilities that build upon the base Tephra interface.

Classes

struct AcquiredImageInfo
Describes the details of an image acquired from a tp::Swapchain and its required synchronization semaphores with the acquire and present operations.
class Application
Represents the application using this library, storing all per-application state.
struct ApplicationIdentifier
Describes the application and engine, allowing the Vulkan driver to use this information for identification purposes.
struct ApplicationSetup
Used as configuration for creating a new tp::Application object.
template<typename T>
class ArrayParameter
Similar to tp::ArrayView, it provides read/write view of a contiguous array. It is used to view arrays that may have a temporary lifetime, such as std::initializer_list.
template<typename T>
class ArrayView
Provides a read/write view into any contiguous array with a combination of a pointer and size. The ArrayView does not own the referenced array and cannot add or remove elements from it. It can be used to pass arbitrary arrays as parameters to functions and as a way to integrate C style and C++ style arrays. See the tp::view, tp::viewOne and tp::viewRange functions for convenient ways of conversion to array view.
template<typename TValue>
class ArrayViewBase
Shared base implementation of array views.
class AssertionError
Internal Tephra error violating an assertion. May be caused by a previous invalid usage.
struct AttachmentBlendState
Specifies the output blending state of a render pass attachment.
class BaseQuery
Base class implementing the shared functionality of device queries.
struct BlendState
Describes the blending operation with its factors for a single component of a render pass attachment.
class Buffer
Represents a linear array of data visible to the device.
struct BufferComputeAccess
Represents an access to a range of tp::BufferView from a compute pipeline.
struct BufferCopyRegion
Describes a region of a buffer copy operation.
struct BufferImageCopyRegion
Describes a region of copy operation between an image and a buffer.
struct BufferRenderAccess
Represents an access to a range of tp::BufferView from a graphics pipeline.
struct BufferSetup
Used as configuration for creating a new tp::Buffer object.
class BufferView
Represents the view of a contiguous range of tp::Buffer memory.
struct ClearValue
Specifies a constant clear value.
struct ColorAttachment
Represents an tp::ImageView as a render pass color attachment, allowing it to be bound as a render target inside of a render pass. Also specifies any operations on it that are to be done at the beginning or end of the render pass.
class CommandList
An abstract class that implements common functionality for recording commands inside either a compute or render pass. See tp::ComputeList and tp::RenderList for further details.
struct ComponentMapping
Specifies the values placed in each component of the output color vector.
class ComputeList
Provides an interface to directly record compute commands into a Vulkan VkCommandBuffer inside a compute pass.
struct ComputePassSetup
Used as configuration for executing a compute pass.
class ComputePipelineSetup
Used as configuration for creating a new compute tp::Pipeline object for use inside compute passes.
template<typename Enum>
class ContiguousEnumIterator
An iterator over a tp::ContiguousEnumView.
template<typename Enum, Enum Last>
class ContiguousEnumView
Represents an array view of all the values of a contiguous enum type. The values of the enum need to be consecutive and the largest value needs to be known.
struct DebugMessage
Describes the details of a single debug message.
struct DebugMessageContext
Describes the context of where a debug message was triggered. This is useful because Tephra calls do not always correspond 1:1 to Vulkan calls. Vulkan validation messages refer to only the Vulkan function that triggered the message, but this structure provides information about the involved Tephra function as well.
class DebugReportHandler
A base class for debug report handlers, containing callbacks through which debug messages and runtime errors are reported.
struct DepthStencilAttachment
Represents an tp::ImageView as a render pass depth & stencil attachment, allowing it to be bound inside of a render pass. Also specifies any operations that are to be done on it at the beginning or end of the render pass.
class Descriptor
Binds an existing resource or sampler inside a tp::DescriptorSet, according to the tp::DescriptorBinding defined inside a tp::DescriptorSetLayout.
struct DescriptorBinding
Describes the type of tp::Descriptor or descriptor array to be bound to a particular binding number.
class DescriptorPool
Enables efficient creation, storage and reuse of tp::DescriptorSet objects.
struct DescriptorPoolSetup
Used as configuration for creating a new tp::DescriptorPool object.
class DescriptorSet
Describes the set of resources that can be bound at once to allow access to them from pipelines.
class DescriptorSetLayout
Describes the layout of descriptor bindings that pipelines can use to access resources. Serves as a template for creating tp::DescriptorSet objects out of resources to be bound.
struct DescriptorSetSetup
Used as configuration for creating a new tp::DescriptorSet object.
class DescriptorSetView
Represents the non-owning view of a tp::DescriptorSet.
class Device
Represents a connection to a tp::PhysicalDevice, through which its functionality can be accessed.
class DeviceLostError
Operation failed because the device was lost. Subsequent device operations will fail, too.
struct DeviceQueue
Refers to a device queue to which jobs can be submitted for execution. Multiple different queues may map to the same Vulkan queue.
struct DeviceSetup
Used as configuration for creating a new tp::Device object.
template<typename Enum>
class EnumBitMask
A strongly typed mask for a set of enum flags. Requires that the underlying enum values are powers of two.
struct Extent2D
A two-dimensional integer extent structure.
struct Extent3D
A three-dimensional integer extent structure.
struct ExternalSemaphore
A primitive for synchronizing against workloads other than jobs. It can be either a binary semaphore in which case the timestamp is ignored, or a timeline semaphore that is treated as signalled when the provided timestamp is reached.
struct FormatCapabilities
Represents the set of capabilities supported by a device for a particular format.
struct FormatClassProperties
Describes the properties and memory layout of a tp::FormatCompatibilityClass.
class FutureDescriptor
Binds a resource or sampler inside a tp::DescriptorSet, according to the tp::DescriptorBinding defined inside a tp::DescriptorSetLayout. This variant can be used with job-local resources of a job that hasn't been enqueued yet.
class GraphicsPipelineSetup
Used as configuration for creating a new graphics tp::Pipeline object for use inside render passes.
class HostMappedMemory
Represents tp::Buffer memory mapped for host access by the application. Automatically handles cache management for incoherent memory types and unmaps the memory when destroyed, if the memory is not mapped persistently.
class Image
Represents a multidimensional array of data interpreted as textures or attachments.
struct ImageBlitRegion
Describes a region of an image blit operation.
struct ImageComputeAccess
Represents an access to a range of tp::ImageView from a compute pipeline.
struct ImageCopyRegion
Describes a region of an image copy operation.
struct ImageRenderAccess
Represents an access to a range of tp::ImageView from a graphics pipeline.
struct ImageSetup
Used as configuration for creating a new tp::Image object object.
struct ImageSubresource
Describes a subresource of an image containing a single array layer and mip level.
struct ImageSubresourceLayers
Describes a subresource of an image containing any number of array layers and a single mip level.
struct ImageSubresourceRange
Describes a subresource of an image containing any number of array layers and mip levels.
class ImageView
Represents the view of a subresource range of tp::Image.
struct ImageViewSetup
Used as configuration for creating a new tp::ImageView object.
class Job
A job represents a single instance of work to be done on the device.
class JobResourcePool
Manages the job-local resources used by tp::Job objects created from it. Enables efficient allocation and reuse of these resources between consecutive jobs. Jobs created from a tp::JobResourcePool can only be enqueued to the same device queue that the pool was created for, allowing the allocator to better reuse resources. Similar jobs that are submitted periodically therefore benefit from being allocated from the same tp::JobResourcePool.
struct JobResourcePoolSetup
Used as configuration for creating a new tp::JobResourcePool object.
struct JobResourcePoolStatistics
Contains statistics about the current allocations of a tp::JobResourcePool.
struct JobSemaphore
A synchronization primitive created after enqueueing a tp::Job through tp::Device::enqueueJob.
template<typename T>
class Lifeguard
A lifeguard for a Vulkan handle implementing RAII by invoking specialized deleters according to the type of the handle when the lifeguard is destroyed. Can be created from an existing Vulkan handle with tp::Device::vkMakeHandleLifeguard.
struct MemoryAllocatorSetup
Used to configure the device-wide Vulkan Memory Allocator.
struct MemoryHeapStatistics
Returns statistics associated with a Vulkan memory heap.
struct MemoryLocationInfo
Information about the physical device memory location.
struct MemoryPreference
Represents the progression of tp::MemoryLocation that the device will attempt to allocate resources from, in the given order of preference.
struct Offset2D
A two-dimensional integer offset structure.
struct Offset3D
A three-dimensional integer offset structure.
class OutOfDateError
A surface has changed in such a way that it is no longer compatible with the swapchain, and further presentation requests using the swapchain will fail.
class OutOfMemoryError
Allocation failed due to overcommitting of memory.
struct OverallocationBehavior
Specifies the overallocation behavior of a pool. This can be useful for reducing the frequency of allocations at the cost of potentially higher memory usage.
class Ownable
A customizable base class that is used for objects returned by the API in an OwningPtr.
class PhysicalDevice
Represents a read-only interface for the physical device for identification and querying its properties and capabilities.
class Pipeline
Represents a full compiled state of a compute or graphics pipeline, composed of multiple shader stages and the state of the configurable fixed-function stages.
class PipelineCache
Speeds up the compilation of pipelines by allowing the result of pipeline compilation to be reused between pipelines and between application runs.
class PipelineLayout
Describes the layout of resources accessed by a compute or graphics pipeline.
struct PushConstantRange
Describes a range of push constants.
struct QueryResult
Represents the result of a query that was written as part of a completed job.
struct QueueTypeInfo
Information about the physical device queues for a particular queue type.
struct Rect2D
A two-dimensional integer range.
class RenderList
Provides an interface to directly record graphics commands into a Vulkan VkCommandBuffer inside a compute pass.
struct RenderPassSetup
Used as configuration for executing a render pass.
class RenderQuery
Query for measuring some statistic over a range of render commands.
class RuntimeError
A generic Tephra runtime error.
class Sampler
Sampler objects are used to apply filtering and other transformations to image data when accessed from shaders.
struct SamplerAddressing
Describes the addressing mode to be used by the sampler.
struct SamplerFiltering
Describes the texture filtering to be used by the sampler.
struct SamplerSetup
class ShaderModule
Represents a single shader module as loaded from SPIR-V bytecode.
struct ShaderStageSetup
Describes an individual shader stage of a pipeline, referencing a tp::ShaderModule and its entry point.
struct SpecializationConstant
Describes the value of a particular specialization constant of any scalar boolean, integer or floating point type.
struct StatisticEventInfo
Information about the report of a statistic event.
struct StencilState
Specifies the full state of a stencil operation.
struct SurfaceCapabilities
Describes the capabilities of a VkSurfaceKHR and the capabilities of a physical device to present to that surface.
class SurfaceLostError
Operation failed because the surface was lost. Subsequent surface operations will fail, too.
class Swapchain
Manages presenting the rendering results to a surface.
struct SwapchainSetup
Used as configuration for creating a new tp::Swapchain object.
struct Timeout
Specifies a timeout duration for wait operations.
class TimestampQuery
Query for measuring execution time on the device timeline.
class TooManyObjectsError
Too many objects of the same type have already been created.
class UnsupportedOperationError
The operation could not be completed because it is not supported by the platform or device.
struct Version
Represents and stores a version number.
struct VertexInputAttribute
Identifies a specific vertex input attribute such as position, normal, etc.
struct VertexInputBinding
Describes the shader binding for vertex input buffer and the layout of its attributes.
struct Viewport
The viewport describing a region of render operations.
struct VkFeatureStructureMapTrait
Trait wrapper for tp::getVkFeatureStructureType.
template<typename T, VkObjectType Id>
struct VkObjectHandle
A strongly typed Vulkan object handle wrapper.
struct VkPropertyStructureMapTrait
Trait wrapper for tp::getVkPropertyStructureType.
struct VkRenderingInfoExtStructureMapTrait
Trait wrapper for tp::getVkRenderingInfoExtStructureType.
template<typename TStructureTypeTrait>
class VkStructureMap
A heterogenous container of unique Vulkan structure types. The structures get zero initialized with sType filled out appropriately and pNext used to chain them in the order they were added.
struct VulkanValidationSetup
Describes whether Vulkan validation should be enabled, optionally with control over its specific features.

Enums

enum class AttachmentLoadOp: uint32_t { Load = VK_ATTACHMENT_LOAD_OP_LOAD, Clear = VK_ATTACHMENT_LOAD_OP_CLEAR, DontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE }
The load operation applied to the contents of an attachment at the start of a render pass.
enum class AttachmentStoreOp: uint32_t { Store = VK_ATTACHMENT_STORE_OP_STORE, DontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE }
The store operation applied to the contents of an attachment.
enum class BlendFactor: uint32_t { Zero = VK_BLEND_FACTOR_ZERO, One = VK_BLEND_FACTOR_ONE, SrcColor = VK_BLEND_FACTOR_SRC_COLOR, OneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, DstColor = VK_BLEND_FACTOR_DST_COLOR, OneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, SrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA, OneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, DstAlpha = VK_BLEND_FACTOR_DST_ALPHA, OneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, ConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR, OneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, ConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA, OneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, SrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, Src1Color = VK_BLEND_FACTOR_SRC1_COLOR, OneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, Src1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA, OneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA }
Framebuffer blending factors.
enum class BlendOp: uint32_t { Add = VK_BLEND_OP_ADD, Subtract = VK_BLEND_OP_SUBTRACT, ReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT, Min = VK_BLEND_OP_MIN, Max = VK_BLEND_OP_MAX }
Framebuffer blending operators.
enum class BorderColor: uint32_t { FloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, IntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, FloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, IntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK, FloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, IntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE }
The border color applied when using a border tp::SamplerAddressMode.
enum class BufferUsage: uint32_t { ImageTransfer = 1 << 0, HostMapped = 1 << 1, TexelBuffer = 1 << 2, UniformBuffer = 1 << 3, StorageBuffer = 1 << 4, IndexBuffer = 1 << 5, VertexBuffer = 1 << 6, IndirectBuffer = 1 << 7, DeviceAddress = 1 << 8 }
The allowed usage of a tp::Buffer.
enum class ColorComponent: uint32_t { Red = VK_COLOR_COMPONENT_R_BIT, Green = VK_COLOR_COMPONENT_G_BIT, Blue = VK_COLOR_COMPONENT_B_BIT, Alpha = VK_COLOR_COMPONENT_A_BIT }
Identifies a component of a color image.
enum class CompareOp: uint32_t { Never = VK_COMPARE_OP_NEVER, Less = VK_COMPARE_OP_LESS, Equal = VK_COMPARE_OP_EQUAL, LessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL, Greater = VK_COMPARE_OP_GREATER, NotEqual = VK_COMPARE_OP_NOT_EQUAL, GreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL, Always = VK_COMPARE_OP_ALWAYS }
Comparison operators for depth, stencil and sampler operations.
enum class ComponentSwizzle: uint32_t { Identity = VK_COMPONENT_SWIZZLE_IDENTITY, Zero = VK_COMPONENT_SWIZZLE_ZERO, One = VK_COMPONENT_SWIZZLE_ONE, R = VK_COMPONENT_SWIZZLE_R, G = VK_COMPONENT_SWIZZLE_G, B = VK_COMPONENT_SWIZZLE_B, A = VK_COMPONENT_SWIZZLE_A }
Specifies the values placed in a component of the output color vector.
enum class CompositeAlpha: uint32_t { Opaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, PreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR, PostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR, Inherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR }
The alpha composition used for the surface upon presentation.
enum class ComputeAccess: uint64_t { ComputeShaderStorageRead = 1 << 0, ComputeShaderStorageWrite = 1 << 1, ComputeShaderStorageAtomic = 1 << 2, ComputeShaderSampledRead = 1 << 3, ComputeShaderUniformRead = 1 << 4 }
Describes the kind of resource access from the compute pipeline.
enum class CullModeFlag: uint32_t { FrontFace = VK_CULL_MODE_FRONT_BIT, BackFace = VK_CULL_MODE_BACK_BIT }
Flags controlling which triangles get discarded.
enum class DebugMessageSeverity: uint32_t { Verbose = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, Information = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT, Warning = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT, Error = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT }
The severity of a reported debug message.
enum class DebugMessageType: uint32_t { General = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, Validation = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT, Performance = VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT }
The type of a reported debug message.
enum class DescriptorBindingFlag { PartiallyBound = 1 << 0, VariableDescriptorCount = 1 << 1, AliasStorageImage = 1 << 2, UpdateAfterBind = 1 << 3 }
Specifies additional properties of a tp::DescriptorBinding.
enum class DescriptorSetFlag { IgnoreNullDescriptors = 1 << 0 }
Additional descriptor set creation options.
enum class DescriptorType: uint32_t { Sampler = VK_DESCRIPTOR_TYPE_SAMPLER, CombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, SampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, StorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, TexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, StorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, UniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, StorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, UniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, StorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC }
Specifies how a certain resource is to be accessed from within a shader.
enum class DeviceType { Other = VK_PHYSICAL_DEVICE_TYPE_OTHER, IntegratedGPU = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, DiscreteGPU = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VirtualGPU = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, CPU = VK_PHYSICAL_DEVICE_TYPE_CPU }
The general type of a physical device.
enum class DeviceVendor { Unknown, AMD, NVIDIA, INTEL, ARM, ImgTec, Qualcomm, Apple }
The named vendor of a physical device.
enum class DynamicState: uint32_t { LineWidth = VK_DYNAMIC_STATE_LINE_WIDTH, DepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS, BlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS, DepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS }
Specifies the parts of the tp::GraphicsPipelineSetup state that are to be taken from the dynamic state commands recorded into a tp::RenderList, rather than from the pipeline setup, which will be ignored.
enum class ErrorType: int32_t { UnknownError = 0, AssertionFailed = 1, UnsupportedOperation = 2, OutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY, OutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY, Fragmentation = VK_ERROR_FRAGMENTATION, InitializationFailed = VK_ERROR_INITIALIZATION_FAILED, DeviceLost = VK_ERROR_DEVICE_LOST, MemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED, LayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT, ExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT, FeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT, TooManyObjects = VK_ERROR_TOO_MANY_OBJECTS, FormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED, InvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE, SurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR, NativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, OutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR }
The type of an error returned by either Vulkan or Tephra.
enum class Filter: uint32_t { Nearest = VK_FILTER_NEAREST, Linear = VK_FILTER_LINEAR }
The filtering mode.
enum class Format: uint32_t { Undefined = VK_FORMAT_UNDEFINED, COL8_R4G4_UNORM_PACK = VK_FORMAT_R4G4_UNORM_PACK8, COL8_R8_UNORM = VK_FORMAT_R8_UNORM, COL8_R8_SNORM = VK_FORMAT_R8_SNORM, COL8_R8_USCALED = VK_FORMAT_R8_USCALED, COL8_R8_SSCALED = VK_FORMAT_R8_SSCALED, COL8_R8_UINT = VK_FORMAT_R8_UINT, COL8_R8_SINT = VK_FORMAT_R8_SINT, COL8_R8_SRGB = VK_FORMAT_R8_SRGB, COL16_R4G4B4A4_UNORM_PACK = VK_FORMAT_R4G4B4A4_UNORM_PACK16, COL16_B4G4R4A4_UNORM_PACK = VK_FORMAT_B4G4R4A4_UNORM_PACK16, COL16_R5G6B5_UNORM_PACK = VK_FORMAT_R5G6B5_UNORM_PACK16, COL16_B5G6R5_UNORM_PACK = VK_FORMAT_B5G6R5_UNORM_PACK16, COL16_R5G5B5A1_UNORM_PACK = VK_FORMAT_R5G5B5A1_UNORM_PACK16, COL16_B5G5R5A1_UNORM_PACK = VK_FORMAT_B5G5R5A1_UNORM_PACK16, COL16_A1R5G5B5_UNORM_PACK = VK_FORMAT_A1R5G5B5_UNORM_PACK16, COL16_R8G8_UNORM = VK_FORMAT_R8G8_UNORM, COL16_R8G8_SNORM = VK_FORMAT_R8G8_SNORM, COL16_R8G8_USCALED = VK_FORMAT_R8G8_USCALED, COL16_R8G8_SSCALED = VK_FORMAT_R8G8_SSCALED, COL16_R8G8_UINT = VK_FORMAT_R8G8_UINT, COL16_R8G8_SINT = VK_FORMAT_R8G8_SINT, COL16_R8G8_SRGB = VK_FORMAT_R8G8_SRGB, COL16_R16_UNORM = VK_FORMAT_R16_UNORM, COL16_R16_SNORM = VK_FORMAT_R16_SNORM, COL16_R16_USCALED = VK_FORMAT_R16_USCALED, COL16_R16_SSCALED = VK_FORMAT_R16_SSCALED, COL16_R16_UINT = VK_FORMAT_R16_UINT, COL16_R16_SINT = VK_FORMAT_R16_SINT, COL16_R16_SFLOAT = VK_FORMAT_R16_SFLOAT, COL24_R8G8B8_UNORM = VK_FORMAT_R8G8B8_UNORM, COL24_R8G8B8_SNORM = VK_FORMAT_R8G8B8_SNORM, COL24_R8G8B8_USCALED = VK_FORMAT_R8G8B8_USCALED, COL24_R8G8B8_SSCALED = VK_FORMAT_R8G8B8_SSCALED, COL24_R8G8B8_UINT = VK_FORMAT_R8G8B8_UINT, COL24_R8G8B8_SINT = VK_FORMAT_R8G8B8_SINT, COL24_R8G8B8_SRGB = VK_FORMAT_R8G8B8_SRGB, COL24_B8G8R8_UNORM = VK_FORMAT_B8G8R8_UNORM, COL24_B8G8R8_SNORM = VK_FORMAT_B8G8R8_SNORM, COL24_B8G8R8_USCALED = VK_FORMAT_B8G8R8_USCALED, COL24_B8G8R8_SSCALED = VK_FORMAT_B8G8R8_SSCALED, COL24_B8G8R8_UINT = VK_FORMAT_B8G8R8_UINT, COL24_B8G8R8_SINT = VK_FORMAT_B8G8R8_SINT, COL24_B8G8R8_SRGB = VK_FORMAT_B8G8R8_SRGB, COL32_R8G8B8A8_UNORM = VK_FORMAT_R8G8B8A8_UNORM, COL32_R8G8B8A8_SNORM = VK_FORMAT_R8G8B8A8_SNORM, COL32_R8G8B8A8_USCALED = VK_FORMAT_R8G8B8A8_USCALED, COL32_R8G8B8A8_SSCALED = VK_FORMAT_R8G8B8A8_SSCALED, COL32_R8G8B8A8_UINT = VK_FORMAT_R8G8B8A8_UINT, COL32_R8G8B8A8_SINT = VK_FORMAT_R8G8B8A8_SINT, COL32_R8G8B8A8_SRGB = VK_FORMAT_R8G8B8A8_SRGB, COL32_B8G8R8A8_UNORM = VK_FORMAT_B8G8R8A8_UNORM, COL32_B8G8R8A8_SNORM = VK_FORMAT_B8G8R8A8_SNORM, COL32_B8G8R8A8_USCALED = VK_FORMAT_B8G8R8A8_USCALED, COL32_B8G8R8A8_SSCALED = VK_FORMAT_B8G8R8A8_SSCALED, COL32_B8G8R8A8_UINT = VK_FORMAT_B8G8R8A8_UINT, COL32_B8G8R8A8_SINT = VK_FORMAT_B8G8R8A8_SINT, COL32_B8G8R8A8_SRGB = VK_FORMAT_B8G8R8A8_SRGB, COL32_A8B8G8R8_UNORM_PACK = VK_FORMAT_A8B8G8R8_UNORM_PACK32, COL32_A8B8G8R8_SNORM_PACK = VK_FORMAT_A8B8G8R8_SNORM_PACK32, COL32_A8B8G8R8_USCALED_PACK = VK_FORMAT_A8B8G8R8_USCALED_PACK32, COL32_A8B8G8R8_SSCALED_PACK = VK_FORMAT_A8B8G8R8_SSCALED_PACK32, COL32_A8B8G8R8_UINT_PACK = VK_FORMAT_A8B8G8R8_UINT_PACK32, COL32_A8B8G8R8_SINT_PACK = VK_FORMAT_A8B8G8R8_SINT_PACK32, COL32_A8B8G8R8_SRGB_PACK = VK_FORMAT_A8B8G8R8_SRGB_PACK32, COL32_A2R10G10B10_UNORM_PACK = VK_FORMAT_A2R10G10B10_UNORM_PACK32, COL32_A2R10G10B10_SNORM_PACK = VK_FORMAT_A2R10G10B10_SNORM_PACK32, COL32_A2R10G10B10_USCALED_PACK = VK_FORMAT_A2R10G10B10_USCALED_PACK32, COL32_A2R10G10B10_SSCALED_PACK = VK_FORMAT_A2R10G10B10_SSCALED_PACK32, COL32_A2R10G10B10_UINT_PACK = VK_FORMAT_A2R10G10B10_UINT_PACK32, COL32_A2R10G10B10_SINT_PACK = VK_FORMAT_A2R10G10B10_SINT_PACK32, COL32_A2B10G10R10_UNORM_PACK = VK_FORMAT_A2B10G10R10_UNORM_PACK32, COL32_A2B10G10R10_SNORM_PACK = VK_FORMAT_A2B10G10R10_SNORM_PACK32, COL32_A2B10G10R10_USCALED_PACK = VK_FORMAT_A2B10G10R10_USCALED_PACK32, COL32_A2B10G10R10_SSCALED_PACK = VK_FORMAT_A2B10G10R10_SSCALED_PACK32, COL32_A2B10G10R10_UINT_PACK = VK_FORMAT_A2B10G10R10_UINT_PACK32, COL32_A2B10G10R10_SINT_PACK = VK_FORMAT_A2B10G10R10_SINT_PACK32, COL32_R16G16_UNORM = VK_FORMAT_R16G16_UNORM, COL32_R16G16_SNORM = VK_FORMAT_R16G16_SNORM, COL32_R16G16_USCALED = VK_FORMAT_R16G16_USCALED, COL32_R16G16_SSCALED = VK_FORMAT_R16G16_SSCALED, COL32_R16G16_UINT = VK_FORMAT_R16G16_UINT, COL32_R16G16_SINT = VK_FORMAT_R16G16_SINT, COL32_R16G16_SFLOAT = VK_FORMAT_R16G16_SFLOAT, COL32_R32_UINT = VK_FORMAT_R32_UINT, COL32_R32_SINT = VK_FORMAT_R32_SINT, COL32_R32_SFLOAT = VK_FORMAT_R32_SFLOAT, COL32_B10G11R11_UFLOAT_PACK = VK_FORMAT_B10G11R11_UFLOAT_PACK32, COL32_E5B9G9R9_UFLOAT_PACK = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, COL48_R16G16B16_UNORM = VK_FORMAT_R16G16B16_UNORM, COL48_R16G16B16_SNORM = VK_FORMAT_R16G16B16_SNORM, COL48_R16G16B16_USCALED = VK_FORMAT_R16G16B16_USCALED, COL48_R16G16B16_SSCALED = VK_FORMAT_R16G16B16_SSCALED, COL48_R16G16B16_UINT = VK_FORMAT_R16G16B16_UINT, COL48_R16G16B16_SINT = VK_FORMAT_R16G16B16_SINT, COL48_R16G16B16_SFLOAT = VK_FORMAT_R16G16B16_SFLOAT, COL64_R16G16B16A16_UNORM = VK_FORMAT_R16G16B16A16_UNORM, COL64_R16G16B16A16_SNORM = VK_FORMAT_R16G16B16A16_SNORM, COL64_R16G16B16A16_USCALED = VK_FORMAT_R16G16B16A16_USCALED, COL64_R16G16B16A16_SSCALED = VK_FORMAT_R16G16B16A16_SSCALED, COL64_R16G16B16A16_UINT = VK_FORMAT_R16G16B16A16_UINT, COL64_R16G16B16A16_SINT = VK_FORMAT_R16G16B16A16_SINT, COL64_R16G16B16A16_SFLOAT = VK_FORMAT_R16G16B16A16_SFLOAT, COL64_R32G32_UINT = VK_FORMAT_R32G32_UINT, COL64_R32G32_SINT = VK_FORMAT_R32G32_SINT, COL64_R32G32_SFLOAT = VK_FORMAT_R32G32_SFLOAT, COL64_R64_UINT = VK_FORMAT_R64_UINT, COL64_R64_SINT = VK_FORMAT_R64_SINT, COL64_R64_SFLOAT = VK_FORMAT_R64_SFLOAT, COL96_R32G32B32_UINT = VK_FORMAT_R32G32B32_UINT, COL96_R32G32B32_SINT = VK_FORMAT_R32G32B32_SINT, COL96_R32G32B32_SFLOAT = VK_FORMAT_R32G32B32_SFLOAT, COL128_R32G32B32A32_UINT = VK_FORMAT_R32G32B32A32_UINT, COL128_R32G32B32A32_SINT = VK_FORMAT_R32G32B32A32_SINT, COL128_R32G32B32A32_SFLOAT = VK_FORMAT_R32G32B32A32_SFLOAT, COL128_R64G64_UINT = VK_FORMAT_R64G64_UINT, COL128_R64G64_SINT = VK_FORMAT_R64G64_SINT, COL128_R64G64_SFLOAT = VK_FORMAT_R64G64_SFLOAT, COL192_R64G64B64_UINT = VK_FORMAT_R64G64B64_UINT, COL192_R64G64B64_SINT = VK_FORMAT_R64G64B64_SINT, COL192_R64G64B64_SFLOAT = VK_FORMAT_R64G64B64_SFLOAT, COL256_R64G64B64A64_UINT = VK_FORMAT_R64G64B64A64_UINT, COL256_R64G64B64A64_SINT = VK_FORMAT_R64G64B64A64_SINT, COL256_R64G64B64A64_SFLOAT = VK_FORMAT_R64G64B64A64_SFLOAT, COMP_BC1_RGB_UNORM_BLOCK = VK_FORMAT_BC1_RGB_UNORM_BLOCK, COMP_BC1_RGB_SRGB_BLOCK = VK_FORMAT_BC1_RGB_SRGB_BLOCK, COMP_BC1_RGBA_UNORM_BLOCK = VK_FORMAT_BC1_RGBA_UNORM_BLOCK, COMP_BC1_RGBA_SRGB_BLOCK = VK_FORMAT_BC1_RGBA_SRGB_BLOCK, COMP_BC2_UNORM_BLOCK = VK_FORMAT_BC2_UNORM_BLOCK, COMP_BC2_SRGB_BLOCK = VK_FORMAT_BC2_SRGB_BLOCK, COMP_BC3_UNORM_BLOCK = VK_FORMAT_BC3_UNORM_BLOCK, COMP_BC3_SRGB_BLOCK = VK_FORMAT_BC3_SRGB_BLOCK, COMP_BC4_UNORM_BLOCK = VK_FORMAT_BC4_UNORM_BLOCK, COMP_BC4_SNORM_BLOCK = VK_FORMAT_BC4_SNORM_BLOCK, COMP_BC5_UNORM_BLOCK = VK_FORMAT_BC5_UNORM_BLOCK, COMP_BC5_SNORM_BLOCK = VK_FORMAT_BC5_SNORM_BLOCK, COMP_BC6H_UFLOAT_BLOCK = VK_FORMAT_BC6H_UFLOAT_BLOCK, COMP_BC6H_SFLOAT_BLOCK = VK_FORMAT_BC6H_SFLOAT_BLOCK, COMP_BC7_UNORM_BLOCK = VK_FORMAT_BC7_UNORM_BLOCK, COMP_BC7_SRGB_BLOCK = VK_FORMAT_BC7_SRGB_BLOCK, COMP_ETC2_R8G8B8_UNORM_BLOCK = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, COMP_ETC2_R8G8B8_SRGB_BLOCK = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, COMP_ETC2_R8G8B8A1_UNORM_BLOCK = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, COMP_ETC2_R8G8B8A1_SRGB_BLOCK = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, COMP_ETC2_EAC_R8G8B8A8_UNORM_BLOCK = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, COMP_ETC2_EAC_R8G8B8A8_SRGB_BLOCK = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, COMP_EAC_R11_UNORM_BLOCK = VK_FORMAT_EAC_R11_UNORM_BLOCK, COMP_EAC_R11_SNORM_BLOCK = VK_FORMAT_EAC_R11_SNORM_BLOCK, COMP_EAC_R11G11_UNORM_BLOCK = VK_FORMAT_EAC_R11G11_UNORM_BLOCK, COMP_EAC_R11G11_SNORM_BLOCK = VK_FORMAT_EAC_R11G11_SNORM_BLOCK, COMP_ASTC_4x4_UNORM_BLOCK = VK_FORMAT_ASTC_4x4_UNORM_BLOCK, COMP_ASTC_4x4_SRGB_BLOCK = VK_FORMAT_ASTC_4x4_SRGB_BLOCK, COMP_ASTC_5x4_UNORM_BLOCK = VK_FORMAT_ASTC_5x4_UNORM_BLOCK, COMP_ASTC_5x4_SRGB_BLOCK = VK_FORMAT_ASTC_5x4_SRGB_BLOCK, COMP_ASTC_5x5_UNORM_BLOCK = VK_FORMAT_ASTC_5x5_UNORM_BLOCK, COMP_ASTC_5x5_SRGB_BLOCK = VK_FORMAT_ASTC_5x5_SRGB_BLOCK, COMP_ASTC_6x5_UNORM_BLOCK = VK_FORMAT_ASTC_6x5_UNORM_BLOCK, COMP_ASTC_6x5_SRGB_BLOCK = VK_FORMAT_ASTC_6x5_SRGB_BLOCK, COMP_ASTC_6x6_UNORM_BLOCK = VK_FORMAT_ASTC_6x6_UNORM_BLOCK, COMP_ASTC_6x6_SRGB_BLOCK = VK_FORMAT_ASTC_6x6_SRGB_BLOCK, COMP_ASTC_8x5_UNORM_BLOCK = VK_FORMAT_ASTC_8x5_UNORM_BLOCK, COMP_ASTC_8x5_SRGB_BLOCK = VK_FORMAT_ASTC_8x5_SRGB_BLOCK, COMP_ASTC_8x6_UNORM_BLOCK = VK_FORMAT_ASTC_8x6_UNORM_BLOCK, COMP_ASTC_8x6_SRGB_BLOCK = VK_FORMAT_ASTC_8x6_SRGB_BLOCK, COMP_ASTC_8x8_UNORM_BLOCK = VK_FORMAT_ASTC_8x8_UNORM_BLOCK, COMP_ASTC_8x8_SRGB_BLOCK = VK_FORMAT_ASTC_8x8_SRGB_BLOCK, COMP_ASTC_10x5_UNORM_BLOCK = VK_FORMAT_ASTC_10x5_UNORM_BLOCK, COMP_ASTC_10x5_SRGB_BLOCK = VK_FORMAT_ASTC_10x5_SRGB_BLOCK, COMP_ASTC_10x6_UNORM_BLOCK = VK_FORMAT_ASTC_10x6_UNORM_BLOCK, COMP_ASTC_10x6_SRGB_BLOCK = VK_FORMAT_ASTC_10x6_SRGB_BLOCK, COMP_ASTC_10x8_UNORM_BLOCK = VK_FORMAT_ASTC_10x8_UNORM_BLOCK, COMP_ASTC_10x8_SRGB_BLOCK = VK_FORMAT_ASTC_10x8_SRGB_BLOCK, COMP_ASTC_10x10_UNORM_BLOCK = VK_FORMAT_ASTC_10x10_UNORM_BLOCK, COMP_ASTC_10x10_SRGB_BLOCK = VK_FORMAT_ASTC_10x10_SRGB_BLOCK, COMP_ASTC_12x10_UNORM_BLOCK = VK_FORMAT_ASTC_12x10_UNORM_BLOCK, COMP_ASTC_12x10_SRGB_BLOCK = VK_FORMAT_ASTC_12x10_SRGB_BLOCK, COMP_ASTC_12x12_UNORM_BLOCK = VK_FORMAT_ASTC_12x12_UNORM_BLOCK, COMP_ASTC_12x12_SRGB_BLOCK = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, DEPTH16_D16_UNORM = VK_FORMAT_D16_UNORM, DEPTH24_X8_D24_UNORM_PACK = VK_FORMAT_X8_D24_UNORM_PACK32, DEPTH32_D32_SFLOAT = VK_FORMAT_D32_SFLOAT, STC8_S8_UINT = VK_FORMAT_S8_UINT, DEPTHSTC24_D16_UNORM_S8_UINT = VK_FORMAT_D16_UNORM_S8_UINT, DEPTHSTC32_D24_UNORM_S8_UINT = VK_FORMAT_D24_UNORM_S8_UINT, DEPTHSTC48_D32_SFLOAT_S8_UINT = VK_FORMAT_D32_SFLOAT_S8_UINT }
The formats that data can be stored in inside buffers and images.
enum class FormatCompatibilityClass { Undefined = 0, COL8 = 1, COL16 = 2, COL24 = 3, COL32 = 4, COL48 = 5, COL64 = 6, COL96 = 7, COL128 = 8, COL192 = 9, COL256 = 10, COMP_BC1_RGB = 11, COMP_BC1_RGBA = 12, COMP_BC2 = 13, COMP_BC3 = 14, COMP_BC4 = 15, COMP_BC5 = 16, COMP_BC6H = 17, COMP_BC7 = 18, COMP_ETC2_RGB = 19, COMP_ETC2_RGBA = 20, COMP_ETC2_EAC_RGBA = 21, COMP_EAC_R = 22, COMP_EAC_RG = 23, COMP_ASTC_4x4 = 24, COMP_ASTC_5x4 = 25, COMP_ASTC_5x5 = 26, COMP_ASTC_6x5 = 27, COMP_ASTC_6x6 = 28, COMP_ASTC_8x5 = 29, COMP_ASTC_8x6 = 30, COMP_ASTC_8x8 = 31, COMP_ASTC_10x5 = 32, COMP_ASTC_10x6 = 33, COMP_ASTC_10x8 = 34, COMP_ASTC_10x10 = 35, COMP_ASTC_12x10 = 36, COMP_ASTC_12x12 = 37, DEPTH16 = 38, DEPTH24 = 39, DEPTH32 = 40, STC8 = 41, DEPTHSTC24 = 42, DEPTHSTC32 = 43, DEPTHSTC48 = 44 }
Defines the distinct format compatibility classes.
enum class FormatFeature: uint32_t { AtomicOperations = 1 << 0, LinearFiltering = 1 << 1 }
Describes additional features of a particular format.
enum class FormatUsage: uint32_t { SampledImage = 1 << 0, StorageImage = 1 << 1, ColorAttachment = 1 << 2, DepthStencilAttachment = 1 << 3, TexelBuffer = 1 << 4, StorageTexelBuffer = 1 << 5, VertexBuffer = 1 << 6 }
The usage of a resource using a particular format.
enum class ImageAspect: uint32_t { Color = VK_IMAGE_ASPECT_COLOR_BIT, Depth = VK_IMAGE_ASPECT_DEPTH_BIT, Stencil = VK_IMAGE_ASPECT_STENCIL_BIT, Metadata = VK_IMAGE_ASPECT_METADATA_BIT }
The aspect storing a type of data of an image view.
enum class ImageFlag: uint32_t { BlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT }
Additional image creation options.
enum class ImageType { Image1D = 0, Image2D = 1, Image2DCubeCompatible = 2, Image3D = 3, Image3D2DArrayCompatible = 4 }
Specifies the dimensionality of an image, as well as what view types can be created for it.
enum class ImageUsage: uint32_t { TransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT, TransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT, SampledImage = VK_IMAGE_USAGE_SAMPLED_BIT, StorageImage = VK_IMAGE_USAGE_STORAGE_BIT, ColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, DepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, InputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT }
The allowed usage of a tp::Image.
enum class ImageViewType: uint32_t { View1D = VK_IMAGE_VIEW_TYPE_1D, View2D = VK_IMAGE_VIEW_TYPE_2D, View3D = VK_IMAGE_VIEW_TYPE_3D, ViewCube = VK_IMAGE_VIEW_TYPE_CUBE, View1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY, View2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY, ViewCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY }
The dimensionality of an image view.
enum class IndexType: uint32_t { UInt16 = VK_INDEX_TYPE_UINT16, UInt32 = VK_INDEX_TYPE_UINT32 }
The type of values of an index buffer.
enum class JobFlag { Small }
Specifies additional properties of a tp::Job.
enum class JobResourcePoolFlag { AliasCompatibleFormats, DisableSuballocation }
Specifies additional properties of a tp::JobResourcePool.
enum class LogicOp: uint32_t { Clear = VK_LOGIC_OP_CLEAR, And = VK_LOGIC_OP_AND, AndReverse = VK_LOGIC_OP_AND_REVERSE, Copy = VK_LOGIC_OP_COPY, AndInverted = VK_LOGIC_OP_AND_INVERTED, NoOp = VK_LOGIC_OP_NO_OP, Xor = VK_LOGIC_OP_XOR, Or = VK_LOGIC_OP_OR, Nor = VK_LOGIC_OP_NOR, Equivalent = VK_LOGIC_OP_EQUIVALENT, Invert = VK_LOGIC_OP_INVERT, OrReverse = VK_LOGIC_OP_OR_REVERSE, CopyInverted = VK_LOGIC_OP_COPY_INVERTED, OrInverted = VK_LOGIC_OP_OR_INVERTED, Nand = VK_LOGIC_OP_NAND, Set = VK_LOGIC_OP_SET }
Logical comparison operators.
enum class MemoryAccess { ReadOnly, WriteOnly, ReadWrite }
Specifies the type of memory access.
enum class MemoryLocation: uint8_t { Undefined, DeviceLocal, DeviceLocalHostVisible, DeviceLocalHostCached, HostVisible, HostCached }
Defines the memory location types according to its accessibility and intended use.
enum class MultisampleLevel: uint32_t { x1 = VK_SAMPLE_COUNT_1_BIT, x2 = VK_SAMPLE_COUNT_2_BIT, x4 = VK_SAMPLE_COUNT_4_BIT, x8 = VK_SAMPLE_COUNT_8_BIT, x16 = VK_SAMPLE_COUNT_16_BIT, x32 = VK_SAMPLE_COUNT_32_BIT, x64 = VK_SAMPLE_COUNT_64_BIT }
Sample counts that can be used for image storage operations.
enum class PipelineFlag: uint32_t { DisableOptimizations = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT }
Additional pipeline creation options.
enum class PipelineStage: uint32_t { TopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, DrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, VertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, VertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, ControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, EvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, GeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, FragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, EarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, LateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, ColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, ComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, StageTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT, BottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT }
Vulkan pipeline stages for the purpose of specifying when a tp::TimestampQuery should be written to.
enum class PresentMode: uint32_t { Immediate = VK_PRESENT_MODE_IMMEDIATE_KHR, Mailbox = VK_PRESENT_MODE_MAILBOX_KHR, FIFO = VK_PRESENT_MODE_FIFO_KHR, RelaxedFIFO = VK_PRESENT_MODE_FIFO_RELAXED_KHR }
The possible presentation modes for a surface.
enum class PrimitiveTopology: uint32_t { PointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, LineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST, LineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, TriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, TriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, TriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, LineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, LineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, TriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, TriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, PatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST }
Specifies the type of primitive topology.
enum class QueueType: uint32_t { Undefined, Transfer, Compute, Graphics, External }
The type of a device queue, defining the operations supported on it as well as its performance characteristics.
enum class RasterizationMode { Discard = 0, Fill = 1, Line = 2, Point = 3 }
The mode used for rasterization of primitives.
enum class ReadAccess: uint64_t { DrawIndirect = 1 << 0, DrawIndex = 1 << 1, DrawVertex = 1 << 2, Transfer = 1 << 3, Host = 1 << 4, DepthStencilAttachment = 1 << 5, VertexShaderStorage = 1 << 6, VertexShaderSampled = 1 << 7, VertexShaderUniform = 1 << 8, TessellationControlShaderStorage = 1 << 9, TessellationControlShaderSampled = 1 << 10, TessellationControlShaderUniform = 1 << 11, TessellationEvaluationShaderStorage = 1 << 12, TessellationEvaluationShaderSampled = 1 << 13, TessellationEvaluationShaderUniform = 1 << 14, GeometryShaderStorage = 1 << 15, GeometryShaderSampled = 1 << 16, GeometryShaderUniform = 1 << 17, FragmentShaderStorage = 1 << 18, FragmentShaderSampled = 1 << 19, FragmentShaderUniform = 1 << 20, ComputeShaderStorage = 1 << 21, ComputeShaderSampled = 1 << 22, ComputeShaderUniform = 1 << 23, ImagePresentKHR = 1ull << 62, Unknown = 1ull << 63 }
Describes a kind of read-only resource access by any part of the pipeline.
enum class RenderAccess: uint64_t { DrawIndirectRead = 1 << 0, DrawIndexRead = 1 << 1, DrawVertexRead = 1 << 2, VertexShaderStorageRead = 1 << 3, VertexShaderStorageWrite = 1 << 4, VertexShaderStorageAtomic = 1 << 5, VertexShaderSampledRead = 1 << 6, VertexShaderUniformRead = 1 << 7, TessellationControlShaderStorageRead = 1 << 8, TessellationControlShaderStorageWrite = 1 << 9, TessellationControlShaderStorageAtomic = 1 << 10, TessellationControlShaderSampledRead = 1 << 11, TessellationControlShaderUniformRead = 1 << 12, TessellationEvaluationShaderStorageRead = 1 << 13, TessellationEvaluationShaderStorageWrite = 1 << 14, TessellationEvaluationShaderStorageAtomic = 1 << 15, TessellationEvaluationShaderSampledRead = 1 << 16, TessellationEvaluationShaderUniformRead = 1 << 17, GeometryShaderStorageRead = 1 << 18, GeometryShaderStorageWrite = 1 << 19, GeometryShaderStorageAtomic = 1 << 20, GeometryShaderSampledRead = 1 << 21, GeometryShaderUniformRead = 1 << 22, FragmentShaderStorageRead = 1 << 23, FragmentShaderStorageWrite = 1 << 24, FragmentShaderStorageAtomic = 1 << 25, FragmentShaderSampledRead = 1 << 26, FragmentShaderUniformRead = 1 << 27 }
Describes a kind of resource access from the render pipeline.
enum class RenderQueryType { Occlusion, OcclusionPrecise, InputAssemblyVertices, InputAssemblyPrimitives, VertexShaderInvocations, GeometryShaderInvocations, GeometryShaderPrimitives, ClippingInvocations, ClippingPrimitives, FragmentShaderInvocations, TessellationControlShaderPatches, TessellationEvaluationShaderInvocations }
Specifies the type of the measured quantity by a tp::RenderQuery.
enum class ResolveMode: uint32_t { SampleZero = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, Average = VK_RESOLVE_MODE_AVERAGE_BIT, Min = VK_RESOLVE_MODE_MIN_BIT, Max = VK_RESOLVE_MODE_MAX_BIT }
Determines the method how a multisampled image should be resolved.
enum class SamplerAddressMode: uint32_t { Repeat = VK_SAMPLER_ADDRESS_MODE_REPEAT, MirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, ClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, ClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, MirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE }
The behavior of sampling with texture coordinates outside an image.
enum class ShaderStage: uint32_t { Vertex = VK_SHADER_STAGE_VERTEX_BIT, TessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, TessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, Geometry = VK_SHADER_STAGE_GEOMETRY_BIT, Fragment = VK_SHADER_STAGE_FRAGMENT_BIT, Compute = VK_SHADER_STAGE_COMPUTE_BIT }
Specifies the stage of shader execution.
enum class StatisticEventType { JobPrimaryCommandBuffersUsed, JobPipelineBarriersInserted, JobBufferMemoryBarriersInserted, JobImageMemoryBarriersInserted, JobLocalBufferRequestedBytes, JobLocalBufferCommittedBytes, JobPreinitBufferRequestedBytes, JobLocalImageRequestedBytes, JobLocalImageCommittedBytes }
Describes the type of a statistic event.
enum class StencilOp: uint32_t { Keep = VK_STENCIL_OP_KEEP, Zero = VK_STENCIL_OP_ZERO, Replace = VK_STENCIL_OP_REPLACE, IncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP, DecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP, Invert = VK_STENCIL_OP_INVERT, IncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP, DecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP }
Stencil function specifying what happens to the stored stencil value.
enum class SurfaceTransform: uint32_t { UseCurrentTransform = 0, Identity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, Rotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, Rotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, Rotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, HorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR, HorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR, HorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, HorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, Inherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR }
Transforms applied to a surface upon presentation.
enum class SwapchainFlag: uint32_t { }
Additional swapchain creation options.
enum class SwapchainStatus { Optimal, Suboptimal, OutOfDate, SurfaceLost, Retired }
Describes the status of a tp::Swapchain object and/or the reason why the last operation may have failed.
enum class ValidationFeatureDisable: uint32_t { Shaders = 1 << VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT, ThreadSafety = 1 << VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT, APIParameters = 1 << VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT, ObjectLifetimes = 1 << VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT, CoreChecks = 1 << VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT, UniqueHandles = 1 << VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT }
Validation features part of the standard set that may be optionally disabled.
enum class ValidationFeatureEnable: uint32_t { GPUAssisted = 1 << VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, GPUAssistedReserveBindingSlot = 1 << VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, BestPractices = 1 << VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT, DebugPrintf = 1 << VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT, Synchronization = 1 << VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT }
Optional validation features that may additionally be enabled.
enum class VertexInputRate: uint32_t { Vertex = VK_VERTEX_INPUT_RATE_VERTEX, Instance = VK_VERTEX_INPUT_RATE_INSTANCE }
The rate at which input attributes are pulled from buffers.

Typedefs

using BufferUsageMask = EnumBitMask<BufferUsage>
using CleanupCallback = std::function<void()>
The type of the user-provided function callback that can be used for freeing external resources safely.
using ColorComponentMask = EnumBitMask<ColorComponent>
using CompositeAlphaMask = EnumBitMask<CompositeAlpha>
using ComputeAccessMask = EnumBitMask<ComputeAccess>
using ComputeInlineCallback = std::function<void(ComputeList&)>
The type of the user-provided function callback for recording commands to a compute pass inline.
using CullModeFlagMask = EnumBitMask<CullModeFlag>
using DebugMessageSeverityMask = EnumBitMask<DebugMessageSeverity>
using DebugMessageTypeMask = EnumBitMask<DebugMessageType>
using DescriptorBindingFlagMask = EnumBitMask<DescriptorBindingFlag>
using DescriptorSetFlagMask = EnumBitMask<DescriptorSetFlag>
using FormatFeatureMask = EnumBitMask<FormatFeature>
using FormatUsageMask = EnumBitMask<FormatUsage>
using ImageAspectMask = EnumBitMask<ImageAspect>
using ImageFlagMask = EnumBitMask<ImageFlag>
using ImageUsageMask = EnumBitMask<ImageUsage>
using JobFlagMask = EnumBitMask<JobFlag>
using JobResourcePoolFlagMask = EnumBitMask<JobResourcePoolFlag>
using MultisampleLevelMask = EnumBitMask<MultisampleLevel>
template<typename T>
using OwningPtr = std::unique_ptr<T>
Owning pointer is returned by the API when the ownership of the object is being transferred over to the user. It needs to be constructible by passing T* as a parameter. Upon destruction std::default_delete or equivalent should be called.
using PipelineFlagMask = EnumBitMask<PipelineFlag>
using ReadAccessMask = EnumBitMask<ReadAccess>
using RenderAccessMask = EnumBitMask<RenderAccess>
using RenderInlineCallback = std::function<void(RenderList&)>
The type of the user-provided function callback for recording commands to a render pass inline.
using ResolveModeMask = EnumBitMask<ResolveMode>
using ShaderStageMask = EnumBitMask<ShaderStage>
using SurfaceTransformMask = EnumBitMask<SurfaceTransform>
using SwapchainFlagMask = EnumBitMask<SwapchainFlag>
using ValidationFeatureDisableMask = EnumBitMask<ValidationFeatureDisable>
using ValidationFeatureEnableMask = EnumBitMask<ValidationFeatureEnable>
using VkFeatureMap = VkStructureMap<VkFeatureStructureMapTrait>
tp::VkStructureMap specialization that accepts Vulkan feature structures.
using VkPropertyMap = VkStructureMap<VkPropertyStructureMapTrait>
tp::VkStructureMap specialization that accepts Vulkan property structures.
using VkRenderingInfoExtMap = VkStructureMap<VkRenderingInfoExtStructureMapTrait>
tp::VkStructureMap specialization that accepts Vulkan structures extending VkRenderingInfo;

Functions

auto getFormatClassProperties(Format format) -> FormatClassProperties constexpr
Returns the tp::FormatClassProperties of the format compatibility class that the given tp::Format is a part of.
auto getFormatClassProperties(FormatCompatibilityClass formatClass) -> FormatClassProperties constexpr
Returns the tp::FormatClassProperties of a given tp::FormatCompatibilityClass.
auto getFormatCompatibilityClass(Format format) -> FormatCompatibilityClass constexpr
Returns the tp::FormatCompatibilityClass for the given tp::Format.
template<typename T>
auto getOwnedPtr(const OwningPtr<T>& owningPtr) -> const T*
Returns the owned pointer without releasing ownership.
template<typename T>
auto getOwnedPtr(OwningPtr<T>& owningPtr) -> T*
Returns the owned pointer without releasing ownership.
template<typename T>
auto getVkFeatureStructureType() -> VkStructureType deleted constexpr
Returns the VkStructureType enum value corresponding to the given Vulkan structure type. These structures specify physical device features and can be used in tp::PhysicalDevice::vkQueryFeatures.
template<typename T>
auto getVkPropertyStructureType() -> VkStructureType deleted constexpr
Returns the VkStructureType enum value corresponding to the given Vulkan structure type. These structures specify physical device properties and can be used in tp::PhysicalDevice::vkQueryProperties.
template<typename T>
auto getVkRenderingInfoExtStructureType() -> VkStructureType deleted constexpr
Returns the VkStructureType enum value corresponding to the given Vulkan structure type. These structures extend VkRenderingInfo and can be used in tp::RenderPassSetup.
auto operator!=(const Buffer& lhs, const Buffer& rhs) -> bool
Inequality operator for tp::Buffer.
auto operator!=(const BufferView& lhs, const BufferView& rhs) -> bool
Inequality operator for tp::BufferView.
auto operator!=(const DeviceQueue& lhs, const DeviceQueue& rhs) -> bool constexpr
Inequality operator for tp::DeviceQueue.
auto operator!=(const ExternalSemaphore& lhs, const ExternalSemaphore& rhs) -> bool constexpr
Inequality operator for tp::ExternalSemaphore.
auto operator!=(const Image& lhs, const Image& rhs) -> bool
Inequality operator for tp::Image.
auto operator!=(const ImageView& lhs, const ImageView& rhs) -> bool
Inequality operator for tp::ImageView.
auto operator!=(const JobSemaphore& lhs, const JobSemaphore& rhs) -> bool constexpr
Inequality operator for tp::JobSemaphore.
template<typename T, VkObjectType Id>
auto operator!=(const VkObjectHandle<T, Id>& lhs, const VkObjectHandle<T, Id>& rhs) -> bool constexpr
Inequality operator for tp::VkObjectHandle.
auto operator==(const Buffer& lhs, const Buffer& rhs) -> bool
Equality operator for tp::Buffer.
auto operator==(const BufferView& lhs, const BufferView& rhs) -> bool
Equality operator for tp::BufferView.
auto operator==(const DeviceQueue& lhs, const DeviceQueue& rhs) -> bool constexpr
Equality operator for tp::DeviceQueue.
auto operator==(const ExternalSemaphore& lhs, const ExternalSemaphore& rhs) -> bool constexpr
Equality operator for tp::ExternalSemaphore.
auto operator==(const Image& lhs, const Image& rhs) -> bool
Equality operator for tp::Image.
auto operator==(const ImageView& lhs, const ImageView& rhs) -> bool
Equality operator for tp::ImageView.
auto operator==(const JobSemaphore& lhs, const JobSemaphore& rhs) -> bool constexpr
Equality operator for tp::JobSemaphore.
template<typename T, VkObjectType Id>
auto operator==(const VkObjectHandle<T, Id>& lhs, const VkObjectHandle<T, Id>& rhs) -> bool constexpr
Equality operator for tp::VkObjectHandle.
template<typename T>
auto view(T* ptr, std::size_t size) -> ArrayView<T> constexpr noexcept
Creates an array view of a contiguous array of elements.
template<typename T>
auto viewOne(T& value) -> ArrayView<T> constexpr noexcept
Creates an array view of a single element.
template<typename T>
auto viewRange(ArrayView<T>& view, std::size_t start, std::size_t count) -> ArrayView<T> constexpr noexcept
Creates an array view of a contiguous range of an array of elements.

Enum documentation

enum class tp::AttachmentLoadOp: uint32_t

The load operation applied to the contents of an attachment at the start of a render pass.

Enumerators
Load

Specifies that the attachment will load the contents of the assigned image view.

Clear

Specifies that the attachment will be cleared to a specified value.

DontCare

Specifies that the contents of the attachment may be undefined.

enum class tp::AttachmentStoreOp: uint32_t

The store operation applied to the contents of an attachment.

Enumerators
Store

Specifies that the contents of the attachment will be stored into the assigned image view.

DontCare

Specifies that the contents of the image view may be left undefined.

enum class tp::BlendFactor: uint32_t

Framebuffer blending factors.

enum class tp::BlendOp: uint32_t

Framebuffer blending operators.

enum class tp::BorderColor: uint32_t

The border color applied when using a border tp::SamplerAddressMode.

enum class tp::BufferUsage: uint32_t

The allowed usage of a tp::Buffer.

Enumerators
ImageTransfer

Allows the buffer to be used as the source or destination buffer of copy commands that copy to or from an image.

HostMapped

Allows the buffer to have its memory mapped for host access using tp::Buffer::mapForHostAccess.

TexelBuffer

Allows the buffer to be used in a tp::DescriptorType::TexelBuffer or a tp::DescriptorType::StorageTexelBuffer descriptor.

UniformBuffer

Allows the buffer to be used in a tp::DescriptorType::UniformBuffer descriptor.

StorageBuffer

Allows the buffer to be used in a tp::DescriptorType::StorageBuffer descriptor.

IndexBuffer

Allows the buffer to be used as an index buffer through tp::RenderList::cmdBindIndexBuffer.

VertexBuffer

Allows the buffer to be used as a vertex buffer through tp::RenderList::cmdBindVertexBuffers.

IndirectBuffer

Allows the buffer to be used as an indirect parameter buffer for tp::RenderList::cmdDrawIndirect, tp::ComputeList::cmdDispatchIndirect and similar.

DeviceAddress

Allows the use of tp::Buffer::getDeviceAddress and tp::BufferView::getDeviceAddress to access the buffer from shaders through its address.

enum class tp::ColorComponent: uint32_t

Identifies a component of a color image.

enum class tp::CompareOp: uint32_t

Comparison operators for depth, stencil and sampler operations.

enum class tp::ComponentSwizzle: uint32_t

Specifies the values placed in a component of the output color vector.

enum class tp::CompositeAlpha: uint32_t

The alpha composition used for the surface upon presentation.

enum class tp::ComputeAccess: uint64_t

Describes the kind of resource access from the compute pipeline.

Enumerators
ComputeShaderStorageRead

Compute shader read access through storage descriptors.

ComputeShaderStorageWrite

Compute shader write access through storage descriptors.

ComputeShaderStorageAtomic

Compute shader atomic read/write access through storage descriptors.

ComputeShaderSampledRead

Compute shader read access through sampled descriptors.

ComputeShaderUniformRead

Compute shader read access through uniform buffer descriptors.

enum class tp::CullModeFlag: uint32_t

Flags controlling which triangles get discarded.

Enumerators
FrontFace

Triangles that are considered to be front facing won't be rasterized.

BackFace

Triangles that are considered to be back facing won't be rasterized.

enum class tp::DebugMessageSeverity: uint32_t

The severity of a reported debug message.

enum class tp::DebugMessageType: uint32_t

The type of a reported debug message.

enum class tp::DescriptorBindingFlag

Specifies additional properties of a tp::DescriptorBinding.

Enumerators
PartiallyBound

Indicates that the descriptors in this binding that are not dynamically used don't need to contain valid descriptors at the time the descriptors are consumed. A descriptor is dynamically used if any shader invocation executes an instruction that performs any memory access using the descriptor.

VariableDescriptorCount

Indicates that this descriptor binding has a variable size that will be specified when a descriptor set is allocated using this layout. The arraySize of tp::DescriptorBinding is then treated as an upper bound on the size of this binding.

AliasStorageImage

Allows binding the same image to a sampled image descriptor that uses this flag at the same time as to a storage image descriptor. Internally, the image will be transitioned to a general layout, just like for a storage image.

UpdateAfterBind

Allows this binding to be updated inside a descriptor set after it has already been bound and used. This only affects tp::utils::MutableDescriptorSet::setImmediate or other custom methods relying on VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT.

enum class tp::DescriptorSetFlag

Additional descriptor set creation options.

Enumerators
IgnoreNullDescriptors

Specifying this flag allows you to provide null descriptors during descriptor set creation. Such descriptors will be ignored and their associated bindings will be left unbound. Such bindings must not be accessed from the shader side either statically or dynamically, depending on if tp::DescriptorBindingFlag::PartiallyBound was used.

enum class tp::DescriptorType: uint32_t

Specifies how a certain resource is to be accessed from within a shader.

In terms of the type of access, descriptors can be categorized by their tp::DescriptorType into:

Sampled descriptors, providing read-only access with format conversions:

Storage descriptors, providing read, write and atomic access:

Uniform buffer descriptors, providing read-only access to uniform buffers:

Sampler descriptors:

Enumerators
Sampler

A descriptor for a tp::Sampler object.

CombinedImageSampler

A descriptor for a combination of tp::ImageView and a tp::Sampler objects as a read-only sampled image using the provided sampler.

SampledImage

A descriptor for a tp::ImageView object as a read-only sampled image.

StorageImage

A descriptor for a tp::ImageView object as a read/write storage image.

TexelBuffer

A descriptor for a tp::BufferView object as a formatted read-only buffer.

StorageTexelBuffer

A descriptor for a tp::BufferView object as a formatted read/write buffer.

UniformBuffer

A descriptor for a tp::BufferView object as a read-only uniform (constant) buffer. This type of buffer descriptor is particularly suited for constants accessed uniformly by shader invocations.

StorageBuffer

A descriptor for a tp::BufferView object as a read/write buffer.

UniformBufferDynamic

A descriptor for a tp::BufferView object as a read-only uniform (constant) buffer with a dynamic offset.

StorageBufferDynamic

A descriptor for a tp::BufferView object as a read/write buffer with a dynamic offset.

enum class tp::DeviceType

The general type of a physical device.

Enumerators
Other

The device does not match any other available types.

IntegratedGPU

The device is typically one embedded in or tightly coupled with the host.

DiscreteGPU

The device is typically a separate processor connected to the host via an interlink.

VirtualGPU

The device is typically a virtual node in a virtualization environment.

CPU

The device is typically running on the same processors as the host.

enum class tp::DeviceVendor

The named vendor of a physical device.

enum class tp::DynamicState: uint32_t

Specifies the parts of the tp::GraphicsPipelineSetup state that are to be taken from the dynamic state commands recorded into a tp::RenderList, rather than from the pipeline setup, which will be ignored.

Enumerators
LineWidth

Replaces tp::GraphicsPipelineSetup::setLineWidth with tp::RenderList::cmdSetLineWidth.

DepthBias

Replaces tp::GraphicsPipelineSetup::setDepthBias with tp::RenderList::cmdSetDepthBias.

BlendConstants

Replaces tp::GraphicsPipelineSetup::setBlendConstants with tp::RenderList::cmdSetBlendConstants.

DepthBounds

Replaces tp::GraphicsPipelineSetup::setDepthBoundsTest with tp::RenderList::cmdSetDepthBounds.

enum class tp::ErrorType: int32_t

The type of an error returned by either Vulkan or Tephra.

Enumerators
UnknownError

Unknown runtime error type. Maps to tp::RuntimeError.

AssertionFailed

Internal Tephra assertion failed. Maps to tp::AssertionError.

UnsupportedOperation

Platform or device does not support this operation. Maps to tp::UnsupportedOperationError.

OutOfHostMemory

A host memory allocation has failed. Maps to tp::OutOfMemoryError.

OutOfDeviceMemory

A device memory allocation has failed. Maps to tp::OutOfMemoryError.

Fragmentation

A descriptor pool creation has failed due to fragmentation. Maps to tp::OutOfMemoryError.

InitializationFailed

Initialization of an object could not be completed. Maps to tp::RuntimeError.

DeviceLost

The logical or physical device has been lost. Maps to tp::DeviceLostError.

MemoryMapFailed

Mapping of a memory object has failed. Maps to tp::RuntimeError.

LayerNotPresent

A requested layer is not present or could not be loaded. Maps to tp::UnsupportedOperationError.

ExtensionNotPresent

A requested extension is not supported. Maps to tp::UnsupportedOperationError.

FeatureNotPresent

A requested feature is not supported. Maps to tp::UnsupportedOperationError.

TooManyObjects

Too many objects of a type have already been created. Maps to tp::TooManyObjectsError.

FormatNotSupported

A requested format is not supported on this device. Maps to tp::UnsupportedOperationError.

InvalidExternalHandle

An external handle is not a valid handle of the specified type. Maps to tp::UnsupportedOperationError.

SurfaceLostKHR

A surface is no longer available. Maps to tp::SurfaceLostError.

NativeWindowInUseKHR

The requested window is already connected to a VkSurfaceKHR, or to some other non-Vulkan API. Maps to tp::RuntimeError.

OutOfDateKHR

A surface has changed in such a way that it is no longer compatible with the swapchain, and further presentation requests using the swapchain will fail. Maps to tp::OutOfDateError.

enum class tp::Filter: uint32_t

The filtering mode.

enum class tp::Format: uint32_t

The formats that data can be stored in inside buffers and images.

enum class tp::FormatFeature: uint32_t

Describes additional features of a particular format.

Enumerators
AtomicOperations

Describes if a format supports atomic operations of storage images or texel buffers.

LinearFiltering

Describes if a format supports linear filtering through tp::Filter::Linear.

enum class tp::FormatUsage: uint32_t

The usage of a resource using a particular format.

Enumerators
SampledImage

Corresponds to usage through tp::DescriptorType::SampledImage or tp::DescriptorType::CombinedImageSampler.

StorageImage

Corresponds to usage through tp::DescriptorType::StorageImage.

ColorAttachment

Corresponds to usage through tp::ColorAttachment.

DepthStencilAttachment

Corresponds to usage through tp::DepthStencilAttachment.

TexelBuffer

Corresponds to usage through tp::DescriptorType::TexelBuffer.

StorageTexelBuffer

Corresponds to usage through tp::DescriptorType::StorageTexelBuffer.

VertexBuffer

Corresponds to usage in tp::VertexInputAttribute.

enum class tp::ImageAspect: uint32_t

The aspect storing a type of data of an image view.

enum class tp::ImageFlag: uint32_t

Additional image creation options.

Enumerators
BlockTexelViewCompatible

When used on images with block compressed formats, allows constructing views out of them with an uncompressed format where each texel in the image view corresponds to a compressed texel block of the image.

enum class tp::ImageType

Specifies the dimensionality of an image, as well as what view types can be created for it.

Enumerators
Image1D

One-dimensional image. Supports tp::ImageViewType::View1D and tp::ImageViewType::View1DArray views.

Image2D

Two-dimensional image. Supports tp::ImageViewType::View2D and tp::ImageViewType::View2DArray views.

Image2DCubeCompatible

Two-dimensional image with cubemap view compatibility. Supports tp::ImageViewType::View2D, tp::ImageViewType::View2DArray, tp::ImageViewType::ViewCube and tp::ImageViewType::ViewCubeArray views.

Image3D

Three-dimensional image. Supports tp::ImageViewType::View3D views.

Image3D2DArrayCompatible

Three-dimensional image with two-dimensional view compatibility of its slices. Supports tp::ImageViewType::View3D, tp::ImageViewType::View2D and tp::ImageViewType::View2DArray views.

enum class tp::ImageUsage: uint32_t

The allowed usage of a tp::Image.

Enumerators
TransferSrc

Allows the image to be used as the source image of copy, resolve and blit commands.

TransferDst

Allows the image to be used as the destination image of copy, resolve and blit commands and tp::Job::cmdClearImage.

SampledImage

Allows the image to be used in a tp::DescriptorType::SampledImage or tp::DescriptorType::CombinedImageSampler descriptor.

StorageImage

Allows the image to be used in a tp::DescriptorType::StorageImage descriptor.

ColorAttachment

Allows the image to be used as a tp::ColorAttachment inside a render pass.

DepthStencilAttachment

Allows the image to be used as a tp::DepthStencilAttachment inside a render pass.

InputAttachment

Allows the image to be used in a tp::DescriptorType::InputAttachment descriptor.

enum class tp::ImageViewType: uint32_t

The dimensionality of an image view.

Enumerators
View1D

One-dimensional image view.

View2D

Two-dimensional image view.

View3D

Three-dimensional image view.

ViewCube

Two-dimensional image view of six layers representing the sides of a cubemap. The layers are interpreted as follows: 0: Positive X 1: Negative X 2: Positive Y 3: Negative Y 4: Positive Z 5: Negative Z.

View1DArray

One-dimensional image view with multiple layers.

View2DArray

Two-dimensional image view with multiple layers.

ViewCubeArray

Two-dimensional image view of multiples of six layers representing the sides of cubemaps as in tp::ImageViewType::ViewCube.

enum class tp::IndexType: uint32_t

The type of values of an index buffer.

enum class tp::JobFlag

Specifies additional properties of a tp::Job.

Enumerators
Small

Hints that the job will not take a significant amount of time or resources when executed on the device. This may allow optimizations that aim to reduce the overhead of a job submission.

enum class tp::JobResourcePoolFlag

Specifies additional properties of a tp::JobResourcePool.

Enumerators
AliasCompatibleFormats

Normally, only images with the exact match of formats are able to be aliased. By specifying this tag, images of different formats that are from the same format compatibility class may be aliased together.

DisableSuballocation

Disables suballocation and aliasing of all resources. This means that every requested job-local resource will correspond to a single Vulkan resource. tp::OverallocationBehavior for buffers will be ignored.

enum class tp::LogicOp: uint32_t

Logical comparison operators.

enum class tp::MemoryAccess

Specifies the type of memory access.

Enumerators
ReadOnly

The access is read only.

WriteOnly

The access is write only.

ReadWrite

The access is both read and write.

enum class tp::MemoryLocation: uint8_t

Defines the memory location types according to its accessibility and intended use.

Enumerators
Undefined

An undefined, invalid memory location.

DeviceLocal

Memory that is efficient for device access, but isn't accessible by the host.

DeviceLocalHostVisible

Memory that is efficient for device access and is accessible by the host without caching.

DeviceLocalHostCached

Memory that is efficient for device access and is accessible by the host with caching.

HostVisible

Memory that is accessible by device less efficiently and by the host without caching.

HostCached

Memory that is accessible by device less efficiently and by the host with caching.

enum class tp::MultisampleLevel: uint32_t

Sample counts that can be used for image storage operations.

enum class tp::PipelineFlag: uint32_t

Additional pipeline creation options.

Enumerators
DisableOptimizations

Asks the implementation to disable optimizations of the pipeline.

enum class tp::PipelineStage: uint32_t

Vulkan pipeline stages for the purpose of specifying when a tp::TimestampQuery should be written to.

enum class tp::PresentMode: uint32_t

The possible presentation modes for a surface.

Enumerators
Immediate

Presented images appear on the screen immediately, without waiting for the next vertical blanking period. This mode may cause visible tearing.

Mailbox

Presented images queue up for being displayed on the screen. During each vertical blanking period, the most recent presented image will be displayed.

FIFO

Presented images queue up for being displayed on the screen. During each vertical blanking period, the least recent presented image will be displayed. This mode may cause tp::Swapchain::acquireNextImage to wait for an image to become available, effectively tying the rate of presentation to the screen's vertical blanking period. This is the only mode that is always supported.

RelaxedFIFO

Similar to tp::PresentMode::FIFO, except if the application has not presented an image in time for the next vertical blanking period, the next time an image gets presented, it will be displayed on the screen immediately. This should help smooth out the framerate, but it may also cause visible tearing in those situations.

enum class tp::PrimitiveTopology: uint32_t

Specifies the type of primitive topology.

Enumerators
PointList

Specifies a series of separate point primitives.

LineList

Specifies a series of separate line primitives.

LineStrip

Specifies a series of connected line primitives with consecutive lines sharing a vertex.

TriangleList

Specifies a series of separate triangle primitives.

TriangleStrip

Specifies a series of connected triangle primitives with consecutive triangles sharing an edge.

TriangleFan

Specifies a series of connected triangle primitives with all triangles sharing a common vertex.

LineListWithAdjacency

Specifies a series of separate line primitives with adjacency.

LineStripWithAdjacency

Specifies a series of connected line primitives with adjacency, with consecutive primitives sharing three vertices.

TriangleListWithAdjacency

Specifies a series of separate triangle primitives with adjacency.

TriangleStripWithAdjacency

Specifies connected triangle primitives with adjacency, with consecutive triangles sharing an edge.

PatchList

Specifies separate patch primitives.

enum class tp::QueueType: uint32_t

The type of a device queue, defining the operations supported on it as well as its performance characteristics.

Enumerators
Undefined

An invalid queue type.

Transfer

A queue type that only supports transfer operations.

Compute

A queue type that supports compute and transfer operations.

Graphics

A queue type that supports graphics, compute and transfer operations.

External

An external queue type not managed by Vulkan.

enum class tp::RasterizationMode

The mode used for rasterization of primitives.

Enumerators
Discard

Turns rasterization off completely.

Fill

Rasterize the full polygons.

Line

Rasterize the edges of polygons.

Point

Rasterize the vertices of polygons as points.

enum class tp::ReadAccess: uint64_t

Describes a kind of read-only resource access by any part of the pipeline.

Enumerators
DrawIndirect

Read access of indirect command data through an indirect drawing command.

DrawIndex

Read access of an index buffer through an indexed drawing command.

DrawVertex

Read access of a vertex buffer through a drawing command.

Transfer

Read transfer access of a resource through a transfer command.

Host

Read host access of a buffer through HostMappedMemory.

DepthStencilAttachment

Read access of an image as a depth stencil attachment of a render pass.

VertexShaderStorage

Vertex shader read access through storage descriptors.

VertexShaderSampled

Vertex shader read access through sampled descriptors.

VertexShaderUniform

Vertex shader read access through uniform buffer descriptors.

TessellationControlShaderStorage

Tessellation control shader read access through storage descriptors.

TessellationControlShaderSampled

Tessellation control shader read access through sampled descriptors.

TessellationControlShaderUniform

Tessellation control shader read access through uniform buffer descriptors.

TessellationEvaluationShaderStorage

Tessellation evaluation shader read access through storage descriptors.

TessellationEvaluationShaderSampled

Tessellation evaluation shader read access through sampled descriptors.

TessellationEvaluationShaderUniform

Tessellation evaluation shader read access through uniform buffer descriptors.

GeometryShaderStorage

Geometry shader read access through storage descriptors.

GeometryShaderSampled

Geometry shader read access through sampled descriptors.

GeometryShaderUniform

Geometry shader read access through uniform buffer descriptors.

FragmentShaderStorage

Fragment shader read access through storage descriptors.

FragmentShaderSampled

Fragment shader read access through sampled descriptors.

FragmentShaderUniform

Fragment shader read access through uniform buffer descriptors.

ComputeShaderStorage

Compute shader read access through storage descriptors.

ComputeShaderSampled

Compute shader read access through sampled descriptors.

ComputeShaderUniform

Compute shader read access through uniform buffer descriptors.

ImagePresentKHR

Image present operation access through tp::Device::submitPresentImagesKHR.

Unknown

Represents an unknown or generic read access.

enum class tp::RenderAccess: uint64_t

Describes a kind of resource access from the render pipeline.

Enumerators
DrawIndirectRead

Read access of indirect command data through an indirect drawing command.

DrawIndexRead

Read access of an index buffer through an indexed drawing command.

DrawVertexRead

Read access of a vertex buffer through a drawing command.

VertexShaderStorageRead

Vertex shader read access through storage descriptors.

VertexShaderStorageWrite

Vertex shader write access through storage descriptors.

VertexShaderStorageAtomic

Vertex shader atomic read/write access through storage descriptors.

VertexShaderSampledRead

Vertex shader read access through sampled descriptors.

VertexShaderUniformRead

Vertex shader read access through uniform buffer descriptors.

TessellationControlShaderStorageRead

Tessellation control shader read access through storage descriptors.

TessellationControlShaderStorageWrite

Tessellation control shader write access through storage descriptors.

TessellationControlShaderStorageAtomic

Tessellation control shader atomic read/write access through storage descriptors.

TessellationControlShaderSampledRead

Tessellation control shader read access through sampled descriptors.

TessellationControlShaderUniformRead

Tessellation control shader read access through uniform buffer descriptors.

TessellationEvaluationShaderStorageRead

Tessellation evaluation shader read access through storage descriptors.

TessellationEvaluationShaderStorageWrite

Tessellation evaluation shader write access through storage descriptors.

TessellationEvaluationShaderStorageAtomic

Tessellation evaluation shader atomic read/write access through storage descriptors.

TessellationEvaluationShaderSampledRead

Tessellation evaluation shader read access through sampled descriptors.

TessellationEvaluationShaderUniformRead

Tessellation evaluation shader read access through uniform buffer descriptors.

GeometryShaderStorageRead

Geometry shader read access through storage descriptors.

GeometryShaderStorageWrite

Geometry shader write access through storage descriptors.

GeometryShaderStorageAtomic

Geometry shader atomic read/write access through storage descriptors.

GeometryShaderSampledRead

Geometry shader read access through sampled descriptors.

GeometryShaderUniformRead

Geometry shader read access through uniform buffer descriptors.

FragmentShaderStorageRead

Fragment shader read access through storage descriptors.

FragmentShaderStorageWrite

Fragment shader write access through storage descriptors.

FragmentShaderStorageAtomic

Fragment shader atomic read/write access through storage descriptors.

FragmentShaderSampledRead

Fragment shader read access through sampled descriptors.

FragmentShaderUniformRead

Fragment shader read access through uniform buffer descriptors.

enum class tp::RenderQueryType

Specifies the type of the measured quantity by a tp::RenderQuery.

Enumerators
Occlusion

Measures the number of samples that pass the per-fragment tests. The result can be approximate for values greater than 0.

OcclusionPrecise

Measures the number of samples that pass the per-fragment tests. The use of this type requires the VkPhysicalDeviceVulkanFeatures::occlusionQueryPrecise feature to be enabled.

InputAssemblyVertices

Pipeline statistics query counting the number of vertices processed by the input assembly stage.

InputAssemblyPrimitives

Pipeline statistics query counting the number of primitives processed by the input assembly stage.

VertexShaderInvocations

Pipeline statistics query counting the number of vertex shader invocations.

GeometryShaderInvocations

Pipeline statistics query counting number of geometry shader invocations.

GeometryShaderPrimitives

Pipeline statistics query counting the number of primitives generated by geometry shader invocations.

ClippingInvocations

Pipeline statistics query counting the number of primitives processed by the "primitive clipping" stage of the pipeline.

ClippingPrimitives

Pipeline statistics query counting the number of primitives output by the "primitive clipping" stage of the pipeline.

FragmentShaderInvocations

Pipeline statistics query counting the number of fragment shader invocations.

TessellationControlShaderPatches

Pipeline statistics query counting the number of patches processed by the tessellation control shader.

TessellationEvaluationShaderInvocations

Pipeline statistics query counting the number of invocations of the tessellation evaluation shader.

enum class tp::ResolveMode: uint32_t

Determines the method how a multisampled image should be resolved.

enum class tp::SamplerAddressMode: uint32_t

The behavior of sampling with texture coordinates outside an image.

enum class tp::ShaderStage: uint32_t

Specifies the stage of shader execution.

Enumerators
Vertex

The vertex shader stage.

TessellationControl

The tessellation control shader stage.

TessellationEvaluation

The tessellation evaluation shader stage.

Geometry

The geometry shader stage.

Fragment

The fragment shader stage.

Compute

The compute shader stage.

enum class tp::StatisticEventType

Describes the type of a statistic event.

Enumerators
JobPrimaryCommandBuffersUsed

On tp::Device::submitQueuedJobs, reports the number of primary Vulkan command buffers used by the job.

JobPipelineBarriersInserted

On tp::Device::submitQueuedJobs, reports the number of Vulkan pipeline barriers inserted for synchronizing the commands of the job.

JobBufferMemoryBarriersInserted

On tp::Device::submitQueuedJobs, reports the number of Vulkan buffer memory barriers inserted for synchronizing the buffer accesses of the job.

JobImageMemoryBarriersInserted

On tp::Device::submitQueuedJobs, reports the number of Vulkan image memory barriers inserted for synchronizing the image accesses of the job.

JobLocalBufferRequestedBytes

On tp::Device::enqueueJob, reports the number of bytes requested for job-local buffers for the job.

JobLocalBufferCommittedBytes

On tp::Device::enqueueJob, reports the number of bytes actually committed to job-local buffers for the job. May be lower than tp::StatisticEventType::JobLocalBufferRequestedBytes thanks to resource aliasing and reuse.

JobPreinitBufferRequestedBytes

On tp::Device::enqueueJob, reports the number of bytes requested for preinitialized job-local buffers for the job.

JobLocalImageRequestedBytes

On tp::Device::enqueueJob, reports the number of bytes requested for job-local images for the job.

JobLocalImageCommittedBytes

On tp::Device::enqueueJob, reports the number of bytes actually committed to job-local images for the job. May be lower than tp::StatisticEventType::JobLocalImageRequestedBytes thanks to resource aliasing and reuse.

enum class tp::StencilOp: uint32_t

Stencil function specifying what happens to the stored stencil value.

enum class tp::SurfaceTransform: uint32_t

Transforms applied to a surface upon presentation.

Enumerators
UseCurrentTransform

Chooses the currently used transform as reported by the platform.

Identity
Rotate90
Rotate180
Rotate270
HorizontalMirror
HorizontalMirrorRotate90
HorizontalMirrorRotate180
HorizontalMirrorRotate270
Inherit

enum class tp::SwapchainFlag: uint32_t

Additional swapchain creation options.

enum class tp::SwapchainStatus

Describes the status of a tp::Swapchain object and/or the reason why the last operation may have failed.

Enumerators
Optimal

The swapchain is ready to be used for presentation and it matches surface properties.

Suboptimal

The swapchain is ready to be used for presentation, but it does not match surface properties exactly. The user may choose to recreate the swapchain when it's convenient.

OutOfDate

The underlying surface has changed in such a way that it is no longer compatible with the swapchain. Further presentation requests will fail.

SurfaceLost

The underlying surface has been lost and needs to be recreated, along with the swapchain. Further presentation requests will fail.

Retired

Indicates that the swapchain has been used to create a new swapchain and that already acquired images can still be presented, but new images cannot be acquired.

enum class tp::ValidationFeatureDisable: uint32_t

Validation features part of the standard set that may be optionally disabled.

enum class tp::ValidationFeatureEnable: uint32_t

Optional validation features that may additionally be enabled.

enum class tp::VertexInputRate: uint32_t

The rate at which input attributes are pulled from buffers.

Enumerators
Vertex

The input attribute values will be consumed per-vertex.

Instance

The input attribute values will be consumed per-instance.

Typedef documentation

using tp::BufferUsageMask = EnumBitMask<BufferUsage>

A bitmask of tp::BufferUsage values.

using tp::CleanupCallback = std::function<void()>

The type of the user-provided function callback that can be used for freeing external resources safely.

using tp::ComputeAccessMask = EnumBitMask<ComputeAccess>

A bitmask of tp::ComputeAccess values.

using tp::ComputeInlineCallback = std::function<void(ComputeList&)>

The type of the user-provided function callback for recording commands to a compute pass inline.

using tp::CullModeFlagMask = EnumBitMask<CullModeFlag>

A bitmask of tp::CullModeFlag values.

using tp::FormatFeatureMask = EnumBitMask<FormatFeature>

A bitmask of tp::FormatFeature values.

using tp::FormatUsageMask = EnumBitMask<FormatUsage>

A bitmask of tp::FormatUsage values.

using tp::ImageAspectMask = EnumBitMask<ImageAspect>

A bitmask of tp::ImageAspect values.

using tp::ImageFlagMask = EnumBitMask<ImageFlag>

A bitmask of tp::ImageFlag values.

using tp::ImageUsageMask = EnumBitMask<ImageUsage>

A bitmask of tp::ImageUsage values.

using tp::JobFlagMask = EnumBitMask<JobFlag>

A bitmask of tp::JobFlag values.

using tp::PipelineFlagMask = EnumBitMask<PipelineFlag>

A bitmask of tp::PipelineFlag values.

using tp::ReadAccessMask = EnumBitMask<ReadAccess>

A bitmask of tp::ReadAccess values.

using tp::RenderAccessMask = EnumBitMask<RenderAccess>

A bitmask of tp::RenderAccess values.

using tp::RenderInlineCallback = std::function<void(RenderList&)>

The type of the user-provided function callback for recording commands to a render pass inline.

using tp::ResolveModeMask = EnumBitMask<ResolveMode>

A bitmask of tp::ResolveMode values.

using tp::ShaderStageMask = EnumBitMask<ShaderStage>

A bitmask of tp::ShaderStage values.

using tp::SwapchainFlagMask = EnumBitMask<SwapchainFlag>

A bitmask of tp::SwapchainFlag values.