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:
parent
d0a5cfde01
commit
5300d9f05e
|
@ -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.
|
||||||
|
|
||||||
|
|
27
Makefile
27
Makefile
|
@ -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)
|
||||||
|
|
|
@ -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::
|
||||||
|
|
|
@ -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]]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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[]
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
18
genRef.py
18
genRef.py
|
@ -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
|
||||||
|
|
29
genRelease
29
genRelease
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
19
reflib.py
19
reflib.py
|
@ -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')
|
||||||
|
|
|
@ -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
|
||||||
|
|
10
xml/vk.xml
10
xml/vk.xml
|
@ -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"/>
|
||||||
|
|
Loading…
Reference in New Issue