// Copyright (c) 2015-2018 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, some of which may: be promoted from extensions, other parts of which may: be new. Extensions that are promoted in this way typically have their functionality replicated directly in the core, but with extension suffixes dropped. The existing values with suffixes are still present in the API itself as aliases of the original extension functionality. Any differences between the core and extension version of the functionality will be documented in the extension appendix, and mentioned briefly in the version description in this appendix. It's 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 Vulkan Version 1.1 _promoted_ a number of key extensions into the core API: * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> * <> 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. Additionally, Vulkan 1.1 added support for <>, <>, and a new command to <>. === New Object Types * VkDescriptorUpdateTemplate * VkSamplerYcbcrConversion === New Defines * 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 * elink:VkCommandPoolTrimFlags * elink:VkDescriptorUpdateTemplateCreateFlags * elink:VkExternalFenceFeatureFlags * elink:VkExternalFenceHandleTypeFlags * elink:VkExternalMemoryFeatureFlags * elink:VkExternalMemoryHandleTypeFlags * elink:VkExternalSemaphoreFeatureFlags * elink:VkExternalSemaphoreHandleTypeFlags * elink:VkFenceImportFlags * elink:VkMemoryAllocateFlags * elink:VkPeerMemoryFeatureFlags * elink:VkSemaphoreImportFlags * elink: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[]