Class VkImageMemoryBarrier2
- All Implemented Interfaces:
AutoCloseable,org.lwjgl.system.NativeResource,org.lwjgl.system.Pointer
- Direct Known Subclasses:
VkImageMemoryBarrier2KHR
Description
This structure defines a memory dependency limited to an image subresource range, and can define a queue family ownership transfer operation and image layout transition for that subresource range.
The first synchronization scope and access scope described by this structure include only operations and memory accesses specified by srcStageMask and srcAccessMask.
The second synchronization scope and access scope described by this structure include only operations and memory accesses specified by dstStageMask and dstAccessMask.
Both access scopes are limited to only memory accesses to image in the subresource range defined by subresourceRange.
If image was created with SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, this memory barrier defines a queue family ownership transfer operation. When executed on a queue in the family identified by srcQueueFamilyIndex, this barrier defines a queue family release operation for the specified image subresource range, and the second synchronization scope does not apply to this operation. When executed on a queue in the family identified by dstQueueFamilyIndex, this barrier defines a queue family acquire operation for the specified image subresource range, and the first synchronization, the first synchronization scope does not apply to this operation.
A queue family ownership transfer operation is also defined if the values are not equal, and either is one of the special queue family values reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer. A queue family release operation is defined when dstQueueFamilyIndex is one of those values, and a queue family acquire operation is defined when srcQueueFamilyIndex is one of those values.
If oldLayout is not equal to newLayout, then the memory barrier defines an image layout transition for the specified image subresource range. If this memory barrier defines a queue family ownership transfer operation, the layout transition is only executed once between the queues.
Note
When the old and new layout are equal, the layout values are ignored - data is preserved no matter what values are specified, or what layout the image is currently in.
If image has a multi-planar format and the image is disjoint, then including IMAGE_ASPECT_COLOR_BIT in the aspectMask member of subresourceRange is equivalent to including IMAGE_ASPECT_PLANE_0_BIT, IMAGE_ASPECT_PLANE_1_BIT, and (for three-plane formats only) IMAGE_ASPECT_PLANE_2_BIT.
Valid Usage
- If the
geometryShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_GEOMETRY_SHADER_BIT - If the
tessellationShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BITorPIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT - If the
conditionalRenderingfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT - If the
fragmentDensityMapfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT - If the
transformFeedbackfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT - If the
meshShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_MESH_SHADER_BIT_EXT - If the
taskShaderfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_TASK_SHADER_BIT_EXT - If neither of the
shadingRateImageor theattachmentFragmentShadingRatefeatures are enabled,srcStageMaskmust not containPIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR - If the
subpassShadingfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI - If the
invocationMaskfeature is not enabled,srcStageMaskmust not containPIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI - If neither the
VK_NV_ray_tracingextension or therayTracingPipelinefeature are enabled,srcStageMaskmust not containPIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
- If
srcAccessMaskincludesACCESS_2_INDIRECT_COMMAND_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_DRAW_INDIRECT_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_INDEX_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_INDEX_INPUT_BIT,PIPELINE_STAGE_2_VERTEX_INPUT_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_VERTEX_ATTRIBUTE_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT,PIPELINE_STAGE_2_VERTEX_INPUT_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_INPUT_ATTACHMENT_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_UNIFORM_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_SHADER_SAMPLED_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_SHADER_STORAGE_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_SHADER_STORAGE_WRITE_BIT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_SHADER_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_SHADER_WRITE_BIT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_COLOR_ATTACHMENT_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BITPIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_COLOR_ATTACHMENT_WRITE_BIT,srcStageMaskmust includePIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BITPIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,srcStageMaskmust includePIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_TRANSFER_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_COPY_BIT,PIPELINE_STAGE_2_BLIT_BIT,PIPELINE_STAGE_2_RESOLVE_BIT,PIPELINE_STAGE_2_ALL_TRANSFER_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_TRANSFER_WRITE_BIT,srcStageMaskmust includePIPELINE_STAGE_2_COPY_BIT,PIPELINE_STAGE_2_BLIT_BIT,PIPELINE_STAGE_2_RESOLVE_BIT,PIPELINE_STAGE_2_CLEAR_BIT,PIPELINE_STAGE_2_ALL_TRANSFER_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, orPIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,PIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_HOST_READ_BIT,srcStageMaskmust includePIPELINE_STAGE_2_HOST_BIT - If
srcAccessMaskincludesACCESS_2_HOST_WRITE_BIT,srcStageMaskmust includePIPELINE_STAGE_2_HOST_BIT - If
srcAccessMaskincludesACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_DRAW_INDIRECT_BIT,PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV,srcStageMaskmust includePIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI,srcStageMaskmust includePIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI - If
srcAccessMaskincludesACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV,srcStageMaskmust includePIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NVorPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV,srcStageMaskmust includePIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NVorPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BITPIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
srcAccessMaskincludesACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
srcAccessMaskincludesACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHRorPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If the
rayQueryfeature is not enabled andsrcAccessMaskincludesACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,srcStageMaskmust not include any of theVK_PIPELINE_STAGE_*_SHADER_BITstages exceptPIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR - If
srcAccessMaskincludesACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_ALL_COMMANDS_BITorPIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR - If
srcAccessMaskincludesACCESS_2_VIDEO_DECODE_READ_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR - If
srcAccessMaskincludesACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR - If
srcAccessMaskincludesACCESS_2_VIDEO_ENCODE_READ_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR - If
srcAccessMaskincludesACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR,srcStageMaskmust includePIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR - If
srcAccessMaskincludesACCESS_2_OPTICAL_FLOW_READ_BIT_NV,srcStageMaskmust includePIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV - If
srcAccessMaskincludesACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV,srcStageMaskmust includePIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV - If
srcAccessMaskincludesACCESS_2_MICROMAP_WRITE_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT - If
srcAccessMaskincludesACCESS_2_MICROMAP_READ_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXTorPIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR - If
srcAccessMaskincludesACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT,srcStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one ofVK_PIPELINE_STAGE_*_SHADER_BITstages
- If the
geometryShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_GEOMETRY_SHADER_BIT - If the
tessellationShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BITorPIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT - If the
conditionalRenderingfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT - If the
fragmentDensityMapfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT - If the
transformFeedbackfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT - If the
meshShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_MESH_SHADER_BIT_EXT - If the
taskShaderfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_TASK_SHADER_BIT_EXT - If neither of the
shadingRateImageor theattachmentFragmentShadingRatefeatures are enabled,dstStageMaskmust not containPIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR - If the
subpassShadingfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI - If the
invocationMaskfeature is not enabled,dstStageMaskmust not containPIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI - If neither the
VK_NV_ray_tracingextension or therayTracingPipelinefeature are enabled,dstStageMaskmust not containPIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
- If
dstAccessMaskincludesACCESS_2_INDIRECT_COMMAND_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_DRAW_INDIRECT_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_INDEX_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_INDEX_INPUT_BIT,PIPELINE_STAGE_2_VERTEX_INPUT_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_VERTEX_ATTRIBUTE_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT,PIPELINE_STAGE_2_VERTEX_INPUT_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_INPUT_ATTACHMENT_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_FRAGMENT_SHADER_BIT,PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_UNIFORM_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_SHADER_SAMPLED_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_SHADER_STORAGE_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_SHADER_STORAGE_WRITE_BIT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_SHADER_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_SHADER_WRITE_BIT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_COLOR_ATTACHMENT_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BITPIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_COLOR_ATTACHMENT_WRITE_BIT,dstStageMaskmust includePIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BITPIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,dstStageMaskmust includePIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_TRANSFER_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_COPY_BIT,PIPELINE_STAGE_2_BLIT_BIT,PIPELINE_STAGE_2_RESOLVE_BIT,PIPELINE_STAGE_2_ALL_TRANSFER_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_TRANSFER_WRITE_BIT,dstStageMaskmust includePIPELINE_STAGE_2_COPY_BIT,PIPELINE_STAGE_2_BLIT_BIT,PIPELINE_STAGE_2_RESOLVE_BIT,PIPELINE_STAGE_2_CLEAR_BIT,PIPELINE_STAGE_2_ALL_TRANSFER_BIT,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, orPIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,PIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_HOST_READ_BIT,dstStageMaskmust includePIPELINE_STAGE_2_HOST_BIT - If
dstAccessMaskincludesACCESS_2_HOST_WRITE_BIT,dstStageMaskmust includePIPELINE_STAGE_2_HOST_BIT - If
dstAccessMaskincludesACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_DRAW_INDIRECT_BIT,PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV,dstStageMaskmust includePIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV,PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI,dstStageMaskmust includePIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI - If
dstAccessMaskincludesACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV,dstStageMaskmust includePIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NVorPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV,dstStageMaskmust includePIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NVorPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BITPIPELINE_STAGE_2_ALL_GRAPHICS_BIT, orPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If
dstAccessMaskincludesACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of theVK_PIPELINE_STAGE_*_SHADER_BITstages - If
dstAccessMaskincludesACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR,PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHRorPIPELINE_STAGE_2_ALL_COMMANDS_BIT - If the
rayQueryfeature is not enabled anddstAccessMaskincludesACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,dstStageMaskmust not include any of theVK_PIPELINE_STAGE_*_SHADER_BITstages exceptPIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR - If
dstAccessMaskincludesACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_ALL_COMMANDS_BITorPIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR - If
dstAccessMaskincludesACCESS_2_VIDEO_DECODE_READ_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR - If
dstAccessMaskincludesACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR - If
dstAccessMaskincludesACCESS_2_VIDEO_ENCODE_READ_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR - If
dstAccessMaskincludesACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR,dstStageMaskmust includePIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR - If
dstAccessMaskincludesACCESS_2_OPTICAL_FLOW_READ_BIT_NV,dstStageMaskmust includePIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV - If
dstAccessMaskincludesACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV,dstStageMaskmust includePIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV - If
dstAccessMaskincludesACCESS_2_MICROMAP_WRITE_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT - If
dstAccessMaskincludesACCESS_2_MICROMAP_READ_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXTorPIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR - If
dstAccessMaskincludesACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT,dstStageMaskmust includePIPELINE_STAGE_2_ALL_GRAPHICS_BIT,PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one ofVK_PIPELINE_STAGE_*_SHADER_BITstages
- If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMALthenimagemust have been created withIMAGE_USAGE_COLOR_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMALthenimagemust have been created withIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMALthenimagemust have been created withIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMALthenimagemust have been created withIMAGE_USAGE_SAMPLED_BITorIMAGE_USAGE_INPUT_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_TRANSFER_SRC_OPTIMALthenimagemust have been created withIMAGE_USAGE_TRANSFER_SRC_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_TRANSFER_DST_OPTIMALthenimagemust have been created withIMAGE_USAGE_TRANSFER_DST_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition,oldLayoutmust beIMAGE_LAYOUT_UNDEFINEDor the current layout of the image subresources affected by the barrier - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition,newLayoutmust not beIMAGE_LAYOUT_UNDEFINEDorIMAGE_LAYOUT_PREINITIALIZED - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMALthenimagemust have been created withIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMALthenimagemust have been created withIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMALthenimagemust have been created with at least one ofIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,IMAGE_USAGE_SAMPLED_BIT, orIMAGE_USAGE_INPUT_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMALthenimagemust have been created withIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITset - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMALthenimagemust have been created with at least one ofIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,IMAGE_USAGE_SAMPLED_BIT, orIMAGE_USAGE_INPUT_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMALthenimagemust have been created withIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITset - If the
synchronization2feature is not enabled,oldLayoutmust not beIMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHRorIMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR - If the
synchronization2feature is not enabled,newLayoutmust not beIMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHRorIMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_ATTACHMENT_OPTIMAL,imagemust have been created withIMAGE_USAGE_COLOR_ATTACHMENT_BITorIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_READ_ONLY_OPTIMAL,imagemust have been created with at least one ofIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,IMAGE_USAGE_SAMPLED_BIT, orIMAGE_USAGE_INPUT_ATTACHMENT_BIT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHRthenimagemust have been created withIMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHRset - If
imagewas created with a sharing mode ofSHARING_MODE_EXCLUSIVE, andsrcQueueFamilyIndexanddstQueueFamilyIndexare not equal,srcQueueFamilyIndexmust beQUEUE_FAMILY_EXTERNAL,QUEUE_FAMILY_FOREIGN_EXT, or a valid queue family - If
imagewas created with a sharing mode ofSHARING_MODE_EXCLUSIVE, andsrcQueueFamilyIndexanddstQueueFamilyIndexare not equal,dstQueueFamilyIndexmust beQUEUE_FAMILY_EXTERNAL,QUEUE_FAMILY_FOREIGN_EXT, or a valid queue family - If
srcQueueFamilyIndexis not equal todstQueueFamilyIndex, at least one ofsrcQueueFamilyIndexordstQueueFamilyIndexmust not beQUEUE_FAMILY_EXTERNALorQUEUE_FAMILY_FOREIGN_EXT - If the
VK_KHR_external_memoryextension is not enabled, and the value ofVkApplicationInfo::apiVersionused to create theVkInstanceis not greater than or equal to Version 1.1,srcQueueFamilyIndexmust not beQUEUE_FAMILY_EXTERNAL - If the
VK_KHR_external_memoryextension is not enabled, and the value ofVkApplicationInfo::apiVersionused to create theVkInstanceis not greater than or equal to Version 1.1,dstQueueFamilyIndexmust not beQUEUE_FAMILY_EXTERNAL - If the
VK_EXT_queue_family_foreignextension is not enabledsrcQueueFamilyIndexmust not beQUEUE_FAMILY_FOREIGN_EXT - If the
VK_EXT_queue_family_foreignextension is not enableddstQueueFamilyIndexmust not beQUEUE_FAMILY_FOREIGN_EXT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_DECODE_SRC_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_DECODE_DST_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_DECODE_DPB_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_ENCODE_DST_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHRthenimagemust have been created withIMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHRorIMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXTthenimagemust have been created with either theIMAGE_USAGE_COLOR_ATTACHMENT_BITorIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BITusage bits, and theIMAGE_USAGE_INPUT_ATTACHMENT_BITorIMAGE_USAGE_SAMPLED_BITusage bits, and theIMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXTusage bit - If the
attachmentFeedbackLoopLayoutfeature is not enabled,newLayoutmust not beIMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT - If
srcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition, andoldLayoutornewLayoutisIMAGE_LAYOUT_RENDERING_LOCAL_READthenimagemust have been created with eitherIMAGE_USAGE_STORAGE_BIT, or with bothIMAGE_USAGE_INPUT_ATTACHMENT_BITand either ofIMAGE_USAGE_COLOR_ATTACHMENT_BITorIMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT - If the
dynamicRenderingLocalReadfeature is not enabled,oldLayoutmust not beIMAGE_LAYOUT_RENDERING_LOCAL_READ - If the
dynamicRenderingLocalReadfeature is not enabled,newLayoutmust not beIMAGE_LAYOUT_RENDERING_LOCAL_READ
subresourceRange.baseMipLevelmust be less than themipLevelsspecified inVkImageCreateInfowhenimagewas created- If
subresourceRange.levelCountis notREMAINING_MIP_LEVELS,subresourceRange.baseMipLevel + subresourceRange.levelCountmust be less than or equal to themipLevelsspecified inVkImageCreateInfowhenimagewas created subresourceRange.baseArrayLayermust be less than thearrayLayersspecified inVkImageCreateInfowhenimagewas created- If
subresourceRange.layerCountis notREMAINING_ARRAY_LAYERS,subresourceRange.baseArrayLayer + subresourceRange.layerCountmust be less than or equal to thearrayLayersspecified inVkImageCreateInfowhenimagewas created - If
imageis non-sparse then it must be bound completely and contiguously to a singleVkDeviceMemoryobject - If
imagehas a color format that is single-plane, then theaspectMaskmember ofsubresourceRangemust beIMAGE_ASPECT_COLOR_BIT - If
imagehas a color format and is not disjoint, then theaspectMaskmember ofsubresourceRangemust beIMAGE_ASPECT_COLOR_BIT - If
imagehas a multi-planar format and the image is disjoint, then theaspectMaskmember ofsubresourceRangemust include at least one multi-planar aspect mask bit orIMAGE_ASPECT_COLOR_BIT - If
imagehas a depth/stencil format with both depth and stencil and theseparateDepthStencilLayoutsfeature is not enabled, then theaspectMaskmember ofsubresourceRangemust include bothIMAGE_ASPECT_DEPTH_BITandIMAGE_ASPECT_STENCIL_BIT - If
imagehas a depth/stencil format with both depth and stencil and theseparateDepthStencilLayoutsfeature is enabled, then theaspectMaskmember ofsubresourceRangemust include either or bothIMAGE_ASPECT_DEPTH_BITandIMAGE_ASPECT_STENCIL_BIT - If the
aspectMaskmember ofsubresourceRangeincludesIMAGE_ASPECT_DEPTH_BIT,oldLayoutandnewLayoutmust not be one ofIMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMALorIMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL - If the
aspectMaskmember ofsubresourceRangeincludesIMAGE_ASPECT_STENCIL_BIT,oldLayoutandnewLayoutmust not be one ofIMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMALorIMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL subresourceRange.aspectMaskmust be valid for theformattheimagewas created with- If either
srcStageMaskordstStageMaskincludesPIPELINE_STAGE_2_HOST_BIT,srcQueueFamilyIndexanddstQueueFamilyIndexmust be equal - If
srcStageMaskincludesPIPELINE_STAGE_2_HOST_BIT, andsrcQueueFamilyIndexanddstQueueFamilyIndexdefine a queue family ownership transfer oroldLayoutandnewLayoutdefine an image layout transition,oldLayoutmust be one ofIMAGE_LAYOUT_PREINITIALIZED,IMAGE_LAYOUT_UNDEFINED, orIMAGE_LAYOUT_GENERAL
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofVkExternalMemoryAcquireUnmodifiedEXTorVkSampleLocationsInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique srcStageMaskmust be a valid combination ofVkPipelineStageFlagBits2valuessrcAccessMaskmust be a valid combination ofVkAccessFlagBits2valuesdstStageMaskmust be a valid combination ofVkPipelineStageFlagBits2valuesdstAccessMaskmust be a valid combination ofVkAccessFlagBits2valuesoldLayoutmust be a validVkImageLayoutvaluenewLayoutmust be a validVkImageLayoutvalueimagemust be a validVkImagehandlesubresourceRangemust be a validVkImageSubresourceRangestructure
See Also
VkDependencyInfo, VkImageSubresourceRange
Layout
struct VkImageMemoryBarrier2 {
VkStructureType sType();
void const * pNext();
VkPipelineStageFlags2 srcStageMask();
VkAccessFlags2 srcAccessMask();
VkPipelineStageFlags2 dstStageMask();
VkAccessFlags2 dstAccessMask();
VkImageLayout oldLayout();
VkImageLayout newLayout();
uint32_t srcQueueFamilyIndex();
uint32_t dstQueueFamilyIndex();
VkImage image();
VkImageSubresourceRange subresourceRange();
}-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.lwjgl.system.Struct
org.lwjgl.system.Struct.StructValidationNested classes/interfaces inherited from interface org.lwjgl.system.Pointer
org.lwjgl.system.Pointer.Default -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe struct alignment in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct size in bytes.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.static final intThe struct member offsets.Fields inherited from interface org.lwjgl.system.Pointer
BITS32, BITS64, CLONG_SHIFT, CLONG_SIZE, POINTER_SHIFT, POINTER_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionVkImageMemoryBarrier2(ByteBuffer container) Creates aVkImageMemoryBarrier2instance at the current position of the specifiedByteBuffercontainer. -
Method Summary
Modifier and TypeMethodDescriptionstatic VkImageMemoryBarrier2calloc()Returns a newVkImageMemoryBarrier2instance allocated withmemCalloc.static VkImageMemoryBarrier2.Buffercalloc(int capacity) Returns a newVkImageMemoryBarrier2.Bufferinstance allocated withmemCalloc.static VkImageMemoryBarrier2.Buffercalloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkImageMemoryBarrier2.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkImageMemoryBarrier2calloc(org.lwjgl.system.MemoryStack stack) Returns a newVkImageMemoryBarrier2instance allocated on the specifiedMemoryStackand initializes all its bits to zero.static VkImageMemoryBarrier2create()Returns a newVkImageMemoryBarrier2instance allocated withBufferUtils.static VkImageMemoryBarrier2.Buffercreate(int capacity) Returns a newVkImageMemoryBarrier2.Bufferinstance allocated withBufferUtils.static VkImageMemoryBarrier2create(long address) Returns a newVkImageMemoryBarrier2instance for the specified memory address.static VkImageMemoryBarrier2.Buffercreate(long address, int capacity) Create aVkImageMemoryBarrier2.Bufferinstance at the specified memory.static @Nullable VkImageMemoryBarrier2createSafe(long address) static @Nullable VkImageMemoryBarrier2.BuffercreateSafe(long address, int capacity) longaVkAccessFlags2mask of access flags to be included in the second access scope.dstAccessMask(long value) Sets the specified value to thedstAccessMask()field.intthe destination queue family for a queue family ownership transfer.dstQueueFamilyIndex(int value) Sets the specified value to thedstQueueFamilyIndex()field.longaVkPipelineStageFlags2mask of pipeline stages to be included in the second synchronization scope.dstStageMask(long value) Sets the specified value to thedstStageMask()field.longimage()a handle to the image affected by this barrier.image(long value) Sets the specified value to theimage()field.static VkImageMemoryBarrier2malloc()Returns a newVkImageMemoryBarrier2instance allocated withmemAlloc.static VkImageMemoryBarrier2.Buffermalloc(int capacity) Returns a newVkImageMemoryBarrier2.Bufferinstance allocated withmemAlloc.static VkImageMemoryBarrier2.Buffermalloc(int capacity, org.lwjgl.system.MemoryStack stack) Returns a newVkImageMemoryBarrier2.Bufferinstance allocated on the specifiedMemoryStack.static VkImageMemoryBarrier2malloc(org.lwjgl.system.MemoryStack stack) Returns a newVkImageMemoryBarrier2instance allocated on the specifiedMemoryStack.static longndstAccessMask(long struct) Unsafe version ofdstAccessMask().static voidndstAccessMask(long struct, long value) Unsafe version ofdstAccessMask.static intndstQueueFamilyIndex(long struct) Unsafe version ofdstQueueFamilyIndex().static voidndstQueueFamilyIndex(long struct, int value) Unsafe version ofdstQueueFamilyIndex.static longndstStageMask(long struct) Unsafe version ofdstStageMask().static voidndstStageMask(long struct, long value) Unsafe version ofdstStageMask.intthe new layout in an image layout transition.newLayout(int value) Sets the specified value to thenewLayout()field.static longnimage(long struct) Unsafe version ofimage().static voidnimage(long struct, long value) Unsafe version ofimage.static intnnewLayout(long struct) Unsafe version ofnewLayout().static voidnnewLayout(long struct, int value) Unsafe version ofnewLayout.static intnoldLayout(long struct) Unsafe version ofoldLayout().static voidnoldLayout(long struct, int value) Unsafe version ofoldLayout.static longnpNext(long struct) Unsafe version ofpNext().static voidnpNext(long struct, long value) Unsafe version ofpNext.static longnsrcAccessMask(long struct) Unsafe version ofsrcAccessMask().static voidnsrcAccessMask(long struct, long value) Unsafe version ofsrcAccessMask.static intnsrcQueueFamilyIndex(long struct) Unsafe version ofsrcQueueFamilyIndex().static voidnsrcQueueFamilyIndex(long struct, int value) Unsafe version ofsrcQueueFamilyIndex.static longnsrcStageMask(long struct) Unsafe version ofsrcStageMask().static voidnsrcStageMask(long struct, long value) Unsafe version ofsrcStageMask.static intnsType(long struct) Unsafe version ofsType().static voidnsType(long struct, int value) Unsafe version ofsType.static VkImageSubresourceRangensubresourceRange(long struct) Unsafe version ofsubresourceRange().static voidnsubresourceRange(long struct, VkImageSubresourceRange value) Unsafe version ofsubresourceRange.intthe old layout in an image layout transition.oldLayout(int value) Sets the specified value to theoldLayout()field.longpNext()NULLor a pointer to a structure extending this structure.pNext(long value) Sets the specified value to thepNext()field.Prepends the specifiedVkExternalMemoryAcquireUnmodifiedEXTvalue to thepNextchain.pNext(VkSampleLocationsInfoEXT value) Prepends the specifiedVkSampleLocationsInfoEXTvalue to thepNextchain.set(int sType, long pNext, long srcStageMask, long srcAccessMask, long dstStageMask, long dstAccessMask, int oldLayout, int newLayout, int srcQueueFamilyIndex, int dstQueueFamilyIndex, long image, VkImageSubresourceRange subresourceRange) Initializes this struct with the specified values.set(VkImageMemoryBarrier2 src) Copies the specified struct data to this struct.intsizeof()longaVkAccessFlags2mask of access flags to be included in the first access scope.srcAccessMask(long value) Sets the specified value to thesrcAccessMask()field.intthe source queue family for a queue family ownership transfer.srcQueueFamilyIndex(int value) Sets the specified value to thesrcQueueFamilyIndex()field.longaVkPipelineStageFlags2mask of pipeline stages to be included in the first synchronization scope.srcStageMask(long value) Sets the specified value to thesrcStageMask()field.intsType()aVkStructureTypevalue identifying this structure.sType(int value) Sets the specified value to thesType()field.Sets theSTRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2value to thesType()field.describes the image subresource range withinimagethat is affected by this barrier.subresourceRange(Consumer<VkImageSubresourceRange> consumer) Passes thesubresourceRange()field to the specifiedConsumer.Copies the specifiedVkImageSubresourceRangeto thesubresourceRange()field.Methods inherited from class org.lwjgl.system.Struct
clear, free, isNull, validate, validateMethods inherited from class org.lwjgl.system.Pointer.Default
address, equals, hashCode, toStringMethods inherited from interface org.lwjgl.system.NativeResource
close, free
-
Field Details
-
SIZEOF
public static final int SIZEOFThe struct size in bytes. -
ALIGNOF
public static final int ALIGNOFThe struct alignment in bytes. -
STYPE
public static final int STYPEThe struct member offsets. -
PNEXT
public static final int PNEXTThe struct member offsets. -
SRCSTAGEMASK
public static final int SRCSTAGEMASKThe struct member offsets. -
SRCACCESSMASK
public static final int SRCACCESSMASKThe struct member offsets. -
DSTSTAGEMASK
public static final int DSTSTAGEMASKThe struct member offsets. -
DSTACCESSMASK
public static final int DSTACCESSMASKThe struct member offsets. -
OLDLAYOUT
public static final int OLDLAYOUTThe struct member offsets. -
NEWLAYOUT
public static final int NEWLAYOUTThe struct member offsets. -
SRCQUEUEFAMILYINDEX
public static final int SRCQUEUEFAMILYINDEXThe struct member offsets. -
DSTQUEUEFAMILYINDEX
public static final int DSTQUEUEFAMILYINDEXThe struct member offsets. -
IMAGE
public static final int IMAGEThe struct member offsets. -
SUBRESOURCERANGE
public static final int SUBRESOURCERANGEThe struct member offsets.
-
-
Constructor Details
-
VkImageMemoryBarrier2
Creates aVkImageMemoryBarrier2instance at the current position of the specifiedByteBuffercontainer. Changes to the buffer's content will be visible to the struct instance and vice versa.The created instance holds a strong reference to the container object.
-
-
Method Details
-
sizeof
public int sizeof()- Specified by:
sizeofin classorg.lwjgl.system.Struct<VkImageMemoryBarrier2>
-
sType
public int sType()aVkStructureTypevalue identifying this structure. -
pNext
public long pNext()NULLor a pointer to a structure extending this structure. -
srcStageMask
public long srcStageMask()aVkPipelineStageFlags2mask of pipeline stages to be included in the first synchronization scope. -
srcAccessMask
public long srcAccessMask()aVkAccessFlags2mask of access flags to be included in the first access scope. -
dstStageMask
public long dstStageMask()aVkPipelineStageFlags2mask of pipeline stages to be included in the second synchronization scope. -
dstAccessMask
public long dstAccessMask()aVkAccessFlags2mask of access flags to be included in the second access scope. -
oldLayout
public int oldLayout()the old layout in an image layout transition. -
newLayout
public int newLayout()the new layout in an image layout transition. -
srcQueueFamilyIndex
public int srcQueueFamilyIndex()the source queue family for a queue family ownership transfer. -
dstQueueFamilyIndex
public int dstQueueFamilyIndex()the destination queue family for a queue family ownership transfer. -
image
public long image()a handle to the image affected by this barrier. -
subresourceRange
describes the image subresource range withinimagethat is affected by this barrier. -
sType
Sets the specified value to thesType()field. -
sType$Default
Sets theSTRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2value to thesType()field. -
pNext
Sets the specified value to thepNext()field. -
pNext
Prepends the specifiedVkExternalMemoryAcquireUnmodifiedEXTvalue to thepNextchain. -
pNext
Prepends the specifiedVkSampleLocationsInfoEXTvalue to thepNextchain. -
srcStageMask
Sets the specified value to thesrcStageMask()field. -
srcAccessMask
Sets the specified value to thesrcAccessMask()field. -
dstStageMask
Sets the specified value to thedstStageMask()field. -
dstAccessMask
Sets the specified value to thedstAccessMask()field. -
oldLayout
Sets the specified value to theoldLayout()field. -
newLayout
Sets the specified value to thenewLayout()field. -
srcQueueFamilyIndex
Sets the specified value to thesrcQueueFamilyIndex()field. -
dstQueueFamilyIndex
Sets the specified value to thedstQueueFamilyIndex()field. -
image
Sets the specified value to theimage()field. -
subresourceRange
Copies the specifiedVkImageSubresourceRangeto thesubresourceRange()field. -
subresourceRange
Passes thesubresourceRange()field to the specifiedConsumer. -
set
public VkImageMemoryBarrier2 set(int sType, long pNext, long srcStageMask, long srcAccessMask, long dstStageMask, long dstAccessMask, int oldLayout, int newLayout, int srcQueueFamilyIndex, int dstQueueFamilyIndex, long image, VkImageSubresourceRange subresourceRange) Initializes this struct with the specified values. -
set
Copies the specified struct data to this struct.- Parameters:
src- the source struct- Returns:
- this struct
-
malloc
Returns a newVkImageMemoryBarrier2instance allocated withmemAlloc. The instance must be explicitly freed. -
calloc
Returns a newVkImageMemoryBarrier2instance allocated withmemCalloc. The instance must be explicitly freed. -
create
Returns a newVkImageMemoryBarrier2instance allocated withBufferUtils. -
create
Returns a newVkImageMemoryBarrier2instance for the specified memory address. -
createSafe
-
malloc
Returns a newVkImageMemoryBarrier2.Bufferinstance allocated withmemAlloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
calloc
Returns a newVkImageMemoryBarrier2.Bufferinstance allocated withmemCalloc. The instance must be explicitly freed.- Parameters:
capacity- the buffer capacity
-
create
Returns a newVkImageMemoryBarrier2.Bufferinstance allocated withBufferUtils.- Parameters:
capacity- the buffer capacity
-
create
Create aVkImageMemoryBarrier2.Bufferinstance at the specified memory.- Parameters:
address- the memory addresscapacity- the buffer capacity
-
createSafe
-
malloc
Returns a newVkImageMemoryBarrier2instance allocated on the specifiedMemoryStack.- Parameters:
stack- the stack from which to allocate
-
calloc
Returns a newVkImageMemoryBarrier2instance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
stack- the stack from which to allocate
-
malloc
Returns a newVkImageMemoryBarrier2.Bufferinstance allocated on the specifiedMemoryStack.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
calloc
Returns a newVkImageMemoryBarrier2.Bufferinstance allocated on the specifiedMemoryStackand initializes all its bits to zero.- Parameters:
capacity- the buffer capacitystack- the stack from which to allocate
-
nsType
public static int nsType(long struct) Unsafe version ofsType(). -
npNext
public static long npNext(long struct) Unsafe version ofpNext(). -
nsrcStageMask
public static long nsrcStageMask(long struct) Unsafe version ofsrcStageMask(). -
nsrcAccessMask
public static long nsrcAccessMask(long struct) Unsafe version ofsrcAccessMask(). -
ndstStageMask
public static long ndstStageMask(long struct) Unsafe version ofdstStageMask(). -
ndstAccessMask
public static long ndstAccessMask(long struct) Unsafe version ofdstAccessMask(). -
noldLayout
public static int noldLayout(long struct) Unsafe version ofoldLayout(). -
nnewLayout
public static int nnewLayout(long struct) Unsafe version ofnewLayout(). -
nsrcQueueFamilyIndex
public static int nsrcQueueFamilyIndex(long struct) Unsafe version ofsrcQueueFamilyIndex(). -
ndstQueueFamilyIndex
public static int ndstQueueFamilyIndex(long struct) Unsafe version ofdstQueueFamilyIndex(). -
nimage
public static long nimage(long struct) Unsafe version ofimage(). -
nsubresourceRange
Unsafe version ofsubresourceRange(). -
nsType
public static void nsType(long struct, int value) Unsafe version ofsType. -
npNext
public static void npNext(long struct, long value) Unsafe version ofpNext. -
nsrcStageMask
public static void nsrcStageMask(long struct, long value) Unsafe version ofsrcStageMask. -
nsrcAccessMask
public static void nsrcAccessMask(long struct, long value) Unsafe version ofsrcAccessMask. -
ndstStageMask
public static void ndstStageMask(long struct, long value) Unsafe version ofdstStageMask. -
ndstAccessMask
public static void ndstAccessMask(long struct, long value) Unsafe version ofdstAccessMask. -
noldLayout
public static void noldLayout(long struct, int value) Unsafe version ofoldLayout. -
nnewLayout
public static void nnewLayout(long struct, int value) Unsafe version ofnewLayout. -
nsrcQueueFamilyIndex
public static void nsrcQueueFamilyIndex(long struct, int value) Unsafe version ofsrcQueueFamilyIndex. -
ndstQueueFamilyIndex
public static void ndstQueueFamilyIndex(long struct, int value) Unsafe version ofdstQueueFamilyIndex. -
nimage
public static void nimage(long struct, long value) Unsafe version ofimage. -
nsubresourceRange
Unsafe version ofsubresourceRange.
-