Pipeline stages and access flags are now specified together in memory barrier structures, making the connection between the two more obvious. Additionally, scoping the pipeline stages into the barrier structs allows the use of the MEMORY_READ and MEMORY_WRITE flags without sacrificing precision. The per-stage access flags should be used to disambiguate specific accesses in a given stage or set of stages - for instance, between uniform reads and sampling operations.
Layout transitions have been simplified as well; rather than requiring a different set of layouts for depth/stencil/color attachments, there are generic IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR and IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR layouts which are contextually applied based on the image format. For example, for a depth format image, IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR is equivalent to IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR. IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR also functionally replaces IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL.
Events are now more efficient, because they include memory dependency information when you set them on the device. Previously, this information was only known when waiting on an event, so the dependencies could not be satisfied until the wait occurred. That sometimes meant stalling the pipeline when the wait occurred. The new API provides enough information for implementations to satisfy these dependencies in parallel with other tasks.
Queue submission has been changed to wrap command buffers and semaphores in extensible structures, which incorporate changes from Vulkan 1.1, VK_KHR_device_group, and VK_KHR_timeline_semaphore. This also adds a pipeline stage to the semaphore signal operation, mirroring the existing pipeline stage specification for wait operations.
Other miscellaneous changes include:
oldLayout equal to newLayout.
IMAGE_LAYOUT_UNDEFINED, without discarding data in the image.VkPipelineStageFlags or VkPipelineStageFlagBits parameter have had those APIs replaced with equivalents using VkPipelineStageFlags2KHR.PIPELINE_STAGE_NONE_KHR and PIPELINE_STAGE_2_NONE_KHR values.VkMemoryBarrier2KHR can be chained to VkSubpassDependency2, overriding the original 32-bit stage and access masks.Functionality in this extension is included in core Vulkan 1.3, with the KHR suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
See https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples
VK_KHR_synchronization2VK_KHR_get_physical_device_properties2 or Version 1.1VK_KHR_create_renderpass2| Modifier and Type | Field and Description |
|---|---|
| public static final long | VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV
Extends |
| public static final long | VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV
Extends |
| public static final long | VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Extends |
| public static final long | VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
Extends |
| public static final long | VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
Extends |
| public static final long | VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
Extends |
| public static final long | VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
Extends |
| public static final long | VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_HOST_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_HOST_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_INDEX_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_MEMORY_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_MEMORY_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_NONE_KHR
Extends |
| public static final long | VK_ACCESS_2_SHADER_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_SHADER_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
Extends |
| public static final long | VK_ACCESS_2_TRANSFER_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
Extends |
| public static final long | VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
Extends |
| public static final long | VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
Extends |
| public static final long | VK_ACCESS_2_UNIFORM_READ_BIT_KHR
Extends |
| public static final long | VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR
Extends |
| public static final int | VK_ACCESS_NONE_KHR
Extends |
| public static final int | VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR
Extends |
| public static final int | VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
Extends |
| public static final int | VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
Extends |
| public static final String | VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME
The extension name. |
| public static final int | VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION
The extension specification version. |
| public static final long | VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV
Extends |
| public static final long | VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_BLIT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
Extends |
| public static final long | VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
Extends |
| public static final long | VK_PIPELINE_STAGE_2_COPY_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
Extends |
| public static final long | VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_HOST_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
Extends |
| public static final long | VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
Extends |
| public static final long | VK_PIPELINE_STAGE_2_NONE_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV
Extends |
| public static final long | VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
Extends |
| public static final long | VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR
Extends |
| public static final long | VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR
Extends |
| public static final int | VK_PIPELINE_STAGE_NONE_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
Extends |
| public static final int | VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
Extends |
| public static final int | VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR
Extends |
| public static final int | VK_SUBMIT_PROTECTED_BIT_KHR
Extends |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public static void | nvkCmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer, long pDependencyInfo)
Unsafe version of: |
| public static void | nvkCmdSetEvent2KHR(VkCommandBuffer commandBuffer, long event, long pDependencyInfo)
Unsafe version of: |
| public static void | nvkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, int
the length of the eventCount, long pEvents, long pDependencyInfos)pEvents array.Unsafe version of: |
| public static void | nvkGetQueueCheckpointData2NV(VkQueue queue, long
a pointer to an integer related to the number of checkpoint markers available or queried, as described below. pCheckpointDataCount, long pCheckpointData)Unsafe version of: |
| public static int | nvkQueueSubmit2KHR(VkQueue queue, int
the number of elements in the submitCount, long pSubmits, long fence)pSubmits array.Unsafe version of: |
| public static void | vkCmdPipelineBarrier2KHR(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, VkDependencyInfo a pointer to a pDependencyInfo)VkDependencyInfo structure defining the scopes of this operation.See |
| public static void | vkCmdResetEvent2KHR(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, long the event that will be unsignaled. event, long a stageMask)VkPipelineStageFlags2 mask of pipeline stages used to determine the first synchronization scope.See |
| public static void | vkCmdSetEvent2KHR(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, long the event that will be signaled. event, VkDependencyInfo a pointer to a pDependencyInfo)VkDependencyInfo structure defining the first scopes of this operation.See |
| public static void | vkCmdWaitEvents2KHR(VkCommandBuffer
the command buffer into which the command is recorded. commandBuffer, LongBuffer a pointer to an array of pEvents, VkDependencyInfo.eventCount events to wait on.a pointer to an array of pDependencyInfoseventCount VkDependencyInfo structures, defining the second synchronization scope.See |
| public static void | vkCmdWaitEvents2KHR(VkCommandBuffer commandBuffer, long[] pEvents, VkDependencyInfo.
Array version of: |
| public static void | vkCmdWriteBufferMarker2AMD(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, long specifies the pipeline stage whose completion triggers the marker write. stage, long the buffer where the marker will be written. dstBuffer, long the byte offset into the buffer where the marker will be written. dstOffset, int the 32-bit value of the marker. marker)Execute a pipelined write of a marker value into a buffer. |
| public static void | vkCmdWriteTimestamp2KHR(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, long specifies a stage of the pipeline. stage, long the query pool that will manage the timestamp. queryPool, int the query within the query pool that will contain the timestamp. query)See |
| public static void | vkGetQueueCheckpointData2NV(VkQueue
the queue, IntBuffer VkQueue object the caller would like to retrieve checkpoint data fora pointer to an integer related to the number of checkpoint markers available or queried, as described below. pCheckpointDataCount, VkCheckpointData2NV.either pCheckpointDataNULL or a pointer to an array of VkCheckpointData2NV structures.Retrieve diagnostic checkpoint data. |
| public static void | vkGetQueueCheckpointData2NV(VkQueue queue, int[] pCheckpointDataCount, VkCheckpointData2NV.
Array version of: |
| public static int | vkQueueSubmit2KHR(VkQueue
the queue that the command buffers will be submitted to. queue, VkSubmitInfo2.a pointer to an array of pSubmits,VkSubmitInfo2 structures, each specifying a command buffer submission batch.an optional handle to a fence to be signaled once all submitted command buffers have completed execution. If fence)fence is not NULL_HANDLE, it defines a fence signal operation.See |