Change log for April 15, 2018 Vulkan 1.1.73 spec update:

* Update release number to 73.

Github Issues:

  * Refine swapchain association with surface for slink:VkSwapchainKHR, with
    matching valid usage statements for slink:VkSwapchainCreateInfoKHR and
    discussion following the <<swapchain-wsi-image-create-info>> table
    (public issue 637).
  * Re-remove several valid usage statements from slink:VkImageCreateInfo
    that had previously been removed at the time that
    ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT was introduced. These
    statements had incorrectly been restored due to an glitch while merging
    from the old `1.0` branch to the current `master` branch (public issue
    683).

Internal Issues:

  * Fix reference page generation and configure build to generate reference
    pages 1.1 with all extensions, rather than core only, as was the case
    for the 1.0 ref pages (internal issues 484, 1056, 1205).
  * Require that
    slink:VkMemoryDedicatedRequirements::pname:prefersDedicateAllocation is
    ename:VK_TRUE when
    slink:VkMemoryDedicatedRequirements::pname:requiresDedicateAllocation is
    ename:VK_TRUE (internal issue 1222).
  * Fix Ruby extension code so `diff_html` Makefile target works (internal
    issue 1230).
  * Update `genRelease` script to generate 1.1 + all extensions reference
    pages - but not the single-page HTML / PDF versions, which are even
    larger than the API spec (internal issue 1245).

Other Issues:

  * Add missing attributes to `vk.xml` for `VK_ANDROID_native_buffer`.
  * Specify that the slink:VkAttachmentDescription::pname:format member is
    the format of the image *view* that will be used for the attachment.
  * Use core sname:VkPhysicalDeviceFeatures2 in the `structextends` `vk.xml`
    attribute for sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT and
    sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT, rather than the
    KHR equivalent it was promoted from.
  * Fix the "`Fragment Input Attachment Interface`" glossary entry to match
    the specification body.
  * Clarify the interaction of sRGB images used as storage or texel buffers
    with <<textures-output-format-conversion, Texel Output Format
    Conversion>>.
  * Moved three valid usage statements from
    slink:VkRenderPassMultiviewCreateInfo up to
    slink:VkRenderPassCreateInfo, and added a new valid usage statement for
    slink:VkRenderPassInputAttachmentAspectCreateInfo.
  * Added valid usage statements for slink:VkBufferMemoryBarrier and
    slink:VkImageMemoryBarrier reflecting the global requirement that
    "`non-sparse resources must be bound to memory before being recorded to
    command`".

New Extensions:
This commit is contained in:
Jon Leech 2018-04-15 03:32:07 -07:00
parent d0a5cfde01
commit 5300d9f05e
15 changed files with 246 additions and 122 deletions

View File

@ -8,7 +8,65 @@ public pull requests that have been accepted.
----------------------------------------------------- -----------------------------------------------------
Change log for March 5, 2018 Vulkan 1.1.72 spec update: Change log for April 15, 2018 Vulkan 1.1.73 spec update:
* Update release number to 73.
Github Issues:
* Refine swapchain association with surface for slink:VkSwapchainKHR, with
matching valid usage statements for slink:VkSwapchainCreateInfoKHR and
discussion following the <<swapchain-wsi-image-create-info>> table
(public issue 637).
* Re-remove several valid usage statements from slink:VkImageCreateInfo
that had previously been removed at the time that
ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT was introduced. These
statements had incorrectly been restored due to an glitch while merging
from the old `1.0` branch to the current `master` branch (public issue
683).
Internal Issues:
* Fix reference page generation and configure build to generate reference
pages 1.1 with all extensions, rather than core only, as was the case
for the 1.0 ref pages (internal issues 484, 1056, 1205).
* Require that
slink:VkMemoryDedicatedRequirements::pname:prefersDedicateAllocation is
ename:VK_TRUE when
slink:VkMemoryDedicatedRequirements::pname:requiresDedicateAllocation is
ename:VK_TRUE (internal issue 1222).
* Fix Ruby extension code so `diff_html` Makefile target works (internal
issue 1230).
* Update `genRelease` script to generate 1.1 + all extensions reference
pages - but not the single-page HTML / PDF versions, which are even
larger than the API spec (internal issue 1245).
Other Issues:
* Add missing attributes to `vk.xml` for `VK_ANDROID_native_buffer`.
* Specify that the slink:VkAttachmentDescription::pname:format member is
the format of the image *view* that will be used for the attachment.
* Use core sname:VkPhysicalDeviceFeatures2 in the `structextends` `vk.xml`
attribute for sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT and
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT, rather than the
KHR equivalent it was promoted from.
* Fix the "`Fragment Input Attachment Interface`" glossary entry to match
the specification body.
* Clarify the interaction of sRGB images used as storage or texel buffers
with <<textures-output-format-conversion, Texel Output Format
Conversion>>.
* Moved three valid usage statements from
slink:VkRenderPassMultiviewCreateInfo up to
slink:VkRenderPassCreateInfo, and added a new valid usage statement for
slink:VkRenderPassInputAttachmentAspectCreateInfo.
* Added valid usage statements for slink:VkBufferMemoryBarrier and
slink:VkImageMemoryBarrier reflecting the global requirement that
"`non-sparse resources must be bound to memory before being recorded to
command`".
-----------------------------------------------------
Change log for April 5, 2018 Vulkan 1.1.72 spec update:
* Update release number to 72. * Update release number to 72.

View File

@ -106,7 +106,7 @@ VERBOSE =
# $(EXTENSIONS)) # $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output # ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 72 PATCHVERSION = 73
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS))) ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION) SPECREVISION = 1.1.$(PATCHVERSION)
else else
@ -318,10 +318,17 @@ man/apispec.txt: $(SPECFILES) genRef.py reflib.py vkapi.py
# These targets are HTML5 ref pages # These targets are HTML5 ref pages
MANHTMLDIR := $(OUTDIR)/man/html # The recursive $(MAKE) is an apparently unavoidable hack, since the
MANHTML = $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html) # actual list of man page sources isn't known until after
# man/apispec.txt is generated.
manhtmlpages: man/apispec.txt
$(MAKE) buildmanpages
manhtmlpages: man/apispec.txt $(MANHTML) # buildmanpages: $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
MANHTMLDIR = $(OUTDIR)/man/html
MANHTML = $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
buildmanpages: $(MANHTML)
$(MANHTMLDIR)/%.html: KATEXDIR = ../../katex $(MANHTMLDIR)/%.html: KATEXDIR = ../../katex
$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENINCLUDE) $(GENDEPENDS) katexinst $(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENINCLUDE) $(GENDEPENDS) katexinst
@ -329,10 +336,14 @@ $(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) $(GENINCLUDE) $(GENDEPENDS
$(QUIET)$(ASCIIDOC) -b html5 -a cross-file-links -a html_spec_relative='../../html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -d manpage -o $@ $< $(QUIET)$(ASCIIDOC) -b html5 -a cross-file-links -a html_spec_relative='../../html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -d manpage -o $@ $<
# These targets are HTML5 and PDF single-file versions of the ref pages # These targets are HTML5 and PDF single-file versions of the ref pages
# The generated ref page sources are included by man/apispec.txt, and
# are always generated along with man/apispec.txt. Therefore there's no
# need for a recursive $(MAKE) or a $(MANHTML) dependency, unlike the
# manhtmlpages target.
manpdf: $(OUTDIR)/apispec.pdf manpdf: $(OUTDIR)/apispec.pdf
$(OUTDIR)/apispec.pdf: $(SPECVERSION) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS) $(OUTDIR)/apispec.pdf: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS)
$(QUIET)$(MKDIR) $(OUTDIR) $(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(MKDIR) $(PDFMATHDIR) $(QUIET)$(MKDIR) $(PDFMATHDIR)
$(QUIET)$(ASCIIDOC) -b pdf -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ man/apispec.txt $(QUIET)$(ASCIIDOC) -b pdf -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCPDFOPTS) -o $@ man/apispec.txt
@ -347,12 +358,14 @@ endif
manhtml: $(OUTDIR)/apispec.html manhtml: $(OUTDIR)/apispec.html
$(OUTDIR)/apispec.html: KATEXDIR = katex $(OUTDIR)/apispec.html: KATEXDIR = katex
$(OUTDIR)/apispec.html: $(SPECVERSION) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS) katexinst $(OUTDIR)/apispec.html: $(SPECVERSION) man/apispec.txt $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS) katexinst
$(QUIET)$(MKDIR) $(OUTDIR) $(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(ASCIIDOC) -b html5 -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ man/apispec.txt $(QUIET)$(ASCIIDOC) -b html5 -a html_spec_relative='html/vkspec.html' $(ADOCOPTS) $(ADOCHTMLOPTS) -o $@ man/apispec.txt
# Automated (though heuristic) checks of consistency in the spec and # Automated (though heuristic) checks of consistency in the spec and
# ref page sources # ref page sources.
# These are way out of date WRT current spec markup, and probably won't
# work properly.
# Validate includes in spec source vs. includes actually in the tree # Validate includes in spec source vs. includes actually in the tree
# Generates file in $(CHECKDIR) # Generates file in $(CHECKDIR)

View File

@ -451,9 +451,9 @@ Flat Shading::
value unaltered. value unaltered.
Fragment Input Attachment Interface:: Fragment Input Attachment Interface::
A fragment shader entry point's variables with code:UniformConstant Variables with code:UniformConstant storage class and a decoration of
storage class and a decoration of code:InputAttachmentIndex, which code:InputAttachmentIndex that are statically used by a fragment
receive values from input attachments. shader's entry point, which receive values from input attachments.
ifdef::VK_AMD_shader_fragment_mask[] ifdef::VK_AMD_shader_fragment_mask[]
Fragment Mask:: Fragment Mask::

View File

@ -338,7 +338,8 @@ ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
1, pname:flags must: not contain 1, pname:flags must: not contain
ename:VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR ename:VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
endif::VK_VERSION_1_1,VK_KHR_device_group[] endif::VK_VERSION_1_1,VK_KHR_device_group[]
* If pname:oldSwapchain is not dlink:VK_NULL_HANDLE, pname:oldSwapchain * [[VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933]]
If pname:oldSwapchain is not dlink:VK_NULL_HANDLE, pname:oldSwapchain
must: be a non-retired swapchain associated with native window referred must: be a non-retired swapchain associated with native window referred
to by pname:surface to by pname:surface
* [[VUID-VkSwapchainCreateInfoKHR-imageFormat-01778]] * [[VUID-VkSwapchainCreateInfoKHR-imageFormat-01778]]

View File

@ -201,7 +201,35 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL. pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL.
* [[VUID-VkRenderPassCreateInfo-pNext-01926]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassInputAttachmentAspectCreateInfo, the pname:subpass
member of each element of its pname:pAspectReferences member must: be
less than pname:subpassCount
* [[VUID-VkRenderPassCreateInfo-pNext-01927]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassInputAttachmentAspectCreateInfo, the
pname:inputAttachmentIndex member of each element of its
pname:pAspectReferences member must: be less than the value of
pname:inputAttachmentCount in the member of pname:pSubpasses identified
by its pname:subpass member
endif::VK_VERSION_1_1,VK_KHR_maintenance2[] endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-VkRenderPassCreateInfo-pNext-01928]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, and its pname:subpassCount member
is not zero, that member must: be equal to the value of
pname:subpassCount
* [[VUID-VkRenderPassCreateInfo-pNext-01929]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, if its pname:dependencyCount
member is not zero, it must: be equal to pname:dependencyCount
* [[VUID-VkRenderPassCreateInfo-pNext-01930]]
If the pname:pNext chain includes an instance of
slink:VkRenderPassMultiviewCreateInfo, for each non-zero element of
pname:pViewOffsets, the pname:srcSubpass and pname:dstSubpass members of
pname:pDependencies at the same index must: not be equal
endif::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-VkRenderPassCreateInfo-pDependencies-00837]] * [[VUID-VkRenderPassCreateInfo-pDependencies-00837]]
For any element of pname:pDependencies, if the pname:srcSubpass is not For any element of pname:pDependencies, if the pname:srcSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
@ -365,21 +393,9 @@ endif::VK_NVX_multiview_per_view_attributes[]
.Valid Usage .Valid Usage
**** ****
* [[VUID-VkRenderPassMultiviewCreateInfo-subpassCount-00839]]
If pname:subpassCount is not zero, pname:subpassCount must: be equal to
the pname:subpassCount in the sname:VkRenderPassCreateInfo structure at
the start of the chain
* [[VUID-VkRenderPassMultiviewCreateInfo-dependencyCount-00840]]
If pname:dependencyCount is not zero, pname:dependencyCount must: be
equal to the pname:dependencyCount in the sname:VkRenderPassCreateInfo
structure at the start of the chain
* [[VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841]] * [[VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841]]
Each view index must: not be set in more than one element of Each view index must: not be set in more than one element of
pname:pCorrelationMasks pname:pCorrelationMasks
* [[VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-00842]]
If an element of pname:pViewOffsets is non-zero, the corresponding
slink:VkSubpassDependency structure must: have different values of
pname:srcSubpass and pname:dstSubpass.
**** ****
include::../validity/structs/VkRenderPassMultiviewCreateInfo.txt[] include::../validity/structs/VkRenderPassMultiviewCreateInfo.txt[]
@ -397,7 +413,7 @@ include::../api/structs/VkAttachmentDescription.txt[]
* pname:flags is a bitmask of elink:VkAttachmentDescriptionFlagBits * pname:flags is a bitmask of elink:VkAttachmentDescriptionFlagBits
specifying additional properties of the attachment. specifying additional properties of the attachment.
* pname:format is a elink:VkFormat value specifying the format of the * pname:format is a elink:VkFormat value specifying the format of the
image that will be used for the attachment. image view that will be used for the attachment.
* pname:samples is the number of samples of the image as defined in * pname:samples is the number of samples of the image as defined in
elink:VkSampleCountFlagBits. elink:VkSampleCountFlagBits.
* pname:loadOp is a elink:VkAttachmentLoadOp value specifying how the * pname:loadOp is a elink:VkAttachmentLoadOp value specifying how the

View File

@ -860,74 +860,6 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_IMAGE_TYPE_2D, and pname:samples is
ename:VK_SAMPLE_COUNT_16_BIT, pname:flags must: not contain ename:VK_SAMPLE_COUNT_16_BIT, pname:flags must: not contain
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* [[VUID-VkImageCreateInfo-tiling-00977]]
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, pname:format must: be a
format that has at least one supported feature bit present in the value
of sname:VkFormatProperties::pname:linearTilingFeatures returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format
* [[VUID-VkImageCreateInfo-tiling-00978]]
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage must: not contain
ename:VK_IMAGE_USAGE_SAMPLED_BIT
* [[VUID-VkImageCreateInfo-tiling-00979]]
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage must: not contain
ename:VK_IMAGE_USAGE_STORAGE_BIT
* [[VUID-VkImageCreateInfo-tiling-00980]]
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage must: not
contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* [[VUID-VkImageCreateInfo-tiling-00981]]
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage must:
not contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* [[VUID-VkImageCreateInfo-tiling-00982]]
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, pname:format must: be
a format that has at least one supported feature bit present in the
value of sname:VkFormatProperties::pname:optimalTilingFeatures returned
by fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format
* [[VUID-VkImageCreateInfo-tiling-00983]]
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage must: not contain
ename:VK_IMAGE_USAGE_SAMPLED_BIT
* [[VUID-VkImageCreateInfo-tiling-00984]]
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage must: not contain
ename:VK_IMAGE_USAGE_STORAGE_BIT
* [[VUID-VkImageCreateInfo-tiling-00985]]
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage must: not
contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* [[VUID-VkImageCreateInfo-tiling-00986]]
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include
ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage must:
not contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* [[VUID-VkImageCreateInfo-flags-00987]] * [[VUID-VkImageCreateInfo-flags-00987]]
If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain
@ -3260,6 +3192,10 @@ endif::VK_KHR_dedicated_allocation[]
* pname:requiresDedicatedAllocation specifies that a dedicated allocation * pname:requiresDedicatedAllocation specifies that a dedicated allocation
is required for this resource. is required for this resource.
When the implementation sets pname:requiresDedicatedAllocation to
ename:VK_TRUE, it must: also set pname:prefersDedicatedAllocation to
ename:VK_TRUE.
If the sname:VkMemoryDedicatedRequirements structure is included in the If the sname:VkMemoryDedicatedRequirements structure is included in the
pname:pNext chain of the slink:VkMemoryRequirements2 structure passed as the pname:pNext chain of the slink:VkMemoryRequirements2 structure passed as the
pname:pMemoryRequirements parameter of a pname:pMemoryRequirements parameter of a

View File

@ -3731,6 +3731,9 @@ endif::VK_VERSION_1_1,VK_KHR_external_memory[]
pname:dstQueueFamilyIndex are not ename:VK_QUEUE_FAMILY_IGNORED, at pname:dstQueueFamilyIndex are not ename:VK_QUEUE_FAMILY_IGNORED, at
least one of them must: be the same as the family of the queue that will least one of them must: be the same as the family of the queue that will
execute this barrier execute this barrier
* [[VUID-VkBufferMemoryBarrier-buffer-01931]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
**** ****
include::../validity/structs/VkBufferMemoryBarrier.txt[] include::../validity/structs/VkBufferMemoryBarrier.txt[]
@ -3992,6 +3995,9 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
If either pname:oldLayout or pname:newLayout is If either pname:oldLayout or pname:newLayout is
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then pname:image must: have ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then pname:image must: have
been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT set been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT set
* [[VUID-VkImageMemoryBarrier-image-01932]]
If pname:image is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
**** ****
include::../validity/structs/VkImageMemoryBarrier.txt[] include::../validity/structs/VkImageMemoryBarrier.txt[]

View File

@ -1267,7 +1267,12 @@ application.
[[textures-output-format-conversion]] [[textures-output-format-conversion]]
=== Texel Output Format Conversion === Texel Output Format Conversion
Texels undergo a format conversion from the floating point, signed, or If the image format is sRGB, a linear to sRGB conversion is applied to the
R, G, and B components as described in the "`sRGB EOTF`" section of the
<<data-format,Khronos Data Format Specification>>.
The A component, if present, is unchanged.
Texels then undergo a format conversion from the floating point, signed, or
unsigned integer type of the texel data to the elink:VkFormat of the image unsigned integer type of the texel data to the elink:VkFormat of the image
view. view.
Any unused components are ignored. Any unused components are ignored.

View File

@ -35,6 +35,69 @@ class ExtensionHighlighterPreprocessorReader < PreprocessorReader
# This overrides the default preprocessor reader conditional logic such # This overrides the default preprocessor reader conditional logic such
# that any extensions which need highlighting and are enabled have their # that any extensions which need highlighting and are enabled have their
# ifdefs left intact. # ifdefs left intact.
def preprocess_conditional_directive directive, target, delimiter, text
# If we're tracking a target for highlighting already, don't need to do
# additional processing unless we hit the end of that conditional
# section
# NOTE: This will break if for some absurd reason someone nests the same
# conditional inside itself.
if @tracking_target != nil && directive == 'endif' && @tracking_target == target.downcase
@tracking_target = nil
elsif @tracking_target
return super(directive, target, delimiter, text)
end
# If it's an ifdef or ifndef, push the directive onto a stack
# If it's an endif, pop the last one off.
# This is done to apply the next bit of logic to both the start and end
# of an conditional block correctly
status = directive
if directive == 'endif'
status = @status_stack.pop
else
@status_stack.push status
end
# If the status is negative, we need to still include the conditional
# text for the highlighter, so we replace the requirement for the
# extension attribute in question to be not defined with an
# always-undefined attribute, so that it evaluates to true when it needs
# to.
# Undefined attribute is currently just the extension with "_undefined"
# appended to it.
modified_target = target.downcase
if status == 'ifndef'
@diff_extensions.each do | extension |
modified_target.gsub!(extension, extension + '_undefined')
end
end
# Call the original preprocessor
result = super(directive, modified_target, delimiter, text)
# If any of the extensions are in the target, and the conditional text
# isn't flagged to be skipped, return false to prevent the preprocessor
# from removing the line from the processed source.
unless @skipping
@diff_extensions.each do | extension |
if target.downcase.include?(extension)
if directive != 'endif'
@tracking_target = target.downcase
end
return false
end
end
end
return result
end
# Identical to preprocess_conditional_directive, but older versions of
# Asciidoctor used a different name, so this is there to override the same
# method in older versions.
# This is a pure c+p job for awkward inheritance reasons (see use of
# the super() keyword :|)
# At some point, will rewrite to avoid this mess, but this fixes things
# for now without breaking things for anyone.
def preprocess_conditional_inclusion directive, target, delimiter, text def preprocess_conditional_inclusion directive, target, delimiter, text
# If we're tracking a target for highlighting already, don't need to do # If we're tracking a target for highlighting already, don't need to do
# additional processing unless we hit the end of that conditional # additional processing unless we hit the end of that conditional

View File

@ -172,9 +172,9 @@ def refPageTail(pageName, seeAlso, fp, auto = False):
# This is difficult to get working properly in asciidoc # This is difficult to get working properly in asciidoc
# specURL = 'link:{vkspecpath}/vkspec.html' # specURL = 'link:{vkspecpath}/vkspec.html'
# This needs to have the current repository branch path installed in # Where to find the current all-extensions Vulkan HTML spec, so xrefs in
# place of '1.0' # the asciidoc source that aren't to ref pages can link into it instead.
specURL = 'https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html' specURL = 'https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html'
if seeAlso == None: if seeAlso == None:
seeAlso = 'No cross-references are available\n' seeAlso = 'No cross-references are available\n'
@ -496,10 +496,14 @@ def genSinglePageRef(baseDir):
# count = count + 1 # count = count + 1
# Add page to body # Add page to body
if apiDict == defines or not isextension(refPage): # Previously, a page was added only when:
print('include::' + refPage + '.txt[]', file=body) # if apiDict == defines or not isextension(refPage):
else: # Now, all extensions are added (though ideally, only the
print('// not including ' + refPage, file=body) # extensions specifically requested would be added - there's an
# implicit expectation here that 'make man/apispec.txt' was
# generated via 'makeAllExts' or equivalent).
print('include::' + refPage + '.txt[]', file=body)
print('\n' + ':leveloffset: 0' + '\n', file=body) print('\n' + ':leveloffset: 0' + '\n', file=body)
# Write head and body to the output file # Write head and body to the output file

View File

@ -34,8 +34,8 @@ if __name__ == '__main__':
parser.add_argument('-internal', action='store_true', parser.add_argument('-internal', action='store_true',
help='Generate internal build, not public') help='Generate internal build, not public')
parser.add_argument('-refpages', action='store_true', parser.add_argument('-norefpages', action='store_true',
help='Generate refpages') help='Do not generate refpages')
parser.add_argument('-pdf', action='store_true', parser.add_argument('-pdf', action='store_true',
help='Always generate PDF outputs') help='Always generate PDF outputs')
parser.add_argument('-nov11', action='store_false', dest='v11', parser.add_argument('-nov11', action='store_false', dest='v11',
@ -57,13 +57,15 @@ if __name__ == '__main__':
# Always build PDF for public releases # Always build PDF for public releases
args.pdf = True args.pdf = True
if args.refpages: if args.norefpages:
refPageTargets = ' manhtml manhtmlpages'
if args.pdf:
refPageTargets += ' manpdf'
else:
refPageTargets = '' refPageTargets = ''
print('echo Info: Not building reference pages yet') else:
# Just generate separate reference pages, not the single-page
# 'manhtml' and 'manpdf' refpage targets.
refPageTargets = ' manhtmlpages'
# refPageTargets += ' manhtml'
# if args.pdf:
# refPageTargets += ' manpdf'
specTargets = ' html' specTargets = ' html'
if args.pdf: if args.pdf:
@ -75,13 +77,14 @@ if __name__ == '__main__':
# Vulkan 1.1 specs # Vulkan 1.1 specs
if args.v11: if args.v11:
# Build validusage target only for 1.1 + all extensions # Build ref pages and validusage targets only for 1.1 + all
# extensions
buildBranch('1.1-extensions', buildBranch('1.1-extensions',
versions = allVersions, versions = allVersions,
extensions = allExts, extensions = allExts,
apititle = '(with all registered Vulkan extensions)', apititle = '(with all registered Vulkan extensions)',
xmlTargets = 'clobber install', xmlTargets = 'clobber install',
specTargets = specTargets + ' validusage', specTargets = specTargets + ' validusage' + refPageTargets,
repoDir = repoDir, repoDir = repoDir,
outDir = outDir) outDir = outDir)
@ -94,14 +97,14 @@ if __name__ == '__main__':
repoDir = repoDir, repoDir = repoDir,
outDir = outDir) outDir = outDir)
# Build ref pages, style guide, and registry documentation targets only for # Build style guide and registry documentation targets only for 1.1
# 1.1 + no extensions. # + no extensions.
buildBranch('1.1', buildBranch('1.1',
versions = allVersions, versions = allVersions,
extensions = None, extensions = None,
apititle = None, apititle = None,
xmlTargets = 'clobber install', xmlTargets = 'clobber install',
specTargets = specTargets + ' styleguide registry' + refPageTargets, specTargets = specTargets + ' styleguide registry',
repoDir = repoDir, repoDir = repoDir,
outDir = outDir, outDir = outDir,
needRefSources = True) needRefSources = True)

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file // Version of this file
#define VK_HEADER_VERSION 72 #define VK_HEADER_VERSION 73
#define VK_NULL_HANDLE 0 #define VK_NULL_HANDLE 0

View File

@ -361,6 +361,7 @@ def fixupRefs(pageMap, specFile, file):
# Patterns used to recognize interesting lines in an asciidoc source file. # Patterns used to recognize interesting lines in an asciidoc source file.
# These patterns are only compiled once. # These patterns are only compiled once.
includePat = re.compile('^include::(\.\./)+api/+(?P<type>\w+)/(?P<name>\w+).txt\[\]') includePat = re.compile('^include::(\.\./)+api/+(?P<type>\w+)/(?P<name>\w+).txt\[\]')
endifPat = re.compile('^endif::(?P<condition>[\w_+,]+)\[\]')
validPat = re.compile('^include::(\.\./)+validity/(?P<type>\w+)/(?P<name>\w+).txt\[\]') validPat = re.compile('^include::(\.\./)+validity/(?P<type>\w+)/(?P<name>\w+).txt\[\]')
beginPat = re.compile('^\[open,(?P<attribs>refpage=.*)\]') beginPat = re.compile('^\[open,(?P<attribs>refpage=.*)\]')
# attribute key/value pairs of an open block # attribute key/value pairs of an open block
@ -504,6 +505,8 @@ def findRefs(file, filename):
type = matches.group('type') type = matches.group('type')
name = matches.group('name') name = matches.group('name')
if pi != None: if pi != None:
if pi.include != None:
logDiag('found multiple includes for this block')
if pi.type and type != pi.type: if pi.type and type != pi.type:
logWarn('ERROR: pageMap[' + name + '] type:', logWarn('ERROR: pageMap[' + name + '] type:',
pi.type, 'does not match type:', type) pi.type, 'does not match type:', type)
@ -516,6 +519,22 @@ def findRefs(file, filename):
line = line + 1 line = line + 1
continue continue
# Vulkan 1.1 markup allows the last API include construct to be
# followed by an asciidoctor endif:: construct (and also preceded,
# at some distance).
# This looks for endif:: immediately following an include:: line
# and, if found, moves the include boundary to this line.
matches = endifPat.search(file[line])
if matches != None and pi != None:
if pi.include == line - 1:
logDiag('Matched endif pattern following include; moving include')
pi.include = line
else:
logDiag('Matched endif pattern (not following include)')
line = line + 1
continue
matches = bodyPat.search(file[line]) matches = bodyPat.search(file[line])
if matches != None: if matches != None:
logDiag('Matched // refBody pattern') logDiag('Matched // refBody pattern')

View File

@ -1,2 +1,2 @@
# The value to start tagging VU statements at, unless overridden by -nextvu # The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 1926 startVUID = 1934

View File

@ -137,7 +137,7 @@ server.
<type category="define">// Vulkan 1.1 version number <type category="define">// Vulkan 1.1 version number
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type> #define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file <type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 72</type> #define <name>VK_HEADER_VERSION</name> 73</type>
<type category="define"> <type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -1410,7 +1410,7 @@ server.
<member><type>uint32_t</type> <name>maxGeometryOutputVertices</name><comment>max number of vertices that can be emitted in geometry stage</comment></member> <member><type>uint32_t</type> <name>maxGeometryOutputVertices</name><comment>max number of vertices that can be emitted in geometry stage</comment></member>
<member><type>uint32_t</type> <name>maxGeometryTotalOutputComponents</name><comment>max total number of components (all vertices) written in geometry stage</comment></member> <member><type>uint32_t</type> <name>maxGeometryTotalOutputComponents</name><comment>max total number of components (all vertices) written in geometry stage</comment></member>
<comment>fragment stage limits</comment> <comment>fragment stage limits</comment>
<member><type>uint32_t</type> <name>maxFragmentInputComponents</name><comment>max number of input compontents read in fragment stage</comment></member> <member><type>uint32_t</type> <name>maxFragmentInputComponents</name><comment>max number of input components read in fragment stage</comment></member>
<member><type>uint32_t</type> <name>maxFragmentOutputAttachments</name><comment>max number of output attachments written in fragment stage</comment></member> <member><type>uint32_t</type> <name>maxFragmentOutputAttachments</name><comment>max number of output attachments written in fragment stage</comment></member>
<member><type>uint32_t</type> <name>maxFragmentDualSrcAttachments</name><comment>max number of output attachments written when using dual source blending</comment></member> <member><type>uint32_t</type> <name>maxFragmentDualSrcAttachments</name><comment>max number of output attachments written when using dual source blending</comment></member>
<member><type>uint32_t</type> <name>maxFragmentCombinedOutputResources</name><comment>max total number of storage buffers, storage images and output buffers</comment></member> <member><type>uint32_t</type> <name>maxFragmentCombinedOutputResources</name><comment>max total number of storage buffers, storage images and output buffers</comment></member>
@ -2935,7 +2935,7 @@ server.
<member><type>VkConservativeRasterizationModeEXT</type> <name>conservativeRasterizationMode</name></member> <!-- Conservative rasterization mode --> <member><type>VkConservativeRasterizationModeEXT</type> <name>conservativeRasterizationMode</name></member> <!-- Conservative rasterization mode -->
<member><type>float</type> <name>extraPrimitiveOverestimationSize</name></member> <!-- Extra overestimation to add to the primitive --> <member><type>float</type> <name>extraPrimitiveOverestimationSize</name></member> <!-- Extra overestimation to add to the primitive -->
</type> </type>
<type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2KHR,VkDeviceCreateInfo"> <type category="struct" name="VkPhysicalDeviceDescriptorIndexingFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member> <member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member> <member><type>VkBool32</type> <name>shaderInputAttachmentArrayDynamicIndexing</name></member>
@ -2959,7 +2959,7 @@ server.
<member><type>VkBool32</type> <name>descriptorBindingVariableDescriptorCount</name></member> <member><type>VkBool32</type> <name>descriptorBindingVariableDescriptorCount</name></member>
<member><type>VkBool32</type> <name>runtimeDescriptorArray</name></member> <member><type>VkBool32</type> <name>runtimeDescriptorArray</name></member>
</type> </type>
<type category="struct" name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2KHR"> <type category="struct" name="VkPhysicalDeviceDescriptorIndexingPropertiesEXT" returnedonly="true" structextends="VkPhysicalDeviceProperties2">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member> <member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member> <member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member> <member><type>uint32_t</type> <name>maxUpdateAfterBindDescriptorsInAllPools</name></member>
@ -6719,7 +6719,7 @@ server.
<command name="vkGetPhysicalDeviceWin32PresentationSupportKHR"/> <command name="vkGetPhysicalDeviceWin32PresentationSupportKHR"/>
</require> </require>
</extension> </extension>
<extension name="VK_ANDROID_native_buffer" number="11" supported="disabled"> <extension name="VK_ANDROID_native_buffer" number="11" type="device" author="ANDROID" platform="android" contact="Jesse Hall @jessehall" supported="disabled">
<require> <require>
<enum value="5" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/> <enum value="5" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
<enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/> <enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>