From 7eb07044df67e19e768080c7f378fc0938ead346 Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Sun, 7 Jul 2019 20:11:14 -0700 Subject: [PATCH] Change log for July 7, 2019 Vulkan 1.1.114 spec update: * Update release number to 114. Internal Issues: * Fix extension appendix for `<>` to remove duplicate citation of ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL (internal merge request 3234). New Extensions: * `<>` --- ChangeLog.txt | 16 + Makefile | 2 +- appendices/VK_INTEL_performance_query.txt | 1 - appendices/VK_KHR_imageless_framebuffer.txt | 43 ++ chapters/features.txt | 28 ++ chapters/renderpass.txt | 443 ++++++++++++++++++-- xml/vk.xml | 60 ++- 7 files changed, 554 insertions(+), 39 deletions(-) create mode 100644 appendices/VK_KHR_imageless_framebuffer.txt diff --git a/ChangeLog.txt b/ChangeLog.txt index e556bbff..6230decf 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -8,6 +8,22 @@ public pull requests that have been accepted. ----------------------------------------------------- +Change log for July 7, 2019 Vulkan 1.1.114 spec update: + + * Update release number to 114. + +Internal Issues: + + * Fix extension appendix for `<>` to remove + duplicate citation of ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL + (internal merge request 3234). + +New Extensions: + + * `<>` + +----------------------------------------------------- + Change log for June 30, 2019 Vulkan 1.1.113 spec update: * Update release number to 113. diff --git a/Makefile b/Makefile index 06291954..f16e6773 100644 --- a/Makefile +++ b/Makefile @@ -121,7 +121,7 @@ VERBOSE = # ADOCOPTS options for asciidoc->HTML5 output NOTEOPTS = -a editing-notes -a implementation-guide -PATCHVERSION = 113 +PATCHVERSION = 114 ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS))) SPECREVISION = 1.1.$(PATCHVERSION) else diff --git a/appendices/VK_INTEL_performance_query.txt b/appendices/VK_INTEL_performance_query.txt index 3be9982c..e349ed8a 100644 --- a/appendices/VK_INTEL_performance_query.txt +++ b/appendices/VK_INTEL_performance_query.txt @@ -30,7 +30,6 @@ metrics-discovery library to present the data in a human readable way. ** ename:VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL ** ename:VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL ** ename:VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL - ** ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL * Extending elink:VkQueryType: ** ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL diff --git a/appendices/VK_KHR_imageless_framebuffer.txt b/appendices/VK_KHR_imageless_framebuffer.txt new file mode 100644 index 00000000..9604d962 --- /dev/null +++ b/appendices/VK_KHR_imageless_framebuffer.txt @@ -0,0 +1,43 @@ +// Copyright (c) 2016-2019 Khronos Group. This work is licensed under a +// Creative Commons Attribution 4.0 International License; see +// http://creativecommons.org/licenses/by/4.0/ + +include::meta/VK_KHR_imageless_framebuffer.txt[] + +Last Modified Date:: + 2018-12-14 +Contributors:: + - Tobias Hector + - Graham Wihlidal + +This extension allows framebuffers to be created without the need for +creating images first, allowing more flexibility in how they are used, and +avoiding the need for many of the confusing compatibility rules. + +Framebuffers are now created with a small amount of additional metadata +about the image views that will be used in +slink:VkFramebufferAttachmentsCreateInfoKHR, and the actual image views are +provided at render pass begin time via +slink:VkRenderPassAttachmentBeginInfoKHR. + +=== New Enum Constants + + * Extending elink:VkStructureType: + ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR + ** ename:VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR + ** ename:VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR + ** ename:VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR + * Extending elink:VkFramebufferCreateFlagBits: + ** ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR + +=== New Structures + + * slink:VkPhysicalDeviceImagelessFramebufferFeaturesKHR + * slink:VkFramebufferAttachmentsCreateInfoKHR + * slink:VkFramebufferAttachmentImageInfoKHR + * slink:VkRenderPassAttachmentBeginInfoKHR + +=== Version History + + * Revision 1, 2018-12-14 (Tobias Hector) + - Internal revisions diff --git a/chapters/features.txt b/chapters/features.txt index a038ec55..de47e0cb 100644 --- a/chapters/features.txt +++ b/chapters/features.txt @@ -1995,6 +1995,34 @@ include::{generated}/validity/structs/VkPhysicalDeviceDedicatedAllocationImageAl endif::VK_NV_dedicated_allocation_image_aliasing[] +ifdef::VK_KHR_imageless_framebuffer[] + +[open,refpage='VkPhysicalDeviceImagelessFramebufferFeaturesKHR',desc='Structure indicating support for imageless framebuffers',type='structs'] +-- +The sname:VkPhysicalDeviceImagelessFramebufferFeaturesKHR structure is +defined as: + +include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.txt[] + +The members of the sname:VkPhysicalDeviceImagelessFramebufferFeaturesKHR +structure describe the following features: + + * [[features-imagelessFramebuffer]] pname:imagelessFramebuffer indicates + that the implementation supports specifying the image view for + attachments at render pass begin time via + slink:VkRenderPassAttachmentBeginInfoKHR. + +If the sname:VkPhysicalDeviceImagelessFramebufferFeaturesKHR structure is +included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it +is filled with values indicating whether the feature is supported. +sname:VkPhysicalDeviceImagelessFramebufferFeaturesKHR can: also be used in +the pname:pNext chain of slink:VkDeviceCreateInfo to enable this feature. + +include::{generated}/validity/structs/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.txt[] +-- + +endif::VK_KHR_imageless_framebuffer[] + ifdef::VK_EXT_fragment_shader_interlock[] [open,refpage='VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT',desc='Structure describing fragment shader interlock features that can be supported by an implementation',type='structs'] diff --git a/chapters/renderpass.txt b/chapters/renderpass.txt index 041d7526..1903c1db 100644 --- a/chapters/renderpass.txt +++ b/chapters/renderpass.txt @@ -2297,7 +2297,7 @@ include::{generated}/api/structs/VkFramebufferCreateInfo.txt[] * pname:sType is the type of this structure. * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:flags is reserved for future use. + * pname:flags is a bitmask of elink:VkFramebufferCreateFlagBits * pname:renderPass is a render pass that defines what render passes the framebuffer will be compatible with. See <> for details. @@ -2305,6 +2305,10 @@ include::{generated}/api/structs/VkFramebufferCreateInfo.txt[] * pname:pAttachments is an array of slink:VkImageView handles, each of which will be used as the corresponding attachment in a render pass instance. +ifdef::VK_KHR_imageless_framebuffer[] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + this parameter is ignored. +endif::VK_KHR_imageless_framebuffer[] * pname:width, pname:height and pname:layers define the dimensions of the framebuffer. ifdef::VK_VERSION_1_1,VK_KHR_multiview[] @@ -2371,24 +2375,30 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples. pname:attachmentCount must: be equal to the attachment count specified in pname:renderPass * [[VUID-VkFramebufferCreateInfo-pAttachments-00877]] - Each element of pname:pAttachments that is used as a color attachment or - resolve attachment by pname:renderPass must: have been created with a + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments that is used as a color attachment or resolve + attachment by pname:renderPass must: have been created with a pname:usage value including ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT * [[VUID-VkFramebufferCreateInfo-pAttachments-02633]] - Each element of pname:pAttachments that is used as a depth/stencil - attachment by pname:renderPass must: have been created with a - pname:usage value including - ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments that is used as a depth/stencil attachment by + pname:renderPass must: have been created with a pname:usage value + including ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT ifdef::VK_KHR_depth_stencil_resolve[] * [[VUID-VkFramebufferCreateInfo-pAttachments-02634]] - Each element of pname:pAttachments that is used as a depth/stencil - resolve attachment by pname:renderPass must: have been created with a - pname:usage value including - ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments that is used as a depth/stencil resolve attachment by + pname:renderPass must: have been created with a pname:usage value + including ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT endif::VK_KHR_depth_stencil_resolve[] * [[VUID-VkFramebufferCreateInfo-pAttachments-00879]] - Each element of pname:pAttachments that is used as an input attachment - by pname:renderPass must: have been created with a pname:usage value + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments that is used as an input attachment by + pname:renderPass must: have been created with a pname:usage value including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT ifdef::VK_EXT_fragment_density_map[] * [[VUID-VkFramebufferCreateInfo-pAttachments-02552]] @@ -2403,17 +2413,23 @@ ifdef::VK_EXT_fragment_density_map[] unless that element is the fragment density map attachment. endif::VK_EXT_fragment_density_map[] * [[VUID-VkFramebufferCreateInfo-pAttachments-00880]] - Each element of pname:pAttachments must: have been created with an - elink:VkFormat value that matches the elink:VkFormat specified by the - corresponding sname:VkAttachmentDescription in pname:renderPass + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments must: have been created with an elink:VkFormat value + that matches the elink:VkFormat specified by the corresponding + sname:VkAttachmentDescription in pname:renderPass * [[VUID-VkFramebufferCreateInfo-pAttachments-00881]] - Each element of pname:pAttachments must: have been created with a - pname:samples value that matches the pname:samples value specified by - the corresponding sname:VkAttachmentDescription in pname:renderPass + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments must: have been created with a pname:samples value + that matches the pname:samples value specified by the corresponding + sname:VkAttachmentDescription in pname:renderPass ifndef::VK_EXT_fragment_density_map[] * [[VUID-VkFramebufferCreateInfo-pAttachments-00882]] - Each element of pname:pAttachments must: have dimensions at least as - large as the corresponding framebuffer dimension + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments must: have dimensions at least as large as the + corresponding framebuffer dimension ifdef::VK_VERSION_1_1,VK_KHR_multiview[] * [[VUID-VkFramebufferCreateInfo-renderPass-02743]] If pname:renderPass was specified with non-zero view masks, each element @@ -2423,9 +2439,11 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[] endif::VK_EXT_fragment_density_map[] ifdef::VK_EXT_fragment_density_map[] * [[VUID-VkFramebufferCreateInfo-pAttachments-02554]] - Each element of pname:pAttachments must: have dimensions at least as - large as the corresponding framebuffer dimension except for any element - that is referenced by pname:fragmentDensityMapAttachment + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments must: have dimensions at least as large as the + corresponding framebuffer dimension except for any element that is + referenced by pname:fragmentDensityMapAttachment ifndef::VK_VERSION_1_1,VK_KHR_multiview[] * [[VUID-VkFramebufferCreateInfo-pAttachments-02744]] An element of pname:pAttachments that is referenced by @@ -2452,21 +2470,28 @@ ifdef::VK_VERSION_1_1,VK_KHR_multiview[] to `1` endif::VK_VERSION_1_1,VK_KHR_multiview[] * [[VUID-VkFramebufferCreateInfo-pAttachments-02555]] - An element of pname:pAttachments that is referenced by + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, an element of + pname:pAttachments that is referenced by pname:fragmentDensityMapAttachment must: have a width at least as large as latexmath:[\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\rceil] * [[VUID-VkFramebufferCreateInfo-pAttachments-02556]] - An element of pname:pAttachments that is referenced by + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, an element of + pname:pAttachments that is referenced by pname:fragmentDensityMapAttachment must: have a height at least as large as latexmath:[\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\rceil] endif::VK_EXT_fragment_density_map[] * [[VUID-VkFramebufferCreateInfo-pAttachments-00883]] - Each element of pname:pAttachments must: only specify a single mip level + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments must: only specify a single mip level * [[VUID-VkFramebufferCreateInfo-pAttachments-00884]] - Each element of pname:pAttachments must: have been created with the - identity swizzle + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of + pname:pAttachments must: have been created with the identity swizzle * [[VUID-VkFramebufferCreateInfo-width-00885]] pname:width must: be greater than `0`. * [[VUID-VkFramebufferCreateInfo-width-00886]] @@ -2492,19 +2517,231 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] Each element of pname:pAttachments that is a 2D or 2D array image view taken from a 3D image must: not be a depth/stencil format endif::VK_VERSION_1_1,VK_KHR_maintenance1[] + * [[VUID-VkFramebufferCreateInfo-flags-03188]] + If pname:flags does not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, and pname:attachmentCount + is not 0, pname:pAttachments must: be a valid pointer to an array of + pname:attachmentCount valid slink:VkImageView handles +ifdef::VK_KHR_imageless_framebuffer[] + * [[VUID-VkFramebufferCreateInfo-flags-03189]] + If the <> feature + is not enabled, pname:flags must: not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR + * [[VUID-VkFramebufferCreateInfo-flags-03190]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:pNext chain must: include an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR + * [[VUID-VkFramebufferCreateInfo-flags-03191]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:attachmentImageInfoCount member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + must: be equal to either zero or pname:attachmentCount +ifndef::VK_EXT_fragment_density_map[] + * [[VUID-VkFramebufferCreateInfo-flags-03192]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:width member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain must: be greater than or equal to pname:width + * [[VUID-VkFramebufferCreateInfo-flags-03193]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:height member of any element of the + pname:pAttachmentImageInfos member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + must: be greater than or equal to pname:height +endif::VK_EXT_fragment_density_map[] +ifdef::VK_EXT_fragment_density_map[] + * [[VUID-VkFramebufferCreateInfo-flags-03194]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:width member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain must: be greater than or equal to pname:width, + except for any element that is referenced by + slink:VkRenderPassFragmentDensityMapCreateInfoEXT::pname:fragmentDensityMapAttachment + in pname:renderPass + * [[VUID-VkFramebufferCreateInfo-flags-03195]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:height member of any element of the + pname:pAttachmentImageInfos member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + must: be greater than or equal to pname:height, except for any element + that is referenced by + slink:VkRenderPassFragmentDensityMapCreateInfoEXT::pname:fragmentDensityMapAttachment + in pname:renderPass + * [[VUID-VkFramebufferCreateInfo-flags-03196]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:width member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain that is referenced by + slink:VkRenderPassFragmentDensityMapCreateInfoEXT::pname:fragmentDensityMapAttachment + in pname:renderPass must: be greater than or equal to + latexmath:[\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\rceil] + * [[VUID-VkFramebufferCreateInfo-flags-03197]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:height member of any element of the + pname:pAttachmentImageInfos member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + that is referenced by + slink:VkRenderPassFragmentDensityMapCreateInfoEXT::pname:fragmentDensityMapAttachment + in pname:renderPass must: be greater than or equal to + latexmath:[\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\rceil] +endif::VK_EXT_fragment_density_map[] +ifdef::VK_VERSION_1_1,VK_KHR_multiview[] + * [[VUID-VkFramebufferCreateInfo-renderPass-03198]] + If multiview is enabled for pname:renderPass, and pname:flags includes + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, the pname:layerCount + member of any element of the pname:pAttachmentImageInfos member of an + instance of slink:VkFramebufferAttachmentsCreateInfoKHR in the + pname:pNext chain must: be greater than the maximum bit index set in the + view mask in the subpasses in which it is used in pname:renderPass + * [[VUID-VkFramebufferCreateInfo-renderPass-03199]] + If multiview is not enabled for pname:renderPass, and pname:flags + includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, the + pname:layerCount member of any element of the + pname:pAttachmentImageInfos member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + must: be greater than or equal to pname:layers +endif::VK_VERSION_1_1,VK_KHR_multiview[] +ifndef::VK_VERSION_1_1+VK_KHR_multiview[] + * [[VUID-VkFramebufferCreateInfo-flags-03200]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:layerCount member of any element of the + pname:pAttachmentImageInfos member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + must: be greater than or equal to pname:layers +endif::VK_VERSION_1_1+VK_KHR_multiview[] + * [[VUID-VkFramebufferCreateInfo-flags-03201]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:usage member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain that refers to an attachment used as a color + attachment or resolve attachment by pname:renderPass must: include + ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT + * [[VUID-VkFramebufferCreateInfo-flags-03202]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:usage member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain that refers to an attachment used as a + depth/stencil attachment by pname:renderPass must: include + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT +ifdef::VK_KHR_depth_stencil_resolve[] + * [[VUID-VkFramebufferCreateInfo-flags-03203]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:usage member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain that refers to an attachment used as a + depth/stencil resolve attachment by pname:renderPass must: include + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT +endif::VK_KHR_depth_stencil_resolve[] + * [[VUID-VkFramebufferCreateInfo-flags-03204]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + the pname:usage member of any element of the pname:pAttachmentImageInfos + member of an instance of slink:VkFramebufferAttachmentsCreateInfoKHR in + the pname:pNext chain that refers to an attachment used as an input + attachment by pname:renderPass must: include + ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT + * [[VUID-VkFramebufferCreateInfo-flags-03205]] + If pname:flags includes ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, + at least one element of the pname:pViewFormats member of any element of + the pname:pAttachmentImageInfos member of an instance of + slink:VkFramebufferAttachmentsCreateInfoKHR in the pname:pNext chain + must: be equal to the corresponding value of + slink:VkAttachmentDescription::pname:format used to create + pname:renderPass +endif::VK_KHR_imageless_framebuffer[] **** include::{generated}/validity/structs/VkFramebufferCreateInfo.txt[] -- -[open,refpage='VkFramebufferCreateFlags',desc='Reserved for future use',type='flags'] +ifdef::VK_KHR_imageless_framebuffer[] +[open,refpage='VkFramebufferAttachmentsCreateInfoKHR',desc='Structure specifying parameters of images that will be used with a framebuffer',type='structs'] +-- + +The sname:VkFramebufferAttachmentsCreateInfoKHR structure is defined as: + +include::{generated}/api/structs/VkFramebufferAttachmentsCreateInfoKHR.txt[] + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:attachmentImageInfoCount is the number of attachments being + described. + * pname:pAttachmentImageInfos is an array of + slink:VkFramebufferAttachmentImageInfoKHR instances, each of which + describes a number of parameters of the corresponding attachment in a + render pass instance. + +include::{generated}/validity/structs/VkFramebufferAttachmentsCreateInfoKHR.txt[] +-- + +[open,refpage='VkFramebufferAttachmentImageInfoKHR',desc='Structure specifying parameters of an image that will be used with a framebuffer',type='structs'] +-- + +The sname:VkFramebufferAttachmentImageInfoKHR structure is defined as: + +include::{generated}/api/structs/VkFramebufferAttachmentImageInfoKHR.txt[] + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:flags is a bitmask of elink:VkImageCreateFlagBits, matching the + value of slink:VkImageCreateInfo::pname:flags used to create an image + that will be used with this framebuffer. + * pname:usage is a bitmask of elink:VkImageUsageFlagBits, matching the + value of slink:VkImageCreateInfo::pname:usage used to create an image + used with this framebuffer. + * pname:width is the width of the image view used for rendering. + * pname:height is the height of the image view used for rendering. + * pname:viewFormatCount is the number of entries in the pname:pViewFormats + array, matching the value of + slink:VkImageFormatListCreateInfoKHR::pname:viewFormatCount used to + create an image used with this framebuffer. + * pname:pViewFormats is an array which lists of all formats which can: be + used when creating views of the image, matching the value of + slink:VkImageFormatListCreateInfoKHR::pViewFormats used to create an + image used with this framebuffer. + +Images that can: be used with the framebuffer when beginning a render pass, +as specified by slink:VkRenderPassAttachmentBeginInfoKHR, must: be created +with parameters that are identical to those specified here. + + +include::{generated}/validity/structs/VkFramebufferAttachmentImageInfoKHR.txt[] +-- +endif::VK_KHR_imageless_framebuffer[] + + +[open,refpage='VkFramebufferCreateFlagBits',desc='Bitmask specifying framebuffer properties',type='enums'] +-- + +Bits which can: be set in slink:VkFramebufferCreateInfo::pname:flags to +specify options for framebuffers are: + +include::{generated}/api/enums/VkFramebufferCreateFlagBits.txt[] + +ifdef::VK_KHR_imageless_framebuffer[] + * ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR specifies that image views + are not specified, and only attachment compatibility information will be + provided via an instance of slink:VkFramebufferAttachmentImageInfoKHR. +endif::VK_KHR_imageless_framebuffer[] + +ifndef::VK_KHR_imageless_framebuffer[] +[NOTE] +.Note +==== +All bits for this type are defined by extensions, and none of those +extensions are enabled in this build of the specification. +==== +endif::VK_KHR_imageless_framebuffer[] +-- + +[open,refpage='VkFramebufferCreateFlags',desc='Bitmask of VkFramebufferCreateFlagBits',type='flags'] -- include::{generated}/api/flags/VkFramebufferCreateFlags.txt[] -tname:VkFramebufferCreateFlags is a bitmask type for setting a mask, but is -currently reserved for future use. +tname:VkFramebufferCreateFlags is a bitmask type for setting a mask of zero +or more elink:VkFramebufferCreateFlagBits. -- + [open,refpage='vkDestroyFramebuffer',desc='Destroy a framebuffer object',type='protos'] -- @@ -2830,6 +3067,121 @@ pass. pname:renderPass must: be <> with the pname:renderPass member of the sname:VkFramebufferCreateInfo structure specified when creating pname:framebuffer. +ifdef::VK_KHR_imageless_framebuffer[] + * [[VUID-VkRenderPassBeginInfo-pNext-03206]] + If the <> feature + is not enabled, and the pname:pNext chain includes an instance of + slink:VkRenderPassAttachmentBeginInfoKHR, its pname:attachmentCount + must: be zero + * [[VUID-VkRenderPassBeginInfo-framebuffer-03207]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that did not include + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, and the pname:pNext chain + includes an instance of slink:VkRenderPassAttachmentBeginInfoKHR, its + pname:attachmentCount must: be zero + * [[VUID-VkRenderPassBeginInfo-framebuffer-03208]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, the pname:attachmentCount + of an instance of slink:VkRenderPassAttachmentBeginInfoKHR included in + the pname:pNext chain must: be equal to the value of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:attachmentImageInfoCount + used to create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03209]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a value of + slink:VkImageCreateInfo::pname:flags equal to the pname:flags member of + the corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03210]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a value of + slink:VkImageCreateInfo::pname:usage equal to the pname:usage member of + the corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03211]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView with a width equal to the pname:width + member of the corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03212]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView with a height equal to the + pname:height member of the corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03213]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a value of + slink:VkImageViewCreateInfo::pname:subresourceRange.pname:layerCount + equal to the pname:layerCount member of the corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03214]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a value of + slink:VkImageFormatListCreateInfoKHR::pname:viewFormatCount equal to the + pname:viewFormatCount member of the corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03215]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a set of + elements in slink:VkImageFormatListCreateInfoKHR::pname:pViewFormats + equal to the set of elements in the pname:pViewFormats member of the + corresponding element of + slink:VkFramebufferAttachmentsCreateInfoKHR::pname:pAttachments used to + create pname:framebuffer + * [[VUID-VkRenderPassBeginInfo-framebuffer-03216]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a value of + slink:VkImageViewCreateInfo::pname:format equal to the corresponding + value of slink:VkAttachmentDescription::pname:format in pname:renderPass + * [[VUID-VkRenderPassBeginInfo-framebuffer-03217]] + If pname:framebuffer was created with a + slink:VkFramebufferCreateInfo::pname:flags value that included + ename:VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR, each element of the + pname:attachments member of an instance of + slink:VkRenderPassAttachmentBeginInfoKHR included in the pname:pNext + chain must: be a slink:VkImageView of an image created with a value of + slink:VkImageCreateInfo::pname:samples equal to the corresponding value + of slink:VkAttachmentDescription::pname:samples in pname:renderPass +endif::VK_KHR_imageless_framebuffer[] **** include::{generated}/validity/structs/VkRenderPassBeginInfo.txt[] @@ -3065,6 +3417,33 @@ include::{generated}/validity/structs/VkDeviceGroupRenderPassBeginInfo.txt[] endif::VK_VERSION_1_1,VK_KHR_device_group[] +ifdef::VK_KHR_imageless_framebuffer[] +[open,refpage='VkRenderPassAttachmentBeginInfoKHR',desc='Structure specifying images to be used as framebuffer attachments',type='structs'] +-- +The sname:VkRenderPassAttachmentBeginInfoKHR structure is defined as: + +include::{generated}/api/structs/VkRenderPassAttachmentBeginInfoKHR.txt[] + + * pname:sType is the type of this structure. + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:attachmentCount is the number of attachments. + * pname:pAttachments is an array of sname:VkImageView handles, each of + which will be used as the corresponding attachment in the render pass + instance. + +.Valid Usage +**** + * [[VUID-VkRenderPassAttachmentBeginInfoKHR-pAttachments-03218]] + Each element of pname:pAttachments must: only specify a single mip level + * [[VUID-VkRenderPassAttachmentBeginInfoKHR-pAttachments-03219]] + Each element of pname:pAttachments must: have been created with the + identity swizzle +**** + +include::{generated}/validity/structs/VkRenderPassAttachmentBeginInfoKHR.txt[] +-- +endif::VK_KHR_imageless_framebuffer[] + [open,refpage='vkGetRenderAreaGranularity',desc='Returns the granularity for optimal render area',type='protos'] -- diff --git a/xml/vk.xml b/xml/vk.xml index fd8d8382..e3d040ad 100755 --- a/xml/vk.xml +++ b/xml/vk.xml @@ -154,7 +154,7 @@ server. // Vulkan 1.1 version number #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 113 +#define VK_HEADER_VERSION 114 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -199,7 +199,7 @@ typedef void CAMetalLayer; Bitmask types - typedef VkFlags VkFramebufferCreateFlags; + typedef VkFlags VkFramebufferCreateFlags; typedef VkFlags VkQueryPoolCreateFlags; typedef VkFlags VkRenderPassCreateFlags; typedef VkFlags VkSamplerCreateFlags; @@ -3808,6 +3808,34 @@ typedef void CAMetalLayer; VkBool32 filterCubic VkBool32 filterCubicMinmax + + VkStructureType sType + void* pNext + VkBool32 imagelessFramebuffer + + + VkStructureType sType + const void* pNext + uint32_t attachmentImageInfoCount + const VkFramebufferAttachmentImageInfoKHR* pAttachmentImageInfos + + + VkStructureType sType + const void* pNext + VkImageCreateFlags flagsImage creation flags + VkImageUsageFlags usageImage usage flags + uint32_t width + uint32_t height + uint32_t layerCount + uint32_t viewFormatCount + const VkFormat* pViewFormats + + + VkStructureType sType + const void* pNext + uint32_t attachmentCount + const VkImageView* pAttachments + VkStructureType sType void* pNext @@ -5191,6 +5219,8 @@ typedef void CAMetalLayer; + + @@ -9353,10 +9383,18 @@ typedef void CAMetalLayer; - + - - + + + + + + + + + + @@ -11136,5 +11174,17 @@ typedef void CAMetalLayer; + + + + + + + + + + + +