Change log for April 22, 2016 Vulkan 1.0.11 spec update:

* Bump API patch number and header version number to 11 for this
    update.

Github Issues:

  * Clarify the WSI extension language by switching from the fuzzier
    "ownership" language to more-consistent "acquire" language (public
    issue 117).
  * Clarify that memory barriers apply to all commands in the dependency
    chains in the flink:vkGetRenderAreaGranularity command and the
    <<synchronization-execution-and-memory-dependencies,Execution And
    Memory Dependencies>> section (public issue 132).
  * Clarify that a queue family is a set of queues in the
    <<fundamentals-execmodel,Execution Model>> section (public issue
    166).
  * Removed requirement from valid usage language that
    VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
    issue 171).
  * Fix broken internal links, describe structures consistently, use
    consistent style for SPIR-V codewords, and tag normative terms that
    were missing asciidoc tags (public issue 183 and ancillary
    markup/normative language fixes).
  * Fix typos for slink:VkPhysicalDeviceLimits member names in
    slink:VkImageCreateInfo validity language (public issue 184).

Internal Issues:

  * Document that the requested patch version number specified as part
    of slink:VkApplicationInfo::pname:apiVersion is ignored when
    creating an instance (internal issue 176).
  * Clarify handling of extension structs in the
    <<fundamentals-validusageValid Usage>> section (internal issue 254).
  * Update required slink:VkImageFormatProperties::pname:maxMipLevels to
    be limited to the maximum allowed mipmap pyramid size corresponding
    to the actual maximum supported size for the format (internal issue
    256).
  * Modify the <<features-extentperimagetype,Allowed Extent Values Based
    On Image Type>> section so the allowed maximum extent is the maximum
    image dimension supported for each dimension of the type of texture
    being queried (internal issue 257).
  * Clarify in the <<spirvenv-module-validation,Validation Rules within
    a Module>> section that at least one of the code:LocalSize execution
    mode or code:WorkgroupSize decoration is required for each compute
    shader entry point in a shader module (internal issue 279).
  * Add validity rules for formats in flink:vkCmdClearColorImage and
    flink:vkCmdClearDepthStencilImage (internal issue 283).
  * Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
    an upper bound, and that it may not be possible to create an image
    anywhere near that size (internal issue 284).

Other Commits:

  * Fix various minor markup errors reported by validation scripts.
  * Change copyright from Khronos Free Use License to Apache 2.0 license
    on relevant script/XML/header files. This does not affect the
    specification source copyright.
This commit is contained in:
Jon Leech 2016-04-21 01:08:38 -07:00
parent 3b32b240f6
commit 6db51e9241
71 changed files with 941 additions and 893 deletions

View File

@ -11,6 +11,7 @@ February 16, 2016 - Vulkan 1.0 initial public release
-----------------------------------------------------
Change log for February 25, 2015 Vulkan 1.0.4 spec update:
* Bump API patch number from 3 to 4 for the first public update to the
spec. Add patch number to the spec title (this will be done
automatically from XML, later).
@ -67,9 +68,11 @@ Change log for February 25, 2015 Vulkan 1.0.4 spec update:
-----------------------------------------------------
Change log for March 4, 2016 Vulkan 1.0.5 spec update:
* Bump API patch number to 5 for this update.
Github Issues:
* Correctly describe slink:VkPhysicalDeviceProperties pname:deviceName
member as a string, not a pointer to a string. Also one typo fix for
"hetereogeneous" (public issue 4).
@ -130,6 +133,7 @@ Github Issues:
sname:VkVertexInputAttributeDescription numbers (public issue 72).
Internal Issues:
* Clarify the meaning of
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT in
elink:VkFormatFeatureFlagBits with respect to depth compare
@ -144,6 +148,7 @@ Internal Issues:
flink:vkEnumeratePhysicalDevices query (internal issue 163).
Other Commits:
* Add the VK_NV_glsl_shader extension definitions to the API.
* Update GL_KHR_vulkan_glsl with 1) origin_upper_left as default 2)
specialization array constant semantics.
@ -161,64 +166,49 @@ Github Issues:
* Define 'invocation group' for compute and graphics shaders. Cleanup
definition and use of 'workgroup', and add glossary entries (public
issue 1).
* Various minor editorial fixes (public issue 33).
* Clarify locations for block members in the
<<interfaces-iointerfaces-locations,Location Assignment>>
section (public issue 45).
* Editorial fixes for <<commandbuffer-allocation,Command Buffer
Allocation>> section (public issues 54, 59).
* Clarify behavior of depth test in the <<fragops-depth,Depth
Test&gt;&gt; section (public issues 80, 81).
* Clarify behavior of depth test in the <<fragops-depth,Depth Test>>
section (public issues 80, 81).
* Remove discussion of return codes from
flink:vkGetPhysicalDeviceSparseImageFormatProperties and
flink:vkGetImageSparseMemoryRequirements, which don't return values
(public issue 82).
* Allow flink:vkCmdDrawIndirect and flink:vkCmdDrawIndexedIndirect
pname:drawCount of 0, as well as 1, when the multiDrawIndirect
feature is not supported (public issue 88).
* Remove confusing wording in the <<features-limits,Limits>>
section describing the slink:VkPhysicalDeviceLimits
pname:minTexelBufferOffsetAlignment,
pname:minUniformBufferOffsetAlignment, and
pname:minStorageBufferOffsetAlignment members as both minimums and
maximums (public issue 91).
* Clarified that only the RGB components should be affected in places
where sRGB is referred to in the spec, such as ASTC formats. Minor
re-wording to avoid "color space" when actively incorrect, now that
we refer to the Data Format Spec which actually makes a distinction
between color space and transfer function (public issue 94).
* Treat pname:pPropertyCount == 0 consistently in
flink:vkEnumerateInstanceLayerProperties and
flink:vkEnumerateDeviceLayerProperties (public issue 99)
* Cleanup minor editorial issues in chapters 14-17 (public issue 100).
* Clarify definition of flink:vkEnumerateInstanceExtensionProperties
and flink:vkEnumerateDeviceExtensionProperties (public issue 101).
* Define the flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties pname:pLayerName
parameter to be a pointer to a null-terminated UTF-8 string (public
issue 101).
* Rearrange "Missing information" references in mandatory format
tables (public issue 101).
* Clarify that the enumerated extensions returned by
flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties will only include
extensions provided by the platform or extensions implemented in
implicitly enabled layers (public issue 101).
* Miscellaneous editorial fixes. Include the Vulkan spec patch number
in the PDF title. Fix label on <<fig-non-strict-lines,Non
strict lines>> diagram. Use more easily distinguished symbols in
@ -231,7 +221,6 @@ Github Issues:
Internal Issues:
* Fixed excessive spacing in tables in XHTML (internal issue 18).
* Clarify that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
applies to secondary command buffers. Previously spec only referred
to the members of pname:pCommandBuffers being affected by this bit.
@ -240,37 +229,30 @@ Internal Issues:
also applies to any secondary command buffers that are recorded into
the primary command buffers in pname:pCommandBuffers (internal issue
106).
* Clarify that slink:VkDeviceCreateInfo::pname:pEnabledFeatures can be
NULL (internal issue 117).
* Remove "the value of" where it is redundant (e.g. speaking of an API
parameter, struct member, or SPIR-V variable, but not when speaking
of color components) (internal issue 175).
* Forced patch version to always be 0 in the header. Add a
"VK_API_VERSION_<major>_<minor>" macro for people to use to do the
right thing. Add a VK_HEADER_VERSION which captures the header
release number independent of the spec patch number (internal issue
176).
* Correct description of
slink:VkPipelineShaderStageCreateInfo::pname:pName to "a pointer to
a null-terminated UTF-8 string" (internal issue #197).
a null-terminated UTF-8 string" (internal issue 197).
Other Commits:
* Updated DataFormat spec reference to the new date for revision 5 of
that spec.
* Fixed KEEP option (to retain LaTeX intermediate files) in the
Makefile to be included when edited there, as well as set on the
command line.
* Reserve and add "VK_IMG_filter_cubic" to the registry, and implement
script functionality to add and remove validity from existing
functions. Includes schema and readme changes.
* Update GL_KHR_vulkan_glsl so push_constants do not have descriptor
sets.
@ -285,60 +267,46 @@ Github Issues:
* Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict
aliasing issues (public issue 14).
* Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets
validity language (public issue 33).
* Add stub reference pages so xrefs to not-yet-written pages don't
generate 404 errors. However, the actual content of these pages
still needs to be filled in as time allows (public issue 44, but
does not close that issue out).
* Remove incorrect validity statement for
flink:vkGetImageSparseMemoryRequirements (public issue 85).
* Reword the
<<features-limits-bufferImageGranularity,bufferImageGranularity>>
feature in terms of "aliasing", and clarify that it applies to
bindings in the same memory object (public issue 90).
* Clarify the relationship of the slink:VkPhysicalDeviceLimits
pname:maxViewportDimensions and pname:viewportBoundsRange limits
(public issue 92).
* Specify sparse unbound texture replacement in the
<<textures-texel-replacement,Texel Replacement>> section
independently of robust buffer access language (public issue 100).
* Add the <<fundamentals-architecture-model,Architecture Model>>
section to explain architecture constraints Vulkan has chosen to
accept in order to enable portable and performant code (public issue
122).
* State that an object must not be destroyed until *all* (not *any*)
uses of that object have completed (public issue 123).
* Minor editorial cleanup (public issues 129, 134, 146, 148).
* Add validity language for layer and extension names to
slink:VkDeviceCreateInfo matching that used for
slink:VkInstanceCreateInfo (public issue 130).
* Clean up terminology for the case when the bits set in one bitmask
are a subset of the bits set in another bitmask (public issue 138).
* Document that input attachments are UniformConstant not Input, in
the <<interfaces-inputattachment,Fragment Input Attachment
Interface>> section (public glslang bug 169).
Internal Issues:
* Add max enum values to "flag bits" enums (internal issue #136).
* Add max enum values to "flag bits" enums (internal issue 136).
* Clarify language around the various uses of the term "block" in the
<<appendix-compressedtex-bc,Block Compressed Image Formats>> section
(internal issue #202).
(internal issue 202).
* Removed "expand" dependency from <enums> groups in vk.xml and added
auto-generation code in the scripts to infer it instead, to ensure
consistency. This caused renaming of sname:VkColorSpaceKHR and
@ -347,7 +315,6 @@ Internal Issues:
with this change. This change adds ranges to two additional enums
that were missing them due to not defining the "expand" attribute
(internal issue 217).
* Tweak makefile to generate ref page nroff (.3) files in the right
output directory, working around an a2x limitation (internal issue
223).
@ -356,7 +323,6 @@ Other Commits:
* Add validity requirements for flink:vkCmdCopyQueryPoolResults
pname:dstBuffer parameter.
* Fix ref page build to generate .3 targets in the right output
directory.
@ -396,7 +362,7 @@ Github Issues:
Internal Issues:
* Link to the fixed-function vertex chapter from the drawing chapter
(internal issue #110)
(internal issue 110)
* Fix typo in slink:VkImageCreateInfo validity language:
ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue
249).
@ -499,3 +465,64 @@ Internal Issues:
* Fix typo in the definition of point sampling for
elink:VkCullModeFlagBits (internal issue 268).
-----------------------------------------------------
Change log for April 22, 2016 Vulkan 1.0.11 spec update:
* Bump API patch number and header version number to 11 for this
update.
Github Issues:
* Clarify the WSI extension language by switching from the fuzzier
"ownership" language to more-consistent "acquire" language (public
issue 117).
* Clarify that memory barriers apply to all commands in the dependency
chains in the flink:vkGetRenderAreaGranularity command and the
<<synchronization-execution-and-memory-dependencies,Execution And
Memory Dependencies>> section (public issue 132).
* Clarify that a queue family is a set of queues in the
<<fundamentals-execmodel,Execution Model>> section (public issue
166).
* Removed requirement from valid usage language that
VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
issue 171).
* Fix broken internal links, describe structures consistently, use
consistent style for SPIR-V codewords, and tag normative terms that
were missing asciidoc tags (public issue 183 and ancillary
markup/normative language fixes).
* Fix typos for slink:VkPhysicalDeviceLimits member names in
slink:VkImageCreateInfo validity language (public issue 184).
Internal Issues:
* Document that the requested patch version number specified as part
of slink:VkApplicationInfo::pname:apiVersion is ignored when
creating an instance (internal issue 176).
* Clarify handling of extension structs in the
<<fundamentals-validusageValid Usage>> section (internal issue 254).
* Update required slink:VkImageFormatProperties::pname:maxMipLevels to
be limited to the maximum allowed mipmap pyramid size corresponding
to the actual maximum supported size for the format (internal issue
256).
* Modify the <<features-extentperimagetype,Allowed Extent Values Based
On Image Type>> section so the allowed maximum extent is the maximum
image dimension supported for each dimension of the type of texture
being queried (internal issue 257).
* Clarify in the <<spirvenv-module-validation,Validation Rules within
a Module>> section that at least one of the code:LocalSize execution
mode or code:WorkgroupSize decoration is required for each compute
shader entry point in a shader module (internal issue 279).
* Add validity rules for formats in flink:vkCmdClearColorImage and
flink:vkCmdClearDepthStencilImage (internal issue 283).
* Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
an upper bound, and that it may not be possible to create an image
anywhere near that size (internal issue 284).
Other Commits:
* Fix various minor markup errors reported by validation scripts.
* Change copyright from Khronos Free Use License to Apache 2.0 license
on relevant script/XML/header files. This does not affect the
specification source copyright.

View File

@ -33,8 +33,8 @@ Status
Version
Last Modified Date: 5-Apr-2016
Revision: 29
Last Modified Date: 12-Apr-2016
Revision: 30
Number
@ -943,24 +943,25 @@ Changes to Chapter 5 of the OpenGL Shading Language Specification
operators and with another constant or specialization constant, the
result is implicitly a specialization constant.
- int(), uint(), float(), and bool() constructors for type conversions
- int(), uint(), and bool() constructors for type conversions
from any of the following types to any of the following types:
* int
* uint
* float
* double
* bool
- vector versions of the above conversion constructors
- allowed implicit conversions of the above
- The operators
- swizzles (e.g., foo.yx)
- The following when applied to integer or unsigned integer types:
* unary negative ( - )
* not ( ! )
* binary operations ( + , - , * , / , % )
* shift ( <<, >> )
* bitwise operations ( & , | , ^ )
* swizzles (e.g., foo.yx)
* logical operations ( && , || , ^^ )
- The following when applied to integer or unsigned integer scalar types:
* comparison ( == , != , > , >= , < , <= )
- The following when applied to the Boolean scalar type:
* not ( ! )
* logical operations ( && , || , ^^ )
* comparison ( == , != )
Changes to Chapter 7 of the OpenGL Shading Language Specification
@ -1154,6 +1155,7 @@ Revision History
Rev. Date Author Changes
---- ----------- ------- --------------------------------------------
30 12-Apr-2016 JohnK Restrict spec-const operations to non-float
29 5-Apr-2016 JohnK Clarify disallowance of spec-const arrays in
initializers
28 7-Mar-2016 JohnK Make push_constants not have sets

View File

@ -31,8 +31,8 @@ QUIET?=@
ASCIIDOC ?= asciidoc.py
A2X ?= a2x.py
DBLATEX ?= dblatex
# DBLATEXPREFIX can be overriden by setting it as an environment variable if
# the not installed in the standard location on your distribution
# DBLATEXPREFIX can be overriden by setting it as an environment variable,
# if not installed in the standard location on your distribution
DBLATEXPREFIX ?= /etc/asciidoc/dblatex
RM=rm -f
RMRF=rm -rf
@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
# A generated included file with the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.10
SPECREVISION = 1.0.11
SPECREMARK =
# Spec targets

View File

@ -26,7 +26,7 @@ s, t, and r directions.
=== New Enum Constants
* Extending ename:VkSamplerAddressMode:
* Extending elink:VkSamplerAddressMode:
** ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
=== Example
@ -41,11 +41,11 @@ Creating a sampler with the new address mode in each dimension
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType
// Other members set to application-desired values
};
createInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
createInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
createInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
VkSampler sampler;
VkResult result = vkCreateSampler(
device,

View File

@ -445,9 +445,9 @@ all extensions must: define two additional tokens.
extension defined in +vulkan.h+ and the revision supported by the
{apiname} implementation (the pname:specVersion field of the
slink:VkExtensionProperties structure corresponding to the extension and
returned by one of the <<debug-extensions,Extension Queries>>) may:
differ. In such cases, only the functionality and behavior of the
lowest-numbered revision can: be used.
returned by one of the <<extended-functionality-extensions,extension
queries>>) may: differ. In such cases, only the functionality and
behavior of the lowest-numbered revision can: be used.
* VK_EXTNAME_EXTENSION_NAME is a string constant which is the name of the
extension.

View File

@ -242,7 +242,7 @@ Dynamic Uniform Buffer::
Explicitly-Enabled Layer::
A layer enabled by the application by adding it to the enabled layer
list in flink:vkCmdCreateInstance or flink:vkCmdCreateDevice.
list in flink:vkCreateInstance or flink:vkCreateDevice.
Event::
A synchronization primitive that is signalled when execution of previous
@ -317,6 +317,18 @@ Handle::
An opaque integer or pointer value used to refer to a {apiname} object.
Each object type has a unique handle type.
Happen-after::
A command happens-after a dependency if they are separated by an execution
dependency chain, with the command included in the destination of the last
dependency of the chain. A memory barrier makes visible memory writes to
commands that happen-after it.
Happen-before::
A command happens-before a dependency if they are separated by an execution
dependency chain, with the command included in the source of the first
dependency of the chain. A memory barrier makes available memory writes of
commands that happen-before it.
Helper Invocation::
A fragment shader invocation that is created solely for the purposes of
evaluating derivatives for use in non-helper fragment shader

View File

@ -26,17 +26,17 @@ described in section 2.3 of the SPIR-V Specification.
== Capabilities
Implementations must: support the following capability operands declared by
*OpCapability*:
code:OpCapability:
- Matrix
- Shader
- InputAttachment
- Sampled1D
- Image1D
- SampledBuffer
- ImageBuffer
- ImageQuery
- DerivativeControl
- code:Matrix
- code:Shader
- code:InputAttachment
- code:Sampled1D
- code:Image1D
- code:SampledBuffer
- code:ImageBuffer
- code:ImageQuery
- code:DerivativeControl
Implementations may: support features that are not required: by the
Specification, as described in the <<features-features,Features>> chapter.
@ -48,32 +48,32 @@ to that feature must: also be supported.
[options="header"]
|====
| SPIR-V OpCapability | {apiname} feature name
| *Geometry* | <<features-features-geometryShader,geometryShader>>
| *Tessellation* | <<features-features-tessellationShader,tessellationShader>>
| *Float64* | <<features-features-shaderFloat64,shaderFloat64>>
| *Int64* | <<features-features-shaderInt64,shaderInt64>>
| *Int16* | <<features-features-shaderInt16,shaderInt16>>
| *TessellationPointSize* | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
| *GeometryPointSize* | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
| *ImageGatherExtended* | <<features-features-shaderImageGatherExtended,shaderImageGatherExtended>>
| *StorageImageMultisample* | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
| *UniformBufferArrayDynamicIndexing* | <<features-features-shaderUniformBufferArrayDynamicIndexing,shaderUniformBufferArrayDynamicIndexing>>
| *SampledImageArrayDynamicIndexing* | <<features-features-shaderSampledImageArrayDynamicIndexing,shaderSampledImageArrayDynamicIndexing>>
| *StorageBufferArrayDynamicIndexing* | <<features-features-shaderStorageBufferArrayDynamicIndexing,shaderStorageBufferArrayDynamicIndexing>>
| *StorageImageArrayDynamicIndexing* | <<features-features-shaderStorageImageArrayDynamicIndexing,shaderStorageImageArrayDynamicIndexing>>
| *ClipDistance* | <<features-features-shaderClipDistance,shaderClipDistance>>
| *CullDistance* | <<features-features-shaderCullDistance,shaderCullDistance>>
| *ImageCubeArray* | <<features-features-imageCubeArray,imageCubeArray>>
| *SampleRateShading* | <<features-features-sampleRateShading,sampleRateShading>>
| *SparseResidency* | <<features-features-shaderResourceResidency,shaderResourceResidency>>
| *MinLod* | <<features-features-shaderResourceMinLod,shaderResourceMinLod>>
| *SampledCubeArray* | <<features-features-imageCubeArray,imageCubeArray>>
| *ImageMSArray* | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
| *StorageImageExtendedFormats* | <<features-features-shaderStorageImageExtendedFormats,shaderStorageImageExtendedFormats>>
| *InterpolationFunction* | <<features-features-sampleRateShading,sampleRateShading>>
| *StorageImageReadWithoutFormat* | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
| *StorageImageWriteWithoutFormat* | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
| *MultiViewport* | <<features-features-multiViewport,multiViewport>>
| code:Geometry | <<features-features-geometryShader,geometryShader>>
| code:Tessellation | <<features-features-tessellationShader,tessellationShader>>
| code:Float64 | <<features-features-shaderFloat64,shaderFloat64>>
| code:Int64 | <<features-features-shaderInt64,shaderInt64>>
| code:Int16 | <<features-features-shaderInt16,shaderInt16>>
| code:TessellationPointSize | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
| code:GeometryPointSize | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
| code:ImageGatherExtended | <<features-features-shaderImageGatherExtended,shaderImageGatherExtended>>
| code:StorageImageMultisample | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
| code:UniformBufferArrayDynamicIndexing | <<features-features-shaderUniformBufferArrayDynamicIndexing,shaderUniformBufferArrayDynamicIndexing>>
| code:SampledImageArrayDynamicIndexing | <<features-features-shaderSampledImageArrayDynamicIndexing,shaderSampledImageArrayDynamicIndexing>>
| code:StorageBufferArrayDynamicIndexing | <<features-features-shaderStorageBufferArrayDynamicIndexing,shaderStorageBufferArrayDynamicIndexing>>
| code:StorageImageArrayDynamicIndexing | <<features-features-shaderStorageImageArrayDynamicIndexing,shaderStorageImageArrayDynamicIndexing>>
| code:ClipDistance | <<features-features-shaderClipDistance,shaderClipDistance>>
| code:CullDistance | <<features-features-shaderCullDistance,shaderCullDistance>>
| code:ImageCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
| code:SampleRateShading | <<features-features-sampleRateShading,sampleRateShading>>
| code:SparseResidency | <<features-features-shaderResourceResidency,shaderResourceResidency>>
| code:MinLod | <<features-features-shaderResourceMinLod,shaderResourceMinLod>>
| code:SampledCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
| code:ImageMSArray | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
| code:StorageImageExtendedFormats | <<features-features-shaderStorageImageExtendedFormats,shaderStorageImageExtendedFormats>>
| code:InterpolationFunction | <<features-features-sampleRateShading,sampleRateShading>>
| code:StorageImageReadWithoutFormat | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
| code:StorageImageWriteWithoutFormat | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
| code:MultiViewport | <<features-features-multiViewport,multiViewport>>
|====
The application mustnot: pass a SPIR-V module containing any of the
@ -100,24 +100,24 @@ following rules:
** *Device*
** *Workgroup*
** *Invocation*
* The *OriginLowerLeft* execution mode mustnot: be used; fragment entry
points must: declare *OriginUpperLeft*.
* The *PixelCenterInteger* execution mode mustnot: be used. Pixels are
* The code:OriginLowerLeft execution mode mustnot: be used; fragment entry
points must: declare code:OriginUpperLeft.
* The code:PixelCenterInteger execution mode mustnot: be used. Pixels are
always centered at half-integer coordinates.
* Images
** *OpTypeImage* must: declare a scalar 32-bit float or 32-bit integer
type for the ``Sampled Type''. (RelaxedPrecision can: be applied to a
sampling instruction and to the variable holding the result of a
** code:OpTypeImage must: declare a scalar 32-bit float or 32-bit integer
type for the ``Sampled Type''. (code:RelaxedPrecision can: be applied
to a sampling instruction and to the variable holding the result of a
sampling instruction.)
** *OpSampledImage* must: only consume an ``Image'' operand whose type has
its ``Sampled'' operand set to 1.
** The ``(u, v)'' coordinates used for a *SubpassData* must: be the <id>
** code:OpSampledImage must: only consume an ``Image'' operand whose type
has its ``Sampled'' operand set to 1.
** The ``(u, v)'' coordinates used for a code:SubpassData must: be the <id>
of a constant vector (0, 0), or if a layer coordinate is used, must: be
a vector that was formed with constant 0 for the ``u'' and ``v''
components.
** The ``Depth'' operand of *OpTypeImage* is ignored.
** The ``Depth'' operand of code:OpTypeImage is ignored.
* Decorations
** The *GLSLShared* and *GLSLPacked* decorations mustnot: be used.
** The code:GLSLShared and code:GLSLPacked decorations mustnot: be used.
** The code:Flat, code:NoPerspective, code:Sample, and code:Centroid
decorations mustnot: be used on variables with storage class other than
code:Input or on variables used in the interface of non-fragment shader
@ -125,10 +125,14 @@ following rules:
** The code:Patch decoration mustnot: be used on variables in the
interface of a vertex, geometry, or fragment shader stage's entry
point.
- *OpTypeRuntimeArray* must: only be used for the last member of an
*OpTypeStruct* in the *Uniform* storage class.
- Linkage: See <<interfaces,Shader Interfaces>> for additional linking and
* code:OpTypeRuntimeArray must: only be used for the last member of an
code:OpTypeStruct in the code:Uniform storage class.
* Linkage: See <<interfaces,Shader Interfaces>> for additional linking and
validation rules.
* Compute Shaders
** For each compute shader entry point, either a code:LocalSize execution mode
or an object decorated with the code:WorkgroupSize decoration must: be
specified.
[[spirvenv-precision-operation]]
@ -156,29 +160,29 @@ required: to be at least as follows, unless decorated with RelaxedPrecision:
.Precision of core SPIR-V Instructions
[options="header"]
|====
|Instruction | Precision
|*OpFAdd* | Correctly rounded.
|*OpFSub* | Correctly rounded.
|*OpFMul* | Correctly rounded.
|*OpFOrdEqual*, *OpFUnordEqual* | Correct result.
|*OpFOrdLessThan*, *OpFUnordLessThan* | Correct result.
|*OpFOrdGreaterThan*, *OpFUnordGreaterThan* | Correct result.
|*OpFOrdLessThanEqual*, *OpFUnordLessThanEqual* | Correct result.
|*OpFOrdGreaterThanEqual*, *OpFUnordGreaterThanEqual*| Correct result.
|*OpFDiv* | 2.5 ULP for b in the range [2^-126^, 2^126^].
|conversions between types | Correctly rounded.
| Instruction | Precision
| code:OpFAdd | Correctly rounded.
| code:OpFSub | Correctly rounded.
| code:OpFMul | Correctly rounded.
| code:OpFOrdEqual, code:OpFUnordEqual | Correct result.
| code:OpFOrdLessThan, code:OpFUnordLessThan | Correct result.
| code:OpFOrdGreaterThan, code:OpFUnordGreaterThan | Correct result.
| code:OpFOrdLessThanEqual, code:OpFUnordLessThanEqual | Correct result.
| code:OpFOrdGreaterThanEqual, code:OpFUnordGreaterThanEqual| Correct result.
| code:OpFDiv | 2.5 ULP for b in the range [2^-126^, 2^126^].
| conversions between types | Correctly rounded.
|====
Precision of GLSL.std.450 Instructions
[options="header"]
|====
|Instruction | Precision
|*fma*() | Inherited from *OpFMul* followed by *OpFAdd*.
|*exp*(x), *exp2*(x) | latexmath:[$(3 + 2 \times \|x\|)$] ULP.
|*log*(), *log2*() | 3 ULP outside the range [0.5, 2.0]. Absolute error < 2^-21^ inside the range [0.5, 2.0].
|*pow*(x, y) | Inherited from *exp2* (y × *log2* (x)).
|*sqrt*() | Inherited from 1.0 / *inversesqrt*().
|*inversesqrt*() | 2 ULP.
|Instruction | Precision
| code:fma() | Inherited from code:OpFMul followed by code:OpFAdd.
| code:exp(x), code:exp2(x) | latexmath:[$(3 + 2 \times \|x\|)$] ULP.
| code:log(), code:log2() | 3 ULP outside the range [0.5, 2.0]. Absolute error < 2^-21^ inside the range [0.5, 2.0].
| code:pow(x, y) | Inherited from code:exp2(y × code:log2(x)).
| code:sqrt() | Inherited from 1.0 / code:inversesqrt().
| code:inversesqrt() | 2 ULP.
|====
GLSL.std.450 extended instructions specifically defined in terms of the

View File

@ -98,7 +98,7 @@ parameters.
include::../validity/protos/vkCmdClearAttachments.txt[]
The sname:VkClearRect struct is defined as follows:
The sname:VkClearRect structure is defined as:
include::../structs/VkClearRect.txt[]
@ -111,7 +111,7 @@ counting from the base layer of the attachment image view are cleared.
include::../validity/structs/VkClearRect.txt[]
The sname:VkClearAttachment struct is defined as follows:
The sname:VkClearAttachment structure is defined as:
include::../structs/VkClearAttachment.txt[]
@ -147,7 +147,7 @@ include::../validity/structs/VkClearAttachment.txt[]
[[clears-values]]
== Clear Values
The definition of sname:VkClearColorValue is as follows:
The sname:VkClearColorValue structure is defined as:
include::../structs/VkClearColorValue.txt[]
@ -170,12 +170,11 @@ The four array elements of the clear color map to R, G, B, and A components
of image formats, in order.
If the image has more than one sample, the same value is written to all
samples for any pixels being cleared. The ftext:vkClear*Image commands do
not support compressed image formats.
samples for any pixels being cleared.
include::../validity/structs/VkClearColorValue.txt[]
The definition of sname:VkClearDepthStencilValue is as follows:
The sname:VkClearDepthStencilValue structure is defined as:
include::../structs/VkClearDepthStencilValue.txt[]
@ -190,8 +189,10 @@ include::../structs/VkClearDepthStencilValue.txt[]
include::../validity/structs/VkClearDepthStencilValue.txt[]
Some parts of the API require either color or depth/stencil clear values,
depending on the attachment. For this the sname:VkClearValue union is
defined as follows:
depending on the attachment. The sname:VkClearValue union represents such
values.
The sname:VkClearValue union is defined as:
include::../structs/VkClearValue.txt[]

View File

@ -87,15 +87,14 @@ include::../protos/vkCreateCommandPool.txt[]
include::../validity/protos/vkCreateCommandPool.txt[]
The sname:VkCommandPoolCreateInfo structure is defined as follows:
The sname:VkCommandPoolCreateInfo structure is defined as:
include::../structs/VkCommandPoolCreateInfo.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a combination of bitfield flags indicating usage behavior
for the pool and command buffers allocated from it. Possible values
include:
* pname:flags is a bitmask indicating usage behavior for the pool and
command buffers allocated from it. Bits which can: be set include:
+
--
include::../enums/VkCommandPoolCreateFlagBits.txt[]
@ -137,7 +136,8 @@ command buffers allocated from the command pool back to the command pool.
All command buffers that have been allocated from the command pool are put
in the initial state.
pname:flags is of type elink:VkCommandPoolResetFlags, which is defined as:
pname:flags is a bitmask controlling the operation. Bits which which can: be
set include:
include::../enums/VkCommandPoolResetFlagBits.txt[]
@ -174,7 +174,7 @@ include::../protos/vkAllocateCommandBuffers.txt[]
allocation.
* pname:pCommandBuffers is a pointer to an array of sname:VkCommandBuffer
handles in which the resulting command buffer objects are returned. The
array must be at least the length specified by the
array must: be at least the length specified by the
pname:commandBufferCount member of pname:pAllocateInfo. Each allocated
command buffer begins in the initial state.
@ -203,7 +203,8 @@ include::../protos/vkResetCommandBuffer.txt[]
* pname:commandBuffer is the command buffer to reset. The command buffer
can: be in any state, and is put in the initial state.
* pname:flags is of type elink:VkCommandBufferResetFlags:
* pname:flags is a bitmask controlling the reset operation. Bits which
can: be set include:
+
--
include::../enums/VkCommandBufferResetFlagBits.txt[]
@ -252,8 +253,8 @@ include::../structs/VkCommandBufferBeginInfo.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a combination of bitfield flags indicating usage behavior
for the command buffer. Possible values include:
* pname:flags is a bitmask indicating usage behavior for the command
buffer. Bits which can: be set include:
+
--
include::../enums/VkCommandBufferUsageFlagBits.txt[]
@ -292,7 +293,7 @@ include::../structs/VkCommandBufferInheritanceInfo.txt[]
* pname:framebuffer refers to the sname:VkFramebuffer object that the
sname:VkCommandBuffer will be rendering to if it was allocated with
the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. It can:
be sname:VK_NULL_HANDLE if the framebuffer is not known.
be code:VK_NULL_HANDLE if the framebuffer is not known.
+
[NOTE]
.Note
@ -399,10 +400,10 @@ include::../protos/vkQueueSubmit.txt[]
which describe the work to submit. All work described by pname:pSubmits
must: be submitted to the queue before the command returns.
* pname:fence is an optional handle to a fence. If pname:fence is not
sname:VK_NULL_HANDLE, the fence is signaled when execution of all
code:VK_NULL_HANDLE, the fence is signaled when execution of all
sname:VkSubmitInfo::pname:pCommandBuffers members of pname:pSubmits is
completed. If pname:submitCount is zero but pname:fence is not
sname:VK_NULL_HANDLE, the fence will still be submitted to the queue and
code:VK_NULL_HANDLE, the fence will still be submitted to the queue and
will become signaled when all work previously submitted to the queue has
completed.
@ -443,8 +444,9 @@ signalled before executing any work, followed by a number of command buffers
that will be executed, and finally, zero or more semaphores that will be
signaled after command buffer execution completes. Each batch is represented
as an instance of the slink:VkSubmitInfo structure stored in an array, the
address of which is passed in pname:pSubmitInfo. The definition of
sname:VkSubmitInfo is:
address of which is passed in pname:pSubmitInfo.
The sname:VkSubmitInfo structure is defined as:
include::../structs/VkSubmitInfo.txt[]

View File

@ -72,7 +72,7 @@ the copy regions overlap in memory.
include::../validity/protos/vkCmdCopyBuffer.txt[]
Each element of pname:pRegions is a structure defined as:
The sname:VkBufferCopy structure is defined as:
include::../structs/VkBufferCopy.txt[]
@ -117,7 +117,7 @@ the same image or alias the same memory.
include::../validity/protos/vkCmdCopyImage.txt[]
Each element of pname:pRegions is a structure defined as:
The sname:VkImageCopy structure is defined as:
include::../structs/VkImageCopy.txt[]
@ -281,19 +281,19 @@ When copying to or from a depth or stencil aspect, the data in buffer
memory uses a layout that is a (mostly) tightly packed representation of
the depth or stencil data. Specifically:
* data copied to or from the stencil aspect of any depth/stencil format
is tightly packed with one ename:VK_FORMAT_S8_UINT value per texel.
* data copied to or from the depth aspect of a ename:VK_FORMAT_D16_UNORM
or ename:VK_FORMAT_D16_UNORM_S8_UINT format is tightly packed with one
ename:VK_FORMAT_D16_UNORM value per texel.
* data copied to or from the depth aspect of a ename:VK_FORMAT_D32_SFLOAT
or ename:VK_FORMAT_D32_SFLOAT_S8_UINT format is tightly packed with
one ename:VK_FORMAT_D32_SFLOAT value per texel.
* data copied to or from the depth aspect of a
ename:VK_FORMAT_X8_D24_UNORM_PACK32 or
ename:VK_FORMAT_D24_UNORM_S8_UINT format is packed with one 32-bit word
per texel with the D24 value in the LSBs of the word, and undefined
values in the eight MSBs.
* data copied to or from the stencil aspect of any depth/stencil format
is tightly packed with one ename:VK_FORMAT_S8_UINT value per texel.
* data copied to or from the depth aspect of a ename:VK_FORMAT_D16_UNORM
or ename:VK_FORMAT_D16_UNORM_S8_UINT format is tightly packed with one
ename:VK_FORMAT_D16_UNORM value per texel.
* data copied to or from the depth aspect of a ename:VK_FORMAT_D32_SFLOAT
or ename:VK_FORMAT_D32_SFLOAT_S8_UINT format is tightly packed with
one ename:VK_FORMAT_D32_SFLOAT value per texel.
* data copied to or from the depth aspect of a
ename:VK_FORMAT_X8_D24_UNORM_PACK32 or
ename:VK_FORMAT_D24_UNORM_S8_UINT format is packed with one 32-bit word
per texel with the D24 value in the LSBs of the word, and undefined
values in the eight MSBs.
[NOTE]
.Note
@ -404,7 +404,7 @@ include::../validity/protos/vkCmdBlitImage.txt[]
fname:vkCmdBlitImage mustnot: be used for multisampled source or destination
images. Use flink:vkCmdResolveImage for this purpose.
Each element of pname:pRegions is a structure defined as:
The sname:VkImageBlit structure is defined as:
include::../structs/VkImageBlit.txt[]
@ -491,7 +491,7 @@ include::../protos/vkCmdResolveImage.txt[]
include::../validity/protos/vkCmdResolveImage.txt[]
Each element of pname:pRegions is a structure defined as:
The sname:VkImageResolve structure is defined as:
include::../structs/VkImageResolve.txt[]

View File

@ -99,7 +99,7 @@ from within shaders bound to pipelines.
Loads from storage images do not use samplers and are unfiltered and do not
support coordinate wrapping or clamping. Loads are supported in all shader
stages for image formats which report support for the
<<features-formats-properties-storage,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT>>
<<features-formats-properties,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT>>
feature bit via flink:vkGetPhysicalDeviceFormatProperties.
Stores to storage images are supported in compute shaders for image
@ -108,7 +108,7 @@ ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT feature.
Storage images also support atomic operations in compute shaders for
image formats which report support for the
<<features-formats-properties-storageatomic,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT>>
<<features-formats-properties,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT>>
feature.
Load and store operations on storage images can: only be done on images in
@ -578,7 +578,7 @@ include::../structs/VkDescriptorSetLayoutCreateInfo.txt[]
include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[]
The definition of the sname:VkDescriptorSetLayoutBinding structure is:
The sname:VkDescriptorSetLayoutBinding structure is defined as:
include::../structs/VkDescriptorSetLayoutBinding.txt[]
@ -815,7 +815,7 @@ include::../protos/vkCreatePipelineLayout.txt[]
include::../validity/protos/vkCreatePipelineLayout.txt[]
The definition of the slink:VkPipelineLayoutCreateInfo structure is:
The slink:VkPipelineLayoutCreateInfo structure is defined as:
include::../structs/VkPipelineLayoutCreateInfo.txt[]
@ -843,7 +843,7 @@ pipelines that is expected to outperform memory-backed resource updates.
include::../validity/structs/VkPipelineLayoutCreateInfo.txt[]
The definition of sname:VkPushConstantRange is:
The sname:VkPushConstantRange structure is defined as:
include::../structs/VkPushConstantRange.txt[]
@ -1114,7 +1114,7 @@ allocated from the pool mustnot: be individually freed back to the pool,
i.e. only fname:vkAllocateDescriptorSets and fname:vkResetDescriptorPool are
allowed.
The definition of the sname:VkDescriptorPoolSize structure is:
The sname:VkDescriptorPoolSize structure is defined as:
include::../structs/VkDescriptorPoolSize.txt[]
@ -1149,7 +1149,7 @@ include::../protos/vkAllocateDescriptorSets.txt[]
allocation.
* pname:pDescriptorSets is a pointer to an array of sname:VkDescriptorSet
handles in which the resulting descriptor set objects are returned. The
array must be at least the length specified by the
array must: be at least the length specified by the
pname:descriptorSetCount member of pname:pAllocateInfo.
include::../validity/protos/vkAllocateDescriptorSets.txt[]
@ -1191,7 +1191,7 @@ include::../protos/vkFreeDescriptorSets.txt[]
sets were allocated.
* pname:descriptorSetCount is the number of elements in the
pname:pDescriptorSets array.
* pname:pDescriptorSets is an array of handles to slink:VkDescriptorSet
* pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet
objects. All elements of pname:pDescriptorSets must: have been allocated
from pname:descriptorPool.
@ -1219,7 +1219,7 @@ include::../protos/vkResetDescriptorPool.txt[]
* pname:device is the logical device that owns the descriptor pool.
* pname:descriptorPool is the descriptor pool to be reset.
* pname:flags is currently unused and must be zero.
* pname:flags is currently unused and must: be zero.
include::../validity/protos/vkResetDescriptorPool.txt[]
@ -1259,7 +1259,7 @@ Each element in the pname:pDescriptorWrites array describes an operation
updating the descriptor set using descriptors for resources specified in the
structure.
The definition of sname:VkWriteDescriptorSet is:
The sname:VkWriteDescriptorSet structure is defined as:
include::../structs/VkWriteDescriptorSet.txt[]
@ -1297,10 +1297,11 @@ structure, as specified below.
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:pBufferInfo array
will be used to update the descriptors, and other arrays will be ignored.
Each element of pname:pBufferInfo is of type sname:VkDescriptorBufferInfo
and is defined as:
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the elements of the
pname:pBufferInfo array of sname:VkDescriptorBufferInfo structures will be
used to update the descriptors, and other arrays will be ignored.
The sname:VkDescriptorBufferInfo structure is defined as:
include::../structs/VkDescriptorBufferInfo.txt[]
@ -1329,9 +1330,10 @@ ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the elements of the
pname:pImageInfo array will be used to update the descriptors, and other
arrays will be ignored. Each element of pname:pImageInfo is of type
sname:VkDescriptorImageInfo and is defined as:
pname:pImageInfo array of sname:VkDescriptorImageInfo structures will be
used to update the descriptors, and other arrays will be ignored.
The sname:VkDescriptorImageInfo structure is defined as:
include::../structs/VkDescriptorImageInfo.txt[]
@ -1369,7 +1371,9 @@ immutable samplers or must: all not use immutable samplers.
Each element in the pname:pDescriptorCopies array is a
slink:VkCopyDescriptorSet structure describing an operation copying
descriptors between sets. The definition of sname:VkCopyDescriptorSet is:
descriptors between sets.
The sname:VkCopyDescriptorSet structure is defined as:
include::../structs/VkCopyDescriptorSet.txt[]
@ -1408,8 +1412,8 @@ include::../protos/vkCmdBindDescriptorSets.txt[]
bound.
* pname:descriptorSetCount is the number of elements in the
pname:pDescriptorSets array.
* pname:pDescriptorSets is a pointer to an array of slink:VkDescriptorSet
structures describing the descriptor sets to write to.
* pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet
objects describing the descriptor sets to write to.
* pname:dynamicOffsetCount is the number of dynamic offsets
in the pname:pDynamicOffsets array.
* pname:pDynamicOffsets is a pointer to an array of basetype:uint32_t

View File

@ -26,7 +26,7 @@ include::../protos/vkEnumeratePhysicalDevices.txt[]
* pname:pPhysicalDeviceCount is a pointer to an integer related to the
number of physical devices available or queried, as described below.
* pname:pPhysicalDevices is either `NULL` or a pointer to an
array of sname:VkPhysicalDevice structures.
array of sname:VkPhysicalDevice handles.
If pname:pPhysicalDevices is `NULL`, then the number of physical devices
available is returned in pname:pPhysicalDeviceCount. Otherwise,
@ -51,17 +51,15 @@ include::../protos/vkGetPhysicalDeviceProperties.txt[]
* pname:physicalDevice is the handle to the physical device whose
properties will be queried.
* pname:pProperties points to an instance of the
sname:VkPhysicalDeviceProperties structure, that will be filled with
slink:VkPhysicalDeviceProperties structure, that will be filled with
returned information.
include::../validity/protos/vkGetPhysicalDeviceProperties.txt[]
The definition of sname:VkPhysicalDeviceProperties is:
The sname:VkPhysicalDeviceProperties structure is defined as:
include::../structs/VkPhysicalDeviceProperties.txt[]
The members of sname:VkPhysicalDeviceProperties have the following meanings:
* pname:apiVersion is the version of {apiname} supported by the device,
encoded as described in the <<fundamentals-versionnum,API Version
Numbers and Semantics>> section.
@ -77,19 +75,19 @@ The members of sname:VkPhysicalDeviceProperties have the following meanings:
* pname:pipelineCacheUUID is an array of size ename:VK_UUID_SIZE,
containing 8-bit values that represent a universally unique identifier
for the device.
* pname:limits is the sname:VkPhysicalDeviceLimits structure which
* pname:limits is the slink:VkPhysicalDeviceLimits structure which
specifies device-specific limits of the physical device. See
<<features-limits,Limits>> for details.
* pname:sparseProperties is the sname:VkPhysicalDeviceSparseProperties
* pname:sparseProperties is the slink:VkPhysicalDeviceSparseProperties
structure which specifies various sparse related properties of the
physical device. See <<features-sparseproperties,Sparse Properties>> for
details.
physical device. See <<sparsememory-physicalprops,Sparse Properties>>
for details.
include::../validity/structs/VkPhysicalDeviceProperties.txt[]
The pname:vendorID and pname:deviceID fields are provided to allow
applications to adapt to device characteristics that are not
adequately exposed by other Vulkan queries. These may include
adequately exposed by other Vulkan queries. These may: include
performance profiles, hardware errata, or other characteristics.
In PCI-based implementations, the low sixteen bits of pname:vendorID
and pname:deviceID must: contain (respectively) the PCI vendor and
@ -140,7 +138,7 @@ include::../enums/VkPhysicalDeviceType.txt[]
The physical device type is advertised for informational purposes only, and
does not directly affect the operation of the system. However, the device
type may correlate with other advertised properties or capabilities of the
type may: correlate with other advertised properties or capabilities of the
system, such as how many memory heaps there are.
Properties of queues available on a physical device are queried by calling:
@ -166,12 +164,10 @@ written.
include::../validity/protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[]
The definition of sname:VkQueueFamilyProperties is:
The sname:VkQueueFamilyProperties structure is defined as:
include::../structs/VkQueueFamilyProperties.txt[]
The members of sname:VkQueueFamilyProperties have the following meanings:
* pname:queueFlags contains flags indicating the capabilities of the
queues in this queue family.
* pname:queueCount is the unsigned integer count of queues in this
@ -231,10 +227,10 @@ Possible values of pname:minImageTransferGranularity are:
queues. In this case, the following restrictions apply to all offset and
extent parameters of image transfer operations:
** The pname:x, pname:y, and pname:z members of a sname:VkOffset3D
** The pname:x, pname:y, and pname:z members of a slink:VkOffset3D
parameter must: always be zero.
** The pname:width, pname:height, and pname:depth members of a
sname:VkExtent3D parameter must: always match the width, height, and
slink:VkExtent3D parameter must: always match the width, height, and
depth of the image subresource corresponding to the parameter,
respectively.
@ -242,18 +238,18 @@ Possible values of pname:minImageTransferGranularity are:
and latexmath:[$Az$] are all integer powers of two. In this case the
following restrictions apply to all image transfer operations:
** pname:x, pname:y, and pname:z of a sname:VkOffset3D parameter must: be
** pname:x, pname:y, and pname:z of a slink:VkOffset3D parameter must: be
integer multiples of latexmath:[$Ax$], latexmath:[$Ay$], and
latexmath:[$Az$], respectively.
** pname:width of a sname:VkExtent3D parameter must: be an integer
** pname:width of a slink:VkExtent3D parameter must: be an integer
multiple of latexmath:[$Ax$], or else latexmath:[$(x + width)$] must:
equal the width of the image subresource corresponding to the
parameter.
** pname:height of a sname:VkExtent3D parameter must: be an integer
** pname:height of a slink:VkExtent3D parameter must: be an integer
multiple of latexmath:[$Ay$], or else latexmath:[$(y + height)$] must:
equal the height of the image subresource corresponding to the
parameter.
** pname:depth of a sname:VkExtent3D parameter must: be an integer
** pname:depth of a slink:VkExtent3D parameter must: be an integer
multiple of latexmath:[$Az$], or else latexmath:[$(z + depth)$] must:
equal the depth of the image subresource corresponding to the
parameter.
@ -309,7 +305,7 @@ include::../protos/vkCreateDevice.txt[]
call to fname:vkEnumeratePhysicalDevices (see
<<devsandqueues-physical-device-enumeration, Physical Device
Enumeration>>).
* pname:pCreateInfo is a pointer to a sname:VkDeviceCreateInfo structure
* pname:pCreateInfo is a pointer to a slink:VkDeviceCreateInfo structure
containing information about how to create the device.
* pname:pAllocator controls host memory allocation as described in the
<<memory-allocation, Memory Allocation>> chapter.
@ -318,12 +314,10 @@ include::../protos/vkCreateDevice.txt[]
include::../validity/protos/vkCreateDevice.txt[]
The definition of sname:VkDeviceCreateInfo is:
The sname:VkDeviceCreateInfo structure is defined as:
include::../structs/VkDeviceCreateInfo.txt[]
The members of sname:VkDeviceCreateInfo have the following meanings:
* 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.
@ -332,7 +326,7 @@ The members of sname:VkDeviceCreateInfo have the following meanings:
<<devsandqueues-queue-creation,Queue Creation>> section below for
further details.
* pname:pQueueCreateInfos is a pointer to an array of
sname:VkDeviceQueueCreateInfo structures describing the queues that are
slink:VkDeviceQueueCreateInfo structures describing the queues that are
requested to be created along with the logical device. Refer to the
<<devsandqueues-queue-creation,Queue Creation>> section below for
further details.
@ -346,10 +340,10 @@ The members of sname:VkDeviceCreateInfo have the following meanings:
* pname:ppEnabledExtensionNames is a pointer to an array of
pname:enabledExtensionCount null-terminated UTF-8 strings containing the
names of extensions to enable for the created device. See the
<<querying-layers-and-extensions,Querying Layers and Extensions>>
chapter for further details.
<<extended-functionality-extensions,Extensions>> section for further
details.
* pname:pEnabledFeatures is `NULL` or a pointer to a
sname:VkPhysicalDeviceFeatures structure that contains boolean
slink:VkPhysicalDeviceFeatures structure that contains boolean
indicators of all the features to be enabled. Refer to the
<<features-features,Features>> section for further details.
@ -440,12 +434,12 @@ or that the error is recoverable.
When a device is lost, its child objects are not implicitly destroyed and
their handles are still valid. Those objects must: still be destroyed before
their parents or the device can: be destroyed (see
<<objectmodel-lifetime,Lifetime>>). The host address space corresponding to
device memory mapped using flink:vkMapMemory is still valid, and host memory
accesses to these mapped regions are still valid, but the contents are
undefined. It is still legal to call any API command on the device and child
objects.
their parents or the device can: be destroyed (see the
<<fundamentals-objectmodel-lifetime,Object Lifetime>> section). The host
address space corresponding to device memory mapped using flink:vkMapMemory
is still valid, and host memory accesses to these mapped regions are still
valid, but the contents are undefined. It is still legal to call any API
command on the device and child objects.
Once a device is lost, command execution may: fail, and commands that return
a basetype:VkResult may: return ename:VK_ERROR_DEVICE_LOST. Commands that do
@ -544,14 +538,13 @@ device. This is described in the following section.
Creating a logical device also creates the queues associated with that
device. The queues to create are described by a set of
sname:VkDeviceQueueCreateInfo structures that are passed to
flink:vkCreateDevice in pname:pQueueCreateInfos. The definition of
sname:VkDeviceQueueCreateInfo is:
slink:VkDeviceQueueCreateInfo structures that are passed to
flink:vkCreateDevice in pname:pQueueCreateInfos.
The sname:VkDeviceQueueCreateInfo structure is defined as:
include::../structs/VkDeviceQueueCreateInfo.txt[]
The members of sname:VkDeviceQueueCreateInfo have the following meanings:
* 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.
@ -597,7 +590,7 @@ sname:VkQueue handle from as described in the previous section.
When creating a sname:VkCommandPool object (see
<<commandbuffers-pools,Command Pools>>), a queue family index is specified
in the sname:VkCommandPoolCreateInfo structure. Command buffers from this
in the slink:VkCommandPoolCreateInfo structure. Command buffers from this
pool can: only be submitted on queues corresponding to this queue family.
When creating sname:VkImage (see <<resources-images,Images>>) and
@ -617,7 +610,7 @@ Sharing>> section for details.
=== Queue Priority
Each queue is assigned a priority, as set in the
sname:VkDeviceQueueCreateInfo structures when creating the device. The
slink:VkDeviceQueueCreateInfo structures when creating the device. The
priority of each queue is a normalized floating point value between 0.0 and
1.0, which is then translated to a discrete priority level by the
implementation. Higher values indicate a higher priority, with 0.0 being the
@ -663,7 +656,7 @@ chapter.
=== Sparse Memory Binding
In {apiname} it is possible to sparsely bind memory to buffers and
images as described in the <<sparsemem,Sparse Resource>> chapter. Sparse
images as described in the <<sparsememory,Sparse Resource>> chapter. Sparse
memory binding is a queue operation. A queue whose flags include the
ename:VK_QUEUE_SPARSE_BINDING_BIT must: be able to support the
mapping of a virtual address to a physical address on the device. This

View File

@ -44,7 +44,7 @@ at pname:offset.
include::../validity/protos/vkCmdDispatchIndirect.txt[]
The definition of sname:VkDispatchIndirectCommand is:
The sname:VkDispatchIndirectCommand structure is defined as:
include::../structs/VkDispatchIndirectCommand.txt[]

View File

@ -336,8 +336,8 @@ ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, or
ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY is rendered in
one of several ways, such as outlining its border or filling its interior.
The order of vertices in such a primitive is significant during
<<primsrast-polygons-basic,polygon rasterization>> and <<ref-tbd,fragment
shading>>.
<<primsrast-polygons-basic,polygon rasterization>> and
<<shaders-fragment,fragment shading>>.
=== Programmable Primitive Shading
@ -481,7 +481,7 @@ less than or equal to one, pname:stride is ignored.
include::../validity/protos/vkCmdDrawIndirect.txt[]
The definition of sname:VkDrawIndirectCommand is:
The sname:VkDrawIndirectCommand structure is defined as:
include::../structs/VkDrawIndirectCommand.txt[]
@ -513,7 +513,7 @@ pname:drawCount is less than or equal to one, pname:stride is ignored.
include::../validity/protos/vkCmdDrawIndexedIndirect.txt[]
The definition of sname:VkDrawIndexedIndirectCommand is
The sname:VkDrawIndexedIndirectCommand structure is defined as:
include::../structs/VkDrawIndexedIndirectCommand.txt[]

View File

@ -45,7 +45,7 @@ include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[]
To enable a instance layer, the name of the layer should be added to the
pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating
a slink:VkInstance.
a sname:VkInstance.
To query the layers available to a given physical device, call:
@ -61,7 +61,7 @@ include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[]
To enable a device layer, the name of the layer should be added to the
pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating
a slink:VkDevice.
a sname:VkDevice.
For both flink:vkEnumerateInstanceLayerProperties and
flink:vkEnumerateDeviceLayerProperties, if pname:pProperties is `NULL`, then
@ -76,7 +76,7 @@ number of layers available, ename:VK_INCOMPLETE will be returned instead of
ename:VK_SUCCESS, to indicate that not all the available layer properties
were returned.
The definition of sname:VkLayerProperties is:
The sname:VkLayerProperties structure is defined as:
include::../structs/VkLayerProperties.txt[]
@ -104,6 +104,7 @@ and explicitly enabled layers differ only in the way they are enabled.
Explicitly enabling a layer that is implicitly enabled has no additional
effect.
[[extended-functionality-extensions]]
== Extensions
@ -137,7 +138,7 @@ provided by that layer are returned.
To enable a instance extension, the name of the extension should be added to
the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when
creating a slink:VkInstance.
creating a sname:VkInstance.
To query the extensions available to a given physical device, call:
@ -160,7 +161,7 @@ provided by that layer are returned.
To enable a device layer, the name of the layer should be added to the
pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when
creating a slink:VkDevice.
creating a sname:VkDevice.
For both flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`,
@ -175,7 +176,7 @@ pname:pPropertyCount is smaller than the number of extensions available,
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to
indicate that not all the available properties were returned.
The definition of sname:VkExtensionProperties is:
The sname:VkExtensionProperties structure is defined as:
include::../structs/VkExtensionProperties.txt[]

View File

@ -77,7 +77,7 @@ performance cost. Application writers should: carefully consider the
implications of enabling all supported features.
====
The definition of sname:VkPhysicalDeviceFeatures is:
The sname:VkPhysicalDeviceFeatures structure is defined as:
include::../structs/VkPhysicalDeviceFeatures.txt[]
@ -112,7 +112,7 @@ following features:
* [[features-features-imageCubeArray]] pname:imageCubeArray indicates
whether image views with a elink:VkImageViewType of
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can: be created, and that the
corresponding *SampledCubeArray* and *ImageCubeArray* SPIR-V
corresponding code:SampledCubeArray and code:ImageCubeArray SPIR-V
capabilities can: be used in shader code.
* [[features-features-independentBlend]] pname:independentBlend indicates
whether the sname:VkPipelineColorBlendAttachmentState settings are
@ -556,7 +556,7 @@ check for the supported properties of individual formats.
the same multisample rate. This has no effect in situations where a
subpass uses any attachments.
* [[features-features-inheritedQueries]] pname:inheritedQueries indicates
whether a secondary command buffer may be executed while a query is
whether a secondary command buffer may: be executed while a query is
active.
include::../validity/structs/VkPhysicalDeviceFeatures.txt[]
@ -582,7 +582,7 @@ device. These are available in the pname:limits member of the
slink:VkPhysicalDeviceProperties structure which is returned from
flink:vkGetPhysicalDeviceProperties.
The definition of sname:VkPhysicalDeviceLimits is:
The sname:VkPhysicalDeviceLimits structure is defined as:
include::../structs/VkPhysicalDeviceLimits.txt[]
@ -1212,8 +1212,8 @@ range.
// End of list
1::
For all bitmasks of type elink:VkSampleCountFlags above, the bits which
can: be set include:
For all bitmasks of type ename:VkSampleCountFlags above, possible
values include:
+
--
include::../enums/VkSampleCountFlagBits.txt[]
@ -3147,7 +3147,7 @@ include::../validity/structs/VkFormatProperties.txt[]
Implementations must: support at least the following set of
features on the listed formats. For images, these features must:
be supported for every slink:VkImageType (including arrayed and cube
be supported for every elink:VkImageType (including arrayed and cube
variants) unless otherwise noted. These features are supported
on existing formats without needing to advertise an extension or
needing to explicitly enable them. Support for additional functionality
@ -3481,7 +3481,7 @@ ename:VK_FORMAT_D24_UNORM_S8_UINT and ename:VK_FORMAT_D32_SFLOAT_S8_UINT.
<<<
[[features-formats-mandatory-features-bcn]]
.Mandatory format support: BC compressed formats with slink:VkImageType ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D
.Mandatory format support: BC compressed formats with elink:VkImageType ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
|=========================================
14+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
@ -3525,7 +3525,7 @@ one of: this table, <<features-formats-mandatory-features-etc>>, or
<<<
[[features-formats-mandatory-features-etc]]
.Mandatory format support: ETC2 and EAC compressed formats with slink:VkImageType ename:VK_IMAGE_TYPE_2D
.Mandatory format support: ETC2 and EAC compressed formats with elink:VkImageType ename:VK_IMAGE_TYPE_2D
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
|=========================================
14+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
@ -3563,7 +3563,7 @@ one of: this table, <<features-formats-mandatory-features-bcn>>, or
<<<
[[features-formats-mandatory-features-astc]]
.Mandatory format support: ASTC LDR compressed formats with slink:VkImageType ename:VK_IMAGE_TYPE_2D
.Mandatory format support: ASTC LDR compressed formats with elink:VkImageType ename:VK_IMAGE_TYPE_2D
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
|=========================================
14+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
@ -3651,19 +3651,23 @@ flink:vkCreateImage.
include::../validity/protos/vkGetPhysicalDeviceImageFormatProperties.txt[]
The definition of the sname:VkImageFormatProperties structure is:
The sname:VkImageFormatProperties structure is defined as:
include::../structs/VkImageFormatProperties.txt[]
* pname:maxExtent are the maximum image dimensions. See the
<<features-extentperimagetype,Allowed extent values based on imageType>>
table below for how these values are constrained by pname:type.
<<features-extentperimagetype,Allowed Extent Values>> section below for
how these values are constrained by pname:type.
* pname:maxMipLevels is the maximum number of mipmap levels.
pname:maxMipLevels must: either be equal to 1 (valid only if
pname:tiling is ename:VK_IMAGE_TILING_LINEAR) or be greater than or
equal to the latexmath:[$log_2$] of the pname:maxImageDimension1D,
pname:maxImageDimension2D, or pname:maxImageDimension3D (depending on
pname:type) members of slink:VkPhysicalDeviceLimits.
pname:tiling is ename:VK_IMAGE_TILING_LINEAR) or be
equal to
latexmath:[$\left\lceil\log_2(\max(
\mathit{width},\mathit{height},\mathit{depth}))
\right\rceil + 1$]
where latexmath:[$\mathit{width}$], latexmath:[$\mathit{height}$], and
latexmath:[$\mathit{depth}$] are taken from the corresponding members of
pname:maxExtent.
* pname:maxArrayLayers is the maximum number of array layers.
pname:maxArrayLayers must: either be equal to 1 or be greater than or
equal to the pname:maxImageArrayLayers member of
@ -3685,7 +3689,7 @@ include::../structs/VkImageFormatProperties.txt[]
pname:storageImageSampleCounts. For depth/stencil images with both a
depth and stencil component, both the depth and stencil limits must: be
satisfied.
* pname:maxResourceSize is the maximum total image size in bytes,
* pname:maxResourceSize is an upper bound on the total image size in bytes,
inclusive of all image subresources. Implementations may: have an
address space limit on total size of a resource, which is advertised by
this property. pname:maxResourceSize must: be at least 2^31^.
@ -3696,7 +3700,9 @@ include::../structs/VkImageFormatProperties.txt[]
There is no mechanism to query the size of an image before creating it, to
compare that size against pname:maxResourceSize. If an application attempts
to create an image that exceeds this limit, the creation will fail or the
image will be invalid.
image will be invalid. While the advertised limit must: be at least 2^31^,
it may: not be possible to create an image that approaches that size,
particularly for ename:VK_IMAGE_TYPE_1D.
====
If the combination of parameters to
@ -3706,25 +3712,6 @@ sname:VkImageFormatProperties will be filled with zero.
include::../validity/structs/VkImageFormatProperties.txt[]
[[features-extentperimagetype]]
.Allowed extent values based on imageType
[cols="1a,1a", options="header"]
|====
| VkImageType | maxExtent values
| VK_IMAGE_TYPE_1D |
width >= 1 +
height = 1 +
depth = 1 +
| VK_IMAGE_TYPE_2D |
width >= 1 +
height >= 1 +
depth = 1 +
| VK_IMAGE_TYPE_3D |
width >= 1 +
height >= 1 +
depth >= 1 +
|====
If pname:format is not a supported image format, or if the combination of
pname:format, pname:type, pname:tiling, pname:usage, and pname:flags is not
supported for images, then fname:vkGetPhysicalDeviceImageFormatProperties
@ -3732,10 +3719,37 @@ returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED.
The limitations on an image format that are reported by
fname:vkGetPhysicalDeviceImageFormatProperties have the following property:
if code:usage1 and code:usage2 of type elink:VkImageUsageFlags are such that
if code:usage1 and code:usage2 of type ename:VkImageUsageFlags are such that
the bits set in code:usage1 are a subset of the bits set in code:usage2, and
code:flags1 and code:flags2 of type elink:VkImageCreateFlags are such that
code:flags1 and code:flags2 of type ename:VkImageCreateFlags are such that
the bits set in code:flags1 are a subset of the bits set in code:flags2,
then the limitations for code:usage1 and code:flags1 must: be no more strict
than the limitations for code:usage2 and code:flags2, for all values of
pname:format, pname:type, and pname:tiling.
[[features-extentperimagetype]]
=== Allowed Extent Values Based On Image Type
For ename:VK_IMAGE_TYPE_1D:
* pname:maxExtent.width >=
slink:VkPhysicalDeviceLimits::pname:maxImageDimension1D
* pname:maxExtent.height = 1
* pname:maxExtent.depth = 1
For ename:VK_IMAGE_TYPE_2D:
* pname:maxExtent.width >=
slink:VkPhysicalDeviceLimits::pname:maxImageDimension2D
* pname:maxExtent.height >=
slink:VkPhysicalDeviceLimits::pname:maxImageDimension2D
* pname:maxExtent.depth = 1
For ename:VK_IMAGE_TYPE_3D:
* pname:maxExtent.width >=
slink:VkPhysicalDeviceLimits::pname:maxImageDimension3D
* pname:maxExtent.height >=
slink:VkPhysicalDeviceLimits::pname:maxImageDimension3D
* pname:maxExtent.depth >=
slink:VkPhysicalDeviceLimits::pname:maxImageDimension3D

View File

@ -140,10 +140,20 @@ latexmath:[$(x_f,y_f)$] and depth latexmath:[$z$], as described in
fragment processing, which adds associated data as described in
<<shaders,Shaders>>. The fragment is then further modified, and possibly
discarded by the late per-fragment operations described in this chapter.
These operations are diagrammed in figure <<fig-fragops,Fragment
Operations>>, in the order in which they are performed. Finally, if the
fragment was not discarded, it is used to update the framebuffer at the
fragment's framebuffer coordinates for any samples that remain covered.
Finally, if the fragment was not discarded, it is used to update the
framebuffer at the fragment's framebuffer coordinates for any samples that
remain covered.
ifdef::editing-notes[]
[NOTE]
.editing-note
==================
There used to be a sentence of form "These operations are diagrammed in
figure ((fig-fragops,Fragment Operations)), in the order in which they are
performed" following "described in this chapter." above, but the referred
figure doesn't yet exist.
==================
endif::editing-notes[]
The depth bounds test, stencil test, and depth test are performed for each
pixel sample, rather than just once for each fragment. Stencil and depth
@ -186,9 +196,9 @@ of the slink:VkPipelineMultisampleStateCreateInfo structure.
All alpha values in this section refer only to the alpha component of the
fragment shader output that has a code:Location and code:Index decoration of
zero (see <<pipelines-linking-fragmentoutput,Fragment Output Interface>>).
If that shader output has an integer or unsigned integer type, then these
operations are skipped.
zero (see the <<interfaces-fragmentoutput,Fragment Output Interface>>
section). If that shader output has an integer or unsigned integer type,
then these operations are skipped.
If pname:alphaToCoverageEnable is enabled, a temporary coverage value is
generated where each bit is determined by the fragment's alpha value. The
@ -213,19 +223,19 @@ Next, if pname:alphaToOneEnable is enabled, each alpha value is replaced by
the maximum representable alpha value for fixed-point color buffers, or by
1.0 for floating-point buffers. Otherwise, the alpha values are not changed.
[[fragops-ds-state]]
== Depth and Stencil Operations
Pipeline state controlling the <<fragops-dbt,depth bounds tests>>,
<<fragops-stencil,stencil test>>, and <<fragops-depth,depth test>> is
specified through the members of
sname:VkPipelineDepthStencilStateCreateInfo:
specified through the members of the
sname:VkPipelineDepthStencilStateCreateInfo structure.
The sname:VkPipelineDepthStencilStateCreateInfo structure is defined as:
include::../structs/VkPipelineDepthStencilStateCreateInfo.txt[]
The members of sname:VkPipelineDepthStencilStateCreateInfo structure are as
follows:
* 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.
@ -297,12 +307,10 @@ The stencil test is controlled with the pname:front and pname:back members
of sname:VkPipelineDepthStencilStateCreateInfo which are of type
sname:VkStencilOpState.
The definition of sname:VkStencilOpState is:
The sname:VkStencilOpState structure is defined as:
include::../structs/VkStencilOpState.txt[]
The members of sname:VkStencilOpState structure are as follows:
* pname:failOp is the action performed on samples that fail the stencil
test.
* pname:passOp is the action performed on samples that pass both the depth
@ -328,7 +336,7 @@ back-facing polygon primitives. For the purposes of stencil testing, a
primitive is still considered a polygon even if the polygon is to be
rasterized as points or lines due to the current elink:VkPolygonMode.
Whether a polygon is front- or back-facing is determined in the same manner
used for face culling (see <<primsrast-triangles-basic,Basic Triangle
used for face culling (see <<primsrast-polygons-basic,Basic Polygon
Rasterization>>).
The operation of the stencil test is also affected by the
@ -349,7 +357,7 @@ include::../protos/vkCmdSetStencilCompareMask.txt[]
* pname:commandBuffer is the command buffer into which the command will be
recorded.
* pname:faceMask is a bitmask specifying the set of stencil state for
which to update the compare mask, and may include the bits:
which to update the compare mask. Bits which can: be set include:
+
--
include::../enums/VkStencilFaceFlagBits.txt[]
@ -426,7 +434,7 @@ include::../enums/VkCompareOp.txt[]
As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp
members of pname:VkStencilOpState indicate what happens to the stored
stencil value if this or certain subsequent tests fail or pass. Each enum is
of type ename:VkStencilOp, which is defined as:
of type elink:VkStencilOp, which is defined as:
include::../enums/VkStencilOp.txt[]

View File

@ -34,13 +34,12 @@ Blending applies only to fixed-point and floating-point color attachments.
If the color attachment has an integer format, blending is not applied.
The pipeline blend state is included in the
sname:VkPipelineColorBlendStateCreateInfo struct during graphics pipeline
sname:VkPipelineColorBlendStateCreateInfo structure during graphics pipeline
creation:
include::../structs/VkPipelineColorBlendStateCreateInfo.txt[]
The sname:VkPipelineColorBlendStateCreateInfo structure is defined as:
The members of the sname:VkPipelineColorBlendStateCreateInfo structure are
as follows:
include::../structs/VkPipelineColorBlendStateCreateInfo.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
@ -60,19 +59,17 @@ as follows:
include::../validity/structs/VkPipelineColorBlendStateCreateInfo.txt[]
The elements of the pname:pAttachments array specify per-target blending
state, and are of type:
Each element of the pname:pAttachments array is a
slink:VkPipelineColorBlendAttachmentState structure specifying per-target
blending state for each individual color attachment. If the
<<features-features-independentBlend,independent blending>> feature is not
enabled on the device, all slink:VkPipelineColorBlendAttachmentState
elements in the pname:pAttachments array must: be identical.
The sname:VkPipelineColorBlendAttachmentState structure is defined as:
include::../structs/VkPipelineColorBlendAttachmentState.txt[]
Blending of each individual color attachment is controlled by the
corresponding element of the pname:pAttachments array. If the
<<features-features-independent-blending,independent blending>> feature is
not enabled on the device, all sname:VkPipelineColorBlendAttachmentState
elements in the pname:pAttachments array must: be identical. The members of
the sname:VkPipelineColorBlendAttachmentState struct have the following
meanings:
* pname:blendEnable controls whether blending is enabled for the
corresponding color attachment. If blending is not enabled, the source
fragment's color for that attachment is passed through unmodified.

View File

@ -59,9 +59,9 @@ This section outlines the execution model of a {apiname} system.
{apiname} exposes one or more _devices_,
each of which exposes one or more _queues_ which may: process work
asynchronously to one another. The queues supported by a device are divided
into _families_, each of which supports one or more types of functionality
and may:
asynchronously to one another. The set of queues supported by a device is
partitioned into _families_. Each family supports one or more types of
functionality and may:
contain multiple queues with similar characteristics. Queues within a single
family are considered _compatible_ with one another, and work produced for a
family of queues can: be executed on any queue within that family. This
@ -71,8 +71,8 @@ graphics, compute, transfer, and sparse memory management.
[NOTE]
.Note
====
It is possible that a single device may: report multiple similar queue
families rather than, or as well as reporting multiple members of one or
A single device may: report multiple similar queue
families rather than, or as well as, reporting multiple members of one or
more of those families. This indicates that while members of those families
have similar capabilities, they are _not_ directly compatible with one
another.
@ -186,7 +186,7 @@ commands depends on the first set of commands. These dependencies enforce
that both the execution of certain
<<synchronization-pipeline-stage-flags,pipeline stages>> in the later set
occur after the execution of certain stages in the source set, and that the
effects of <<synchronization-access-flags,memory accesses>> performed by
effects of <<synchronization-global-memory-barrier,memory accesses>> performed by
certain pipeline stages occur in order and are visible to each other. When
not enforced by an explicit dependency or otherwise forbidden by the
specification, action commands may: overlap execution or execute out of
@ -293,7 +293,7 @@ the commands that consume it have returned.
The following object types are consumed when they are passed into a
{apiname} command and not further accessed by the objects they are used to
create. They can be destroyed at any time they are not in use by an API
create. They can: be destroyed at any time they are not in use by an API
command:
* sname:VkShaderModule
@ -304,7 +304,7 @@ sname:VkDescriptorSetLayout objects may: be accessed by commands that
operate on descriptor sets allocated using that layout, and those descriptor
sets mustnot: be updated with flink:vkUpdateDescriptorSets after the
descriptor set layout has been destroyed. Otherwise, descriptor set layouts
can be destroyed any time they are not in use by an API command.
can: be destroyed any time they are not in use by an API command.
The application mustnot: destroy any other type of {apiname} object until
all uses of that object by the device (such as via command buffer execution)
@ -433,7 +433,7 @@ ftext:vkGet*.
Commands are recorded into a command buffer by calling API commands of the
form ftext:vkCmd*. Each such command may: have different restrictions on
where it can be used: in a primary and/or secondary command buffer, inside
where it can: be used: in a primary and/or secondary command buffer, inside
and/or outside a render pass, and in one or more of the supported queue
types. These restrictions are documented together with the definition of
each such command.
@ -556,10 +556,10 @@ object handle, unless otherwise specified. An object handle is valid if:
* Any objects used by that object, either as part of creation or
execution, must: also be valid.
The reserved handle sname:VK_NULL_HANDLE can: be passed in place of valid
The reserved handle code:VK_NULL_HANDLE can: be passed in place of valid
object handles when _explicitly called out in the specification_. Any
command that creates an object successfully mustnot: return
sname:VK_NULL_HANDLE. It is valid to pass sname:VK_NULL_HANDLE to any
code:VK_NULL_HANDLE. It is valid to pass code:VK_NULL_HANDLE to any
ftext:vkDestroy* or ftext:vkFree* command, which will silently ignore these
values.
@ -584,7 +584,7 @@ flags. A bit flag is valid if:
* The flag is defined as part of the bits type, where the bits type is
obtained by taking the flag type and replacing the trailing etext:Flags
with etext:FlagBits. For example, a flag value of type
elink:VkColorComponentFlags must: contain only values selected from the
ename:VkColorComponentFlags must: contain only values selected from the
bit flags in elink:VkColorComponentFlagBits.
* The flag is allowed in the context in which it is being used. For
example, in some cases, certain bit flags or combinations of bit flags
@ -606,11 +606,16 @@ use by the loader, and don't have corresponding {apiname} structures in this
specification.
Any parameter that is a structure containing a basetype:void* ptext:pNext
member must: have a value of ptext:pNext that is either `NULL`, or points to
a valid structure that is defined by an enabled extension. Extension
structures are not described in the base {apiname} specification, but either
in layered specifications incorporating those extensions, or in separate
vendor-provided documents.
member must: have a value of ptext:pNext that is either `NULL`, or points to a
valid structure defined by an extension. If that extension is supported by
the implementation, then it must: be enabled.
Any component of the implementation (the loader, any enabled layers, and
drivers) must: ignore extension structures with pname:sType values defined
by extensions not supported by that component.
Extension structures are not described in the base {apiname} specification,
but either in layered specifications incorporating those extensions,
or in separate vendor-provided documents.
The above rules also apply recursively to members of structures provided as
input to a command, either as a direct argument to the command, or
@ -734,11 +739,11 @@ ifdef::editing-notes[]
.editing-note
====
(Jon, Bug 14966) This is a rat's nest of complexity, both in terms of
describing/enumerating places such computation may take place (other than
``not shader code'') and in how implementations may do it. We have consciously
describing/enumerating places such computation may: take place (other than
``not shader code'') and in how implementations may: do it. We have consciously
deferred the resolution of this issue to post-1.0, and in the meantime, the
following language inherited from the OpenGL Specification is inserted as a
placeholder. Hopefully it can be tightened up considerably.
placeholder. Hopefully it can: be tightened up considerably.
====
endif::editing-notes[]

View File

@ -258,15 +258,14 @@ will result in an invalid pipeline.
== Vertex Input Description
Applications specify vertex input attribute and vertex input binding
descriptions as part of graphics pipeline creation, via the
pname:pVertexInputState member of sname:VkGraphicsPipelineCreateInfo, which
is of type sname:VkPipelineVertexInputStateCreateInfo:
descriptions as part of graphics pipeline creation. The
slink:VkGraphicsPipelineCreateInfo::pname:pVertexInputState points to a
structure of type sname:VkPipelineVertexInputStateCreateInfo.
The sname:VkPipelineVertexInputStateCreateInfo structure is defined as:
include::../structs/VkPipelineVertexInputStateCreateInfo.txt[]
The members of sname:VkPipelineVertexInputStateCreateInfo have the following
meanings:
* 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.
@ -282,13 +281,12 @@ meanings:
include::../validity/structs/VkPipelineVertexInputStateCreateInfo.txt[]
Each vertex input binding is specified by an instance of the
sname:VkVertexInputBindingDescription structure:
sname:VkVertexInputBindingDescription structure.
The sname:VkVertexInputBindingDescription structure is defined as:
include::../structs/VkVertexInputBindingDescription.txt[]
The members of sname:VkVertexInputBindingDescription have the following
meanings:
* pname:binding is the binding number that this structure
describes.
* pname:stride is the distance in bytes between two
@ -299,7 +297,7 @@ meanings:
include::../validity/structs/VkVertexInputBindingDescription.txt[]
The definition of elink:VkVertexInputRate is:
elink:VkVertexInputRate is defined as:
include::../enums/VkVertexInputRate.txt[]
@ -311,13 +309,12 @@ The values of elink:VkVertexInputRate have the following meanings:
addressing is a function of the instance index.
Each vertex input attribute is specified by an instance of the
sname:VkVertexInputAttributeDescription structure:
sname:VkVertexInputAttributeDescription structure.
The sname:VkVertexInputAttributeDescription structure is defined as:
include::../structs/VkVertexInputAttributeDescription.txt[]
The members of sname:VkVertexInputAttributeDescription have the following
meanings:
* pname:location is the shader binding location number for this
attribute.
* pname:binding is the binding number which this attribute takes

View File

@ -5,7 +5,7 @@
= Initialization
Before using {apiname}, an application must: initialize it by loading the
{apiname} commands, and creating a slink:VkInstance object.
{apiname} commands, and creating a sname:VkInstance object.
[[initialization-functionpointers]]
== Command Function Pointers
@ -34,9 +34,9 @@ Function pointers to commands that don't operate on a specific instance can:
be obtained by using this command with pname:instance equal to `NULL`. The
following commands can: be accessed this way:
* fname:vkEnumerateInstanceExtensionProperties
* fname:vkEnumerateInstanceLayerProperties
* fname:vkCreateInstance
* flink:vkEnumerateInstanceExtensionProperties
* flink:vkEnumerateInstanceLayerProperties
* flink:vkCreateInstance
If pname:instance is a valid sname:VkInstance, function pointers to any
commands that operate on pname:instance or a child of pname:instance can: be
@ -112,7 +112,7 @@ include::../protos/vkCreateInstance.txt[]
include::../validity/protos/vkCreateInstance.txt[]
The definition of sname:VkInstanceCreateInfo is:
The sname:VkInstanceCreateInfo structure is defined as:
include::../structs/VkInstanceCreateInfo.txt[]
@ -142,7 +142,9 @@ is provided by a layer, both the layer and extension must: be specified at
fname:vkCreateInstance time.
The pname:pApplicationInfo member of slink:VkInstanceCreateInfo can: point
to an instance of sname:VkApplicationInfo. This structure is defined as:
to an instance of sname:VkApplicationInfo.
The sname:VkApplicationInfo structure is defined as:
include::../structs/VkApplicationInfo.txt[]
@ -162,8 +164,11 @@ include::../structs/VkApplicationInfo.txt[]
application expects to run, encoded as described in the
<<fundamentals-versionnum,API Version Numbers and Semantics>> section.
If pname:apiVersion is 0 the implementation must: ignore it, otherwise
if the implementation does not support the requested pname:apiVersion
it must: return VK_ERROR_INCOMPATIBLE_DRIVER.
if the implementation does not support the requested pname:apiVersion it
must: return VK_ERROR_INCOMPATIBLE_DRIVER. The patch version number
specified in pname:apiVersion is ignored when creating an instance
object. Only the major and minor versions of the instance must: match
those requested in pname:apiVersion.
include::../validity/structs/VkApplicationInfo.txt[]

View File

@ -288,7 +288,7 @@ Components of the output variables are assigned as described in
Output components identified as 0, 1, 2, and 3 will be directed
to the R, G, B, and A inputs to the blending unit, respectively,
or to the output attachment if blending is disabled.
If two variables are placed within the same location, they must
If two variables are placed within the same location, they must:
have the same underlying type (floating-point or integer).
Fragment outputs identified with an code:Index of zero are directed
@ -355,7 +355,7 @@ See <<descriptorsets-inputattachment>> for more details.
When a shader stage accesses buffer or image resources, as described
in the <<descriptorsets,Resource Descriptors>> section, the shader
resource variables must be matched with the
resource variables must: be matched with the
<<descriptorsets-pipelinelayout,pipeline layout>> that is provided
at pipeline creation time.
@ -365,9 +365,8 @@ with the storage class of code:Uniform, code:UniformConstant, or
code:PushConstant. For the fragment shader, this includes the
<<interfaces-inputattachment, fragment input attachment interface>>.
The shader resource interface can be further broken down into two
sub-interfaces: the push constant interface and the descriptor
set interface.
The shader resource interface consists of two sub-interfaces: the push
constant interface and the descriptor set interface.
[[interfaces-resources-pushconst]]
@ -479,7 +478,7 @@ space required for that variable to extend outside the range
latexmath:[$[0, \mathit{maxStorageBufferRange})$].
Variables identified with a storage class of code:UniformConstant and a
decoration of code:InputAttachmentIndex must be declared as described in
decoration of code:InputAttachmentIndex must: be declared as described in
<<interfaces-inputattachment,Fragment Input Attachment Interface>>.
Each shader variable declaration must: refer to the same type of resource as
@ -559,7 +558,7 @@ and descriptor set <<descriptorsets-updates,operations>>, if a resource
variable is not an array, it is treated as if it has an arrayElement of
zero.
The binding can be any 32-bit unsigned integer value, as described in
The binding can: be any 32-bit unsigned integer value, as described in
<<descriptorsets-setlayout>>. Each descriptor set has its own binding
name space.
@ -574,7 +573,7 @@ multiple limits.
If multiple entry points in the same pipeline refer to the same set and
binding, all variable definitions with that code:DescriptorSet and
code:Binding must have the same basic type.
code:Binding must: have the same basic type.
Not all descriptor sets and bindings specified in a pipeline layout need to
be used in a particular shader stage or pipeline, but if a
@ -611,7 +610,7 @@ elink:VkShaderStageFlagBits for that stage.
[[interfaces-resources-layout]]
=== Offset and Stride Assignment
All variables with a storage class of code:PushConstant or code:Uniform must
All variables with a storage class of code:PushConstant or code:Uniform must:
be explicitly laid out using the code:Offset, code:ArrayStride, and
code:MatrixStride decorations. There are two different layouts requirements
depending on the specific resources.
@ -623,7 +622,7 @@ Member variables of an code:OpTypeStruct with storage class of
code:Uniform and a decoration of code:Block (uniform buffers) must: be laid
out according to the following rules.
* The code:Offset Decoration must be a multiple of its base alignment,
* The code:Offset Decoration must: be a multiple of its base alignment,
computed recursively as follows:
+
** a scalar of size latexmath:[$N$] has a base alignment of
@ -668,7 +667,6 @@ The *std430 layout* in GLSL satisfies these rules.
====
[[interfaces-builtin-variables]]
== Built-In Variables

View File

@ -96,7 +96,7 @@ Please tag issues with appropriate labels, such as ``Specification'',
``Ref Pages'' or ``Registry'', to help us triage and assign them
appropriately. Unfortunately, Github does not currently let users who do not
have write access to the repository set Github labels on issues. In the
meantime, they can be added to the title line of the issue set in brackets,
meantime, they can: be added to the title line of the issue set in brackets,
e.g. ''[Specification]''.

View File

@ -74,15 +74,15 @@ with the pointer value being a multiple of pname:alignment.
[NOTE]
====
Correct Vulkan operation cannot be assumed if the application doesn't
Correct Vulkan operation cannot: be assumed if the application doesn't
follow these rules.
For example, pname:pfnAllocation (or pname:pfnReallocation) could cause
termination of running Vulkan instance(s) on a failed allocation for
debugging purposes, either directly or indirectly. In these circumstances,
it cannot be assumed that any part of any affected VkInstance objects are
it cannot: be assumed that any part of any affected VkInstance objects are
going to operate correctly (even flink:vkDestroyInstance), and the
application must ensure it cleans up properly via other means (e.g.
application must: ensure it cleans up properly via other means (e.g.
process termination).
====
@ -369,7 +369,7 @@ include::../protos/vkGetPhysicalDeviceMemoryProperties.txt[]
include::../validity/protos/vkGetPhysicalDeviceMemoryProperties.txt[]
The definition of sname:VkPhysicalDeviceMemoryProperties is:
The sname:VkPhysicalDeviceMemoryProperties structure is defined as:
include::../structs/VkPhysicalDeviceMemoryProperties.txt[]
@ -377,7 +377,7 @@ ifdef::editing-notes[]
[NOTE]
.editing-note
====
TODO (Jon) - Need to restructure description like other structs.
TODO (Jon) - Need to restructure description like other structures.
====
endif::editing-notes[]
@ -403,7 +403,7 @@ pname:memoryTypeCount and is less than or equal to
ename:VK_MAX_MEMORY_TYPES. Each memory type is described by an element of
the pname:memoryTypes array, as a sname:VkMemoryType structure.
The definition of sname:VkMemoryHeap is:
The sname:VkMemoryHeap structure is defined as:
include::../structs/VkMemoryHeap.txt[]
@ -427,7 +427,7 @@ In a unified memory architecture (UMA) system, there is often only a single
memory heap which is considered to be equally ``local'' to the host and to the
device, and such an implementation must: advertise the heap as device-local.
The definition of sname:VkMemoryType is:
The sname:VkMemoryType structure is defined as:
include::../structs/VkMemoryType.txt[]
@ -557,7 +557,7 @@ include::../protos/vkAllocateMemory.txt[]
include::../validity/protos/vkAllocateMemory.txt[]
sname:VkMemoryAllocateInfo is defined as:
The sname:VkMemoryAllocateInfo structure is defined as:
include::../structs/VkMemoryAllocateInfo.txt[]
@ -746,7 +746,7 @@ include::../protos/vkInvalidateMappedMemoryRanges.txt[]
include::../validity/protos/vkInvalidateMappedMemoryRanges.txt[]
sname:VkMappedMemoryRange is defined as:
The sname:VkMappedMemoryRange structure is defined as:
include::../structs/VkMappedMemoryRange.txt[]

View File

@ -93,7 +93,7 @@ Compute pipelines are created by calling:
include::../protos/vkCreateComputePipelines.txt[]
* pname:device is the logical device that creates the compute pipelines.
* pname:pipelineCache is either sname:VK_NULL_HANDLE, indicating that
* pname:pipelineCache is either code:VK_NULL_HANDLE, indicating that
pipeline caching is disabled; or the handle of a valid
<<pipelines-cache,pipeline cache>> object, in which case use of that
cache is enabled for the duration of the command.
@ -120,7 +120,7 @@ endif::editing-notes[]
include::../validity/protos/vkCreateComputePipelines.txt[]
The definition of sname:VkComputePipelineCreateInfo is:
The sname:VkComputePipelineCreateInfo structure is defined as:
include::../structs/VkComputePipelineCreateInfo.txt[]
@ -142,14 +142,13 @@ The parameters pname:basePipelineHandle and pname:basePipelineIndex are
described in more detail in
<<pipelines-pipeline-derivatives,Pipeline Derivatives>>.
The parameter pname:stage member of type
sname:VkPipelineShaderStageCreateInfo is:
pname:stage points to a structure of type
sname:VkPipelineShaderStageCreateInfo.
The sname:VkPipelineShaderStageCreateInfo structure is defined as:
include::../structs/VkPipelineShaderStageCreateInfo.txt[]
The members of the sname:VkPipelineShaderStageCreateInfo structure are as
follows:
* 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.
@ -179,7 +178,7 @@ calling fname:vkCreateGraphicsPipelines:
include::../protos/vkCreateGraphicsPipelines.txt[]
* pname:device is the logical device that creates the graphics pipelines.
* pname:pipelineCache is either sname:VK_NULL_HANDLE, indicating that
* pname:pipelineCache is either code:VK_NULL_HANDLE, indicating that
pipeline caching is disabled; or the handle of a valid
<<pipelines-cache,pipeline cache>> object, in which case use of that
cache is enabled for the duration of the command.
@ -197,7 +196,9 @@ include::../validity/protos/vkCreateGraphicsPipelines.txt[]
The sname:VkGraphicsPipelineCreateInfo structure includes an array of shader
create info structures containing all the desired active shader stages, as
well as creation info to define all relevant fixed-function stages, and a
pipeline layout. The definition of sname:VkGraphicsPipelineCreateInfo is:
pipeline layout.
The sname:VkGraphicsPipelineCreateInfo structure is defined as:
include::../structs/VkGraphicsPipelineCreateInfo.txt[]
@ -281,14 +282,13 @@ parent and possibly a child in a pipeline hierarchy. See
<<pipelines-pipeline-derivatives,Pipeline Derivatives>> for more
information.
The definition of the pname:pDynamicState member of type
sname:VkPipelineDynamicStateCreateInfo is:
pname:pDynamicState points to a structure of type
sname:VkPipelineDynamicStateCreateInfo.
The sname:VkPipelineDynamicStateCreateInfo structure is defined as:
include::../structs/VkPipelineDynamicStateCreateInfo.txt[]
The members of the sname:VkPipelineDynamicStateCreateInfo structure are as
follows:
* 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.
@ -300,69 +300,69 @@ follows:
include::../validity/structs/VkPipelineDynamicStateCreateInfo.txt[]
The definition of the elink:VkDynamicState enumeration is as follows:
The elink:VkDynamicState enumerants are defined as:
include::../enums/VkDynamicState.txt[]
* ename:VK_DYNAMIC_STATE_VIEWPORT indicates that the pname:pViewports
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
must: be set dynamically with flink:vkCmdSetViewport before any draw
commands. The number of viewports used by a pipeline is still
specified by the pname:viewportCount member of
sname:VkPipelineViewportStateCreateInfo.
* ename:VK_DYNAMIC_STATE_SCISSOR indicates that the pname:pScissors
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
must: be set dynamically with flink:vkCmdSetScissor before any draw
commands. The number of scissor rectangles used by a pipeline is still
specified by the pname:scissorCount member of
sname:VkPipelineViewportStateCreateInfo.
* ename:VK_DYNAMIC_STATE_LINE_WIDTH indicates that the pname:lineWidth
state in sname:VkPipelineRasterizationStateCreateInfo will be ignored
and must: be set dynamically with flink:vkCmdSetLineWidth before any
draw commands that generate line primitives for the rasterizer.
* ename:VK_DYNAMIC_STATE_DEPTH_BIAS indicates that the
pname:depthBiasConstantFactor, pname:depthBiasClamp and
pname:depthBiasSlopeFactor states in
sname:VkPipelineRasterizationStateCreateInfo will be ignored and must:
be set dynamically with flink:vkCmdSetDepthBias before any draws are
performed with pname:depthBiasEnable in
sname:VkPipelineRasterizationStateCreateInfo set to ename:VK_TRUE.
* ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS indicates that the
pname:blendConstants state in
sname:VkPipelineColorBlendStateCreateInfo will be ignored and must: be
set dynamically with flink:vkCmdSetBlendConstants before any draws are
performed with a pipeline state with
sname:VkPipelineColorBlendAttachmentState member pname:blendEnable set
to ename:VK_TRUE and any of the blend functions using a constant blend
color.
* ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS indicates that the
pname:minDepthBounds and pname:maxDepthBounds states of
slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must:
be set dynamically with flink:vkCmdSetDepthBounds before any draws are
performed with a pipeline state with
sname:VkPipelineDepthStencilStateCreateInfo member
pname:depthBoundsTestEnable set to ename:VK_TRUE.
* ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK indicates that the
pname:compareMask state in
sname:VkPipelineDepthStencilStateCreateInfo for both pname:front and
pname:back will be ignored and must: be set dynamically with
flink:vkCmdSetStencilCompareMask before any draws are performed with a
pipeline state with sname:VkPipelineDepthStencilStateCreateInfo member
pname:stencilTestEnable set to ename:VK_TRUE
* ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK indicates that the
pname:writeMask state in sname:VkPipelineDepthStencilStateCreateInfo
for both pname:front and pname:back will be ignored and must: be set
dynamically with flink:vkCmdSetStencilWriteMask before any draws are
performed with a pipeline state with
sname:VkPipelineDepthStencilStateCreateInfo member
pname:stencilTestEnable set to ename:VK_TRUE
* ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE indicates that the
pname:reference state in sname:VkPipelineDepthStencilStateCreateInfo
for both pname:front and pname:back will be ignored and must: be set
dynamically with flink:vkCmdSetStencilReference before any draws are
performed with a pipeline state with
sname:VkPipelineDepthStencilStateCreateInfo member
pname:stencilTestEnable set to ename:VK_TRUE
* ename:VK_DYNAMIC_STATE_VIEWPORT indicates that the pname:pViewports
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
must: be set dynamically with flink:vkCmdSetViewport before any draw
commands. The number of viewports used by a pipeline is still
specified by the pname:viewportCount member of
sname:VkPipelineViewportStateCreateInfo.
* ename:VK_DYNAMIC_STATE_SCISSOR indicates that the pname:pScissors
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
must: be set dynamically with flink:vkCmdSetScissor before any draw
commands. The number of scissor rectangles used by a pipeline is still
specified by the pname:scissorCount member of
sname:VkPipelineViewportStateCreateInfo.
* ename:VK_DYNAMIC_STATE_LINE_WIDTH indicates that the pname:lineWidth
state in sname:VkPipelineRasterizationStateCreateInfo will be ignored
and must: be set dynamically with flink:vkCmdSetLineWidth before any
draw commands that generate line primitives for the rasterizer.
* ename:VK_DYNAMIC_STATE_DEPTH_BIAS indicates that the
pname:depthBiasConstantFactor, pname:depthBiasClamp and
pname:depthBiasSlopeFactor states in
sname:VkPipelineRasterizationStateCreateInfo will be ignored and must:
be set dynamically with flink:vkCmdSetDepthBias before any draws are
performed with pname:depthBiasEnable in
sname:VkPipelineRasterizationStateCreateInfo set to ename:VK_TRUE.
* ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS indicates that the
pname:blendConstants state in
sname:VkPipelineColorBlendStateCreateInfo will be ignored and must: be
set dynamically with flink:vkCmdSetBlendConstants before any draws are
performed with a pipeline state with
sname:VkPipelineColorBlendAttachmentState member pname:blendEnable set
to ename:VK_TRUE and any of the blend functions using a constant blend
color.
* ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS indicates that the
pname:minDepthBounds and pname:maxDepthBounds states of
slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must:
be set dynamically with flink:vkCmdSetDepthBounds before any draws are
performed with a pipeline state with
sname:VkPipelineDepthStencilStateCreateInfo member
pname:depthBoundsTestEnable set to ename:VK_TRUE.
* ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK indicates that the
pname:compareMask state in
sname:VkPipelineDepthStencilStateCreateInfo for both pname:front and
pname:back will be ignored and must: be set dynamically with
flink:vkCmdSetStencilCompareMask before any draws are performed with a
pipeline state with sname:VkPipelineDepthStencilStateCreateInfo member
pname:stencilTestEnable set to ename:VK_TRUE
* ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK indicates that the
pname:writeMask state in sname:VkPipelineDepthStencilStateCreateInfo
for both pname:front and pname:back will be ignored and must: be set
dynamically with flink:vkCmdSetStencilWriteMask before any draws are
performed with a pipeline state with
sname:VkPipelineDepthStencilStateCreateInfo member
pname:stencilTestEnable set to ename:VK_TRUE
* ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE indicates that the
pname:reference state in sname:VkPipelineDepthStencilStateCreateInfo
for both pname:front and pname:back will be ignored and must: be set
dynamically with flink:vkCmdSetStencilReference before any draws are
performed with a pipeline state with
sname:VkPipelineDepthStencilStateCreateInfo member
pname:stencilTestEnable set to ename:VK_TRUE
If tessellation shader stages are omitted, the tessellation shading and
fixed-function stages of the pipeline are skipped.
@ -453,10 +453,10 @@ group-create.
When an application attempts to create many pipelines in a single command,
it is possible that some subset may: fail creation. In that case, the
corresponding entries in the pname:pPipelines output array will be filled
with sname:VK_NULL_HANDLE values. If any pipeline fails creation (for
with code:VK_NULL_HANDLE values. If any pipeline fails creation (for
example, due to out of memory errors), the ftext:vkCreate*Pipelines commands
will return an error code. The implementation will attempt to create all
pipelines, and only return sname:VK_NULL_HANDLE values for those that
pipelines, and only return code:VK_NULL_HANDLE values for those that
actually failed.
@ -476,7 +476,7 @@ pname:basePipelineHandle or pname:basePipelineIndex members of the structure
must: have a valid handle/index, and indicates the parent pipeline. If
pname:basePipelineHandle is used, the parent pipeline must: have already
been created. If pname:basePipelineIndex is used, then the parent is being
created in the same command. sname:VK_NULL_HANDLE acts as the invalid handle
created in the same command. code:VK_NULL_HANDLE acts as the invalid handle
for pname:basePipelineHandle, and -1 is the invalid index for
pname:basePipelineIndex. If pname:basePipelineIndex is used, the base
pipeline must: appear earlier in the array. The base pipeline must: have
@ -513,7 +513,7 @@ include::../protos/vkCreatePipelineCache.txt[]
include::../validity/protos/vkCreatePipelineCache.txt[]
The definition of sname:VkPipelineCacheCreateInfo is:
The sname:VkPipelineCacheCreateInfo structure is defined as:
include::../structs/VkPipelineCacheCreateInfo.txt[]
@ -533,7 +533,7 @@ include::../validity/structs/VkPipelineCacheCreateInfo.txt[]
Once created, a pipeline cache can: be passed to the
fname:vkCreateGraphicsPipelines and fname:vkCreateComputePipelines commands.
If the pipeline cache passed into these commands is not
sname:VK_NULL_HANDLE, the implementation will query it for possible reuse
code:VK_NULL_HANDLE, the implementation will query it for possible reuse
opportunities and update it with new content. The use of the pipeline cache
object in these commands is internally synchronized, and the same pipeline
cache object can: be used in multiple threads simultaneously.
@ -579,7 +579,7 @@ include::../protos/vkGetPipelineCacheData.txt[]
the pipeline cache, as described below.
* pname:pData is either `NULL` or a pointer to a buffer.
If pname:pData is `NULL`, then the maximum size of the data that can be
If pname:pData is `NULL`, then the maximum size of the data that can: be
retrieved from the pipeline cache, in bytes, is returned in pname:pDataSize.
Otherwise, pname:pDataSize must: point to a variable set by the user to the
size of the buffer, in bytes, pointed to by pname:pData, and on return the
@ -675,13 +675,13 @@ its local workgroup size changed at runtime by the user, for example.
Each instance of the sname:VkPipelineShaderStageCreateInfo structure
contains a parameter pname:pSpecializationInfo, which can: be `NULL` to
indicate no specialization constants. The definition of the
sname:VkSpecializationInfo structure is:
indicate no specialization constants, or point to a
sname:VkSpecializationInfo structure.
The sname:VkSpecializationInfo structure is defined as:
include::../structs/VkSpecializationInfo.txt[]
The members of sname:VkSpecializationInfo are as follows:
* pname:mapEntryCount is the number of entries in the pname:pMapEntries
array.
* pname:pMapEntries is a pointer to an array of
@ -692,13 +692,13 @@ The members of sname:VkSpecializationInfo are as follows:
include::../validity/structs/VkSpecializationInfo.txt[]
The definition of the pname:pMapEntries member of type
sname:VkSpecializationMapEntry is:
pname:pMapEntries points to a structure of type
sname:VkSpecializationMapEntry.
The sname:VkSpecializationMapEntry structure is defined as:
include::../structs/VkSpecializationMapEntry.txt[]
The members of sname:VkSpecializationMapEntry are as follows:
* pname:constantID ID of the specialization constant in SPIR-V.
* pname:offset byte offset of the specialization constant value within the
supplied data buffer.

View File

@ -67,9 +67,6 @@ The sname:VkPipelineMultisampleStateCreateInfo structure is defined as:
include::../structs/VkPipelineMultisampleStateCreateInfo.txt[]
The members of the sname:VkPipelineMultisampleStateCreateInfo structure are
as follows:
* 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.

View File

@ -37,12 +37,10 @@ include::../protos/vkCreateQueryPool.txt[]
include::../validity/protos/vkCreateQueryPool.txt[]
The definition of sname:VkQueryPoolCreateInfo is:
The sname:VkQueryPoolCreateInfo structure is defined as:
include::../structs/VkQueryPoolCreateInfo.txt[]
The members of sname:VkQueryPoolCreateInfo have the following meanings:
* 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.
@ -133,15 +131,16 @@ compute commands. Timestamp queries write timestamps to a query pool.
A query must: begin and end in the same command buffer, although if it is a
primary command buffer, and the
<<features-features-inherited-queries,inherited queries>> feature is
<<features-features-inheritedQueries,inherited queries>> feature is
enabled, it can: execute secondary command buffers during the query
operation. For a secondary command buffer to be executed while a query is
active, it must: set the pname:occlusionQueryEnable, pname:queryFlags,
and/or pname:pipelineStatistics members of slink:VkCommandBufferInheritanceInfo
to conservative values, as described in the <<commandbuffers-recording, Command
Buffer Recording>> section. A query must: either begin and end inside the
same subpass of a render pass instance, or must: both begin and end outside
of a render pass instance (i.e. contain entire render pass instances).
and/or pname:pipelineStatistics members of
slink:VkCommandBufferInheritanceInfo to conservative values, as described in
the <<commandbuffers-recording, Command Buffer Recording>> section. A query
must: either begin and end inside the same subpass of a render pass
instance, or must: both begin and end outside of a render pass instance
(i.e. contain entire render pass instances).
Begin a query by calling:

View File

@ -91,7 +91,7 @@ include::../protos/vkCreateRenderPass.txt[]
* pname:device is the logical device that creates the render pass.
* pname:pCreateInfo is a pointer to an instance of the
sname:VkRenderPassCreateInfo structure that describes the parameters of
slink:VkRenderPassCreateInfo structure that describes the parameters of
the render pass.
* pname:pAllocator controls host memory allocation as described in the
<<memory-allocation, Memory Allocation>> chapter.
@ -127,7 +127,7 @@ include::../structs/VkRenderPassCreateInfo.txt[]
include::../validity/structs/VkRenderPassCreateInfo.txt[]
sname:VkAttachmentDescription is defined as:
The sname:VkAttachmentDescription structure is defined as:
include::../structs/VkAttachmentDescription.txt[]
@ -271,7 +271,7 @@ until a framebuffer is created using the render pass, so the above
conditions cannot: be validated at render pass creation time.
====
sname:VkSubpassDescription is defined as:
The sname:VkSubpassDescription structure is defined as:
include::../structs/VkSubpassDescription.txt[]
@ -299,7 +299,7 @@ include::../structs/VkSubpassDescription.txt[]
i.e. if the shader declared an output variable `layout(location=X)` then
it uses the attachment provided in pname:pColorAttachments[X].
* pname:pResolveAttachments is `NULL` or a pointer to an array of
sname:VkAttachmentReference structures. If pname:pResolveAttachments is
slink:VkAttachmentReference structures. If pname:pResolveAttachments is
not `NULL`, each of its elements corresponds to a color attachment (the
element in pname:pColorAttachments at the same index). At the end of
each subpass, the subpass's color attachments are resolved to
@ -500,7 +500,7 @@ It will be common for a render pass to consist of a simple linear graph of
dependencies, where subpass N depends on subpass N-1 for all N, and the
operation of the memory barriers and layout transitions is fairly
straightforward to reason about for those simple cases. But for more complex
graphs, there are some rules that govern when there must be dependencies
graphs, there are some rules that govern when there must: be dependencies
between subpasses.
As stated earlier, render passes must: include subpass dependencies which
@ -623,9 +623,9 @@ references are compatible.
If two render passes contain more than one subpass, they are compatible if
they are identical except for:
* Initial and final image layout in attachment descriptions
* Load and store operations in attachment descriptions
* Image layout in attachment references
* Initial and final image layout in attachment descriptions
* Load and store operations in attachment descriptions
* Image layout in attachment references
A framebuffer is compatible with a render pass if it was created using the
same render pass or a compatible render pass.
@ -641,7 +641,7 @@ An application creates a framebuffer by calling:
include::../protos/vkCreateFramebuffer.txt[]
* pname:device is the logical device that creates the framebuffer.
* pname:pCreateInfo points to a sname:VkFramebufferCreateInfo structure
* pname:pCreateInfo points to a slink:VkFramebufferCreateInfo structure
which describes additional information about framebuffer creation.
* pname:pAllocator controls host memory allocation as described in the
<<memory-allocation, Memory Allocation>> chapter.
@ -687,12 +687,12 @@ rather use shader side effects such as image stores and atomics to produce
an output. In this case, the subpass continues to use the pname:width,
pname:height, and pname:layers of the framebuffer to define the dimensions
of the rendering area, and the pname:rasterizationSamples from each
pipeline's sname:VkPipelineMultisampleStateCreateInfo to define the number
pipeline's slink:VkPipelineMultisampleStateCreateInfo to define the number
of samples used in rasterization; however, if
sname:VkPhysicalDeviceFeatures::pname:variableMultisampleRate is
slink:VkPhysicalDeviceFeatures::pname:variableMultisampleRate is
code:VK_FALSE, then all pipelines to be bound with a given zero-attachment
subpass must: have the same value for
sname:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
To destroy a framebuffer, call:
@ -720,7 +720,7 @@ include::../protos/vkCmdBeginRenderPass.txt[]
* pname:commandBuffer is the command buffer in which to record the
command.
* pname:pRenderPassBegin is a pointer to a sname:VkRenderPassBeginInfo
* pname:pRenderPassBegin is a pointer to a slink:VkRenderPassBeginInfo
structure (defined below) which indicates the render pass to begin an
instance of, and the framebuffer the instance uses.
* pname:contents specifies how the commands in the first subpass will be
@ -743,7 +743,6 @@ include::../validity/protos/vkCmdBeginRenderPass.txt[]
After beginning a render pass instance, the command buffer is ready to
record the commands for the first subpass of that render pass.
[[renderpass-VkRenderPassBeginInfo]]
The sname:VkRenderPassBeginInfo structure is defined as:
include::../structs/VkRenderPassBeginInfo.txt[]
@ -756,7 +755,7 @@ include::../structs/VkRenderPassBeginInfo.txt[]
* pname:renderArea is the render area that is affected by the render pass
instance, and is described in more detail below.
* pname:clearValueCount is the number of elements in pname:pClearValues.
* pname:pClearValues is an array of sname:VkClearValue structures that
* pname:pClearValues is an array of slink:VkClearValue structures that
contains clear values for each attachment, if the attachment uses a
pname:loadOp value of ename:VK_ATTACHMENT_LOAD_OP_CLEAR. The array is
indexed by attachment number, with elements corresponding to uncleared
@ -788,7 +787,7 @@ include::../protos/vkGetRenderAreaGranularity.txt[]
* pname:device is the logical device that owns the render pass.
* pname:renderPass is a handle to a render pass.
* pname:pGranularity points to a sname:VkExtent2D structure in which the
* pname:pGranularity points to a slink:VkExtent2D structure in which the
granularity is returned.
include::../validity/protos/vkGetRenderAreaGranularity.txt[]
@ -796,19 +795,23 @@ include::../validity/protos/vkGetRenderAreaGranularity.txt[]
The conditions leading to an optimal pname:renderArea are:
* the pname:offset.x member in pname:renderArea is a multiple of the
pname:width member of the returned sname:VkExtent2D (the horizontal
pname:width member of the returned slink:VkExtent2D (the horizontal
granularity).
* the pname:offset.y member in pname:renderArea is a multiple of the
pname:height of the returned sname:VkExtent2D (the vertical
pname:height of the returned slink:VkExtent2D (the vertical
granularity).
* either the pname:offset.width member in pname:renderArea is a multiple
of the horizontal granularity or pname:offset.x+pname:offset.width is
equal to the pname:width of the pname:framebuffer in the
sname:VkRenderPassBeginInfo.
slink:VkRenderPassBeginInfo.
* either the pname:offset.height member in pname:renderArea is a multiple
of the vertical granularity or pname:offset.y+pname:offset.height is
equal to the pname:height of the pname:framebuffer in the
sname:VkRenderPassBeginInfo.
slink:VkRenderPassBeginInfo.
Subpass dependencies are not affected by the render area, and apply to the
entire image subresources attached to the framebuffer. Similarly, pipeline
barriers are valid even if their effect extends outside the render area.
After recording the commands for a subpass, an application transitions to
the next subpass in the render pass instance by calling:

View File

@ -34,12 +34,10 @@ include::../protos/vkCreateBuffer.txt[]
include::../validity/protos/vkCreateBuffer.txt[]
The definition of sname:VkBufferCreateInfo is:
The sname:VkBufferCreateInfo structure is defined as:
include::../structs/VkBufferCreateInfo.txt[]
The members of sname:VkBufferCreateInfo have the following meanings:
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a bitfield describing additional parameters of the
@ -163,12 +161,10 @@ include::../protos/vkCreateBufferView.txt[]
include::../validity/protos/vkCreateBufferView.txt[]
The definition of sname:VkBufferViewCreateInfo is:
The sname:VkBufferViewCreateInfo structure is defined as:
include::../structs/VkBufferViewCreateInfo.txt[]
The members of sname:VkBufferViewCreateInfo have the following meanings:
* 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.
@ -221,12 +217,10 @@ include::../protos/vkCreateImage.txt[]
include::../validity/protos/vkCreateImage.txt[]
The definition of sname:VkImageCreateInfo is:
The sname:VkImageCreateInfo structure is defined as:
include::../structs/VkImageCreateInfo.txt[]
The members of sname:VkImageCreateInfo have the following meanings:
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a bitfield describing additional parameters of the image.
@ -372,10 +366,10 @@ See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
more details.
* ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can:
be used to create a slink:VkImageView with a different format from the
be used to create a sname:VkImageView with a different format from the
image.
* ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT indicates that the image can:
be used to create a slink:VkImageView of type
be used to create a sname:VkImageView of type
ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY.
The layout of an image subresource (mipLevel/arrayLayer) of an image created
@ -392,11 +386,11 @@ include::../protos/vkGetImageSubresourceLayout.txt[]
include::../validity/protos/vkGetImageSubresourceLayout.txt[]
The definition of the sname:VkImageSubresource structure is:
The sname:VkImageSubresource structure is defined as:
include::../structs/VkImageSubresource.txt[]
* pname:aspectMask is a elink:VkImageAspectFlags selecting the image
* pname:aspectMask is a ename:VkImageAspectFlags selecting the image
aspect.
* pname:mipLevel selects the mipmap level.
* pname:arrayLayer selects the array layer.
@ -762,8 +756,9 @@ baseArrayLayer = 0 +
arrayLayers = 1
|========================================
The pname:subresourceRange member is of type sname:VkImageSubresourceRange
and is defined as:
The pname:subresourceRange member is of type sname:VkImageSubresourceRange.
The sname:VkImageSubresourceRange structure is defined as:
include::../structs/VkImageSubresourceRange.txt[]
@ -818,7 +813,9 @@ depth/stencil image is used as a depth/stencil framebuffer attachment, the
pname:aspectMask is ignored and both depth and stencil image subresources
are used.
The pname:components member is defined as follows:
The pname:components member is of type sname:VkComponentMapping.
The sname:VkComponentMapping structure is defined as:
include::../structs/VkComponentMapping.txt[]
@ -891,7 +888,7 @@ details on resource memory association for sparse resources is described in
<<sparsememory>>.
Non-sparse resources must: be bound completely and contiguously to a single
slink:VkDeviceMemory object before the resource is passed as a parameter to
sname:VkDeviceMemory object before the resource is passed as a parameter to
any of the following operations:
* creating image or buffer views
@ -925,9 +922,7 @@ include::../protos/vkGetImageMemoryRequirements.txt[]
include::../validity/protos/vkGetImageMemoryRequirements.txt[]
The sname:VkMemoryRequirements structure returned by
flink:vkGetBufferMemoryRequirements and flink:vkGetImageMemoryRequirements
is defined as follows:
The sname:VkMemoryRequirements structure is defined as:
include::../structs/VkMemoryRequirements.txt[]
@ -963,7 +958,7 @@ flink:vkGetImageMemoryRequirements:
objects created with the same value for the pname:flags and pname:usage
members in the sname:VkBufferCreateInfo structure passed to
fname:vkCreateBuffer. Further, if code:usage1 and code:usage2 of type
elink:VkBufferUsageFlags are such that the bits set in code:usage2 are a
ename:VkBufferUsageFlags are such that the bits set in code:usage2 are a
subset of the bits set in code:usage1, and they have the same
pname:flags, then the bits set in pname:memoryTypeBits returned for
code:usage1 must: be a subset of the bits set in pname:memoryTypeBits
@ -1178,7 +1173,7 @@ Buffers, and linear image subresources in either the
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
layouts, are _host-accessible subresources_. That is, the host has a
well-defined addressing scheme to interpret the contents, and thus the
layout of the data in memory can be consistently interpreted across aliases
layout of the data in memory can: be consistently interpreted across aliases
if each of those aliases is a host-accessible subresource. Opaque images and
linear image subresources in other layouts are not host-accessible.

View File

@ -23,12 +23,10 @@ include::../protos/vkCreateSampler.txt[]
include::../validity/protos/vkCreateSampler.txt[]
The sname:VkSamplerCreateInfo structure is defined as follows:
The sname:VkSamplerCreateInfo structure is defined as:
include::../structs/VkSamplerCreateInfo.txt[]
The members of sname:VkSamplerCreateInfo are described as follows:
* 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.
@ -123,7 +121,7 @@ ename:VK_SAMPLER_MIPMAP_MODE_NEAREST correspond to
code:GL_LINEAR_MIPMAP_NEAREST).
There are no {apiname} filter modes that directly correspond to OpenGL
minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can be
minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can: be
emulated using ename:VK_SAMPLER_MIPMAP_MODE_NEAREST, pname:minLod = 0, and
pname:maxLod = 0.25, and using pname:minFilter = ename:VK_FILTER_LINEAR or
pname:minFilter = ename:VK_FILTER_NEAREST, respectively.

View File

@ -424,7 +424,7 @@ be assigned to that variable for all samples in the pixel, but that value
must: be interpolated to a location that lies in both the pixel and in the
primitive being rendered, including any of the pixel's samples covered by
the primitive. Because the location at which the variable is interpolated
may be different in neighboring pixels, and derivatives may be computed by
may: be different in neighboring pixels, and derivatives may: be computed by
computing differences between neighboring pixels, derivatives of
centroid-sampled inputs may: be less accurate than those for non-centroid
interpolated variables. If a fragment shader input is decorated with

View File

@ -463,12 +463,12 @@ must: abide by the following guidelines:
* All sparse resources that are bound to aliased physical memory must: be
created with the ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT /
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT flag.
* All resources that access aliased physical memory must interpret the
* All resources that access aliased physical memory must: interpret the
memory in the same way. This implies the following:
** Buffers and images cannot: alias the same physical memory in a data
consistent fashion. The physical memory ranges must be used exclusively
by buffers or used exclusively by images for data consistency to be
guaranteed.
consistent fashion. The physical memory ranges must: be used
exclusively by buffers or used exclusively by images for data
consistency to be guaranteed.
** Memory in sparse image mip tail regions cannot: access
aliased memory in a data consistent fashion.
** Sparse images that alias the same physical memory must: have compatible
@ -477,7 +477,7 @@ must: abide by the following guidelines:
Failure to follow any of the above guidelines will require the application
to abide by the normal, non-sparse resource <<resources-memory-aliasing,
aliasing rules>>. In this case memory cannot be accessed in a data
aliasing rules>>. In this case memory cannot: be accessed in a data
consistent fashion.
[NOTE]
@ -667,8 +667,10 @@ features.
Some features of the implementation are not possible to disable, and are
reported to allow applications to alter their sparse resource usage
accordingly. These read-only capabilites are reported in the
pname:sparseProperties member of slink:VkPhysicalDeviceProperties.
The definition of pname:sparseProperties is
slink:VkPhysicalDeviceProperties::pname:sparseProperties member, which is a
structure of type sname:VkPhysicalDeviceSparseProperties.
The sname:VkPhysicalDeviceSparseProperties structure is defined as:
include::../structs/VkPhysicalDeviceSparseProperties.txt[]
@ -734,12 +736,12 @@ supported and what the sparse image block shape will be.
include::../structs/VkSparseImageFormatProperties.txt[]
* pname:aspectMask is a elink:VkImageAspectFlags specifying which
aspects of the image the properties apply to.
* pname:aspectMask is a bitmask of elink:VkImageAspectFlagBits specifying
which aspects of the image the properties apply to.
* pname:imageGranularity is the width, height, and depth of the
sparse image block in texels or compressed texel blocks.
* pname:flags is a bitmask specifying additional information about
the sparse resource. Bits which can: be set include:
* pname:flags is a bitmask specifying additional information about the
sparse resource. Bits which can: be set include:
+
--
include::../enums/VkSparseImageFormatFlagBits.txt[]
@ -877,8 +879,8 @@ include::../structs/VkSparseImageMemoryRequirements.txt[]
single bindable sparse image block in pixel units. For aspect
ename:VK_IMAGE_ASPECT_METADATA_BIT, all dimensions will be zero
pixels. All metadata is located in the mip tail region.
* pname:formatProperties.flags contains members of
elink:VkSparseImageFormatFlags:
* pname:formatProperties.flags is a bitmask of
elink:VkSparseImageFormatFlagBits:
** If ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set the image
uses a single mip tail region for all array layers.
** If ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is set the
@ -954,8 +956,8 @@ resource.
Non-sparse resources are backed by a single physical allocation prior to
device use (via fname:vkBindImageMemory or fname:vkBindBufferMemory), and
their backing mustnot: be changed. On the other hand, sparse resources can
be bound to memory non-contiguously and these bindings can be altered
their backing mustnot: be changed. On the other hand, sparse resources can:
be bound to memory non-contiguously and these bindings can: be altered
during the lifetime of the resource.
[NOTE]
@ -1045,10 +1047,10 @@ include::../structs/VkSparseMemoryBind.txt[]
* pname:resourceOffset is the offset into the resource.
* pname:size is the size of the memory region to be bound.
* pname:memory is the sname:VkDeviceMemory object that the range of the
resource is bound to. If pname:memory is sname:VK_NULL_HANDLE, the range
resource is bound to. If pname:memory is code:VK_NULL_HANDLE, the range
is unbound.
* pname:memoryOffset is the offset into the sname:VkDeviceMemory object to
bind the resource range to. If pname:memory is sname:VK_NULL_HANDLE,
bind the resource range to. If pname:memory is code:VK_NULL_HANDLE,
this value is ignored.
* pname:flags are sparse memory binding flags.
@ -1155,7 +1157,7 @@ include::../structs/VkSparseImageMemoryBindInfo.txt[]
include::../validity/structs/VkSparseImageMemoryBindInfo.txt[]
Where sname:VkSparseImageMemoryBind is defined as follows:
The sname:VkSparseImageMemoryBind structure is defined as:
include::../structs/VkSparseImageMemoryBind.txt[]
@ -1169,10 +1171,10 @@ include::../structs/VkSparseImageMemoryBind.txt[]
latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding
dimensions of the image subresource.
* pname:memory is the sname:VkDeviceMemory object that the sparse image
blocks of the image are bound to. If pname:memory is sname:VK_NULL_HANDLE,
blocks of the image are bound to. If pname:memory is code:VK_NULL_HANDLE,
the sparse image blocks are unbound.
* pname:memoryOffset is an offset into sname:VkDeviceMemory object. If
pname:memory is sname:VK_NULL_HANDLE, this value is ignored.
pname:memory is code:VK_NULL_HANDLE, this value is ignored.
* pname:flags are sparse memory binding flags.
include::../validity/structs/VkSparseImageMemoryBind.txt[]
@ -1188,7 +1190,7 @@ include::../protos/vkQueueBindSparse.txt[]
* pname:pBindInfo is an array of slink:VkBindSparseInfo structures
each specifying the parameters of a sparse binding operation batch as
described below.
* pname:fence, if not ename:VK_NULL_HANDLE, is a fence to be signaled
* pname:fence, if not code:VK_NULL_HANDLE, is a fence to be signaled
once the sparse binding operation completes.
Each batch of sparse binding operations is represented by a list of

View File

@ -59,7 +59,7 @@ include::../protos/vkCreateFence.txt[]
include::../validity/protos/vkCreateFence.txt[]
The definition of sname:VkFenceCreateInfo is:
The sname:VkFenceCreateInfo structure is defined as:
include::../structs/VkFenceCreateInfo.txt[]
@ -201,12 +201,10 @@ include::../protos/vkCreateSemaphore.txt[]
include::../validity/protos/vkCreateSemaphore.txt[]
The definition of sname:VkSemaphoreCreateInfo is:
The sname:VkSemaphoreCreateInfo structure is defined as:
include::../structs/VkSemaphoreCreateInfo.txt[]
The members of sname:VkSemaphoreCreateInfo have the following meanings:
* 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.
@ -271,7 +269,7 @@ Some implementations may: be able to execute transfer operations and/or
vertex processing work before the semaphore is signaled.
If an image layout transition needs to be performed on a swapchain image
before it is used in a framebuffer, that can be performed as the first
before it is used in a framebuffer, that can: be performed as the first
operation submitted to the queue after acquiring the image,
and shouldnot: prevent other work from overlapping with the presentation
operation. For example, a sname:VkImageMemoryBarrier could use:
@ -336,7 +334,7 @@ include::../protos/vkCreateEvent.txt[]
include::../validity/protos/vkCreateEvent.txt[]
The definition of sname:VkEventCreateInfo is:
The sname:VkEventCreateInfo structure is defined as:
include::../structs/VkEventCreateInfo.txt[]
@ -554,6 +552,43 @@ conditions:
** pname:dstStageMask of the previous dependency includes
ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, and pname:srcStageMask of the
current dependency includes at least one graphics pipeline stage.
* for each dependency in the sequence (except the first), at least one of the
following conditions is true:
** the current dependency is a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair
(where the fname:vkCmdWaitEvents may: be inside or outside a render pass
instance), or a fname:vkCmdPipelineBarrier outside of a render pass instance,
or a subpass dependency with pname:srcSubpass equal to
ename:VK_SUBPASS_EXTERNAL for a render pass instance that begins with a
fname:vkCmdBeginRenderPass command, and the previous dependency is any of:
*** a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair or a
fname:vkCmdPipelineBarrier, either one outside of a render pass instance,
that precedes the current dependency in the queue execution order. Or,
*** a subpass dependency, with pname:dstSubpass equal to
ename:VK_SUBPASS_EXTERNAL, for a renderpass instance that was ended with a
fname:vkCmdEndRenderPass command that precedes the current dependency in
the queue execution order.
** the current dependency is a subpass dependency for a render pass instance,
and the previous dependency is any of:
*** another dependency for the same render pass instance, with a
pname:dstSubpass equal to the pname:srcSubpass of the current dependency.
Or,
*** a fname:vkCmdPipelineBarrier of the same render pass instance, recorded
for the subpass indicated by the pname:srcSubpass of the current
dependency. Or,
*** a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair, where the
fname:vkCmdWaitEvents is inside the same render pass instance, recorded
for the subpass indicated by the pname:srcSubpass of the current
dependency.
** the current dependency is a fname:vkCmdPipelineBarrier inside a subpass of
a render pass instance, and the previous dependency is any of:
*** a subpass dependency for the same render pass instance, with a
pname:dstSubpass equal to the subpass of the fname:vkCmdPipelineBarrier.
Or,
*** a fname:vkCmdPipelineBarrier of the same render pass instance, recorded
for the same subpass, before the current dependency. Or,
*** a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair, where the
fname:vkCmdWaitEvents is inside the same render pass instance, recorded
for the same subpass, before the current dependency.
A pair of consecutive execution dependencies in an execution dependency
chain accomplishes a dependency between the stages latexmath:[$A$] and
@ -566,6 +601,29 @@ pipeline stages latexmath:[$A$] in the first set of commands completes
before the work performed by pipeline stages latexmath:[$B$] in the second
set of commands begins.
A command latexmath:[$C_1$] is said to _happen-before_ an execution dependency
latexmath:[$D_2$] for a pipeline stage latexmath:[$S$] if all the following
conditions are true:
* latexmath:[$C_1$] is in the first set of commands for an execution dependency
latexmath:[$D_1$] that includes latexmath:[$S$] in its pname:srcStageMask.
And,
* there exists an execution dependency chain that includes latexmath:[$D_1$]
and latexmath:[$D_2$], where latexmath:[$D_2$] follows latexmath:[$D_1$] in the
execution dependency sequence.
Similarly, a command latexmath:[$C_2$] is said to _happen-after_ an execution
dependency latexmath:[$D_1$] for a pipeline stage latexmath:[$S$] if all the
following conditions are true:
* latexmath:[$C_2$] is in the second set of commands for an execution dependency
latexmath:[$D_2$] that includes latexmath:[$S$] in its pname:dstStageMask.
And,
* there exists an execution dependency chain that includes latexmath:[$D_1$]
and latexmath:[$D_2$], where latexmath:[$D_2$] follows latexmath:[$D_1$] in the
execution dependency sequence.
An execution dependency is _by-region_ if its pname:dependencyFlags
parameter includes ename:VK_DEPENDENCY_BY_REGION_BIT. Such a barrier
describes a per-region (x,y,layer) dependency. That is, for each region, the
@ -581,22 +639,23 @@ stages must: have completed for preceding commands before any destination
stages starts for subsequent commands.
[[synchronization-execution-and-memory-dependencies-available-and-visible]]
_Memory dependencies_ synchronize accesses to memory between two sets of
commands. They operate according to two ``halves'' of a dependency to
synchronize two sets of commands, the commands that execute first vs the
commands that execute second, as described above. The first half of the
dependency makes memory accesses using the set of access types in
pname:srcAccessMask performed in pipeline stages in pname:srcStageMask by
the first set of commands complete and writes be _available_ for subsequent
commands. The second half of the dependency makes any available writes from
previous commands _visible_ to pipeline stages in pname:dstStageMask using
the set of access types in pname:dstAccessMask for the second set of
commands, if those writes have been made available with the first half of
the same or a previous dependency. The two halves of a memory dependency
_Memory dependencies_ are coupled to execution dependencies, and synchronize
accesses to memory between two sets of commands. They operate according to two
``halves'' of a dependency to synchronize two sets of commands, the commands
that happen-before the execution dependency for the pname:srcStageMask vs the
commands that happen-after the execution dependency for the pname:dstStageMask,
as described above. The first half of the dependency makes memory accesses using
the set of access types in pname:srcAccessMask performed in pipeline stages in
pname:srcStageMask by the first set of commands complete and writes be
_available_ for subsequent commands. The second half of the dependency makes any
available writes from previous commands _visible_ to pipeline stages in
pname:dstStageMask using the set of access types in pname:dstAccessMask for the
second set of commands, if those writes have been made available with the first
half of the same or a previous dependency. The two halves of a memory dependency
can: either be expressed as part of a single command, or can: be part of
separate barriers as long as there is an execution dependency chain between
them. The application must: use memory dependencies to make writes visible
before subsequent reads can rely on them, and before subsequent writes can
before subsequent reads can: rely on them, and before subsequent writes can:
overwrite them. Failure to do so causes the result of the reads to be
undefined, and the order of writes to be undefined.
@ -812,7 +871,8 @@ ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT is useful for accomplishing
memory barriers and layout transitions when the next accesses will be done
in a different queue or by a presentation engine; in these cases subsequent
commands in the same queue do not need to wait, but the barrier or
transition must complete before semaphores associated with the batch signal.
transition must: complete before semaphores associated with the batch
signal.
====
[NOTE]
@ -886,18 +946,18 @@ memory, and image memory.
The global memory barrier type is specified with an instance of the
sname:VkMemoryBarrier structure. This type of barrier applies to memory
accesses involving all memory objects that exist at the time of its
execution. The definition of sname:VkMemoryBarrier is:
execution.
The sname:VkMemoryBarrier structure is defined as:
include::../structs/VkMemoryBarrier.txt[]
The members of sname:VkMemoryBarrier have the following meanings:
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:srcAccessMask is a mask of the classes of memory accesses
* pname:srcAccessMask is a bitmask of the classes of memory accesses
performed by the first set of commands that will participate in
the dependency.
* pname:dstAccessMask is a mask of the classes of memory accesses
* pname:dstAccessMask is a bitmask of the classes of memory accesses
performed by the second set of commands that will participate in
the dependency.
@ -1046,18 +1106,16 @@ specified range of the buffer. It is also used to transfer ownership of a
buffer range from one queue family to another, as described in the
<<resources-sharing,Resource Sharing>> section.
sname:VkBufferMemoryBarrier has the following definition:
The sname:VkBufferMemoryBarrier structure is defined as:
include::../structs/VkBufferMemoryBarrier.txt[]
The members of sname:VkBufferMemoryBarrier have the following meanings:
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:srcAccessMask is a mask of the classes of memory accesses
* pname:srcAccessMask is a bitmask of the classes of memory accesses
performed by the first set of commands that will participate in
the dependency.
* pname:dstAccessMask is a mask of the classes of memory accesses
* pname:dstAccessMask is a bitmask of the classes of memory accesses
performed by the second set of commands that will participate in
the dependency.
* pname:srcQueueFamilyIndex is the queue family that is relinquishing
@ -1092,18 +1150,16 @@ layout transition for an image subresource range, or to transfer ownership
of an image subresource range from one queue family to another as described
in the <<resources-sharing,Resource Sharing>> section.
sname:VkImageMemoryBarrier has the following definition:
The sname:VkImageMemoryBarrier structure is defined as:
include::../structs/VkImageMemoryBarrier.txt[]
The members of sname:VkImageMemoryBarrier have the following meanings:
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:srcAccessMask is a mask of the classes of memory accesses
* pname:srcAccessMask is a bitmask of the classes of memory accesses
performed by the first set of commands that will participate in
the dependency.
* pname:dstAccessMask is a mask of the classes of memory accesses
* pname:dstAccessMask is a bitmask of the classes of memory accesses
performed by the second set of commands that will participate in
the dependency.
* pname:oldLayout describes the current layout of the image

View File

@ -423,14 +423,13 @@ segment are both implementation-dependent.
== Tessellation Pipeline State
The pname:pTessellationState member of slink:VkGraphicsPipelineCreateInfo is
of type sname:VkPipelineTessellationStateCreateInfo:
The pname:pTessellationState member of slink:VkGraphicsPipelineCreateInfo
points to a structure of type sname:VkPipelineTessellationStateCreateInfo.
The sname:VkPipelineTessellationStateCreateInfo structure is defined as:
include::../structs/VkPipelineTessellationStateCreateInfo.txt[]
The members of the sname:VkPipelineTessellationStateCreateInfo structure are
as follows:
* 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.

View File

@ -365,7 +365,7 @@ These cases include:
pname:shaderStorageImageReadWithoutFormat feature is not enabled, or the
instruction is code:OpImageWrite and the
pname:shaderStorageImageWriteWithoutFormat feature is not enabled, then
the SPIR-V Image Format must be <<spirvenv-image-formats,compatible>>
the SPIR-V Image Format must: be <<spirvenv-image-formats,compatible>>
with the image view's pname:format.
* The sampler pname:unnormalizedCoordinates is ename:VK_TRUE and any of
the <<samplers-unnormalizedCoordinates,limitations of unnormalized
@ -726,7 +726,7 @@ the value of the texel after swizzle is undefined.
[[textures-sparse-residency]]
=== Sparse Residency
code:OpImageSparse* instructions return a struct which includes a
code:OpImageSparse* instructions return a structure which includes a
_residency code_ indicating whether any texels accessed by the instruction
are sparse unbound texels. This code can: be interpreted by the
code:OpImageSparseTexelsResident instruction which converts the residency
@ -759,7 +759,7 @@ There are a series of validations that the texel undergoes.
[[textures-format-validation]]
==== Texel Format Validation
If the image format of the pname:OpTypeImage is not compatible with the
If the image format of the code:OpTypeImage is not compatible with the
sname:VkImageView's pname:format, the effect of the write on the image
view's memory is undefined, but the write mustnot: access memory outside of
the image view.
@ -800,7 +800,7 @@ Each component is converted based on its type and size (as defined in the
<<features-formats-definition,Format Definition>> section for each
elink:VkFormat), using the appropriate equations in
<<fundamentals-fp16,16-Bit Floating-Point Numbers>> and
<<fundamentals-fixedconf,Fixed-Point Data Conversion>>.
<<fundamentals-fixedconv,Fixed-Point Data Conversion>>.
== Derivative Operations

View File

@ -17,7 +17,7 @@ operations are applied to vertices of the resulting primitives:
* Viewport mapping, including depth range scaling (see
<<vertexpostproc-viewport,Controlling the Viewport>>).
* Front face determination for polygon primitives (see
<<primsrast-triangles-basic,Basic Triangle Rasterization>>).
<<primsrast-polygons-basic,Basic Polygon Rasterization>>).
ifdef::editing-notes[]
[NOTE]
@ -288,24 +288,23 @@ Multiple viewports are available, numbered zero up to
sname:VkPhysicalDeviceLimits::pname:maxViewports minus one. The number of
viewports used by a pipeline is controlled by the pname:viewportCount member
of the sname:VkPipelineViewportStateCreateInfo structure used in pipeline
creation:
creation.
The sname:VkPipelineViewportStateCreateInfo structure is defined as:
include::../structs/VkPipelineViewportStateCreateInfo.txt[]
The members of the sname:VkPipelineViewportStateCreateInfo structure are as
follows:
* 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:viewportCount is the number of viewports used by the pipeline.
* pname:pViewports is a pointer to an array of slink:VkViewport structs,
defining the viewport transforms. If the viewport state is dynamic, this
member is ignored.
* pname:pViewports is a pointer to an array of slink:VkViewport
structures, defining the viewport transforms. If the viewport state is
dynamic, this member is ignored.
* pname:scissorCount is the number of <<fragops-scissor,scissors>> and
must: match the number of viewports.
* pname:pScissors is a pointer to an array of sname:VkRect2D structs which
define the rectangular bounds of the scissor for the corresponding
* pname:pScissors is a pointer to an array of sname:VkRect2D structures
which define the rectangular bounds of the scissor for the corresponding
viewport. If the scissor state is dynamic, this member is ignored.
include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[]

View File

@ -2,24 +2,17 @@
#
# Copyright (c) 2015-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# checkLinks.py - validate link/reference API constructs in files
#

View File

@ -79,7 +79,7 @@ should be clear. Secondary command buffers may be referenced at most once from
a primary command buffer (even the same primary command buffer) unless
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is set.
The pname:renderPass and pname:framebuffer members must be sname:VK_NULL_HANDLE
The pname:renderPass and pname:framebuffer members must be code:VK_NULL_HANDLE
for primary command buffers. For secondary command buffers, they must refer to
the render pass and framebuffer that will be active when the secondary command
buffer is called.

View File

@ -58,7 +58,7 @@ of the slink:VkClearValue union, the definition of which is:
include::../structs/VkClearValue.txt[]
If the attachment and aspect referenced by ptext:aspectMask and
ptext:colorAttachment is a color attachment, the the values contained in the
ptext:colorAttachment is a color attachment, the values contained in the
pname:color field of slink:VkClearValue is used to clear the attachment
regions. If the attachment and aspect referenced by ptext:aspectMask and
ptext:colorAttachment is a depth, stencil or depth-stencil attachment, then

View File

@ -41,7 +41,7 @@ slink:VkClearDepthStencilValue structure, the definition of which is:
include::../structs/VkClearDepthStencilValue.txt[]
The pname:depth and pname:stencil members contain the value to clear the the
The pname:depth and pname:stencil members contain the value to clear the
depth and stencil aspects of the image to, respectively. pname:imageLayout
specifies the layout of the image being cleared. pname:pRanges points to an
array pname:rangeCount regions of the image are cleared, each of which is described

View File

@ -38,7 +38,7 @@ indirect command consumes pname:drawCount structures, stored at pname:offset
bytes into the buffer object whose handle is specified in pname:buffer.
The beginning of each structure is pname:stride bytes from the previous.
The data structures have the a layout in memory which may be represented by
the the slink:VkDrawIndirectCommand structure, the definition of which is:
the slink:VkDrawIndirectCommand structure, the definition of which is:
include::../structs/VkDrawIndirectCommand.txt[]

View File

@ -58,7 +58,7 @@ compute shader.
pipeline and the descritor sets.
- pname:basePipelineHandle the pipeline to derive from (can be
VK_NULL_HANDLE, if pipeline is not derived).
code:VK_NULL_HANDLE, if pipeline is not derived).
- pname:basePipelineIndex the index into the pname:pCreateInfos parameter
to fname:vkCreateComputePipelines.
@ -71,7 +71,7 @@ earlier than the current sname:VkComputePipelineCreateInfo in the list. The
parameters pname:basePipelineHandle and pname:basePipelineIndex are mutually
exclusive. If you specify a valid pname:basePipelineHandle,
pname:basePipelineIndex must be set to -1. If you specify a valid
pname:basePipelineIndex, pname:basePipelineHandle must be VK_NULL_HANDLE.
pname:basePipelineIndex, pname:basePipelineHandle must be code:VK_NULL_HANDLE.
include::../validity/protos/vkCreateComputePipelines.txt[]

View File

@ -48,7 +48,7 @@ The ename:VK_IMAGE_ASPECT_COLOR_BIT aspect is valid only for image formats that
ename:VK_IMAGE_ASPECT_DEPTH_BIT aspect is valid for formats containing depth information and the
ename:VK_IMAGE_ASPECT_STENCIL_BIT aspect is valid only for formats containing stencil information. Note
that some formats contain both depth and stencil information, and
in this case, pname:aspectMask is is used to select which to query. It is not legal to include more than
in this case, pname:aspectMask is used to select which to query. It is not legal to include more than
one member of elink:VkImageAspectFlagBits in pname:aspectMask. Some formats also include metadata
which may be implementation dependent but is queryable by specifying ename:VK_IMAGE_ASPECT_METADATA_BIT.

View File

@ -271,9 +271,11 @@ following table:
slink:VkCommandPoolCreateInfo.
| sname{cl} | Formats the macro argument like slink{cl}. Does not
generate a cross-reference. May also be an abstract
structure name. Examples: sname{cl}VkCommandPoolCreateInfo
-> sname:VkCommandPoolCreateInfo, sname{cl}VK_NULL_HANDLE
-> sname:VK_NULL_HANDLE. The slink{cl} macro is preferred.
structure or handle name. Example:
sname{cl}VkCommandPoolCreateInfo ->
sname:VkCommandPoolCreateInfo. The slink{cl} macro is
preferred if a definition of the target type with an
anchor exists in the document.
| stext{cl} | Formats the macro argument like sname{cl}. May contain
asterisks for wildcards. Not validated. Example:
stext{cl}Vk*CreateInfo -> stext:Vk*CreateInfo.
@ -323,7 +325,8 @@ following table:
basetype{cl}VkDeviceSize -> basetype:VkDeviceSize.
| code{cl} | Formats the macro argument as a code sample. Primarily
used for SPIR-V keywords. Examples: code{cl}ClipDistance
-> code:ClipDistance, code{cl}NULL -> code:NULL.
-> code:ClipDistance, code{cl}VK_NULL_HANDLE ->
code:VK_NULL_HANDLE, code{cl}NULL -> code:NULL.
|=====

View File

@ -21,6 +21,7 @@ endif::doctype-manpage[]
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
* pname:image mustnot: have a compressed or depth/stencil format
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -21,6 +21,7 @@ endif::doctype-manpage[]
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
* pname:image must: have a depth/stencil format
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -18,10 +18,10 @@ endif::doctype-manpage[]
* pname:dstOffset must: be less than the size of pname:dstBuffer
* pname:firstQuery must: be less than the number of queries in pname:queryPool
* The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must be multiples of `8`
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `4`
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `8`
* pname:dstBuffer must: have enough storage, from pname:dstOffset, to contain the result of each query, as described <<queries-operation-memorylayout,here>>
* pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -23,7 +23,7 @@ endif::doctype-manpage[]
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -25,7 +25,7 @@ endif::doctype-manpage[]
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -24,7 +24,7 @@ endif::doctype-manpage[]
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -25,7 +25,7 @@ endif::doctype-manpage[]
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -32,7 +32,7 @@ endif::doctype-manpage[]
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -32,7 +32,7 @@ endif::doctype-manpage[]
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -21,7 +21,7 @@ endif::doctype-manpage[]
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see <<synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency>>
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -15,8 +15,8 @@ endif::doctype-manpage[]
* pname:queryPool must: have been created, allocated or retrieved from pname:device
* Each of pname:device and pname:queryPool must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* pname:firstQuery must: be less than the number of queries in pname:queryPool
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must be multiples of `4`
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must be multiples of `8`
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must: be multiples of `4`
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must: be multiples of `8`
* The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool
* pname:dataSize must: be large enough to contain the result of each query, as described <<queries-operation-memorylayout,here>>
* If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT

View File

@ -23,7 +23,7 @@ endif::doctype-manpage[]
* pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width
* pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height
* pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth
* pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>>
* pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>>
* The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter
* The pname:aspectMask member of pname:imageSubresource must: only have a single bit set
* If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively

View File

@ -30,7 +30,7 @@ endif::doctype-manpage[]
* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width
* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height
* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth
* pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>>
* pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>>
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -37,13 +37,13 @@ endif::doctype-manpage[]
* pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferDepthSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferStencilSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageColorSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageDepthSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageIntegerSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxStorageImageSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts
* If the <<features-features-textureCompressionETC2,ETC2 texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, ename:VK_FORMAT_EAC_R11_UNORM_BLOCK, ename:VK_FORMAT_EAC_R11_SNORM_BLOCK, ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK
* If the <<features-features-textureCompressionASTC_LDR,ASTC LDR texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK
* If the <<features-features-textureCompressionBC,BC texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK, ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK, ename:VK_FORMAT_BC2_UNORM_BLOCK, ename:VK_FORMAT_BC2_SRGB_BLOCK, ename:VK_FORMAT_BC3_UNORM_BLOCK, ename:VK_FORMAT_BC3_SRGB_BLOCK, ename:VK_FORMAT_BC4_UNORM_BLOCK, ename:VK_FORMAT_BC4_SNORM_BLOCK, ename:VK_FORMAT_BC5_UNORM_BLOCK, ename:VK_FORMAT_BC5_SNORM_BLOCK, ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, ename:VK_FORMAT_BC6H_SFLOAT_BLOCK, ename:VK_FORMAT_BC7_UNORM_BLOCK, or ename:VK_FORMAT_BC7_SRGB_BLOCK

View File

@ -14,10 +14,10 @@ endif::doctype-manpage[]
* pname:dstAlphaBlendFactor must: be a valid elink:VkBlendFactor value
* pname:alphaBlendOp must: be a valid elink:VkBlendOp value
* pname:colorWriteMask must: be a valid combination of elink:VkColorComponentFlagBits values
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -10,7 +10,7 @@ endif::doctype-manpage[]
* If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer to an array of pname:mapEntryCount sname:VkSpecializationMapEntry structures
* If pname:dataSize is not `0`, pname:pData must: be a pointer to an array of pname:dataSize bytes
* The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize
* For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset
* For any given element of pname:pMapEntries, pname:size must: be less than or equal to pname:dataSize minus pname:offset
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -25,7 +25,7 @@ endif::doctype-manpage[]
* If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any pipelines bound during the subpass mustnot: accesss those input attachments from the fragment shader
* The pname:attachment member of any element of pname:pPreserveAttachments mustnot: be ename:VK_ATTACHMENT_UNUSED
* Any given element of pname:pPreserveAttachments mustnot: also be an element of any other member of the subpass description
* If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must use the same pname:layout
* If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must: use the same pname:layout
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -1,23 +1,16 @@
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Generator scripts and options
# GENOPTS can be e.g. '-noprotect'

View File

@ -2,24 +2,17 @@
#
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os,re,sys
@ -765,9 +758,9 @@ class COutputGenerator(OutputGenerator):
def genGroup(self, groupinfo, groupName):
OutputGenerator.genGroup(self, groupinfo, groupName)
groupElem = groupinfo.elem
expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper()
expandPrefix = expandName
expandSuffix = ''
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName)
@ -775,12 +768,12 @@ class COutputGenerator(OutputGenerator):
expandSuffix = '_' + expandSuffixMatch.group()
# Strip off the suffix from the prefix
expandPrefix = expandName.rsplit(expandSuffix, 1)[0]
# Prefix
body = "\ntypedef enum " + groupName + " {\n"
isEnum = ('FLAG_BITS' not in expandPrefix)
# Loop over the nested 'enum' tags. Keep track of the minimum and
# maximum numeric values, if they can be determined; but only for
# core API enumerants, not extension enumerants. This is inferred
@ -816,9 +809,9 @@ class COutputGenerator(OutputGenerator):
body += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n"
body += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n"
body += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n"
body += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n"
# Postfix
body += "} " + groupName + ";"
if groupElem.get('type') == 'bitmask':
@ -964,24 +957,24 @@ class DocOutputGenerator(OutputGenerator):
def genGroup(self, groupinfo, groupName):
OutputGenerator.genGroup(self, groupinfo, groupName)
groupElem = groupinfo.elem
# See if we need min/max/num/padding at end
expand = self.genOpts.expandEnumerants
if expand:
expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper()
isEnum = ('FLAG_BITS' not in expandName)
expandPrefix = expandName
expandSuffix = ''
# Look for a suffix
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName)
if expandSuffixMatch:
expandSuffix = '_' + expandSuffixMatch.group()
# Strip off the suffix from the prefix
expandPrefix = expandName.rsplit(expandSuffix, 1)[0]
# Prefix
s = "typedef enum " + groupName + " {\n"
@ -1020,7 +1013,7 @@ class DocOutputGenerator(OutputGenerator):
s += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n"
s += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n"
s += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n"
s += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n"
# Postfix
s += "} " + groupName + ";"
@ -2087,7 +2080,7 @@ class ValidityOutputGenerator(OutputGenerator):
usages.append(usage.text)
for usage in cmdinfo.removedValidity:
usages.remove(usage.text)
validity = self.makeValidUsageStatements(cmdinfo.elem, name, params, usages)
threadsafety = self.makeThreadSafetyBlock(cmdinfo.elem, 'param')
commandpropertiesentry = self.makeCommandPropertiesTableEntry(cmdinfo.elem, name)
@ -2114,7 +2107,7 @@ class ValidityOutputGenerator(OutputGenerator):
usages.append(usage.text)
for usage in typeinfo.removedValidity:
usages.remove(usage.text)
validity = self.makeValidUsageStatements(typeinfo.elem, typename, params, usages)
threadsafety = self.makeThreadSafetyBlock(typeinfo.elem, 'member')

View File

@ -2,24 +2,17 @@
#
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys, time, pdb, string, cProfile
from reg import *
@ -125,24 +118,17 @@ prefixStrings = [
'/*',
'** Copyright (c) 2015-2016 The Khronos Group Inc.',
'**',
'** Permission is hereby granted, free of charge, to any person obtaining a',
'** copy of this software and/or associated documentation files (the',
'** "Materials"), to deal in the Materials without restriction, including',
'** without limitation the rights to use, copy, modify, merge, publish,',
'** distribute, sublicense, and/or sell copies of the Materials, and to',
'** permit persons to whom the Materials are furnished to do so, subject to',
'** the following conditions:',
'** Licensed under the Apache License, Version 2.0 (the "License");',
'** you may not use this file except in compliance with the License.',
'** You may obtain a copy of the License at',
'**',
'** The above copyright notice and this permission notice shall be included',
'** in all copies or substantial portions of the Materials.',
'** http://www.apache.org/licenses/LICENSE-2.0',
'**',
'** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,',
'** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF',
'** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.',
'** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY',
'** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,',
'** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE',
'** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.',
'** Unless required by applicable law or agreed to in writing, software',
'** distributed under the License is distributed on an "AS IS" BASIS,',
'** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
'** See the License for the specific language governing permissions and',
'** limitations under the License.',
'*/',
''
]

View File

@ -1,23 +1,16 @@
% Copyright (c) 2013-2016 The Khronos Group Inc.
%
% Permission is hereby granted, free of charge, to any person obtaining a
% copy of this software and/or associated documentation files (the
% "Materials"), to deal in the Materials without restriction, including
% without limitation the rights to use, copy, modify, merge, publish,
% distribute, sublicense, and/or sell copies of the Materials, and to
% permit persons to whom the Materials are furnished to do so, subject to
% the following conditions:
% Licensed under the Apache License, Version 2.0 (the "License");
% you may not use this file except in compliance with the License.
% You may obtain a copy of the License at
%
% The above copyright notice and this permission notice shall be included
% in all copies or substantial portions of the Materials.
% http://www.apache.org/licenses/LICENSE-2.0
%
% THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
% IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
% CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
% TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
% MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS,
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
% See the License for the specific language governing permissions and
% limitations under the License.
\documentclass{article}

View File

@ -2,24 +2,17 @@
#
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Usage: realign [infile] > outfile
# Used to realign XML tags in the Vulkan registry after it's operated on by

View File

@ -2,24 +2,17 @@
#
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import io,os,re,string,sys,copy
from lxml import etree
@ -102,7 +95,7 @@ class TypeInfo(BaseInfo):
BaseInfo.resetState(self)
self.additionalValidity = []
self.removedValidity = []
# GroupInfo - registry information about a group of related enums
# in an <enums> block, generally corresponding to a C "enum" type.
class GroupInfo(BaseInfo):
@ -499,7 +492,7 @@ class Registry:
for feature in interface.findall('remove'):
if (matchAPIProfile(api, profile, feature)):
self.markRequired(feature,False)
def assignAdditionalValidity(self, interface, api, profile):
#
# Loop over all usage inside all <require> tags.
@ -510,7 +503,7 @@ class Registry:
self.cmddict[v.get('command')].additionalValidity.append(copy.deepcopy(v))
if v.get('struct'):
self.typedict[v.get('struct')].additionalValidity.append(copy.deepcopy(v))
#
# Loop over all usage inside all <remove> tags.
for feature in interface.findall('remove'):
@ -602,17 +595,17 @@ class Registry:
# interface - Element for <version> or <extension>
def generateRequiredInterface(self, interface):
"""Generate required C interface for specified API version/extension"""
#
# Loop over all features inside all <require> tags.
for features in interface.findall('require'):
for features in interface.findall('require'):
for t in features.findall('type'):
self.generateFeature(t.get('name'), 'type', self.typedict)
for e in features.findall('enum'):
self.generateFeature(e.get('name'), 'enum', self.enumdict)
for c in features.findall('command'):
self.generateFeature(c.get('name'), 'command', self.cmddict)
#
# apiGen(genOpts) - generate interface for specified versions
# genOpts - GeneratorOptions object with parameters used

View File

@ -1,23 +1,16 @@
# Copyright (c) 2013-2016 The Khronos Group Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and/or associated documentation files (the
# "Materials"), to deal in the Materials without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Materials, and to
# permit persons to whom the Materials are furnished to do so, subject to
# the following conditions:
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Materials.
# http://www.apache.org/licenses/LICENSE-2.0
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Relax NG schema for Khronos Vulkan API Registry XML
#

View File

@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 10</type>
#define <name>VK_HEADER_VERSION</name> 11</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -822,13 +822,13 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferDepthSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferStencilSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageColorSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageDepthSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageIntegerSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxStorageImageSamples</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts</usage>
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts</usage>
<usage>If the &lt;&lt;features-features-textureCompressionETC2,ETC2 texture compression&gt;&gt; feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, ename:VK_FORMAT_EAC_R11_UNORM_BLOCK, ename:VK_FORMAT_EAC_R11_SNORM_BLOCK, ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK</usage>
<usage>If the &lt;&lt;features-features-textureCompressionASTC_LDR,ASTC LDR texture compression&gt;&gt; feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK</usage>
<usage>If the &lt;&lt;features-features-textureCompressionBC,BC texture compression&gt;&gt; feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK, ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK, ename:VK_FORMAT_BC2_UNORM_BLOCK, ename:VK_FORMAT_BC2_SRGB_BLOCK, ename:VK_FORMAT_BC3_UNORM_BLOCK, ename:VK_FORMAT_BC3_SRGB_BLOCK, ename:VK_FORMAT_BC4_UNORM_BLOCK, ename:VK_FORMAT_BC4_SNORM_BLOCK, ename:VK_FORMAT_BC5_UNORM_BLOCK, ename:VK_FORMAT_BC5_SNORM_BLOCK, ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, ename:VK_FORMAT_BC6H_SFLOAT_BLOCK, ename:VK_FORMAT_BC7_UNORM_BLOCK, or ename:VK_FORMAT_BC7_SRGB_BLOCK</usage>
@ -987,7 +987,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage> pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width</usage>
<usage> pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height</usage>
<usage> pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth</usage>
<usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in &lt;&lt;execution-physical-device-enumeration,Physical Device Enumeration&gt;&gt;</usage>
<usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in &lt;&lt;devsandqueues-physical-device-enumeration,Physical Device Enumeration&gt;&gt;</usage>
</validity>
</type>
<type category="struct" name="VkImageBlit">
@ -1032,7 +1032,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage> pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width</usage>
<usage> pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height</usage>
<usage> pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth</usage>
<usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in &lt;&lt;execution-physical-device-enumeration,Physical Device Enumeration&gt;&gt;</usage>
<usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in &lt;&lt;devsandqueues-physical-device-enumeration,Physical Device Enumeration&gt;&gt;</usage>
<usage>The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter</usage>
<usage>The pname:aspectMask member of pname:imageSubresource must: only have a single bit set</usage>
<usage>If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively</usage>
@ -1125,7 +1125,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member len="dataSize">const <type>void</type>* <name>pData</name></member> <!-- Pointer to SpecConstant data -->
<validity>
<usage>The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize</usage>
<usage>For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset</usage>
<usage>For any given element of pname:pMapEntries, pname:size must: be less than or equal to pname:dataSize minus pname:offset</usage>
</validity>
</type>
<type category="struct" name="VkPipelineShaderStageCreateInfo">
@ -1294,10 +1294,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member><type>VkBlendOp</type> <name>alphaBlendOp</name></member>
<member optional="true"><type>VkColorComponentFlags</type> <name>colorWriteMask</name></member>
<validity>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
</validity>
</type>
<type category="struct" name="VkPipelineColorBlendStateCreateInfo">
@ -1596,7 +1596,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any pipelines bound during the subpass mustnot: accesss those input attachments from the fragment shader</usage>
<usage>The pname:attachment member of any element of pname:pPreserveAttachments mustnot: be ename:VK_ATTACHMENT_UNUSED</usage>
<usage>Any given element of pname:pPreserveAttachments mustnot: also be an element of any other member of the subpass description</usage>
<usage>If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must use the same pname:layout</usage>
<usage>If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must: use the same pname:layout</usage>
</validity>
</type>
<type category="struct" name="VkSubpassDependency">
@ -1967,8 +1967,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member optional="true"><type>VkDisplayModeCreateFlagsKHR</type> <name>flags</name></member> <!-- Reserved -->
<member><type>VkDisplayModeParametersKHR</type> <name>parameters</name></member> <!-- The parameters this mode uses. -->
<validity>
<usage>The pname:width and pname:height members of the pname:visibleRegion member of pname:parameters must be greater than `0`</usage>
<usage>The pname:refreshRate member of pname:parameters must be greater than `0`</usage>
<usage>The pname:width and pname:height members of the pname:visibleRegion member of pname:parameters must: be greater than `0`</usage>
<usage>The pname:refreshRate member of pname:parameters must: be greater than `0`</usage>
</validity>
</type>
<type category="struct" name="VkDisplayPlaneCapabilitiesKHR">
@ -1998,7 +1998,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If the pname:planeReorderPossible member of the sname:VkDisplayPropertiesKHR structure returned by fname:vkGetPhysicalDeviceDisplayPropertiesKHR for the display corresponding to pname:displayMode is ename:VK_TRUE then pname:planeStackIndex must: be less than the number of display planes supported by the device as determined by calling fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR; otherwise pname:planeStackIndex must: equal the pname:currentStackIndex member of sname:VkDisplayPlanePropertiesKHR returned by fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR for the display plane corresponding to pname:displayMode</usage>
<usage>If pname:alphaMode is ename:VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR then pname:globalAlpha must: be between `0` and `1`, inclusive</usage>
<usage>pname:alphaMode must: be `0` or one of the bits present in the pname:supportedAlpha member of sname:VkDisplayPlaneCapabilitiesKHR returned by fname:vkGetDisplayPlaneCapabilitiesKHR for the display plane corresponding to pname:displayMode</usage>
<usage>The pname:width and pname:height members of pname:imageExtent must be less than the pname:maxImageDimensions2D member of sname:VkPhysicalDeviceLimits</usage>
<usage>The pname:width and pname:height members of pname:imageExtent must: be less than the pname:maxImageDimensions2D member of sname:VkPhysicalDeviceLimits</usage>
</validity>
</type>
<type category="struct" name="VkDisplayPresentInfoKHR">
@ -2111,14 +2111,14 @@ maintained in the master branch of the Khronos Vulkan Github project.
<type category="struct" name="VkPresentInfoKHR">
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR -->
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
<member><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting -->
<member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting -->
<member optional="true" len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member> <!-- Semaphores to wait for before presenting -->
<member><type>uint32_t</type> <name>swapchainCount</name></member> <!-- Number of swap chains to present in this call -->
<member len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name></member> <!-- Swapchains to present an image from -->
<member len="swapchainCount">const <type>uint32_t</type>* <name>pImageIndices</name></member> <!-- Indices of which swapchain images to present -->
<member optional="true" len="swapchainCount"><type>VkResult</type>* <name>pResults</name></member> <!-- Optional (i.e. if non-NULL) VkResult for each swapchain -->
<validity>
<usage>Any given element of pname:pImageIndices must: be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pname:pSwapchains array that is owned by the application</usage>
<usage>Any given element of pname:pImageIndices must: be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pname:pSwapchains array</usage>
<usage>Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore</usage>
</validity>
</type>
@ -2665,7 +2665,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum bitpos="3" name="VK_QUEUE_SPARSE_BINDING_BIT" comment="Queue supports sparse resource memory management operations"/>
</enums>
<enums name="VkMemoryPropertyFlagBits" type="bitmask">
<enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/>
<enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/>
<enum bitpos="1" name="VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT" comment="Memory is mappable by host"/>
<enum bitpos="2" name="VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" comment="Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"/>
<enum bitpos="3" name="VK_MEMORY_PROPERTY_HOST_CACHED_BIT" comment="Memory will be cached by the host"/>
@ -2694,8 +2694,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum bitpos="16" name="VK_ACCESS_MEMORY_WRITE_BIT" comment="Controls coherency of memory writes"/>
</enums>
<enums name="VkBufferUsageFlagBits" type="bitmask">
<enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
<enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
<enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
<enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
<enum bitpos="2" name="VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT" comment="Can be used as TBO"/>
<enum bitpos="3" name="VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT" comment="Can be used as IBO"/>
<enum bitpos="4" name="VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT" comment="Can be used as UBO"/>
@ -2720,8 +2720,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/>
</enums>
<enums name="VkImageUsageFlagBits" type="bitmask">
<enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
<enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
<enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
<enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
<enum bitpos="2" name="VK_IMAGE_USAGE_SAMPLED_BIT" comment="Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/>
<enum bitpos="3" name="VK_IMAGE_USAGE_STORAGE_BIT" comment="Can be used as storage image (STORAGE_IMAGE descriptor type)"/>
<enum bitpos="4" name="VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT" comment="Can be used as framebuffer color attachment"/>
@ -2777,7 +2777,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enums name="VkCommandBufferUsageFlagBits" type="bitmask">
<enum bitpos="0" name="VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"/>
<enum bitpos="1" name="VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"/>
<enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/>
<enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/>
</enums>
<enums name="VkQueryPipelineStatisticFlagBits" type="bitmask">
<enum bitpos="0" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT" comment="Optional"/>
@ -2801,7 +2801,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enums name="VkSparseImageFormatFlagBits" type="bitmask">
<enum bitpos="0" name="VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT" comment="Image uses a single miptail region for all array layers"/>
<enum bitpos="1" name="VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT" comment="Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-miptail levels."/>
<enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/>
<enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/>
</enums>
<enums name="VkSparseMemoryBindFlagBits" type="bitmask">
<enum bitpos="0" name="VK_SPARSE_MEMORY_BIND_METADATA_BIT" comment="Operation binds resource metadata to memory"/>
@ -2826,14 +2826,14 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum bitpos="16" name="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT" comment="All stages supported on the queue"/>
</enums>
<enums name="VkCommandPoolCreateFlagBits" type="bitmask">
<enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/>
<enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/>
<enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/>
<enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/>
</enums>
<enums name="VkCommandPoolResetFlagBits" type="bitmask">
<enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/>
<enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/>
</enums>
<enums name="VkCommandBufferResetFlagBits" type="bitmask">
<enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/>
<enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/>
</enums>
<enums name="VkSampleCountFlagBits" type="bitmask">
<enum bitpos="0" name="VK_SAMPLE_COUNT_1_BIT" comment="Sample count 1 supported"/>
@ -2850,7 +2850,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enums name="VkStencilFaceFlagBits" type="bitmask">
<enum bitpos="0" name="VK_STENCIL_FACE_FRONT_BIT" comment="Front face"/>
<enum bitpos="1" name="VK_STENCIL_FACE_BACK_BIT" comment="Back face"/>
<enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/>
<enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/>
</enums>
<enums name="VkDescriptorPoolCreateFlagBits" type="bitmask">
<enum bitpos="0" name="VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT" comment="Descriptor sets may be freed individually"/>
@ -3358,8 +3358,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
<validity>
<usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must be multiples of `4`</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must be multiples of `8`</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must: be multiples of `4`</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must: be multiples of `8`</usage>
<usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage>
<usage>pname:dataSize must: be large enough to contain the result of each query, as described &lt;&lt;queries-operation-memorylayout,here&gt;&gt;</usage>
<usage>If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT</usage>
@ -3918,7 +3918,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
</validity>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
@ -3944,7 +3944,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
</validity>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
@ -3974,7 +3974,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
</validity>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
@ -4004,7 +4004,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
</validity>
</command>
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4026,7 +4026,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
</validity>
</command>
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4047,7 +4047,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>If the &lt;&lt;features-features-robustBufferAccess,robust buffer access&gt;&gt; feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
</validity>
</command>
<command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4204,6 +4204,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
<usage>pname:image mustnot: have a compressed or depth/stencil format</usage>
</validity>
</command>
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4219,6 +4220,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
<usage>pname:image must: have a depth/stencil format</usage>
</validity>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
@ -4316,7 +4318,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see &lt;&lt;synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency&gt;&gt;</usage>
</validity>
</command>
@ -4383,10 +4385,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:dstOffset must: be less than the size of pname:dstBuffer</usage>
<usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage>
<usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must be multiples of `8`</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `4`</usage>
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `8`</usage>
<usage>pname:dstBuffer must: have enough storage, from pname:dstOffset, to contain the result of each query, as described &lt;&lt;queries-operation-memorylayout,here&gt;&gt;</usage>
<usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT</usage>
</validity>
</command>
@ -4497,7 +4499,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<proto><type>VkResult</type> <name>vkCreateDisplayModeKHR</name></proto>
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
<param externsync="true"><type>VkDisplayKHR</type> <name>display</name></param>
<param>const <type>VkDisplayModeCreateInfoKHR</type>*<name>pCreateInfo</name></param>
<param>const <type>VkDisplayModeCreateInfoKHR</type>* <name>pCreateInfo</name></param>
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkDisplayModeKHR</type>* <name>pMode</name></param>
</command>
@ -4593,7 +4595,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true" externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<validity>
<usage>All uses of presentable images acquired from pname:swapchain and owned by the application must: have completed execution</usage>
<usage>All uses of presentable images acquired from pname:swapchain must: have completed execution</usage>
<usage>If sname:VkAllocationCallbacks were provided when pname:swapchain was created, a compatible set of callbacks must: be provided here</usage>
<usage>If no sname:VkAllocationCallbacks were provided when pname:swapchain was created, pname:pAllocator must: be `NULL`</usage>
</validity>
@ -4605,7 +4607,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="false,true"><type>uint32_t</type>* <name>pSwapchainImageCount</name></param>
<param optional="true" len="pSwapchainImageCount"><type>VkImage</type>* <name>pSwapchainImages</name></param>
</command>
<command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
<command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
<proto><type>VkResult</type> <name>vkAcquireNextImageKHR</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
@ -4720,9 +4722,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param>const <type>char</type>* <name>pMessage</name></param>
<validity>
<usage>pname:instance must: be a valid sname:VkInstance handle</usage>
<usage>pname:flags must be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
<usage>pname:objType must be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
<usage>pname:object may be a {apiname} object</usage>
<usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
<usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
<usage>pname:object may: be a {apiname} object</usage>
<usage>pname:pLayerPrefix must: be a `NULL` terminated string.</usage>
<usage>pname:pMsg must: be a `NULL` terminated string.</usage>
</validity>
@ -4977,7 +4979,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
</extension>
<extension name="VK_KHR_swapchain" number="2" supported="vulkan">
<require>
<enum value="67" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
<enum value="68" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_swapchain&quot;" name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"/>
@ -5137,7 +5139,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
<enum value="&quot;VK_IMG_filter_cubic&quot;" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/>
<enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/>
<enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
<enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
<usage command="vkCmdDraw">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command must: be of a format which supports cubic filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage command="vkCmdDraw">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command mustnot: have an elink:VkImageViewType of ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</usage>
<usage command="vkCmdDrawIndexed">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command must: be of a format which supports cubic filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage>

View File

@ -4,24 +4,17 @@
/*
** Copyright (c) 2014-2015 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
** http://www.apache.org/licenses/LICENSE-2.0
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/

View File

@ -8,24 +8,17 @@ extern "C" {
/*
** Copyright (c) 2015-2016 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
** http://www.apache.org/licenses/LICENSE-2.0
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
/*
@ -50,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 10
#define VK_HEADER_VERSION 11
#define VK_NULL_HANDLE 0
@ -3278,7 +3271,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
#define VK_KHR_swapchain 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
#define VK_KHR_SWAPCHAIN_SPEC_VERSION 67
#define VK_KHR_SWAPCHAIN_SPEC_VERSION 68
#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
typedef VkFlags VkSwapchainCreateFlagsKHR;
@ -3434,7 +3427,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhys
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);