// Copyright (c) 2015-2019 Khronos Group. This work is licensed under a // Creative Commons Attribution 4.0 International License; see // http://creativecommons.org/licenses/by/4.0/ [appendix] [[versions]] = Core Revisions (Informative) New minor versions of the Vulkan API are defined periodically by the Khronos Vulkan Working Group. These consist of some amount of additional functionality added to the core API, potentially including both new functionality and functionality <> from extensions. It is possible to build the specification for earlier versions, but to aid readability of the latest versions, this appendix gives an overview of the changes as compared to earlier versions. ifdef::VK_VERSION_1_1[] [[versions-1.1]] == Version 1.1 [[versions-1.1-promotions]] Vulkan Version 1.1 <> a number of key extensions into the core API: include::meta/promoted_extensions_VK_VERSION_1_1.txt[] The only changes to the functionality added by these extensions were to `VK_KHR_shader_draw_parameters`, which had a <> added to determine support in the core API, and <> from `VK_KHR_variable_pointers` was made optional. [[versions-1.1-new-features]] Additionally, Vulkan 1.1 added support for <>, <>, and a new command to <>. === New Object Types * slink:VkDescriptorUpdateTemplate * slink:VkSamplerYcbcrConversion === New Defines * dlink:VK_API_VERSION_1_1 === New Enum Constants * Extending elink:VkBufferCreateFlagBits: ** ename:VK_BUFFER_CREATE_PROTECTED_BIT * Extending elink:VkCommandPoolCreateFlagBits: ** ename:VK_COMMAND_POOL_CREATE_PROTECTED_BIT * Extending elink:VkDependencyFlagBits: ** ename:VK_DEPENDENCY_DEVICE_GROUP_BIT ** ename:VK_DEPENDENCY_VIEW_LOCAL_BIT * Extending elink:VkDeviceQueueCreateFlagBits: ** ename:VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT * Extending elink:VkFormat: ** ename:VK_FORMAT_G8B8G8R8_422_UNORM ** ename:VK_FORMAT_B8G8R8G8_422_UNORM ** ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM ** ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM ** ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM ** ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM ** ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM ** ename:VK_FORMAT_R10X6_UNORM_PACK16 ** ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16 ** ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 ** ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 ** ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 ** ename:VK_FORMAT_R12X4_UNORM_PACK16 ** ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16 ** ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 ** ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 ** ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 ** ename:VK_FORMAT_G16B16G16R16_422_UNORM ** ename:VK_FORMAT_B16G16R16G16_422_UNORM ** ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM ** ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM ** ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM ** ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM ** ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM * Extending elink:VkFormatFeatureFlagBits: ** ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT ** ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT ** ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT ** ename:VK_FORMAT_FEATURE_DISJOINT_BIT ** ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT * Extending elink:VkImageAspectFlagBits: ** ename:VK_IMAGE_ASPECT_PLANE_0_BIT ** ename:VK_IMAGE_ASPECT_PLANE_1_BIT ** ename:VK_IMAGE_ASPECT_PLANE_2_BIT * Extending elink:VkImageCreateFlagBits: ** ename:VK_IMAGE_CREATE_ALIAS_BIT ** ename:VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT ** ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT ** ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT ** ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT ** ename:VK_IMAGE_CREATE_PROTECTED_BIT ** ename:VK_IMAGE_CREATE_DISJOINT_BIT * Extending elink:VkImageCreateFlagBits: ** ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL ** ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL * Extending elink:VkMemoryHeapFlagBits: ** ename:VK_MEMORY_HEAP_MULTI_INSTANCE_BIT * Extending elink:VkMemoryPropertyFlagBits: ** ename:VK_MEMORY_PROPERTY_PROTECTED_BIT * Extending elink:VkObjectType: ** ename:VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION ** ename:VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE * Extending elink:VkPipelineCreateFlagBits: ** ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT ** ename:VK_PIPELINE_CREATE_DISPATCH_BASE * Extending elink:VkQueueFlagBits: ** ename:VK_QUEUE_PROTECTED_BIT * Extending elink:VkResult: ** ename:VK_ERROR_OUT_OF_POOL_MEMORY ** ename:VK_ERROR_INVALID_EXTERNAL_HANDLE * Extending elink:VkStructureType: ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES ** ename:VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS ** ename:VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO ** ename:VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 ** ename:VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 ** ename:VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 ** ename:VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 ** ename:VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 ** ename:VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 ** ename:VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 ** ename:VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 ** ename:VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES ** ename:VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES ** ename:VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES ** ename:VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 ** ename:VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO ** ename:VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES ** ename:VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES ** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO ** ename:VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO ** ename:VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES ** ename:VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO ** ename:VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES ** ename:VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO ** ename:VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES ** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES === New Enums * elink:VkChromaLocation * elink:VkDescriptorUpdateTemplateType * elink:VkExternalFenceFeatureFlagBits * elink:VkExternalFenceHandleTypeFlagBits * elink:VkExternalMemoryFeatureFlagBits * elink:VkExternalMemoryHandleTypeFlagBits * elink:VkExternalSemaphoreFeatureFlagBits * elink:VkExternalSemaphoreHandleTypeFlagBits * elink:VkFenceImportFlagBits * elink:VkMemoryAllocateFlagBits * elink:VkPeerMemoryFeatureFlagBits * elink:VkPointClippingBehavior * elink:VkSamplerYcbcrModelConversion * elink:VkSamplerYcbcrRange * elink:VkSemaphoreImportFlagBits * elink:VkSubgroupFeatureFlagBits * elink:VkTessellationDomainOrigin * tlink:VkCommandPoolTrimFlags * tlink:VkDescriptorUpdateTemplateCreateFlags * tlink:VkExternalFenceFeatureFlags * tlink:VkExternalFenceHandleTypeFlags * tlink:VkExternalMemoryFeatureFlags * tlink:VkExternalMemoryHandleTypeFlags * tlink:VkExternalSemaphoreFeatureFlags * tlink:VkExternalSemaphoreHandleTypeFlags * tlink:VkFenceImportFlags * tlink:VkMemoryAllocateFlags * tlink:VkPeerMemoryFeatureFlags * tlink:VkSemaphoreImportFlags * tlink:VkSubgroupFeatureFlags === New Structures * slink:VkBindBufferMemoryDeviceGroupInfo * slink:VkBindBufferMemoryInfo * slink:VkBindImageMemoryDeviceGroupInfo * slink:VkBindImageMemoryInfo * slink:VkBindImagePlaneMemoryInfo * slink:VkBufferMemoryRequirementsInfo2 * slink:VkDescriptorSetLayoutSupport * slink:VkDescriptorUpdateTemplateCreateInfo * slink:VkDescriptorUpdateTemplateEntry * slink:VkDeviceGroupBindSparseInfo * slink:VkDeviceGroupCommandBufferBeginInfo * slink:VkDeviceGroupDeviceCreateInfo * slink:VkDeviceGroupRenderPassBeginInfo * slink:VkDeviceGroupSubmitInfo * slink:VkDeviceQueueInfo2 * slink:VkExportFenceCreateInfo * slink:VkExportMemoryAllocateInfo * slink:VkExportSemaphoreCreateInfo * slink:VkExternalBufferProperties * slink:VkExternalFenceProperties * slink:VkExternalImageFormatProperties * slink:VkExternalMemoryBufferCreateInfo * slink:VkExternalMemoryImageCreateInfo * slink:VkExternalMemoryProperties * slink:VkExternalSemaphoreProperties * slink:VkFormatProperties2 * slink:VkImageFormatProperties2 * slink:VkImageMemoryRequirementsInfo2 * slink:VkImagePlaneMemoryRequirementsInfo * slink:VkImageSparseMemoryRequirementsInfo2 * slink:VkImageViewUsageCreateInfo * slink:VkInputAttachmentAspectReference * slink:VkMemoryAllocateFlagsInfo * slink:VkMemoryDedicatedAllocateInfo * slink:VkMemoryDedicatedRequirements * slink:VkMemoryRequirements2 * slink:VkPhysicalDevice16BitStorageFeatures * slink:VkPhysicalDeviceExternalBufferInfo * slink:VkPhysicalDeviceExternalFenceInfo * slink:VkPhysicalDeviceExternalImageFormatInfo * slink:VkPhysicalDeviceExternalSemaphoreInfo * slink:VkPhysicalDeviceFeatures2 * slink:VkPhysicalDeviceGroupProperties * slink:VkPhysicalDeviceIDProperties * slink:VkPhysicalDeviceImageFormatInfo2 * slink:VkPhysicalDeviceMaintenance3Properties * slink:VkPhysicalDeviceMemoryProperties2 * slink:VkPhysicalDeviceMultiviewFeatures * slink:VkPhysicalDeviceMultiviewProperties * slink:VkPhysicalDevicePointClippingProperties * slink:VkPhysicalDeviceProperties2 * slink:VkPhysicalDeviceProtectedMemoryFeatures * slink:VkPhysicalDeviceProtectedMemoryProperties * slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures * slink:VkPhysicalDeviceShaderDrawParameterFeatures * slink:VkPhysicalDeviceSparseImageFormatInfo2 * slink:VkPhysicalDeviceSubgroupProperties * slink:VkPhysicalDeviceVariablePointerFeatures * slink:VkPipelineTessellationDomainOriginStateCreateInfo * slink:VkProtectedSubmitInfo * slink:VkQueueFamilyProperties2 * slink:VkRenderPassInputAttachmentAspectCreateInfo * slink:VkRenderPassMultiviewCreateInfo * slink:VkSamplerYcbcrConversionCreateInfo * slink:VkSamplerYcbcrConversionImageFormatProperties * slink:VkSamplerYcbcrConversionInfo * slink:VkSparseImageFormatProperties2 * slink:VkSparseImageMemoryRequirements2 === New Functions * flink:vkBindBufferMemory2 * flink:vkBindImageMemory2 * flink:vkCmdDispatchBase * flink:vkCmdSetDeviceMask * flink:vkCreateDescriptorUpdateTemplate * flink:vkCreateSamplerYcbcrConversion * flink:vkDestroyDescriptorUpdateTemplate * flink:vkDestroySamplerYcbcrConversion * flink:vkEnumerateInstanceVersion * flink:vkEnumeratePhysicalDeviceGroups * flink:vkGetBufferMemoryRequirements2 * flink:vkGetDescriptorSetLayoutSupport * flink:vkGetDeviceGroupPeerMemoryFeatures * flink:vkGetDeviceQueue2 * flink:vkGetImageMemoryRequirements2 * flink:vkGetImageSparseMemoryRequirements2 * flink:vkGetPhysicalDeviceExternalBufferProperties * flink:vkGetPhysicalDeviceExternalFenceProperties * flink:vkGetPhysicalDeviceExternalSemaphoreProperties * flink:vkGetPhysicalDeviceFeatures2 * flink:vkGetPhysicalDeviceFormatProperties2 * flink:vkGetPhysicalDeviceImageFormatProperties2 * flink:vkGetPhysicalDeviceMemoryProperties2 * flink:vkGetPhysicalDeviceProperties2 * flink:vkGetPhysicalDeviceQueueFamilyProperties2 * flink:vkGetPhysicalDeviceSparseImageFormatProperties2 * flink:vkTrimCommandPool * flink:vkUpdateDescriptorSetWithTemplate endif::VK_VERSION_1_1[]