Change log for May 13, 2019 Vulkan 1.1.108 spec update:

* Update release number to 108.

Internal Issues:

  * Clarify that only external resources can be bound to external memory in
    valid usage statements for flink:vkBindBufferMemory,
    flink:vkBindImageMemory, slink:VkSparseMemoryBind, and
    slink:VkSparseImageMemoryBind (internal issue 1496).
  * Move all `vk.xml`requirements for
    flink:vkGetDeviceGroupSurfacePresentModes2EXT into
    `<<VK_EXT_full_screen_exclusive>>` (internal issue 1622).
  * Add some missing valid usage statements for
    flink:vkCmdEndQueryIndexedEXT (internal issue 1638).
  * Specify rules for defining "`New Flags and Bitmask Types`" in that
    section of the style guide (internal issue 1649).
  * Add a comment to the `vk.xml` extension block for
    `VK_ANDROID_native_buffer` explaining why the extension is tagged
    `"disabled"` (internal issue 1657).
  * Fix typos in the description of slink:VkImageViewCreateInfo (internal
    issue 1661).
  * Modify valid usage statements for slink:VkImageViewCreateInfo to fix the
    description about the restriction for pname:baseArrayLayer and
    pname:layerCount from pname:extent.depth to the depth of mipmap level
    while creating a 2D array image view on a 3D image.
  * Forbid structures that contain opaque types (images or samplers) in the
    SPIR-V <<spirvenv-module-validation, Validation Rules within a Module>>
    section.
  * Minor editorial changes for the `VK_EXT_swapchain_colorspace` extension
    in the description of slink:VkColorSpace KHR and `vk.xml`, including:
  ** Consistently specify which function (OETF or Inverse-EOTF) is being
     defined;
  ** Remove the Display P3 EOTF, since no other EOTFs are defined;
  ** Include luminance range for the HLG OETF;
  ** Remove a duplicated paragraph; and,
  ** Rename ename:VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, leaving the old
     ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT token as an alias.

New Extensions:

  * `<<VK_NV_framebuffer_mixed_samples_coverage_reduction_mode>>`
  * `<<VK_KHR_uniform_buffer_standard_layout>>`
This commit is contained in:
Jon Leech 2019-05-13 01:49:34 -07:00
parent 5abf83f95d
commit 40ba6e9a44
21 changed files with 669 additions and 205 deletions

View File

@ -8,6 +8,52 @@ public pull requests that have been accepted.
-----------------------------------------------------
Change log for May 13, 2019 Vulkan 1.1.108 spec update:
* Update release number to 108.
Internal Issues:
* Clarify that only external resources can be bound to external memory in
valid usage statements for flink:vkBindBufferMemory,
flink:vkBindImageMemory, slink:VkSparseMemoryBind, and
slink:VkSparseImageMemoryBind (internal issue 1496).
* Move all `vk.xml`requirements for
flink:vkGetDeviceGroupSurfacePresentModes2EXT into
`<<VK_EXT_full_screen_exclusive>>` (internal issue 1622).
* Add some missing valid usage statements for
flink:vkCmdEndQueryIndexedEXT (internal issue 1638).
* Specify rules for defining "`New Flags and Bitmask Types`" in that
section of the style guide (internal issue 1649).
* Add a comment to the `vk.xml` extension block for
`VK_ANDROID_native_buffer` explaining why the extension is tagged
`"disabled"` (internal issue 1657).
* Fix typos in the description of slink:VkImageViewCreateInfo (internal
issue 1661).
* Modify valid usage statements for slink:VkImageViewCreateInfo to fix the
description about the restriction for pname:baseArrayLayer and
pname:layerCount from pname:extent.depth to the depth of mipmap level
while creating a 2D array image view on a 3D image.
* Forbid structures that contain opaque types (images or samplers) in the
SPIR-V <<spirvenv-module-validation, Validation Rules within a Module>>
section.
* Minor editorial changes for the `VK_EXT_swapchain_colorspace` extension
in the description of slink:VkColorSpace KHR and `vk.xml`, including:
** Consistently specify which function (OETF or Inverse-EOTF) is being
defined;
** Remove the Display P3 EOTF, since no other EOTFs are defined;
** Include luminance range for the HLG OETF;
** Remove a duplicated paragraph; and,
** Rename ename:VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, leaving the old
ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT token as an alias.
New Extensions:
* `<<VK_NV_framebuffer_mixed_samples_coverage_reduction_mode>>`
* `<<VK_KHR_uniform_buffer_standard_layout>>`
-----------------------------------------------------
Change log for April 16, 2019 Vulkan 1.1.107 spec update:
* Update release number to 107.

View File

@ -70,7 +70,7 @@ allspecs: html pdf styleguide registry
allman: manhtmlpages
allchecks:
$(PYTHON) $(SCRIPTS)/check_spec_links.py -Werror
$(PYTHON) $(SCRIPTS)/check_spec_links.py -Werror --ignore_count 0 -Wno_refpage_missing_desc -Wno_refpage_xrefs -Wno_refpage_name -Wno_refpage_unknown_attrib
# Note that the := assignments below are immediate, not deferred, and
# are therefore order-dependent in the Makefile
@ -121,7 +121,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 107
PATCHVERSION = 108
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else

View File

@ -1,7 +1,7 @@
include::meta/VK_EXT_swapchain_colorspace.txt[]
*Last Modified Date*::
2017-03-15
2019-04-26
*IP Status*::
No known IP claims.
*Contributors*::
@ -73,3 +73,8 @@ described by separate extension.
* Revision 3, 2017-06-23 (Courtney Goeltzenleuchter)
- Add extended sRGB non-linear enum.
* Revision 4, 2019-04-26 (Graeme Leese)
- Clarify colorspace transfer function usage.
- Refer to normative definitions in the Data Format Specification.
- Clarify DCI-P3 and Display P3 usage.

View File

@ -0,0 +1,45 @@
// Copyright (c) 2017-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_uniform_buffer_standard_layout.txt[]
*Last Modified Date*::
2019-01-25
*Contributors*::
- Graeme Leese, Broadcom
- Jeff Bolz, NVIDIA
- Tobias Hector, AMD
- Jason Ekstrand, Intel
- Neil Henning, AMD
=== Short Description
Enables tighter array and struct packing to be used with uniform buffers.
=== Description
This extension modifies the alignment rules for uniform buffers, allowing
for tighter packing of arrays and structures.
This allows, for example, the std430 layout, as defined in
https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.60.pdf[GLSL]
to be supported in uniform buffers.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR
=== New Structures
* slink:VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR
=== Issues
None.
=== Version History
* Revision 1, 2019-01-25 (Graeme Leese)
- Initial draft

View File

@ -0,0 +1,73 @@
include::meta/VK_NV_coverage_reduction_mode.txt[]
*Last Modified Date*::
2019-01-29
*Contributors*::
- Kedarnath Thangudu, NVIDIA
- Jeff Bolz, NVIDIA
When using a framebuffer with mixed samples, a per-fragment coverage
reduction operation is performed which generates a color sample mask from
the coverage mask.
This extension defines the following modes to control how this reduction is
performed.
* Merge: When there are more raster samples than color samples, there is
an implementation dependent association of each raster sample to a color
sample.
In the merge mode, the reduced color sample mask is computed such that
the bit for each color sample is 1 if any of the associated bits in the
fragments coverage is on, and 0 otherwise.
This is the default mode.
* Truncate: When there are more raster samples (N) than color samples(M),
there is one to one association of the first M raster samples to the M
color samples and the coverage bits for the other raster samples are
ignored.
When the number of raster samples is equal to the color samples, there is a
one to one mapping between them in either of the above modes.
The new command
flink:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV can
be used to query the various raster, color, depth/stencil sample count and
reduction mode combinations that are supported by the implementation.
This extension would allow an implementation to support the behavior of both
`VK_NV_framebuffer_mixed_samples` and `VK_AMD_mixed_attachment_samples`
extensions simultaneously.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
** ename:VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
** ename:VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
=== New Enums
* elink:VkCoverageReductionModeNV
* tlink:VkPipelineCoverageReductionStateCreateFlagsNV
=== New Structures
* slink:VkPhysicalDeviceCoverageReductionModeFeaturesNV
* slink:VkPipelineCoverageReductionStateCreateInfoNV
* slink:VkFramebufferMixedSamplesCombinationNV
=== New Functions
* flink:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
=== Issues
None.
=== Version History
* Revision 1, 2019-01-29 (Kedarnath Thangudu)
- Internal revisions

View File

@ -615,6 +615,7 @@ endif::VK_KHR_shader_float16_int8+!VK_KHR_16bit_storage[]
** Objects of types code:OpTypeImage, code:OpTypeSampler,
code:OpTypeSampledImage, and arrays of these types must: not be stored
to or modified.
* Structure types must: not contain opaque types.
* Decorations
** Any code:BuiltIn decoration not listed in
<<interfaces-builtin-variables>> must: not be used.

View File

@ -915,34 +915,37 @@ include::{generated}/api/enums/VkColorSpaceKHR.txt[]
color space.
ifdef::VK_EXT_swapchain_colorspace[]
* ename:VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT specifies support for the
Display-P3 color space and applies an sRGB-like transfer function
(defined below).
Display-P3 color space to be displayed using an sRGB-like EOTF (defined
below).
* ename:VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT specifies support for the
extended sRGB color space and applies a linear transfer function.
extended sRGB color space to be displayed using a linear EOTF.
* ename:VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT specifies support for
the extended sRGB color space and applies an sRGB transfer function.
* ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT specifies support for the DCI-P3
color space and applies a linear OETF.
the extended sRGB color space to be displayed using an sRGB EOTF.
* ename:VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT specifies support for the
Display-P3 color space to be displayed using a linear EOTF.
* ename:VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT specifies support for the
DCI-P3 color space and applies the Gamma 2.6 OETF.
DCI-P3 color space to be displayed using the DCI-P3 EOTF.
Note that values in such an image are interpreted as XYZ encoded color
data by the presentation engine.
* ename:VK_COLOR_SPACE_BT709_LINEAR_EXT specifies support for the BT709
color space and applies a linear OETF.
color space to be displayed using a linear EOTF.
* ename:VK_COLOR_SPACE_BT709_NONLINEAR_EXT specifies support for the BT709
color space and applies the SMPTE 170M OETF.
color space to be displayed using the SMPTE 170M EOTF.
* ename:VK_COLOR_SPACE_BT2020_LINEAR_EXT specifies support for the BT2020
color space and applies a linear OETF.
color space to be displayed using a linear EOTF.
* ename:VK_COLOR_SPACE_HDR10_ST2084_EXT specifies support for the HDR10
(BT2020 color) space and applies the SMPTE ST2084 Perceptual Quantizer
(PQ) OETF.
(BT2020 color) space to be displayed using the SMPTE ST2084 Perceptual
Quantizer (PQ) EOTF.
* ename:VK_COLOR_SPACE_DOLBYVISION_EXT specifies support for the Dolby
Vision (BT2020 color space), proprietary encoding, and applies the SMPTE
ST2084 OETF.
Vision (BT2020 color space), proprietary encoding, to be displayed using
the SMPTE ST2084 EOTF.
* ename:VK_COLOR_SPACE_HDR10_HLG_EXT specifies support for the HDR10
(BT2020 color space) and applies the Hybrid Log Gamma (HLG) OETF.
(BT2020 color space) to be displayed using the Hybrid Log Gamma (HLG)
EOTF.
* ename:VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT specifies support for the
AdobeRGB color space and applies a linear OETF.
AdobeRGB color space to be displayed using a linear EOTF.
* ename:VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT specifies support for the
AdobeRGB color space and applies the Gamma 2.2 OETF.
AdobeRGB color space to be displayed using the Gamma 2.2 EOTF.
* ename:VK_COLOR_SPACE_PASS_THROUGH_EXT specifies that color components
are used "`as is`".
This is intended to allow applications to supply data for color spaces
@ -954,13 +957,24 @@ ifdef::VK_AMD_display_native_hdr[]
for displays supporting it.
endif::VK_AMD_display_native_hdr[]
The color components of Non-linear color space swap chain images have had
the appropriate transfer function applied.
[NOTE]
.Note
====
In older versions of this extension
ename:VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT was misnamed
ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT.
This has been updated to indicate that it uses RGB color encoding, not XYZ.
The old name is deprecated but is maintained for backwards compatibility.
====
The color components of non-linear color space swap chain images must: have
had the appropriate transfer function applied.
The color space selected for the swap chain image will not affect the
processing of data written into the image by the implementation.
Vulkan requires that all implementations support the sRGB transfer function
when using an SRGB pixel format.
Other transfer functions, such as SMPTE 170M or SMPTE2084, must: not be
performed by the implementation, but can: be performed by the application
shader.
by use of an SRGB pixel format.
Other transfer functions, such as SMPTE 170M or SMPTE2084, can: be performed
by the application shader.
This extension defines enums for elink:VkColorSpaceKHR that correspond to
the following color spaces:
@ -968,25 +982,20 @@ the following color spaces:
.Color Spaces and Attributes
[options="header"]
|====
| Name | Red Primary | Green Primary | Blue Primary | White-point | Transfer function
| DCI-P3 | 0.680, 0.320 | 0.265, 0.690 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | Gamma 2.6
| Name | Red Primary | Green Primary | Blue Primary | White-point | Transfer function
| DCI-P3 | 1.000, 0.000 | 0.000, 1.000 | 0.000, 0.000 | 0.3333, 0.3333 | DCI P3
| Display-P3 | 0.680, 0.320 | 0.265, 0.690 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | Display-P3
| BT709 | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | SMPTE 170M
| BT709 | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | ITU (SMPTE 170M)
| sRGB | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | sRGB
| extended sRGB | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | extended sRGB
| HDR10_ST2084 | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084
| DOLBYVISION | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084
| HDR10_ST2084 | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084 PQ
| DOLBYVISION | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084 PQ
| HDR10_HLG | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | HLG
| AdobeRGB | 0.640, 0.330 | 0.210, 0.710 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | AdobeRGB
|====
For Opto-Electrical Transfer Function (OETF), unless otherwise specified,
the values of [eq]#L# and [eq]#E# are defined as:
[eq]#L# - linear luminance of image latexmath:[0 \leq L \leq 1] for
conventional colorimetry
[eq]#E# - corresponding electrical signal (value stored in memory)
The transfer functions are described in the "Tranfer Functions" chapter of
the <<data-format,Khronos Data Format Specification>>.
// @@@ The ref page is ended earlier than in the original markup due to
// asciidoctor issues described in internal MR 2201.
@ -996,38 +1005,6 @@ endif::VK_EXT_swapchain_colorspace[]
ifdef::VK_EXT_swapchain_colorspace[]
=== sRGB transfer function
[latexmath]
+++++++++++++++++++
\begin{aligned}
E & =
\begin{cases}
1.055 \times L^{1 \over 2.4} - 0.055 & \text{for}\ 0.0031308 \leq L \leq 1 \\
12.92 \times L & \text{for}\ 0 \leq L < 0.0031308
\end{cases}
\end{aligned}
+++++++++++++++++++
=== Display-P3 EOTF
[latexmath]
+++++++++++++++++++
\begin{aligned}
E & =
\begin{cases}
(a \times L + b)^{2.4} & \text{for}\ 0.039 \leq L \leq 1 \\
b \times L & \text{for}\ 0 \leq L < 0.039
\end{cases}
\end{aligned}
+++++++++++++++++++
latexmath:[a = 0.948] +
latexmath:[b = 0.052] +
latexmath:[c = 0.077] +
=== Display-P3 OETF
[latexmath]
@ -1041,6 +1018,9 @@ E & =
\end{aligned}
+++++++++++++++++++
where [eq]#L# is the linear value of a color channel and [eq]#E# is the
encoded value (as stored in the image in memory).
[NOTE]
.Note
====
@ -1048,93 +1028,6 @@ For most uses, the sRGB OETF is equivalent.
====
=== Extended sRGB OETF
[latexmath]
+++++++++++++++++++
\begin{aligned}
E & =
\begin{cases}
1.055 \times L^{1 \over 2.4} - 0.055 & \text{for}\ 0.0031308 \leq L \leq 7.5913 \\
12.92 \times L & \text{for}\ 0 \leq L < 0.0031308 \\
-f(-L) & \text{for}\ L < 0
\end{cases}
\end{aligned}
+++++++++++++++++++
[eq]#L# - luminance of image is within [eq]#[-0.6038, 7.5913]#.
[eq]#E# can be negative and/or > 1.
That is how extended sRGB specifies colors outside the standard sRGB gamut.
This means extended sRGB needs a floating point pixel format to cover the
intended color range.
=== SMPTE 170M OETF
[latexmath]
+++++++++++++++++++
\begin{aligned}
E & =
\begin{cases}
\alpha \times L^{0.45} - (1 - \alpha) & \text{for}\ \beta \leq L \leq 1 \\
4.5 \times L & \text{for}\ 0 \leq L < \beta
\end{cases}
\end{aligned}
+++++++++++++++++++
latexmath:[\alpha = 1.099 \text{ and } \beta = 0.018 \text{ for 10-bits and
less per sample system (the values given in Rec.
709)}] +
latexmath:[\alpha = 1.0993 \text{ and } \beta = 0.0181 \text{ for 12-bits
per sample system}]
=== SMPTE ST2084 OETF (Inverse-EOTF)
[latexmath]
+++++++++++++++++++
\[
E = (\frac{c_1 + c_2 \times L^{m_1}}{1 + c_3 \times L^{m_1}})^{m_2}
\]
+++++++++++++++++++
where:
latexmath:[m_1 = 2610 / 4096 \times \frac{1}{4} = 0.1593017578125] +
latexmath:[m_2 = 2523 / 4096 \times 128 = 78.84375] +
latexmath:[c_1 = 3424 / 4096 = 0.8359375 = c3 - c2 + 1] +
latexmath:[c_2 = 2413 / 4096 \times 32 = 18.8515625] +
latexmath:[c_3 = 2392 / 4096 \times 32 = 18.6875] +
=== Hybrid Log Gamma (HLG)
[latexmath]
+++++++++++++++++++
\begin{aligned}
E & =
\begin{cases}
r \sqrt{L} & \text{for}\ 0 \leq L \leq 1 \\
a \times \ln(L - b) + c & \text{for}\ 1 < L
\end{cases}
\end{aligned}
+++++++++++++++++++
[eq]#_L_# -- is the signal normalized by the reference white level +
[eq]#_r_# -- is the reference white level and has a signal value of 0.5 +
[eq]#_a_ = 0.17883277# and [eq]#_b_ = 0.28466892# and [eq]#_c_ = 0.55991073#
=== Adobe RGB (1998) OETF
latexmath:[E = L^\frac{1}{2.19921875}]
=== Gamma 2.6 OETF
latexmath:[E = L^\frac{1}{2.6}]
An implementation supporting this extension indicates support for these
color spaces via slink:VkSurfaceFormatKHR structures returned from
flink:vkGetPhysicalDeviceSurfaceFormatsKHR.
@ -1142,12 +1035,6 @@ flink:vkGetPhysicalDeviceSurfaceFormatsKHR.
Specifying the supported surface color space when calling
flink:vkCreateSwapchainKHR will create a swapchain using that color space.
Vulkan requires that all implementations support the sRGB Opto-Electrical
Transfer Function (OETF) and Electro-optical transfer function (EOTF) when
using an SRGB pixel format.
Other transfer functions, such as SMPTE 170M, must: not be performed by the
implementation, but can: be performed by the application shader.
endif::VK_EXT_swapchain_colorspace[]
If pname:pSurfaceFormats includes an entry whose value for pname:colorSpace

View File

@ -1829,6 +1829,38 @@ include::{generated}/validity/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesE
endif::VK_EXT_scalar_block_layout[]
ifdef::VK_KHR_uniform_buffer_standard_layout[]
[open,refpage='VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR',desc='Structure indicating support for std430-like packing in uniform buffers',type='structs']
--
The sname:VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR structure
is defined as:
include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.txt[]
The members of the
sname:VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR structure
describe the following features:
* [[features-uniformBufferStandardLayout]]
pname:uniformBufferStandardLayout indicates that the implementation
supports the same layouts for uniform buffers as for storage and other
kinds of buffers.
See <<interfaces-resources-standard-layout,Standard Buffer Layout>>.
If the sname:VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR
structure is included in the pname:pNext chain of
slink:VkPhysicalDeviceFeatures2KHR, it is filled with values indicating
whether the feature is supported.
sname:VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR can: also be
used in the pname:pNext chain of slink:VkDeviceCreateInfo to enable this
feature.
include::{generated}/validity/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.txt[]
--
endif::VK_KHR_uniform_buffer_standard_layout[]
ifdef::VK_EXT_depth_clip_enable[]
[open,refpage='VkPhysicalDeviceDepthClipEnableFeaturesEXT',desc='Structure indicating support for explicit enable of depth clip',type='structs']
@ -2051,6 +2083,31 @@ include::{generated}/validity/structs/VkPhysicalDeviceHostQueryResetFeaturesEXT.
endif::VK_EXT_host_query_reset[]
ifdef::VK_NV_coverage_reduction_mode[]
[open,refpage='VkPhysicalDeviceCoverageReductionModeFeaturesNV',desc='Structure describing the coverage reduction mode features that can be supported by an implementation',type='structs']
--
The sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
defined as:
include::{generated}/api/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.txt[]
The members of the sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV
structure describe the following features:
* [[features-features-coverageReductionMode]] pname:coverageReductionMode
indicates whether the implementation supports coverage reduction modes.
See <<fragops-coverage-reduction, Coverage Reduction>>.
If the sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it
is filled with values indicating whether the feature is supported.
sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV can: also be used in
the pname:pNext chain of slink:VkDeviceCreateInfo to enable the feature.
include::{generated}/validity/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.txt[]
--
endif::VK_NV_coverage_reduction_mode[]
[[features-requirements]]
== Feature Requirements
@ -2060,6 +2117,9 @@ All Vulkan graphics implementations must: support the following features:
ifdef::VK_VERSION_1_1[]
* <<features-multiview, pname:multiview>>
endif::VK_VERSION_1_1[]
ifdef::VK_KHR_uniform_buffer_standard_layout[]
* <<features-uniformBufferStandardLayout,pname:uniformBufferStandardLayout>>
endif::VK_KHR_uniform_buffer_standard_layout[]
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
* <<features-variablePointersStorageBuffer,
pname:variablePointersStorageBuffer>>, if the

View File

@ -1282,6 +1282,7 @@ endif::VK_EXT_fragment_density_map[]
ifdef::VK_NV_framebuffer_mixed_samples[]
ifndef::VK_NV_coverage_reduction_mode[]
When the `VK_NV_framebuffer_mixed_samples` extension is enabled, if the
pipeline's
slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples is
@ -1301,6 +1302,143 @@ samples.
The reduced color sample mask is computed such that the bit for each color
sample is 1 if any of the associated bits in the fragment's coverage is on,
and 0 otherwise.
endif::VK_NV_coverage_reduction_mode[]
ifdef::VK_NV_coverage_reduction_mode[]
[open,refpage='VkPipelineCoverageReductionStateCreateInfoNV',desc='Structure specifying parameters controlling coverage reduction',type='structs']
--
If the pipeline's
slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples is
greater than the slink:VkAttachmentDescription::pname:samples of the color
attachments in the subpass, then the fragment's coverage is reduced from
pname:rasterizationSamples bits to a color sample mask with
slink:VkAttachmentDescription::pname:samples bits.
When the `VK_NV_coverage_reduction_mode` extension is enabled, the pipeline
state controlling coverage reduction is specified through the members of the
sname:VkPipelineCoverageReductionStateCreateInfoNV structure.
The sname:VkPipelineCoverageReductionStateCreateInfoNV structure is defined
as:
include::{generated}/api/structs/VkPipelineCoverageReductionStateCreateInfoNV.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:coverageReductionMode controls how the _color sample mask_ is
generated from the coverage mask and is of type
elink:VkCoverageReductionModeNV.
If this structure is not present, the default coverage reduction mode is
inferred as follows:
* If the `VK_NV_framebuffer_mixed_samples` extension is enabled, then it
is as if the pname:coverageReductionMode is
ename:VK_COVERAGE_REDUCTION_MODE_MERGE_NV.
* If the `VK_AMD_mixed_attachment_samples` extension is enabled, then it
is as if the pname:coverageReductionMode is
ename:VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV.
* If both `VK_NV_framebuffer_mixed_samples` and
`VK_AMD_mixed_attachment_samples` are enabled, then the default coverage
reduction mode is implementation-dependent.
include::{generated}/validity/structs/VkPipelineCoverageReductionStateCreateInfoNV.txt[]
--
[open,refpage='VkPipelineCoverageReductionStateCreateFlagsNV',desc='Reserved for future use',type='flags']
--
include::{generated}/api/flags/VkPipelineCoverageReductionStateCreateFlagsNV.txt[]
tname:VkPipelineCoverageReductionStateCreateFlagsNV is a bitmask type for
setting a mask, but is currently reserved for future use.
--
[open,refpage='VkCoverageReductionModeNV',desc='Specify the coverage reduction mode',type='enums']
--
Possible values of
slink:VkPipelineCoverageReductionStateCreateInfoNV::pname:coverageReductionMode,
specifying how the coverage mask is reduced to _color sample mask_, are:
include::{generated}/api/enums/VkCoverageReductionModeNV.txt[]
* ename:VK_COVERAGE_REDUCTION_MODE_MERGE_NV: In this mode, there is an
implementation-dependent association of each raster sample to a color
sample.
The reduced color sample mask is computed such that the bit for each
color sample is 1 if any of the associated bits in the fragment's
coverage is on, and 0 otherwise.
* ename:VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV: In this mode, only the
first [eq]#M# raster samples are associated with the color samples such
that raster sample [eq]#i# maps to color sample [eq]#i#, where [eq]#M#
is the number of color samples.
--
If the `VK_NV_coverage_reduction_mode` extension is not enabled, there is an
implementation-dependent association of raster samples to color samples.
The reduced color sample mask is computed such that the bit for each color
sample is 1 if any of the associated bits in the fragment's coverage is on,
and 0 otherwise.
[open,refpage='vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV',desc='Query supported sample count combinations',type='protos']
--
To query the set of mixed sample combinations of coverage reduction mode,
rasterization samples and color, depth, stencil attachment sample counts
that are supported by a physical device, call:
include::{generated}/api/protos/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.txt[]
* pname:physicalDevice is the physical device from which to query the set
of combinations.
* pname:pCombinationCount is a pointer to an integer related to the number
of combinations available or queried, as described below.
* pname:pCombinations is either `NULL` or a pointer to an array of
slink:VkFramebufferMixedSamplesCombinationNV values, indicating the
supported combinations of coverage reduction mode, rasterization
samples, and color, depth, stencil attachment sample counts.
If pname:pCombinations is `NULL`, then the number of supported combinations
for the given pname:physicalDevice is returned in pname:pCombinationCount.
Otherwise, pname:pCombinationCount must: point to a variable set by the user
to the number of elements in the pname:pCombinations array, and on return
the variable is overwritten with the number of values actually written to
pname:pCombinations.
If the value of pname:pCombinationCount is less than the number of
combinations supported for the given pname:physicalDevice, at most
pname:pCombinationCount values will be written pname:pCombinations and
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
that not all the supported values were returned.
include::{generated}/validity/protos/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.txt[]
--
[open,refpage='VkFramebufferMixedSamplesCombinationNV',desc='Structure specifying a supported sample count combination',type='structs']
--
The sname:VkFramebufferMixedSamplesCombinationNV structure is defined as:
include::{generated}/api/structs/VkFramebufferMixedSamplesCombinationNV.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:coverageReductionMode specifies the coverage reduction mode and is
of type elink:VkCoverageReductionModeNV.
* pname:rasterizationSamples specifies the number of rasterization samples
in the supported combination.
* pname:depthStencilSamples specifies the number of samples in the depth
stencil attachment in the supported combination.
A value of 0 indicates the combination does not have a depth stencil
attachment.
* pname:colorSamples specifies the number of color samples in a color
attachment in the supported combination.
A value of 0 indicates the combination does not have a color attachment.
include::{generated}/validity/structs/VkFramebufferMixedSamplesCombinationNV.txt[]
--
endif::VK_NV_coverage_reduction_mode[]
[[fragops-coverage-modulation]]
=== Coverage Modulation
@ -1312,7 +1450,7 @@ As part of coverage reduction, fragment color values can: also be modulated
(multiplied) by a value that is a function of fraction of covered
rasterization samples associated with that color sample.
Pipeline state controlling coverage reduction is specified through the
Pipeline state controlling coverage modulation is specified through the
members of the sname:VkPipelineCoverageModulationStateCreateInfoNV
structure.
@ -1390,7 +1528,7 @@ tname:VkPipelineCoverageModulationStateCreateFlagsNV is a bitmask type for
setting a mask, but is currently reserved for future use.
--
[open,refpage='VkCoverageModulationModeNV',desc='Specify the discard rectangle mode',type='enums']
[open,refpage='VkCoverageModulationModeNV',desc='Specify the coverage modulation mode',type='enums']
--
Possible values of
slink:VkPipelineCoverageModulationStateCreateInfoNV::pname:coverageModulationMode,

View File

@ -927,8 +927,8 @@ declaration order.
There are different alignment requirements depending on the specific
resources and on the features enabled on the device.
The _scalar alignment_ of the type of an code:OpTypeStruct member of is
defined recursively as follows:
The _scalar alignment_ of the type of an code:OpTypeStruct member is defined
recursively as follows:
* A scalar of size [eq]#N# has a scalar alignment of [eq]#N#.
* A vector or matrix type has a scalar alignment equal to that of its
@ -991,7 +991,14 @@ endif::VK_EXT_scalar_block_layout[]
ifdef::VK_VERSION_1_1,VK_KHR_relaxed_block_layout[]
. All vectors must: be aligned according to their scalar alignment.
endif::VK_VERSION_1_1,VK_KHR_relaxed_block_layout[]
. Any member of an code:OpTypeStruct with a storage class of code:Uniform and a
ifdef::VK_KHR_uniform_buffer_standard_layout[]
. If the pname:uniformBufferStandardLayout feature is not enabled on the
device, then any
endif::VK_KHR_uniform_buffer_standard_layout[]
ifndef::VK_KHR_uniform_buffer_standard_layout[]
. Any
endif::VK_KHR_uniform_buffer_standard_layout[]
member of an code:OpTypeStruct with a storage class of code:Uniform and a
decoration of code:Block must: be aligned according to its extended
alignment.
. Every other member must: be aligned according to its base alignment.

View File

@ -876,6 +876,16 @@ ifdef::VK_NV_framebuffer_mixed_samples[]
pname:rasterizationSamples member of pname:pMultisampleState must: be
greater than or equal to the sample count for those subpass attachments
endif::VK_NV_framebuffer_mixed_samples[]
ifdef::VK_NV_coverage_reduction_mode[]
* [[VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722]]
If the `VK_NV_coverage_reduction_mode` extension is enabled, the
coverage reduction mode specified by
slink:VkPipelineCoverageReductionStateCreateInfoNV::pname:coverageReductionMode,
the pname:rasterizationSamples member of pname:pMultisampleState and the
sample counts for the color and depth/stencil attachments (if the
subpass has them) must: be a valid combination returned by
fname:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
endif::VK_NV_coverage_reduction_mode[]
* [[VUID-VkGraphicsPipelineCreateInfo-subpass-00758]]
If pname:subpass does not use any color and/or depth/stencil
attachments, then the pname:rasterizationSamples member of

View File

@ -253,6 +253,18 @@ sample count of the color attachments, if present.
endif::VK_NV_framebuffer_mixed_samples[]
ifdef::VK_NV_coverage_reduction_mode[]
If the `VK_NV_coverage_reduction_mode` extension is enabled, the coverage
reduction mode specified by
slink:VkPipelineCoverageReductionStateCreateInfoNV::pname:coverageReductionMode,
the pname:rasterizationSamples member of pname:pMultisampleState and the
sample counts for the color and depth/stencil attachments (if present) must:
be a valid combination returned by
fname:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
endif::VK_NV_coverage_reduction_mode[]
If the subpass for which this pipeline is being created does not use color
or depth/stencil attachments, pname:rasterizationSamples must: follow the
rules for a <<renderpass-noattachments, zero-attachment subpass>>.

View File

@ -148,12 +148,17 @@ endif::VK_EXT_transform_feedback[]
--
[[queries-operation]]
== Query Operation
The operation of queries is controlled by the commands
flink:vkCmdBeginQuery, flink:vkCmdEndQuery, flink:vkCmdResetQueryPool,
flink:vkCmdCopyQueryPoolResults, and flink:vkCmdWriteTimestamp.
flink:vkCmdBeginQuery, flink:vkCmdEndQuery,
ifdef::VK_EXT_transform_feedback[]
flink:vkCmdBeginQueryIndexedEXT, flink:vkCmdEndQueryIndexedEXT,
endif::VK_EXT_transform_feedback[]
flink:vkCmdResetQueryPool, flink:vkCmdCopyQueryPoolResults, and
flink:vkCmdWriteTimestamp.
In order for a sname:VkCommandBuffer to record query management commands,
the queue family for which its sname:VkCommandPool was created must: support
@ -586,10 +591,10 @@ ifdef::VK_VERSION_1_1[]
endif::VK_VERSION_1_1[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-vkCmdEndQueryIndexedEXT-query-02345]]
If fname:vkCmdEndQuery is called within a render pass instance, the sum
of pname:query and the number of bits set in the current subpass's view
mask must: be less than or equal to the number of queries in
pname:queryPool
If fname:vkCmdEndQueryIndexedEXT is called within a render pass
instance, the sum of pname:query and the number of bits set in the
current subpass's view mask must: be less than or equal to the number of
queries in pname:queryPool
endif::VK_VERSION_1_1,VK_KHR_multiview[]
* [[VUID-vkCmdEndQueryIndexedEXT-queryType-02346]]
If the pname:queryType used to create pname:queryPool was
@ -600,6 +605,11 @@ endif::VK_VERSION_1_1,VK_KHR_multiview[]
If the pname:queryType used to create pname:queryPool was not
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT the pname:index must:
be zero
* [[VUID-vkCmdEndQueryIndexedEXT-queryType-02723]]
If the pname:queryType used to create pname:queryPool was
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT pname:index must:
equal the pname:index used to begin the query
****
include::{generated}/validity/protos/vkCmdEndQueryIndexedEXT.txt[]

View File

@ -2850,11 +2850,10 @@ pname:subresource.aspectMask provided:
implicit pname:usage is equal to
slink:VkImageStencilUsageCreateInfoEXT::pname:stencilUsage.
* If pname:aspectMask includes only ename:VK_IMAGE_ASPECT_DEPTH_BIT, the
implicit pname:usage is equal to
slink:VkImageCreateInfo::pname:stencilUsage.
implicit pname:usage is equal to slink:VkImageCreateInfo::pname:usage.
* If both aspects are included in pname:aspectMask, the implicit
pname:usage is equal to the intersection of
slinkVkImageCreateInfo::pname:usage and
slink:VkImageCreateInfo::pname:usage and
slink:VkImageStencilUsageCreateInfoEXT::pname:stencilUsage.
endif::VK_EXT_separate_stencil_usage[]
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
@ -3226,14 +3225,16 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
pname:subresourceRange::pname:layerCount# must: be less than or equal to
the pname:arrayLayers specified in slink:VkImageCreateInfo when
pname:image was created
* [[VUID-VkImageViewCreateInfo-image-01484]]
* [[VUID-VkImageViewCreateInfo-image-02724]]
If pname:image is a 3D image created with
ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT set, and pname:viewType is
ename:VK_IMAGE_VIEW_TYPE_2D or ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY,
pname:subresourceRange::pname:baseArrayLayer must: be less than the
pname:extent.depth specified in slink:VkImageCreateInfo when pname:image
was created
* [[VUID-VkImageViewCreateInfo-subresourceRange-01485]]
depth computed from pname:baseMipLevel and pname:extent.depth specified
in slink:VkImageCreateInfo when pname:image was created, according to
the formula defined in <<resources-image-miplevel-sizing,Image Miplevel
Sizing>>.
* [[VUID-VkImageViewCreateInfo-subresourceRange-02725]]
If pname:subresourceRange::pname:layerCount is not
ename:VK_REMAINING_ARRAY_LAYERS, pname:image is a 3D image created with
ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT set, and pname:viewType is
@ -3241,8 +3242,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
pname:subresourceRange::pname:layerCount must: be non-zero and
[eq]#pname:subresourceRange::pname:baseArrayLayer {plus}
pname:subresourceRange::pname:layerCount# must: be less than or equal to
the pname:extent.depth specified in slink:VkImageCreateInfo when
pname:image was created
the depth computed from pname:baseMipLevel and pname:extent.depth
specified in slink:VkImageCreateInfo when pname:image was created,
according to the formula defined in
<<resources-image-miplevel-sizing,Image Miplevel Sizing>>.
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
// The VU below comes in 3 alternate versions when the two extensions
// are enabled, or only one is.
@ -3412,7 +3415,7 @@ ifdef::VK_EXT_fragment_density_map[]
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
endif::VK_EXT_fragment_density_map[]
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
ifndef::VK_EXT_separate_stencil_usage[]
* [[VUID-VkImageViewCreateInfo-pNext-02661]]
If the pname:pNext chain includes an instance of
@ -3448,7 +3451,7 @@ ifdef::VK_EXT_separate_stencil_usage[]
must: not include any bits that were not set in the pname:usage member
of the slink:VkImageCreateInfo structure used to create pname:image
endif::VK_EXT_separate_stencil_usage[]
endif::VK_VERSION_1_1,VK_KHR_maintenance2
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
****
include::{generated}/validity/structs/VkImageViewCreateInfo.txt[]
@ -4609,6 +4612,19 @@ ifndef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
dedicated for a specific buffer or image
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
endif::VK_NV_dedicated_allocation[]
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
* [[VUID-vkBindBufferMemory-memory-02726]]
If pname:memory was allocated with
slink:VkExportMemoryAllocateInfo::pname:handleTypes not equal to `0`, at
least one handle type it contained must also have been set in
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when
pname:buffer was created.
* [[VUID-vkBindBufferMemory-memory-02727]]
If pname:memory was created by a memory import operation, the external
handle type of the imported memory must also have been set in
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when
pname:buffer was created.
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
****
include::{generated}/validity/protos/vkBindBufferMemory.txt[]
@ -4926,6 +4942,19 @@ ifndef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
dedicated for a specific buffer or image
endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[]
endif::VK_NV_dedicated_allocation[]
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
* [[VUID-vkBindImageMemory-memory-02728]]
If pname:memory was allocated with
slink:VkExportMemoryAllocateInfo::pname:handleTypes not equal to `0`, at
least one handle type it contained must also have been set in
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
pname:image was created.
* [[VUID-vkBindImageMemory-memory-02729]]
If pname:memory was created by a memory import operation, the external
handle type of the imported memory must also have been set in
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
pname:image was created.
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
****
include::{generated}/validity/protos/vkBindImageMemory.txt[]

View File

@ -1367,6 +1367,21 @@ the binding range must: be within the range
* [[VUID-VkSparseMemoryBind-size-01102]]
pname:size must: be less than or equal to the size of pname:memory minus
pname:memoryOffset
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
* [[VUID-VkSparseMemoryBind-memory-02730]]
If pname:memory was created with
slink:VkExportMemoryAllocateInfo::pname:handleTypes not equal to `0`, at
least one handle type it contained must also have been set in
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes or
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when the
resource was created.
* [[VUID-VkSparseMemoryBind-memory-02731]]
If pname:memory was created by a memory import operation, the external
handle type of the imported memory must also have been set in
slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes or
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when the
resource was created.
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
****
include::{generated}/validity/structs/VkSparseMemoryBind.txt[]
@ -1572,6 +1587,19 @@ include::{generated}/api/structs/VkSparseImageMemoryBind.txt[]
pname:extent.depth must: either be a multiple of the sparse image block
depth of the image, or else [eq]#(pname:extent.depth {plus}
pname:offset.z)# must: equal the depth of the image subresource
ifdef::VK_VERSION_1_1,VK_KHR_external_memory[]
* [[VUID-VkSparseImageMemoryBind-memory-02732]]
If pname:memory was created with
slink:VkExportMemoryAllocateInfo::pname:handleTypes not equal to `0`, at
least one handle type it contained must also have been set in
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when the image
was created.
* [[VUID-VkSparseImageMemoryBind-memory-02733]]
If pname:memory was created by a memory import operation, the external
handle type of the imported memory must also have been set in
slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when
pname:image was created.
endif::VK_VERSION_1_1,VK_KHR_external_memory[]
****
include::{generated}/validity/structs/VkSparseImageMemoryBind.txt[]

View File

@ -17,8 +17,9 @@
# Base class for working-group-specific style conventions,
# used in generation.
from abc import ABC, abstractmethod
from abc import ABCMeta, abstractmethod
ABC = ABCMeta('ABC', (object,), {})
class ConventionsBase(ABC):
"""WG-specific conventions."""

View File

@ -64,9 +64,11 @@ endPara = re.compile(r'^( *|\[.*\]|//.*|<<<<|:.*|[a-z]+::.*|\+|.*::)$')
# Special case of markup ending a paragraph, used to track the current
# command/structure. This allows for either OpenXR or Vulkan API path
# conventions, and uses the file suffix defined by the API conventions.
includePat = re.compile(r'^include::(\.\./)+(generated/+)?api/+(?P<type>\w+)/(?P<name>\w+)'
+ conventions.file_suffix + r'\[\]')
# conventions. Nominally it should use the file suffix defined by the API
# conventions (conventions.file_suffix), except that XR uses '.txt' for
# generated API include files, not '.adoc' like its other includes.
includePat = re.compile(
r'include::(?P<directory_traverse>((../){1,4}|\{INCS-VAR\}/|\{generated\}/)(generated/)?)(?P<generated_type>[\w]+)/(?P<category>\w+)/(?P<entity_name>[^./]+).txt[\[][\]]')
# Find the first pname: pattern in a Valid Usage statement
pnamePat = re.compile(r'pname:(?P<param>\w+)')
@ -572,9 +574,9 @@ def reflowFile(filename, args):
matches = includePat.search(line)
if matches is not None:
include_type = matches.group('type')
include_type = matches.group('category')
if include_type in ('protos', 'structs'):
state.apiName = matches.group('name')
state.apiName = matches.group('entity_name')
elif endParaContinue.match(line):
# For now, always just end the paragraph.

View File

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

View File

@ -483,7 +483,7 @@ Changes for extensions include (but may not be limited to) the following:
* Extensions usually make significant additions and changes to the Vulkan
specification.
They often add an entirely new chapter, or a new section of an existing
chapter, defining the new functions, structures, and enumerants.
chapter, defining the new commands, structures, and enumerants.
For example, in the case of `VK_EXT_debug_marker`, it adds a new section
of the "`Debugging`" chapter in `chapters/debugging.txt`, by including
in that file:
@ -781,6 +781,23 @@ enums found with the same value`" that will help identify this problem.
====
[[extensions-new-flags-types]]
== New Flags and Bitmask Types
When an extension introduces a new flags (etext:*Flags) type, it should also
introduce a corresponding new bitmask (etext:*FlagBits) type.
The flags type contains zero more more bits from the bitmask, and is used to
specify sets of bits for commands or structures.
In some cases, a new flags type will be defined with no individual bits yet
specified.
This usage occurs when the flags are intended for future expansion.
In this case, even though the corresponding bitmask type is not yet useful,
the (empty) bitmask type should be defined in `vk.xml`.
The empty bitmask type and corresponding flags type should be given
boilerplate definitions in the specification.
== Required Extension Tokens
In addition to any tokens specific to the functionality of an extension, all

View File

@ -150,6 +150,8 @@ include::style/vuid.txt[]
= Revision History
* 2019-05-09 - Specify rules for defining <<extensions-new-flags-types, new
bitmask and flags types (internal issue 1649).
* 2019-01-06 - Add details on <<extensions-reserving-bitmask-values,
Reserving Bitmask Values>> (internal issue 1411).
* 2018-11-19 - Add details to the <<extensions-documenting-extensions,

View File

@ -153,7 +153,7 @@ server.
<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>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 107</type>
#define <name>VK_HEADER_VERSION</name> 108</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -318,6 +318,7 @@ typedef void <name>CAMetalLayer</name>;
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineDiscardRectangleStateCreateFlagsEXT</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageToColorStateCreateFlagsNV</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageModulationStateCreateFlagsNV</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkPipelineCoverageReductionStateCreateFlagsNV</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkValidationCacheCreateFlagsEXT</name>;</type>
<type requires="VkDebugUtilsMessageSeverityFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageSeverityFlagsEXT</name>;</type>
<type requires="VkDebugUtilsMessageTypeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkDebugUtilsMessageTypeFlagsEXT</name>;</type>
@ -479,6 +480,7 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkPointClippingBehavior" category="enum"/>
<type category="enum" name="VkPointClippingBehaviorKHR" alias="VkPointClippingBehavior"/>
<type name="VkCoverageModulationModeNV" category="enum"/>
<type name="VkCoverageReductionModeNV" category="enum"/>
<type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
<type name="VkShaderInfoTypeAMD" category="enum"/>
<type name="VkQueueGlobalPriorityEXT" category="enum"/>
@ -3738,6 +3740,11 @@ typedef void <name>CAMetalLayer</name>;
<member>const <type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>supportsProtected</name><comment>Represents if surface can be protected</comment></member>
</type>
<type category="struct" name="VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR"><type>VkStructureType</type> <name>sType</name></member>
<member><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>uniformBufferStandardLayout</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceDepthClipEnableFeaturesEXT" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member><type>void</type>* <name>pNext</name><comment>Pointer to next structure</comment></member>
@ -3865,6 +3872,25 @@ typedef void <name>CAMetalLayer</name>;
<member>const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkHeadlessSurfaceCreateFlagsEXT</type> <name>flags</name></member>
</type>
<type category="struct" name="VkPhysicalDeviceCoverageReductionModeFeaturesNV" structextends="VkPhysicalDeviceFeatures2,VkDeviceCreateInfo">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"><type>VkStructureType</type><name>sType</name></member>
<member noautovalidity="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>coverageReductionMode</name></member>
</type>
<type category="struct" name="VkPipelineCoverageReductionStateCreateInfoNV" structextends="VkPipelineMultisampleStateCreateInfo">
<member values="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkPipelineCoverageReductionStateCreateFlagsNV</type> <name>flags</name></member>
<member><type>VkCoverageReductionModeNV</type> <name>coverageReductionMode</name></member>
</type>
<type category="struct" name="VkFramebufferMixedSamplesCombinationNV" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"><type>VkStructureType</type> <name>sType</name></member>
<member><type>void</type>* <name>pNext</name></member>
<member><type>VkCoverageReductionModeNV</type> <name>coverageReductionMode</name></member>
<member><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name></member>
<member><type>VkSampleCountFlags</type> <name>depthStencilSamples</name></member>
<member><type>VkSampleCountFlags</type> <name>colorSamples</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@ -4934,6 +4960,10 @@ typedef void <name>CAMetalLayer</name>;
<enum value="2" name="VK_COVERAGE_MODULATION_MODE_ALPHA_NV"/>
<enum value="3" name="VK_COVERAGE_MODULATION_MODE_RGBA_NV"/>
</enums>
<enums name="VkCoverageReductionModeNV" type="enum">
<enum value="0" name="VK_COVERAGE_REDUCTION_MODE_MERGE_NV"/>
<enum value="1" name="VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV"/>
</enums>
<enums name="VkValidationCacheHeaderVersionEXT" type="enum">
<enum value="1" name="VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"/>
</enums>
@ -7337,6 +7367,12 @@ typedef void <name>CAMetalLayer</name>;
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
</command>
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</name></proto>
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
<param optional="false,true"><type>uint32_t</type>* <name>pCombinationCount</name></param>
<param optional="true" len="pCombinationCount"><type>VkFramebufferMixedSamplesCombinationNV</type>* <name>pCombinations</name></param>
</command>
</commands>
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
@ -8054,6 +8090,7 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_ANDROID_native_buffer" number="11" type="device" author="ANDROID" platform="android" contact="Jesse Hall @critsec" supported="disabled">
<require>
<comment>VK_ANDROID_native_buffer is used between the Android Vulkan loader and drivers to implement the WSI extensions. It isn't exposed to applications and uses types that aren't part of Android's stable public API, so it is left disabled to keep it out of the standard Vulkan headers.</comment>
<enum value="5" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
<enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>
<enum value="&quot;VK_ANDROID_native_buffer&quot;" name="VK_ANDROID_NATIVE_BUFFER_NAME"/>
@ -8583,9 +8620,6 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkDeviceGroupSwapchainCreateInfoKHR"/>
<command name="vkAcquireNextImage2KHR"/>
</require>
<require extension="VK_EXT_full_screen_exclusive">
<command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
</require>
</extension>
<extension name="VK_EXT_validation_flags" number="62" type="instance" author="GOOGLE" contact="Tobin Ehlis @tobine" supported="vulkan">
<require>
@ -9118,11 +9152,11 @@ typedef void <name>CAMetalLayer</name>;
</extension>
<extension name="VK_EXT_swapchain_colorspace" number="105" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" requires="VK_KHR_surface" supported="vulkan">
<require>
<enum value="3" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"/>
<enum value="4" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_swapchain_colorspace&quot;" name="VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME"/>
<enum offset="1" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"/>
<enum offset="2" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"/>
<enum offset="3" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"/>
<enum offset="3" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"/>
<enum offset="4" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"/>
<enum offset="5" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_LINEAR_EXT"/>
<enum offset="6" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_BT709_NONLINEAR_EXT"/>
@ -9134,6 +9168,7 @@ typedef void <name>CAMetalLayer</name>;
<enum offset="12" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"/>
<enum offset="13" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_PASS_THROUGH_EXT"/>
<enum offset="14" extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"/>
<enum extends="VkColorSpaceKHR" name="VK_COLOR_SPACE_DCI_P3_LINEAR_EXT" alias="VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT" comment="Deprecated name for backwards compatibility"/>
</require>
</extension>
<extension name="VK_EXT_hdr_metadata" number="106" type="device" requires="VK_KHR_swapchain" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney-g" supported="vulkan">
@ -10665,10 +10700,19 @@ typedef void <name>CAMetalLayer</name>;
<command name="vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"/>
</require>
</extension>
<extension name="VK_NV_extension_251" number="251" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="disabled">
<extension name="VK_NV_coverage_reduction_mode" number="251" requires="VK_NV_framebuffer_mixed_samples" type="device" author="NV" contact="Kedarnath Thangudu @kthangudu" supported="vulkan">
<require>
<enum value="0" name="VK_NV_EXTENSION_251_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_251&quot;" name="VK_NV_EXTENSION_251_EXTENSION_NAME"/>
<enum value="1" name="VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION"/>
<enum value="&quot;VK_NV_coverage_reduction_mode&quot;" name="VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"/>
<type name="VkPhysicalDeviceCoverageReductionModeFeaturesNV"/>
<type name="VkPipelineCoverageReductionStateCreateInfoNV"/>
<type name="VkPipelineCoverageReductionStateCreateFlagsNV"/>
<type name="VkCoverageReductionModeNV"/>
<type name="VkFramebufferMixedSamplesCombinationNV"/>
<command name="vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"/>
</require>
</extension>
<extension name="VK_EXT_extension_252" number="252" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="disabled">
@ -10685,10 +10729,12 @@ typedef void <name>CAMetalLayer</name>;
<type name="VkPhysicalDeviceYcbcrImageArraysFeaturesEXT"/>
</require>
</extension>
<extension name="VK_EXT_extension_254" number="254" author="EXT" contact="Graeme Leese @gnl21" supported="disabled">
<extension name="VK_KHR_uniform_buffer_standard_layout" number="254" requires="VK_KHR_get_physical_device_properties2" type="device" author="KHR" contact="Graeme Leese @gnl21" supported="vulkan">
<require>
<enum value="1" name="VK_EXT_EXTENSION_254_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_254&quot;" name="VK_EXT_EXTENSION_254_EXTENSION_NAME"/>
<enum value="1" name="VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_uniform_buffer_standard_layout&quot;" name="VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME"/>
<type name="VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR"/>
</require>
</extension>
<extension name="VK_EXT_extension_255" number="255" author="EXT" contact="Jesse Hall @jessehall" supported="disabled">
@ -10715,6 +10761,9 @@ typedef void <name>CAMetalLayer</name>;
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"/>
<type name="VkSurfaceFullScreenExclusiveWin32InfoEXT"/>
</require>
<require extension="VK_KHR_device_group">
<command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
</require>
<require feature="VK_VERSION_1_1">
<command name="vkGetDeviceGroupSurfacePresentModes2EXT"/>
</require>
@ -10762,5 +10811,47 @@ typedef void <name>CAMetalLayer</name>;
<command name="vkResetQueryPoolEXT"/>
</require>
</extension>
<extension name="VK_GGP_extension_263" number="263" author="GGP" contact="Jean-Francois Roy @jfroy" supported="disabled">
<require>
<enum value="0" name="VK_GOOGLE_EXTENSION_263_SPEC_VERSION"/>
<enum value="&quot;VK_GGP_extension_263&quot;" name="VK_GOOGLE_EXTENSION_263_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_BRCM_extension_264" number="264" author="BRCM" contact="Graeme Leese @gnl21" supported="disabled">
<require>
<enum value="0" name="VK_BRCM_EXTENSION_264_SPEC_VERSION"/>
<enum value="&quot;VK_BRCM_extension_264&quot;" name="VK_BRCM_EXTENSION_264_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_BRCM_extension_265" number="265" author="BRCM" contact="Graeme Leese @gnl21" supported="disabled">
<require>
<enum value="0" name="VK_BRCM_EXTENSION_265_SPEC_VERSION"/>
<enum value="&quot;VK_BRCM_extension_265&quot;" name="VK_BRCM_EXTENSION_265_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_266" number="266" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_266_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_266&quot;" name="VK_EXT_extension_266"/>
</require>
</extension>
<extension name="VK_EXT_extension_267" number="267" type="device" author="EXT" contact="Piers Daniell @pdaniell-nv" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_267_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_267&quot;" name="VK_EXT_extension_267"/>
</require>
</extension>
<extension name="VK_KHR_extension_268" number="268" type="device" author="KHR" contact="Piers Daniell @pdaniell-nv" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_268_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_268&quot;" name="VK_EXT_extension_268"/>
</require>
</extension>
<extension name="VK_KHR_extension_269" number="269" type="device" author="KHR" contact="Josh Barczak @jbarczak" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_269_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_269&quot;" name="VK_KHR_extension_269"/>
</require>
</extension>
</extensions>
</registry>