Change log for March 10, 2016 Vulkan 1.0.6 spec update:

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

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>> 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
    tables in the <<features-required-format-support,Required
    Format Support>> section. Don't require FQDNs used as layer names be
    encoded in lower case if not possible, in the
    <<extensions-naming-conventions, Extension and Layer Naming
    Conventions>> section (public issues 101, 119, 121).

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.
    Added a separate slink:VkSubmitInfo Valid Usage restriction
    specifying that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
    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).

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.
This commit is contained in:
Jon Leech 2016-03-10 17:33:02 -08:00
parent 7380aee56b
commit 1f875738fd
118 changed files with 1237 additions and 759 deletions

275
ChangeLog.txt Normal file
View File

@ -0,0 +1,275 @@
Update Log for the Vulkan-Docs repository on Github. This just
summarizes the periodic public updates, not individual commits to the
tree. For the most part, commits on Github are done as single large
patches at the release point, collecting together the resolution of many
Khronos internal and public issues.
-----------------------------------------------------
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).
* Fixes for numerous editorial issues. Regularize descriptions of
variable-length array queries. Properly tag enumerants so they come
out in the right font (many were mislabeled in usage tags in vk.xml,
or not tagged). Spelling and markup corrections (public issue 4).
* Fix typos and clearly separate description of different types of
memory areas (public issue 5).
* Use standards-compliant preprocessor guard symbols on headers
(public issue 7).
* Note that Github users can't currently set labels on issues, and
recommend a fallback approach (public issue 15).
* Use latexmath prefix on len= attributes (public issue 29).
* Make flink:vkCmdUpdateBuffer pname:dataSize limit consistent (public
issue 65).
* Add VK_KHR_mirror_clamp_to_edge extension to core API branch, as an
optional feature not introducing new commands or enums (internal
issue 104).
* Cleanup invariance language inherited from the GL specification to
not refer to nonexistent (GL-specific) state (internal issue 111).
* Modify the flink:vkCmdDrawIndexed pname:vertexOffset definition to
not be the "base offset within the index buffer" but rather the
"value added to the vertex index before indexing into the vertex
buffer" (internal issue 118).
* Fix drawing chapter in the "Programmable Primitive Shading" section
where it described categories of drawing commands. It referenced
flink:vkCmdDrawIndexed twice. Replace the second reference with
flink:vkCmdDrawIndexedIndirect (internal issue 119).
* Typo fixed in <<sparsememory-examples-advanced,Advanced Sparse
Resources>> sparse memory example (internal issue 122).
* Add flink:VkDisplayPlaneAlphaFlagsKHR to <require> section of
VK_KHR_display extension (internal issue 125)
* Add missing optional="false,true" to
flink:vkGetImageSparseMemoryRequirements
pname:pSparseMemoryRequirementCount parameter (internal issue 132)
* Rename ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT to
ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
(internal issue 133)
* Fix a handful of broken cross-references in the
<<samplers,Samplers>> chapter (internal issue 134).
* Fix "Input Attachement" GLSL example to use correct syntax (internal
issue 135).
* Update XML schema and documentation to accomodate recently added
attributes for validity. Add some introductory material describing
design choices and pointing to the public repository to file issues.
* Put include of validity in the core spec extensions chapter on its
own line, so that asciidoc is happy.
* Fix vertexOffset language to specify that it's the value added to
the vertex index before indexing into the vertex buffer, not the
base offset within the index buffer.
* Fix error in the description of flink:vkCmdNextSubpass.
-----------------------------------------------------
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).
* Replace maynot: macro with may: not, and "may: or maynot:" with
"may:" (public issue 4).
* Clarify that redundantly setting the state of a fence or event has
no effect (public issue 4).
* Minor fixes to ref pages to track descriptions of memory bits that
changed in the core spec. Fix name of a member in the description of
sname:sname:VkPipelineMultisampleStateCreateInfo (public issues 8,
13).
* Remove redundant validity statement for
sname:VkGraphicsPipelineCreateInfo::pname:stageCount (public issue
14).
* Fix typos in chapters 7-9 (public issue 14).
* Clarify the example demonstrating the behavior of
code:OpMemoryBarrier in the
&lt;&lt;shaders-execution-memory-ordering,shader memory acces
ordering>> section (public issue 16).
* Specify that freeing mapped memory implicitly unmaps the memory in
the description of flink:vkFreeMemory (public issue 17).
* Forbid allocation callbacks from calling into the API in the
&lt;&lt;memory-allocation,memory allocation>> section (public issue
20).
* Add missing validity rules about size being greater than 0 and
offset being less than size of object. Fix
flink:VkMappedMemoryRange's misinterpretation of offset (public
issues 27, 31).
* Add validity rule disallowing overlapping source/destination
descriptors in flink:VkCopyDescriptorSet (public issue 32).
* Clarify that array and matrix stride has to be a multiple of the
base alignment of the array or matrix in the
&lt;&lt;interfaces-resources-layout,Offset and Stride Assignment>>
section (public issue 38).
* Correct parenthesis floor nesting error in equation for
&lt;&lt;textures-RGB-sexp,RGB to shared exponent conversion>>.
Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
problem (public issue 40).
* Remove redundant statement from the code:FragDepth description in
the &lt;&lt;interfaces-builtin-variables,Built-In Variables>>
section (public issue 47).
* Define the clamping of the
&lt;&lt;textures-level-of-detail-operation,bias added to the scale
factor>> by linking to the slink:VkPhysicalDevice feature
pname:maxSamplerLodBias (public issue 64).
* Fix typo "optimal linear resources" and clarify the set of resources
&lt;&lt;features-limits-bufferImageGranularity,the
pname:bufferImageGranularity resource>> applies to (public issue
67).
* Replace 'descriptor accessed by a pipeline' language for
sname:VkDescriptorSetAllocateInfo with more precise phrasing about
binding a descriptor set before a command that invokes work using
that set (public issue 69).
* tstripadj.svg contained an Inkscape tag which caused Firefox and IE
11 to fail to render it, and was illegal SVG. Generating Plain SVG
from the Inkscape SVG source fixes this (public issue 70).
* Fix validity for sname:VkVertexInputBindingDescription and
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
(internal issue 107).
* Added a note explaining that ename:VK_QUEUE_TRANSFER_BIT may or may
not be reported for a queue family that already supports
ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT as the
former is a strict subset of the latter ones (internal issue 116).
* Add validity language for sname:VkDescriptorSetAllocateInfo about
exceeding the descriptor pool capacity (internal issue 140).
* Add ename:VK_INCOMPLETE success code for
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.
* Corrected/updated Data Format Specification date.
-----------------------------------------------------
Change log for March 10, 2016 Vulkan 1.0.6 spec update:
* Bump API patch number and header version number to 6 for this
update.
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
&lt;&lt;interfaces-iointerfaces-locations,Location Assignment>>
section (public issue 45).
* Editorial fixes for &lt;&lt;commandbuffer-allocation,Command Buffer
Allocation>> section (public issues 54, 59).
* Clarify behavior of depth test in the &lt;&lt;fragops-depth,Depth
Test&gt;&gt; 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 &lt;&lt;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 &lt;&lt;fig-non-strict-lines,Non
strict lines>> diagram. Use more easily distinguished symbols in
tables in the &lt;&lt;features-required-format-support,Required
Format Support>> section. Don't require FQDNs used as layer names be
encoded in lower case if not possible, in the
&lt;&lt;extensions-naming-conventions, Extension and Layer Naming
Conventions>> section (public issues 101, 119, 121).
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.
Added a separate slink:VkSubmitInfo Valid Usage restriction
specifying that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
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).
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.

View File

@ -9,6 +9,8 @@ Repository Structure
--------------------
```
README.md This file
ChangeLog.txt Change log summary
doc/specs/ Main documentation tree
vulkan/ Vulkan specification
appendices/ Appendices - one file each

View File

@ -33,8 +33,8 @@ Status
Version
Last Modified Date: 28-Feb-2016
Revision: 27
Last Modified Date: 7-Mar-2016
Revision: 28
Number
@ -700,22 +700,22 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
(Making all stages have the same rule that dvec3 takes two locations...)
Change section 4.4.1.3 "Fragment Shader Inputs" from
Change section 4.4.1.3 "Fragment Shader Inputs" from
"By default, gl_FragCoord assumes a lower-left origin for window
coordinates ... For example, the (x, y) location (0.5, 0.5) is
returned for the lowerleft-most pixel in a window. The origin can be
changed by redeclaring gl_FragCoord with the
origin_upper_left identifier."
"By default, gl_FragCoord assumes a lower-left origin for window
coordinates ... For example, the (x, y) location (0.5, 0.5) is
returned for the lowerleft-most pixel in a window. The origin can be
changed by redeclaring gl_FragCoord with the
origin_upper_left identifier."
To
To
"The gl_FragCoord built-in variable assumes an upper-left origin for
window coordinates ... For example, the (x, y) location (0.5, 0.5) is
returned for the upper-left-most pixel in a window. The origin can be
explicitly set by redeclaring gl_FragCoord with the origin_upper_left
identifier. It is a compile-time error to change it to
origin_lower_left."
"The gl_FragCoord built-in variable assumes an upper-left origin for
window coordinates ... For example, the (x, y) location (0.5, 0.5) is
returned for the upper-left-most pixel in a window. The origin can be
explicitly set by redeclaring gl_FragCoord with the origin_upper_left
identifier. It is a compile-time error to change it to
origin_lower_left."
Add to the end of section 4.4.3 Uniform Variable Layout Qualifiers:
@ -735,12 +735,14 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
After the paragraphs about binding ("The binding identifier..."), add
"The /set/ identifier specifies the descriptor set this object belongs to.
It is a compile-time error to apply to just a qualifier or a member of a
block. Any uniform or shader storage block declared without a /set/
identifier is assigned to descriptor set 0. Similarly, any sampler,
texture, or subpass input type declared as a uniform, but without a
/set/ identifier is also assigned to descriptor set 0.
It is a compile-time error to apply /set/ to a standalone qualifier or to
a member of a block. It is a compile-time error to apply /set/ to a block
qualified as a push_constant. By default, any non-push_constant uniform
or shader storage block declared without a /set/ identifier is assigned to
descriptor set 0. Similarly, any sampler, texture, or subpass input type
declared as a uniform, but without a /set/ identifier is also assigned
to descriptor set 0.
"If applied to an object declared as an array, all elements of the array
belong to the specified /set/.
@ -1152,7 +1154,8 @@ Revision History
Rev. Date Author Changes
---- ----------- ------- --------------------------------------------
27 28-Feb-2016 JohnK Make the default by origin_upper_left
28 7-Mar-2016 JohnK Make push_constants not have sets
27 28-Feb-2016 JohnK Make the default by origin_upper_left
26 17-Feb-2016 JohnK Expand specialized array semantics
25 10-Feb-2016 JohnK Incorporate resolutions from the face to face
24 28-Jan-2016 JohnK Update the resolutions from the face to face

View File

@ -56,6 +56,11 @@ PDFXSL :=config/vkspec-dblatex.xsl
PDFSTY :=config/vkspec-dblatex.sty
PYTHON ?= python3
# Set VERBOSE to -v to see what asciidoc is doing.
# Set KEEP to -d to retain intermediate dblatex files
VERBOSE =
KEEP =
# asciidoc / a2x attributes to set.
# XMLLINT normally unset - to detect problems with intermediate files
# NOTEOPTS sets options controlling which NOTEs are generated
@ -66,7 +71,7 @@ PYTHON ?= python3
# A2XOPTS options for a2x->{HTML,PDF} output
XMLLINT = --no-xmllint
NOTEOPTS = -a editing-notes -a implementation-guide
ATTRIBOPTS = -a apiname=$(APINAME)@ -a mathjax
ATTRIBOPTS = -a apiname=$(APINAME)@ -a apirevision="$(SPECREVISION)" -a mathjax
VKCONF = config/vkspec.conf
ADOCOPTS = $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-asciidoc.conf \
-f $(VKCONF) $(VERBOSE)
@ -86,11 +91,6 @@ CHUNKEDXSL = config/docbook-xsl/chunked.xsl
DBLATEXOPTS := $(KEEP) -V -T db2latex -I. -I images -I images/icons -s $(DBLATEXPREFIX)/asciidoc-dblatex.sty
A2XDBLATEXOPTS := --dblatex-opts='$(DBLATEXOPTS)'
# Set VERBOSE to -v to see what asciidoc is doing.
# Set KEEP to -d to retain intermediate dblatex files
VERBOSE =
KEEP =
# Misc. files to clean up (see 'checkinc' target below)
DIRT :=
@ -124,9 +124,9 @@ CHAPTERS := $(wildcard chapters/[A-Za-z]*.txt appendices/[A-Za-z]*.txt)
INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpointers/*.txt validity/structs/*.txt validity/protos/*.txt)
# All non-format-specific dependencies
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
# A generate included file with the spec version, date, and git commit
# A generated included file with the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.5
SPECREVISION = 1.0.6
SPECREMARK =
# Spec targets

View File

@ -20,7 +20,7 @@ which the additional half of the new image is a mirror image of the original
image.
This new mode relaxes the need to generate images whose opposite edges
match by using the original image to generate a matching "mirror image".
match by using the original image to generate a matching ``mirror image''.
This mode allows the texture to be mirrored only once in the negative
s, t, and r directions.
@ -56,4 +56,4 @@ Creating a sampler with the new address mode in each dimension
=== Version History
* Revision 1, 2016-02-16 (Tobias Hector)
- Initial draft
- Initial draft

View File

@ -11,12 +11,7 @@ Specification>>, version 1.1.
Unless otherwise described, the quantities encoded in these compressed
formats are treated as normalized, unsigned values.
<<<
[[appendix-compressedtex-bc]]
== Block Compressed Image Formats
Those formats listed as ``sRGB-encoded'' have in-memory representations of
Those formats listed as sRGB-encoded have in-memory representations of
_R_, _G_ and _B_ components which are nonlinearly-encoded as
latexmath:[$R'$], latexmath:[$G'$], and latexmath:[$B'$]; any alpha
component is unchanged. As part of filtering, the nonlinear
@ -26,6 +21,11 @@ unchanged. The conversion between linear and nonlinear encoding is performed
as described in the ``KHR_DF_TRANSFER_SRGB'' section of the Khronos Data
Format Specification.
<<<
[[appendix-compressedtex-bc]]
== Block Compressed Image Formats
.Mapping of {apiname} BC formats to descriptions
[width="90%",options="header",cols="5,4"]
|==============================
@ -84,9 +84,9 @@ ASTC formats are described in the ``ASTC Compressed Texture Image Formats''
chapter of the Khronos Data Format Specification.
.Mapping of {apiname} ASTC formats to descriptions
[width="80%",options="header",cols="6,1,1"]
[width="75%",options="header",cols="63%,15%,22%"]
|==============================
| VkFormat ^| Block size ^| sRGB output
| VkFormat ^| Block size ^| sRGB-encoded
| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK ^|latexmath:[$4\times 4$] ^|No
| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK ^|latexmath:[$4\times 4$] ^|Yes
| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK ^|latexmath:[$5\times 4$] ^|No

View File

@ -68,6 +68,7 @@ Some general rules to simplify the specific rules below:
API, or a subset of the supported extensions, must: continue to work in
such an implementation without changes in behavior.
[[extensions-naming-conventions]]
== Extension and Layer Naming Conventions
* Extensions are named with the syntax: +VK_AUTHOR_<name>+.
@ -118,17 +119,23 @@ only for layers.
prefix mechanism is needed to allow creating unique layer names without
registering an author prefix. Layer authors that prefer not to register
an author prefix can: instead use a fully-qualified domain name (FQDN)
in reverse-order as an author prefix, using all lower-case characters,
and replacing +.+ (period) with `_` (underscore) characters. For
example, a layer written by the owner of www.3dxcl.invalid would use
the prefix `VK_LAYER_invalid_3dxcl_www_`. FQDNs must: be encoded in
UTF-8.
in reverse-order as an author prefix, replacing +.+ (period) with `_`
(underscore) characters. For example, a layer written by the owner of
www.3dxcl.invalid would use the prefix `VK_LAYER_invalid_3dxcl_www_`.
FQDNs must: be encoded in UTF-8, and should: be in lower case, if
possible for the domain FQDN in question.
[NOTE]
.Note
====
To avoid linking to a nonexistent domain, the reserved TLD +.invalid+ is
used.
``Lower case'' is not a straightforward concept for all possible
encodings of domain names. We suggest using RFC 5895 to interpret this
phrase. The recommendation is that the representation of a FQDN in a layer
name should be the same way one would naturally type that name into a web
browser.
====

View File

@ -162,6 +162,10 @@ Depth/Stencil Format::
Depth/Stencil Image (or ImageView)::
A sname:VkImage (or sname:VkImageView) with a depth/stencil format.
Derivative Group::
A set of fragment shader invocations that cooperate to compute derivatives,
including implicit derivatives for sampled image operations.
Descriptor::
Information about a resource or resource view written into a descriptor
set that is used to access the resource or view from a shader.
@ -294,6 +298,9 @@ Framebuffer Coordinates::
Front-Facing::
See Facingness.
Global Workgroup::
A collection of local workgroups dispatched by a single dispatch command.
Handle::
An opaque integer or pointer value used to refer to a {apiname} object.
Each object type has a unique handle type.
@ -385,6 +392,15 @@ Invocation (Shader)::
single vertex's execution of a vertex shader or a single fragment's
execution of a fragment shader.
Invocation Group::
A set of shader invocations that are executed in parallel and that must:
execute the same control flow path in order for control flow to be
considered dynamically uniform.
Local Workgroup::
A collection of compute shader invocations invoked by a single dispatch
command, which share shared memory and can synchronize with each other.
Logical Device::
An object that represents the application's interface to the physical
device. The logical device is the parent of most {apiname} objects.

View File

@ -88,8 +88,7 @@ include::../protos/vkCmdClearAttachments.txt[]
use.
* pname:rectCount is the number of entries in the pname:pRects array.
* pname:pRects points to an array of slink:VkClearRect structures defining
regions within each selected attachment to clear. describe these
regions.
regions within each selected attachment to clear.
fname:vkCmdClearAttachments can: clear multiple regions of each attachment
used in the current subpass of a render pass instance. This command must: be

View File

@ -161,20 +161,22 @@ implicitly freed and become invalid. Command buffers allocated from a given
pool do not need to be freed before destroying that command pool.
[[commandbuffers-lifetime]]
== Command Buffer Lifetime
[[commandbuffer-allocation]]
== Command Buffer Allocation and Management
Command buffers are allocated by calling:
include::../protos/vkAllocateCommandBuffers.txt[]
* pname:device is the logical device that owns the command pool.
* pname:pAllocateInfo is an instance of the
sname:VkCommandBufferAllocateInfo structure which defines additional
information about creating the pool.
* pname:pCommandBuffers points to an array in which the allocated command
buffers are returned. Each allocated command buffer begins in the
initial state.
* pname:pAllocateInfo is a pointer to an instance of the
sname:VkCommandBufferAllocateInfo structure describing parameters of the
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
pname:commandBufferCount member of pname:pAllocateInfo. Each allocated
command buffer begins in the initial state.
include::../validity/protos/vkAllocateCommandBuffers.txt[]

View File

@ -449,11 +449,12 @@ following conversion rules apply:
* Format conversions on unorm, snorm, unscaled and packed float formats of
the copied aspect of the image are performed by first converting the
pixels to float values.
* In case of sRGB source format, values are converted to linear color
space prior to filtering.
* In case of sRGB source format, nonlinear RGB values are converted to
linear representation prior to filtering.
* After filtering, the float values are first clamped and then cast to the
destination image format. In case of sRGB destination format, values are
converted to sRGB color space before writing the pixel to the image.
destination image format. In case of sRGB destination format, linear RGB
values are converted to nonlinear representation before writing the
pixel to the image.
Signed and unsigned integers are converted by first clamping to the
representable range of the destination format, then casting the value.

View File

@ -761,6 +761,7 @@ VkDescriptorSetLayout myDescriptorSetLayout[2];
myResult = vkCreateDescriptorSetLayout(
myDevice,
&myDescriptorSetLayoutCreateInfo[0],
NULL,
&myDescriptorSetLayout[0]);
//
@ -769,6 +770,7 @@ myResult = vkCreateDescriptorSetLayout(
myResult = vkCreateDescriptorSetLayout(
myDevice,
&myDescriptorSetLayoutCreateInfo[1],
NULL,
&myDescriptorSetLayout[1]);
-------------------------------------------------------------------------------
@ -988,7 +990,7 @@ pname:maxBoundDescriptorSets in <<features-limits, Limits>>).
.API example
[source,{basebackend@docbook:c++:cpp}]
---------------------------------------------------
const VkDescriptorSetLayout layouts = { layout1, layout2 };
const VkDescriptorSetLayout layouts[] = { layout1, layout2 };
const VkPushConstantRange ranges[] =
{
@ -1009,6 +1011,7 @@ const VkPipelineLayoutCreateInfo createInfo =
{
VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, // sType
NULL, // pNext
0, // flags
2, // setLayoutCount
layouts, // pSetLayouts
2, // pushConstantRangeCount
@ -1019,6 +1022,7 @@ VkPipelineLayout myPipelineLayout;
myResult = vkCreatePipelineLayout(
myDevice,
&createInfo,
NULL,
&myPipelineLayout);
---------------------------------------------------
@ -1156,7 +1160,7 @@ include::../structs/VkDescriptorSetAllocateInfo.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:descriptorPool is the pool which the sets will be allocated from.
* pname:descriptorSetCount determines the number descriptor sets to be
* pname:descriptorSetCount determines the number of descriptor sets to be
allocated from the pool.
* pname:pSetLayouts is an array of descriptor set layouts, with each
member specifying how the corresponding descriptor set is allocated.
@ -1357,7 +1361,7 @@ pname:descriptorType and pname:stageFlags, and must: all either use
immutable samplers or must: all not use immutable samplers.
Each element in the pname:pDescriptorCopies array is a
sname:VkCopyDescriptorSet structure describing an operation copying
slink:VkCopyDescriptorSet structure describing an operation copying
descriptors between sets. The definition of sname:VkCopyDescriptorSet is:
include::../structs/VkCopyDescriptorSet.txt[]
@ -1385,7 +1389,7 @@ be bound to the command buffer by calling:
include::../protos/vkCmdBindDescriptorSets.txt[]
* pname:commandbuffer is the command buffer that the descriptor sets will
* pname:commandBuffer is the command buffer that the descriptor sets will
be bound to.
* pname:pipelineBindPoint is a elink:VkPipelineBindPoint indicating
whether the descriptors will be used by graphics pipelines or compute
@ -1404,10 +1408,6 @@ include::../protos/vkCmdBindDescriptorSets.txt[]
* pname:pDynamicOffsets is a pointer to an array of basetype:uint32_t
values specifying dynamic offsets.
If any of the sets being bound include dynamic uniform or storage buffers,
then pname:pDynamicOffsets includes one element for each array element
in each dynamic descriptor type binding in each set. Values are taken from
fname:vkCmdBindDescriptorSets causes the sets numbered [pname:firstSet..
pname:firstSet+pname:descriptorSetCount-1] to use the bindings stored in
pname:pDescriptorSets[0..pname:descriptorSetCount-1] for subsequent
@ -1432,7 +1432,7 @@ then pname:pDynamicOffsets includes one element for each array element
in each dynamic descriptor type binding in each set. Values are taken from
pname:pDynamicOffsets in an order such that all entries for set N come
before set N+1; within a set, entries are ordered by the binding numbers in
the decriptor set layouts; and within a binding array, elements are in
the descriptor set layouts; and within a binding array, elements are in
order. pname:dynamicOffsetCount must: equal the total number of dynamic
descriptors in the sets being bound.
@ -1482,7 +1482,7 @@ buffer. Push constants are updated by calling:
include::../protos/vkCmdPushConstants.txt[]
* pname:commandbuffer is the command buffer in which the push constant
* pname:commandBuffer is the command buffer in which the push constant
update will be recorded.
* pname:layout is the pipeline layout used to program the push constant
updates.

View File

@ -33,7 +33,7 @@ available is returned in pname:pPhysicalDeviceCount. Otherwise,
pname:pPhysicalDeviceCount must: point to a variable set by the user to
the number of elements in the pname:pPhysicalDevices array, and on
return the variable is overwritten with the number of structures actually
written to pname:pPhysicalDevices. If the value of
written to pname:pPhysicalDevices. If
pname:pPhysicalDeviceCount is less than the number of physical devices
available, at most pname:pPhysicalDeviceCount structures will be
written. If pname:pPhysicalDeviceCount is smaller than the number of
@ -107,15 +107,15 @@ constraints and guidelines:
into a system-on-chip (SoC), this should: be the supplier of the
silicon IP used to create the GPU or other accelerator.
* If the vendor of the physical device has a valid PCI vendor ID issued by
https://pcisig.com/[PCI-SIG], that ID should: be used to construct the
value of pname:vendorID as described above for PCI-based
https://pcisig.com/[PCI-SIG], that ID should: be used to construct
pname:vendorID as described above for PCI-based
implementations. Implementations that do not return a PCI vendor ID in
pname:vendorID must: return a valid Khronos vendor ID, obtained as
defined in the <<extensions-vendor-id,Registering a Vendor ID with
Khronos>> section. Khronos vendor IDs are allocated starting at 0x10000,
to distinguish them from the PCI vendor ID namespace.
* The vendor of the physical device is responsible for selecting the
value of pname:deviceID. The value selected should: uniquely
* The vendor of the physical device is responsible for selecting
pname:deviceID. The value selected should: uniquely
identify both the device version and any major configuration options
(for example, core count in the case of multicore devices). The same
device ID should: be used for all physical implementations of that
@ -159,7 +159,7 @@ available is returned in pname:pQueueFamilyPropertyCount. Otherwise,
pname:pQueueFamilyPropertyCount must: point to a variable set by the user to
the number of elements in the pname:pQueueFamilyProperties array, and on
return the variable is overwritten with the number of structures actually
written to pname:pQueueFamilyProperties. If the value of
written to pname:pQueueFamilyProperties. If
pname:pQueueFamilyPropertyCount is less than the number of queue families
available, at most pname:pQueueFamilyPropertyCount structures will be
written.
@ -265,7 +265,7 @@ latexmath:[$(1,1,1)$] in pname:minImageTransferGranularity, meaning that
there are no additional restrictions on the granularity of image
transfer operations for these queues. Other queues supporting image
transfer operations are only required: to support whole mip level
transfers, thus the value of pname:minImageTransferGranularity for
transfers, thus pname:minImageTransferGranularity for
queues belonging to such queue families may: be latexmath:[$(0,0,0)$].
The <<memory-device,Device Memory>> section describes memory properties
@ -346,10 +346,10 @@ The members of sname:VkDeviceCreateInfo have the following meanings:
names of extensions to enable for the created device. See the
<<querying-layers-and-extensions,Querying Layers and Extensions>>
chapter for further details.
* pname:pEnabledFeatures is a pointer to a sname:VkPhysicalDeviceFeatures
structure that contains boolean indicators of all the features to be
enabled. Refer to the <<features-features,Features>> section for further
details.
* pname:pEnabledFeatures is `NULL` or a pointer to a
sname:VkPhysicalDeviceFeatures structure that contains boolean
indicators of all the features to be enabled. Refer to the
<<features-features,Features>> section for further details.
include::../validity/structs/VkDeviceCreateInfo.txt[]
@ -554,7 +554,7 @@ The members of sname:VkDeviceQueueCreateInfo have the following meanings:
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is reserved for future use.
* pname:queueFamilyIndex is an unsigned integer indicating the index of
the queue family to create on this device. The value of this index
the queue family to create on this device. This index
corresponds to the index of an element of the
pname:pQueueFamilyProperties array that was returned by
fname:vkGetPhysicalDeviceQueueFamilyProperties.

View File

@ -17,12 +17,12 @@ include::../protos/vkCmdDispatch.txt[]
* pname:commandBuffer is the command buffer into which the command will be
recorded.
* pname:x is the number of workgroups to dispatch in the X dimension.
* pname:y is the number of workgroups to dispatch in the Y dimension.
* pname:z is the number of workgroups to dispatch in the Z dimension.
* pname:x is the number of local workgroups to dispatch in the X dimension.
* pname:y is the number of local workgroups to dispatch in the Y dimension.
* pname:z is the number of local workgroups to dispatch in the Z dimension.
When the command is executed, workgroups are assembled using pname:x,
pname:y, and pname:z.
When the command is executed, a global workgroup consisting of
latexmath:[$x \times y \times z$] local workgroups is assembled.
include::../validity/protos/vkCmdDispatch.txt[]

View File

@ -69,7 +69,7 @@ the number of layer properties available is returned in pname:pPropertyCount.
Otherwise, pname:pPropertyCount must: point to a variable set by the user to
the number of elements in the pname:pProperties array, and on return the
variable is overwritten with the number of structures actually written to
pname:pProperties. If the value of pname:pPropertyCount is less than the
pname:pProperties. If pname:pPropertyCount is less than the
number of layer properties available, at most pname:pPropertyCount
structures will be written. If pname:pPropertyCount is smaller than the
number of layers available, ename:VK_INCOMPLETE will be returned instead of
@ -121,8 +121,8 @@ To query the available instance extensions, call:
include::../protos/vkEnumerateInstanceExtensionProperties.txt[]
* pname:pLayerName is either `NULL` or the name of a instance layer to
retrieve extensions from.
* pname:pLayerName is either `NULL` or a pointer to a null-terminated
UTF-8 string naming the instance layer to retrieve extensions from.
* pname:pPropertyCount is a pointer to an integer related to the number of
extension properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of
@ -130,11 +130,10 @@ include::../protos/vkEnumerateInstanceExtensionProperties.txt[]
include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[]
Any instance extensions provided by the {apiname} implementation or by
implicitly enabled layers, but not by explicitly enabled layers, are
returned when pname:pLayerName parameter is `NULL`. When pname:pLayerName is
the name of a layer, the instance extensions provided by that layer are
returned.
When pLayerName parameter is NULL, only extensions provided by the {apiname}
implementation or by implicitly enabled layers are returned.
When pname:pLayerName is the name of a layer, the instance extensions
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
@ -145,8 +144,8 @@ To query the extensions available to a given physical device, call:
include::../protos/vkEnumerateDeviceExtensionProperties.txt[]
* pname:physicalDevice is the physical device that will be queried.
* pname:pLayerName is either `NULL` or the name of a device layer to
retrieve extensions from.
* pname:pLayerName is either `NULL` or a pointer to a null-terminated
UTF-8 string naming the device layer to retrieve extensions from.
* pname:pPropertyCount is a pointer to an integer related to the number of
extension properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of
@ -154,11 +153,10 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[]
include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[]
Any device extensions provided by the {apiname} implementation or by
implicitly enabled layers, but not by explicitly enabled layers, are
returned when pname:pLayerName parameter is `NULL`. When pname:pLayerName is
the name of a layer, the device extensions provided by that layer are
returned.
When pLayerName parameter is NULL, only extensions provided by the {apiname}
implementation or by implicitly enabled layers are returned.
When pname:pLayerName is the name of a layer, the device extensions
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
@ -170,7 +168,7 @@ then the number of extensions properties available is returned in
pname:pPropertyCount. Otherwise, pname:pPropertyCount must: point to a
variable set by the user to the number of elements in the pname:pProperties
array, and on return the variable is overwritten with the number of
structures actually written to pname:pProperties. If the value of
structures actually written to pname:pProperties. If
pname:pPropertyCount is less than the number of extension properties
available, at most pname:pPropertyCount structures will be written. If
pname:pPropertyCount is smaller than the number of extensions available,

View File

@ -146,10 +146,10 @@ following features:
sname:VkPipelineColorBlendStateCreateInfo structure must: be set to
ename:VK_FALSE, and the pname:logicOp member is ignored.
* [[features-features-multiDrawIndirect]] pname:multiDrawIndirect
indicates whether multi-draw indirect is supported. If this feature is
not enabled, the pname:drawCount parameter to the
indicates whether multiple draw indirect is supported. If this feature
is not enabled, the pname:drawCount parameter to the
fname:vkCmdDrawIndirect and fname:vkCmdDrawIndexedIndirect commands
must: be 1. The pname:maxDrawIndirectCount member of the
must: be 0 or 1. The pname:maxDrawIndirectCount member of the
sname:VkPhysicalDeviceLimits structure must: also be 1 if this feature
is not supported. See
<<features-limits-maxDrawIndirectCount,maxDrawIndirectCount>>.
@ -180,7 +180,7 @@ following features:
pname:depthBoundsTestEnable member of the
sname:VkPipelineDepthStencilStateCreateInfo structure must: be set to
ename:VK_FALSE. When pname:depthBoundsTestEnable is set to
ename:VK_FALSE, the values of the pname:minDepthBounds and
ename:VK_FALSE, the pname:minDepthBounds and
pname:maxDepthBounds members of the
sname:VkPipelineDepthStencilStateCreateInfo structure are ignored.
* [[features-features-wideLines]] pname:wideLines indicates whether lines
@ -820,7 +820,7 @@ properties of the physical device:
* [[features-limits-maxTessellationPatchSize]]
pname:maxTessellationPatchSize is the maximum patch size, in vertices,
of patches that can: be processed by the tessellation control shader and
tessellation primitive generator. The value of the
tessellation primitive generator. The
pname:patchControlPoints member of the
sname:VkPipelineTessellationStateCreateInfo structure specified at
pipeline creation time and the value provided in the code:OutputVertices
@ -892,22 +892,22 @@ properties of the physical device:
class in shader modules (or with the code:shared storage qualifier in
GLSL) in the compute shader stage.
* [[features-limits-maxComputeWorkGroupCount]]
pname:maxComputeWorkGroupCount[3] is the maximum number of work groups
pname:maxComputeWorkGroupCount[3] is the maximum number of local workgroups
that can: be dispatched by a single dispatch command. These three values
represent the maximum number of work groups for the X, Y, and Z
represent the maximum number of local workgroups for the X, Y, and Z
dimensions, respectively. The pname:x, pname:y, and pname:z parameters
to the flink:vkCmdDispatch command, or members of the
slink:VkDispatchIndirectCommand structure must: be less than or equal to
the corresponding limit. See <<dispatch>>.
* [[features-limits-maxComputeWorkGroupInvocations]]
pname:maxComputeWorkGroupInvocations is the maximum total number of
compute shader invocations in a single local work group. The product of
compute shader invocations in a single local workgroup. The product of
the X, Y, and Z sizes as specified by the code:LocalSize execution mode
in shader modules must: be less than or equal to this limit.
* [[features-limits-maxComputeWorkGroupSize]]
pname:maxComputeWorkGroupSize[3] is the maximum size of a local compute
work group, per dimension. These three values represent the maximum
local work group size in the X, Y, and Z dimensions, respectively. The
workgroup, per dimension. These three values represent the maximum
local workgroup size in the X, Y, and Z dimensions, respectively. The
pname:x, pname:y, and pname:z sizes specified by the code:LocalSize
execution mode in shader modules must: be less than or equal to the
corresponding limit.
@ -992,8 +992,7 @@ different equations in the spec).
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set in the pname:usage
member of the sname:VkBufferCreateInfo structure, the pname:offset must:
be an integer multiple of this limit. This limit is a maximum, not a
minimum.
be an integer multiple of this limit.
* [[features-limits-minUniformBufferOffsetAlignment]]
pname:minUniformBufferOffsetAlignment is the minimum required alignment,
in bytes, for the pname:offset member of the
@ -1002,7 +1001,6 @@ different equations in the spec).
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC is updated, the
pname:offset must: be an integer multiple of this limit. Similarly,
dynamic offsets for uniform buffers must: be multiples of this limit.
This limit is a maximum, not a minimum.
* [[features-limits-minStorageBufferOffsetAlignment]]
pname:minStorageBufferOffsetAlignment is the minimum required alignment,
in bytes, for the pname:offset member of the
@ -1011,7 +1009,6 @@ different equations in the spec).
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC is updated, the
pname:offset must: be an integer multiple of this limit. Similarly,
dynamic offsets for storage buffers must: be multiples of this limit.
This limit is a maximum, not a minimum.
* [[features-limits-minTexelOffset]] pname:minTexelOffset is the minimum
offset value for the code:ConstOffset image operand of any of the
code:OpImageSample* or code:OpImageFetch* image instructions.
@ -2337,7 +2334,7 @@ ename:VK_FORMAT_BC7_UNORM_BLOCK::
ename:VK_FORMAT_BC7_SRGB_BLOCK::
A four-component, block compressed format where each 4x4 block consists
of 128-bits of encoded unsigned normalized RGBA image data with sRGB
nonlinear encoding.
nonlinear encoding applied to the RGB components.
ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK::
A three-component, ETC2 compressed format where each 4x4 block consists
@ -2395,7 +2392,8 @@ ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK::
A four-component, ASTC compressed format where each 4x4 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK::
A four-component, ASTC compressed format where each 5x4 block consists
@ -2405,7 +2403,8 @@ ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK::
A four-component, ASTC compressed format where each 5x4 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK::
A four-component, ASTC compressed format where each 5x5 block consists
@ -2415,7 +2414,8 @@ ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK::
A four-component, ASTC compressed format where each 5x5 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK::
A four-component, ASTC compressed format where each 6x5 block consists
@ -2425,7 +2425,8 @@ ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK::
A four-component, ASTC compressed format where each 6x5 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK::
A four-component, ASTC compressed format where each 6x6 block consists
@ -2435,7 +2436,8 @@ ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK::
A four-component, ASTC compressed format where each 6x6 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK::
A four-component, ASTC compressed format where each 8x5 block consists
@ -2445,7 +2447,8 @@ ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK::
A four-component, ASTC compressed format where each 8x5 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK::
A four-component, ASTC compressed format where each 8x6 block consists
@ -2455,7 +2458,8 @@ ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK::
A four-component, ASTC compressed format where each 8x6 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK::
A four-component, ASTC compressed format where each 8x8 block consists
@ -2465,7 +2469,8 @@ ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK::
A four-component, ASTC compressed format where each 8x8 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK::
A four-component, ASTC compressed format where each 10x5 block consists
@ -2475,7 +2480,8 @@ ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK::
A four-component, ASTC compressed format where each 10x5 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK::
A four-component, ASTC compressed format where each 10x6 block consists
@ -2485,7 +2491,8 @@ ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK::
A four-component, ASTC compressed format where each 10x6 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK::
A four-component, ASTC compressed format where each 10x8 block consists
@ -2495,7 +2502,8 @@ ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK::
A four-component, ASTC compressed format where each 10x8 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK::
A four-component, ASTC compressed format where each 10x10 block consists
@ -2505,7 +2513,8 @@ ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK::
A four-component, ASTC compressed format where each 10x10 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK::
A four-component, ASTC compressed format where each 12x10 block consists
@ -2515,7 +2524,8 @@ ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK::
A four-component, ASTC compressed format where each 12x10 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK::
A four-component, ASTC compressed format where each 12x12 block consists
@ -2525,7 +2535,8 @@ ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK::
ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK::
A four-component, ASTC compressed format where each 12x12 block consists
of 128-bits of encoded image data which is decoded as unsigned
normalized RGBA image data with sRGB nonlinear encoding.
normalized RGBA image data with sRGB nonlinear encoding applied to
the RGB components.
[[features-formats-packed]]
@ -3101,6 +3112,7 @@ any features for the format.
include::../validity/structs/VkFormatProperties.txt[]
[[features-required-format-support]]
=== Required Format Support
Implementations must: support at least the following set of
@ -3118,10 +3130,10 @@ for each format.
.Key for format feature tables
[width="70%",cols="1,10"]
|============
^|• | This feature must: be supported on
the named format
^|∘ | This feature must: be supported on at least some
of the named formats, with more information below
^|{sym1} | This feature must: be supported on the named format
^|{sym2} | This feature must: be supported on at least some
of the named formats, with more information in the table
where the symbol appears
|============
.Feature bits in pname:optimalTilingFeatures
@ -3170,12 +3182,12 @@ s| Format ^.^|latexmath:[$\down
| ename:VK_FORMAT_UNDEFINED | | | | | | | | | | | | |
| ename:VK_FORMAT_R4G4_UNORM_PACK8 | | | | | | | | | | | | |
| ename:VK_FORMAT_R4G4B4A4_UNORM_PACK16 | | | | | | | | | | | | |
| ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 | • | • | • | | | | | | | | | |
| ename:VK_FORMAT_R5G6B5_UNORM_PACK16 | • | • | • | | | • | • | • | | | | |
| ename:VK_FORMAT_B4G4R4A4_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | | | | | | | |
| ename:VK_FORMAT_R5G6B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | |
| ename:VK_FORMAT_B5G6R5_UNORM_PACK16 | | | | | | | | | | | | |
| ename:VK_FORMAT_R5G5B5A1_UNORM_PACK16 | | | | | | | | | | | | |
| ename:VK_FORMAT_B5G5R5A1_UNORM_PACK16 | | | | | | | | | | | | |
| ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 | • | • | • | | | • | • | • | | | | |
| ename:VK_FORMAT_A1R5G5B5_UNORM_PACK16 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | |
|=========================================
<<<
@ -3198,19 +3210,19 @@ s| Format ^.^|latexmath:[$\down
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| ename:VK_FORMAT_R8_UNORM | • | • | • | | | • | • | • | | • | • | |
| ename:VK_FORMAT_R8_SNORM | • | • | • | | | | | | | • | • | |
| ename:VK_FORMAT_R8_UNORM | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8_SNORM | {sym1} | {sym1} | {sym1} | | | | | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R8_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R8_UINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R8_SINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R8_UINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8_SINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8_SRGB | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8_UNORM | • | • | • | | | • | • | • | | • | • | |
| ename:VK_FORMAT_R8G8_SNORM | • | • | • | | | | | | | • | • | |
| ename:VK_FORMAT_R8G8_UNORM | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8G8_SNORM | {sym1} | {sym1} | {sym1} | | | | | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8G8_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8_UINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R8G8_SINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R8G8_UINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8G8_SINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R8G8_SRGB | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8B8_UNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8B8_SNORM | | | | | | | | | | | | |
@ -3248,27 +3260,27 @@ s| Format ^.^|latexmath:[$\down
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| ename:VK_FORMAT_R8G8B8A8_UNORM | • | • | • | • | | • | • | • | | • | • | • |
| ename:VK_FORMAT_R8G8B8A8_SNORM | • | • | • | • | | | | | | • | • | • |
| ename:VK_FORMAT_R8G8B8A8_UNORM | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R8G8B8A8_SNORM | {sym1} | {sym1} | {sym1} | {sym1} | | | | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R8G8B8A8_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8B8A8_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R8G8B8A8_UINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R8G8B8A8_SINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R8G8B8A8_SRGB | • | • | • | | | • | • | • | | | | |
| ename:VK_FORMAT_B8G8R8A8_UNORM | • | • | • | | | • | • | • | | • | • | |
| ename:VK_FORMAT_R8G8B8A8_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R8G8B8A8_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R8G8B8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | |
| ename:VK_FORMAT_B8G8R8A8_UNORM | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | |
| ename:VK_FORMAT_B8G8R8A8_SNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_B8G8R8A8_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_B8G8R8A8_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_B8G8R8A8_UINT | | | | | | | | | | | | |
| ename:VK_FORMAT_B8G8R8A8_SINT | | | | | | | | | | | | |
| ename:VK_FORMAT_B8G8R8A8_SRGB | • | • | • | | | • | • | • | | | | |
| ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 | • | • | • | | | • | • | • | | • | • | • |
| ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 | • | • | • | | | | | | | • | • | • |
| ename:VK_FORMAT_B8G8R8A8_SRGB | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | |
| ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_A8B8G8R8_SNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_A8B8G8R8_USCALED_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A8B8G8R8_SSCALED_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 | • | • | | | | • | • | | | • | • | • |
| ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 | • | • | | | | • | • | | | • | • | • |
| ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 | • | • | • | | | • | • | • | | | | |
| ename:VK_FORMAT_A8B8G8R8_UINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_A8B8G8R8_SINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_A8B8G8R8_SRGB_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | | | |
|=========================================
<<<
@ -3297,11 +3309,11 @@ s| Format ^.^|latexmath:[$\down
| ename:VK_FORMAT_A2R10G10B10_SSCALED_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A2R10G10B10_UINT_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A2R10G10B10_SINT_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 | • | • | • | | | • | • | • | | • | • | |
| ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | |
| ename:VK_FORMAT_A2B10G10R10_SNORM_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A2B10G10R10_USCALED_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A2B10G10R10_SSCALED_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 | • | • | | | | • | • | | | | • | |
| ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | | {sym1} | |
| ename:VK_FORMAT_A2B10G10R10_SINT_PACK32 | | | | | | | | | | | | |
|=========================================
@ -3325,20 +3337,20 @@ s| Format ^.^|latexmath:[$\down
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| ename:VK_FORMAT_R16_UNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16_SNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16_UNORM | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R16_SNORM | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R16_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R16_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R16_UINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R16_SINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R16_SFLOAT | • | • | • | | | • | • | • | | • | • | |
| ename:VK_FORMAT_R16G16_UNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16_SNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16_UINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R16_SINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R16_SFLOAT | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R16G16_UNORM | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R16G16_SNORM | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R16G16_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16_UINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R16G16_SINT | • | • | | | | • | • | | | • | • | |
| ename:VK_FORMAT_R16G16_SFLOAT | • | • | • | | | • | • | • | | • | • | |
| ename:VK_FORMAT_R16G16_UINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R16G16_SINT | {sym1} | {sym1} | | | | {sym1} | {sym1} | | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R16G16_SFLOAT | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | |
| ename:VK_FORMAT_R16G16B16_UNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16_SNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16_USCALED | | | | | | | | | | | | |
@ -3346,13 +3358,13 @@ s| Format ^.^|latexmath:[$\down
| ename:VK_FORMAT_R16G16B16_UINT | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16_SINT | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16_SFLOAT | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16A16_UNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16A16_SNORM | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16A16_UNORM | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R16G16B16A16_SNORM | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R16G16B16A16_USCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16A16_SSCALED | | | | | | | | | | | | |
| ename:VK_FORMAT_R16G16B16A16_UINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R16G16B16A16_SINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R16G16B16A16_SFLOAT | • | • | • | • | | • | • | • | | • | • | • |
| ename:VK_FORMAT_R16G16B16A16_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R16G16B16A16_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R16G16B16A16_SFLOAT | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} |
|=========================================
<<<
@ -3375,18 +3387,18 @@ s| Format ^.^|latexmath:[$\down
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| ename:VK_FORMAT_R32_UINT | • | • | | • | • | • | • | | | • | • | • | •
| ename:VK_FORMAT_R32_SINT | • | • | | • | • | • | • | | | • | • | • | •
| ename:VK_FORMAT_R32_SFLOAT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32G32_UINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32G32_SINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32G32_SFLOAT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32G32B32_UINT | | | | | | | | | | | | |
| ename:VK_FORMAT_R32G32B32_SINT | | | | | | | | | | | | |
| ename:VK_FORMAT_R32G32B32_SFLOAT | | | | | | | | | | | | |
| ename:VK_FORMAT_R32G32B32A32_UINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32G32B32A32_SINT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32G32B32A32_SFLOAT | • | • | | • | | • | • | | | • | • | • |
| ename:VK_FORMAT_R32_UINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1}
| ename:VK_FORMAT_R32_SINT | {sym1} | {sym1} | | {sym1} | {sym1} | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} | {sym1}
| ename:VK_FORMAT_R32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R32G32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R32G32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R32G32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R32G32B32_UINT | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R32G32B32_SINT | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R32G32B32_SFLOAT | | | | | | | | | | {sym1} | | |
| ename:VK_FORMAT_R32G32B32A32_UINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R32G32B32A32_SINT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
| ename:VK_FORMAT_R32G32B32A32_SFLOAT | {sym1} | {sym1} | | {sym1} | | {sym1} | {sym1} | | | {sym1} | {sym1} | {sym1} |
|=========================================
<<<
@ -3421,30 +3433,23 @@ s| Format ^.^|latexmath:[$\down
| ename:VK_FORMAT_R64G64B64A64_UINT | | | | | | | | | | | | |
| ename:VK_FORMAT_R64G64B64A64_SINT | | | | | | | | | | | | |
| ename:VK_FORMAT_R64G64B64A64_SFLOAT | | | | | | | | | | | | |
| ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 | • | • | • | | | | | | | | • | |
| ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 | • | • | • | | | | | | | | | |
| ename:VK_FORMAT_D16_UNORM | • | • | | | | | | | • | | | |
| ename:VK_FORMAT_X8_D24_UNORM_PACK32 | | | | | | | | | | | | |
| ename:VK_FORMAT_D32_SFLOAT | • | • | | | | | | | ∘ | | | |
| ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | | {sym1} | |
| ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 | {sym1} | {sym1} | {sym1} | | | | | | | | | |
| ename:VK_FORMAT_D16_UNORM | {sym1} | {sym1} | | | | | | | {sym1} | | | |
| ename:VK_FORMAT_X8_D24_UNORM_PACK32 | | | | | | | | | {sym2} | | | |
| ename:VK_FORMAT_D32_SFLOAT | {sym1} | {sym1} | | | | | | | {sym2} | | | |
| ename:VK_FORMAT_S8_UINT | | | | | | | | | | | | |
| ename:VK_FORMAT_D16_UNORM_S8_UINT | | | | | | | | | | | | |
| ename:VK_FORMAT_D24_UNORM_S8_UINT | | | | | | | | | ∘ | | | |
| ename:VK_FORMAT_D32_SFLOAT_S8_UINT | | | | | | | | | ∘ | | | |
|=========================================
ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT feature must: be
| ename:VK_FORMAT_D24_UNORM_S8_UINT | | | | | | | | | {sym2} | | | |
| ename:VK_FORMAT_D32_SFLOAT_S8_UINT | | | | | | | | | {sym2} | | | |
14+| ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT feature must: be
supported for at least one of ename:VK_FORMAT_X8_D24_UNORM_PACK32 and
ename:VK_FORMAT_D32_SFLOAT, and must: be supported for at least one of
ename:VK_FORMAT_D24_UNORM_S8_UINT and ename:VK_FORMAT_D32_SFLOAT_S8_UINT.
|=========================================
<<<
The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be
supported in pname:optimalTilingFeatures for all the formats in at least
one of the following three tables:
[[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
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
@ -3463,22 +3468,28 @@ one of the following three tables:
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| 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 | ∘ | ∘ | ∘ | | | | | | | | | |
| ename:VK_FORMAT_BC7_SRGB_BLOCK | ∘ | ∘ | ∘ | | | | | | | | | |
| ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC2_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC2_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC3_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC3_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC4_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC5_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC6H_UFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC6H_SFLOAT_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC7_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_BC7_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
14+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be
supported in pname:optimalTilingFeatures for all the formats in at least
one of: this table, <<features-formats-mandatory-features-etc>>, or
<<features-formats-mandatory-features-astc>>.
|=========================================
<<<
@ -3501,16 +3512,22 @@ s| Format ^.^|latexmath:[$\down
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| 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 | ∘ | ∘ | ∘ | | | | | | | | | |
| ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK | ∘ | ∘ | ∘ | | | | | | | | | |
| ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_EAC_R11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_EAC_R11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
14+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be
supported in pname:optimalTilingFeatures for all the formats in at least
one of: this table, <<features-formats-mandatory-features-bcn>>, or
<<features-formats-mandatory-features-astc>>.
|=========================================
<<<
@ -3533,34 +3550,40 @@ s| Format ^.^|latexmath:[$\down
3+>| ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT .3+^.^|latexmath:[$\downarrow$]
2+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .2+^.^|latexmath:[$\downarrow$]
s| Format ^.^|latexmath:[$\downarrow$]
| 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 | ∘ | ∘ | ∘ | | | | | | | | | |
| ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK | ∘ | ∘ | ∘ | | | | | | | | | |
| ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
| ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK | {sym2} | {sym2} | {sym2} | | | | | | | | | |
14+|The ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: be
supported in pname:optimalTilingFeatures for all the formats in at least
one of: this table, <<features-formats-mandatory-features-bcn>>, or
<<features-formats-mandatory-features-etc>>.
|=========================================
== Additional Image Capabilities

View File

@ -181,7 +181,7 @@ include code:SampleMask in its interface, the fragment coverage is not
modified.
Next, the fragment alpha and coverage values are modified based on the
values of the pname:alphaToCoverageEnable and pname:alphaToOneEnable members
pname:alphaToCoverageEnable and pname:alphaToOneEnable members
of the slink:VkPipelineMultisampleStateCreateInfo structure.
All alpha values in this section refer only to the alpha component of the
@ -476,11 +476,11 @@ location and the sample's depth value in the depth/stencil attachment at
location latexmath:[$(x_f,y_f)$]. The comparison is enabled or disabled with
the pname:depthTestEnable member of the
slink:VkPipelineDepthStencilStateCreateInfo structure. When disabled, the
depth comparison and subsequent possible updates to the depth/stencil
attachment value are bypassed and the fragment is passed to the next
operation. The stencil value, however, can: be modified as indicated above
if the depth test passed. If enabled, the comparison takes place and the
depth/stencil attachment value can: subsequently be modified.
depth comparison and subsequent possible updates to the value of the depth
component of the depth/stencil attachment are bypassed and the fragment is
passed to the next operation. The stencil value, however, can: be modified as
indicated above as if the depth test passed. If enabled, the comparison takes
place and the depth/stencil attachment value can: subsequently be modified.
The comparison is specified with the pname:depthCompareOp member of
slink:VkPipelineDepthStencilStateCreateInfo. Let latexmath:[$z_f$] be the
@ -512,20 +512,16 @@ of the viewport used by this fragment, respectively.
If the depth test fails, the sample's coverage bit is cleared in the
fragment. The stencil value at the sample's location is updated according to
the function currently in effect for depth test failure. Otherwise, the
fragment continues to the next operation and the value of the depth
framebuffer attachment at the sample's location is conditionally written to
the sample's latexmath:[$z_f$] value. In this case the stencil value is
updated according to the function currently in effect for depth test
success.
the function currently in effect for depth test failure.
[[fragops-depth-write]]
Upon passing the depth test, a sample's (possibly clamped) latexmath:[$z_f$]
If the depth test passes, the sample's (possibly clamped) latexmath:[$z_f$]
value is conditionally written to the depth framebuffer attachment based on
the value of the pname:depthWriteEnable member of
the pname:depthWriteEnable member of
slink:VkPipelineDepthStencilStateCreateInfo. If pname:depthWriteEnable is
ename:VK_TRUE the value is written, and if it is ename:VK_FALSE the value is
not written.
not written. The stencil value at the sample's location is updated according
to the function currently in effect for depth test success.
If there is no depth framebuffer attachment, it is as if the depth test
always passes.

View File

@ -204,10 +204,12 @@ with RGB and alpha components potentially using different blend operations:
include::../enums/VkBlendOp.txt[]
<<<
The semantics of each enum value is described in the table below:
.Blend Operations
[width="100%",cols="45%,30%,25%",options="header",style="verse",align="center"]
[width="100%",cols="45%,30%,25%",options="header",align="center"]
|==========================================
|VkBlendOp | RGB Components | Alpha Component
@ -220,13 +222,13 @@ The semantics of each enum value is described in the table below:
|ename:VK_BLEND_OP_SUBTRACT
| latexmath:[$R=R_{s0}\times S_r-R_d\times D_r$] +
latexmath:[$G=G_{s0}\times S_g-G_d\times D_g$] +
latexmath:[$B=B_{s0}\times S_b-B_d\times D_b$] +
latexmath:[$B=B_{s0}\times S_b-B_d\times D_b$]
| latexmath:[$A=A_{s0}\times S_a-A_d\times D_a$]
|ename:VK_BLEND_OP_REVERSE_SUBTRACT
| latexmath:[$R=R_d\times D_r-R_{s0}\times S_r$] +
latexmath:[$G=G_d\times D_g-G_{s0}\times S_g$] +
latexmath:[$B=B_d\times D_b-B_{s0}\times S_b$] +
latexmath:[$B=B_d\times D_b-B_{s0}\times S_b$]
| latexmath:[$A=A_d\times D_a-A_{s0}\times S_a$]
|ename:VK_BLEND_OP_MIN
@ -238,7 +240,7 @@ The semantics of each enum value is described in the table below:
|ename:VK_BLEND_OP_MAX
| latexmath:[$R=\max(R_{s0},R_d)$] +
latexmath:[$G=\max(G_{s0},G_d)$] +
latexmath:[$B=\max(B_{s0},B_d)$] +
latexmath:[$B=\max(B_{s0},B_d)$]
| latexmath:[$A=\max(A_{s0},A_d)$]
|==========================================
@ -257,8 +259,8 @@ In this table, the following conventions are used:
The blending operation produces a new set of values latexmath:[$R, G,
B$] and latexmath:[$A$], which are written to the framebuffer attachment. If
blending is not enabled for this attachment, then latexmath:[$R, G, B$] and
latexmath:[$A$] are assigned the values of
latexmath:[$R_{s0},G_{s0},B_{s0}$] and latexmath:[$A_{s0}$].
latexmath:[$A$] are assigned
latexmath:[$R_{s0},G_{s0},B_{s0}$] and latexmath:[$A_{s0}$], respectively.
If the color attachment is fixed-point, the components of the source and
destination values and blend factors are each clamped to
@ -287,13 +289,14 @@ G, and B destination color values (after conversion from fixed-point to
floating-point) are considered to be encoded for the sRGB color space and
hence are linearized prior to their use in blending. Each R, G, and B
component is converted from nonlinear to linear as described in the
``KHR_DF_TRANSFER_SRGB`` section of the Khronos Data Format Specification.
``KHR_DF_TRANSFER_SRGB'' section of the Khronos Data Format Specification.
If the format is not sRGB, no linearization is performed.
If the numeric format of a framebuffer attachment uses sRGB encoding, then
the final R, G and B values are converted into the nonlinear sRGB color
space before being written to the framebuffer attachment as described in the
``KHR_DF_TRANSFER_SRGB`` section of the Khronos Data Format Specification.
the final R, G and B values are converted into the nonlinear sRGB
representation before being written to the framebuffer attachment as
described in the ``KHR_DF_TRANSFER_SRGB'' section of the Khronos Data
Format Specification.
If the framebuffer color attachment numeric format is not sRGB encoded then
the resulting latexmath:[$c_s$] values for R, G and B are unmodified. The
@ -324,6 +327,8 @@ the following operations:
include::../enums/VkLogicOp.txt[]
<<<
The logical operations supported by {apiname} are summarized in the
following table in which
@ -338,7 +343,7 @@ following table in which
latexmath:[$A$] component value:
.Logical Operations
[width="75%",options="header",style="verse",align="center"]
[width="75%",options="header",align="center"]
|==========================================
|Mode | Operation
|ename:VK_LOGIC_OP_CLEAR | latexmath:[$0$]

View File

@ -103,7 +103,7 @@ When a vertex shader input variable declared using a scalar or vector
32-bit data type is assigned a location, its value(s) are taken from
the components of the input attribute specified with the corresponding
sname:VkVertexInputAttributeDescription::pname:location.
The components used depend on the type of variable and the value of the
The components used depend on the type of variable and the
code:Component decoration specified in the variable declaration,
as identified in <<fxvertex-attrib-components>>. Any 32-bit scalar
or vector input will consume a single location. For 32-bit data types,

View File

@ -40,13 +40,13 @@ module.
=== Built-in Interface Block
Shader <<interfaces-builtin-variables,built-in>> variables meeting the
following requirements define the _built-in interface block_. They must: be:
following requirements define the _built-in interface block_. They must:
* explicitly declared (there are no implicit built-ins),
* identified with a code:BuiltIn decoration,
* be explicitly declared (there are no implicit built-ins),
* be identified with a code:BuiltIn decoration,
* form object types as described in the
<<interfaces-builtin-variables,Built-in Variables>> section, and
* declared in a block whose top-level members are the built-ins.
* be declared in a block whose top-level members are the built-ins.
Built-ins only participate in interface matching if they are declared
in such a block. They mustnot: have any code:Location or code:Component
@ -159,9 +159,9 @@ If the structure type is a code:Block but without a code:Location, then
each of its members must: have a code:Location decoration. If it is a
code:Block with a code:Location decoration, then its first member is
assigned to the location specified for the code:Block, any member with
its own code:Location decoration is assigned that location, and otherwise
each subsequent member is assigned consecutive locations in declaration
order.
its own code:Location decoration is assigned that location, and each
remaining member is assigned the location after the
immediately preceding member in declaration order.
The locations consumed by block and structure members are determined
by applying the rules above in a depth-first traversal of the instantiated
@ -712,7 +712,7 @@ is discarded before rasterization. code:CullDistance can: be applied to an
output variable in the last vertex processing stage (vertex, tessellation
evaluation or geometry shader).
+
If applied to an input variable, that variable will contain the value of the
If applied to an input variable, that variable will contain the
corresponding output in the previous shader stage. code:CullDistance
mustnot: be applied to an input in the vertex shader or to an output in the
fragment shader, and mustnot: be used in compute shaders.
@ -728,9 +728,9 @@ code:FragCoord::
This variable contains the framebuffer coordinate
latexmath:[$(x,y,z,\frac{1}{w})$] of the fragment being processed. The (x,y)
coordinate (0,0) is the upper left corner of the upper left pixel in the
framebuffer. The values of the x and y components of code:FragCoord reflect
the location of the center of the pixel (i.e. fractional values of
latexmath:[$(0.5,0.5)$]) when sample shading is not enabled, and the
framebuffer. The x and y components of code:FragCoord reflect
the location of the center of the pixel
(latexmath:[$(0.5,0.5)$]) when sample shading is not enabled, and the
location of the sample corresponding to the shader invocation when using
sample shading.
+
@ -763,7 +763,7 @@ code:FragDepth must: be declared as a scalar 32-bit floating-point value.
code:FrontFacing::
The code:FrontFacing decoration can: be applied to an input variable in the
fragment shader. The value of this variable is non-zero if the current
fragment shader. This variable is non-zero if the current
fragment is considered to be part of a
<<primsrast-polygons-basic,front-facing>> primitive and is zero if the
fragment is considered to be part of a back-facing primitive.
@ -790,7 +790,7 @@ code:GlobalInvocationID::
An input variable decorated with code:GlobalInvocationID will contain the
location of the current compute shader invocation within the global
workgroup. The value in this variable is equal to the index of the local
workgroup multiplied by the size of the local workgroup plus the value of
workgroup multiplied by the size of the local workgroup plus
code:LocalInvocationID.
+
The code:GlobalInvocationID decoration is only supported in compute shaders.
@ -832,9 +832,9 @@ code:InvocationID::
In a geometry shader, an input variable decorated with the code:InvocationID
decoration contains the index of the current shader invocation, which ranges
from zero to the number of <<geometry-invocations,instances>> declared
in the shader. If the instance count of the geometry shader is one or is not
specified, then code:InvocationID will be zero.
from zero to the number of <<geometry-invocations,instances>> declared in
the shader minus one. If the instance count of the geometry shader is one or
is not specified, then code:InvocationID will be zero.
+
In tessellation control shaders, and input variable decorated with the
code:InvocationID decoration contains the index of the output patch vertex
@ -849,9 +849,9 @@ code:InstanceIndex::
The code:InstanceIndex decoration can: be applied to a vertex shader input
which will be filled with the index of the instance that is being processed
by the current vertex shader invocation. The value of code:InstanceIndex
begins at the value of the pname:firstInstance parameter to flink:vkCmdDraw
or flink:vkCmdDrawIndexed or at the value of the pname:firstInstance member
by the current vertex shader invocation. code:InstanceIndex
begins at the pname:firstInstance parameter to flink:vkCmdDraw
or flink:vkCmdDrawIndexed or at the pname:firstInstance member
of a structure consumed by flink:vkCmdDrawIndirect or
flink:vkCmdDrawIndexedIndirect.
+
@ -884,10 +884,10 @@ This variable contains the location of the current compute shader invocation
within the local workgroup. The range of possible values for each component
of LocalInvocationID range from zero through the size of the workgroup (as
defined by code:LocalSize) in that dimension minus one. If the size of the
workgroup in a particular dimension is one, then the value of
workgroup in a particular dimension is one, then
LocalInvocationID in that dimension will be zero. That is, if the workgroup
is effectively two-dimensional, then pname:LocalInvocationID.z will be zero,
and if the workgroup is one-dimensional, then the values of both
and if the workgroup is one-dimensional, then both
pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero.
+
The code:LocalInvocationID decoration is only supported in compute shaders.
@ -915,8 +915,7 @@ An input variable decorated with code:PatchVertices in the tessellation
control or evaluation shader is an integer specifying the number of
vertices in the input patch being processed by the shader. A single
tessellation control or evaluation shader can: read patches of differing
sizes, so the value of the code:PatchVertices variable may: differ between
patches.
sizes, so the code:PatchVertices variable may: differ between patches.
+
The code:PatchVertices decoration is only supported in tessellation control
and evaluation shaders.
@ -930,7 +929,7 @@ contains the coordinate of the current fragment within the point being
rasterized, normalized to the size of the point with origin in the upper
left corner of the point, as described in <<primsrast-points-basic,Basic
Point Rasterization>>. If the primitive the fragment shader invocation
belongs to is not a point then the value of code:PointCoord is undefined.
belongs to is not a point, then code:PointCoord is undefined.
+
--
The code:PointCoord decoration is only supported in fragment shaders.
@ -1000,8 +999,8 @@ geometry shader is present, or with the value that would have been presented
as input to the geometry shader had it been present. If a geometry shader is
present and the fragment shader reads from an input variable decorated with
code:PrimitiveID, then the geometry shader must: write to an output variable
decorated with code:PrimitiveID in all execution paths, otherwise the value
of the code:PrimitiveID input in the fragment shader is undefined.
decorated with code:PrimitiveID in all execution paths; otherwise the
code:PrimitiveID input in the fragment shader is undefined.
+
The code:PrimitiveID decoration mustnot: be used in vertex or compute
shaders. code:PrimitiveID mustnot: be used on output variables in
@ -1013,7 +1012,7 @@ code:SampleID::
The code:SampleID decoration can: be applied to an integer input variable in
the fragment shader. This variable will contain the zero-based index of the
sample the invocation corresponds to. The value of code:SampleID ranges from
sample the invocation corresponds to. code:SampleID ranges from
zero to the number of samples in the framebuffer minus one. If a fragment
shader entry point's interface includes an input variable decorated with
code:SampleID, per-sample shading is enabled for draws that use that
@ -1080,7 +1079,7 @@ code:TessellationCoord::
The code:TessellationCoord is applied to an input variable in tessellation
evaluation shaders and specifies the three-dimensional (u,v,w) barycentric
coordinate of the tessellated vertex within the patch. The values of u, v,
coordinate of the tessellated vertex within the patch. u, v,
and w are in the range latexmath:[$[0,1\]$] and vary linearly across the
primitive being subdivided. For the tessellation modes of code:Quads or
code:IsoLines, the third component is always zero.
@ -1127,17 +1126,16 @@ code:VertexIndex::
The code:VertexIndex decoration can: be applied to a vertex shader input
which will be filled with the index of the vertex that is being processed by
the current vertex shader invocation. For non-indexed draws, the value of
this variable begins at the value of the pname:firstVertex parameter to
the current vertex shader invocation. For non-indexed draws,
this variable begins at the pname:firstVertex parameter to
flink:vkCmdDraw or the pname:firstVertex member of a structure consumed by
flink:vkCmdDrawIndirect and increments by one for each vertex in the draw.
For indexed draws, its value is the content of the index buffer for the
vertex plus the value of the pname:vertexOffset parameter to
vertex plus the pname:vertexOffset parameter to
flink:vkCmdDrawIndexed or the pname:vertexOffset member of the structure
consumed by flink:vkCmdDrawIndexedIndirect.
+
The value of code:VertexIndex starts at the same starting value for each
instance.
code:VertexIndex starts at the same starting value for each instance.
+
The code:VertexIndex decoration mustnot: be used in any shader stage other
than vertex.

View File

@ -183,7 +183,7 @@ August, 2008.
[[Khronos Data Format Specification]]:: A. Garrard, _Khronos Data Format
Specification, version 1.1_,
https://www.khronos.org/registry/dataformat/specs/1.1/dataformat.1.1.html,
February 26, 2016.
March 9, 2016.
[[Khronos SPIR-V Extended Instructions for GLSL Specification]]:: J.
Kessenich, _SPIR-V Extended Instructions for GLSL, Version 1.00_,

View File

@ -493,13 +493,13 @@ are allocated by calling fname:vkAllocateMemory:
include::../protos/vkAllocateMemory.txt[]
* pname:device is the logical device that owns the memory.
* pname:pAllocateInfo is a pointer to a structure of type
slink:VkMemoryAllocateInfo, which contains parameters of the allocation.
A successful returned allocation must: use the requested parameters--no
substitution is permitted by the implementation.
* pname:pAllocateInfo is a pointer to an instance of the
slink:VkMemoryAllocateInfo structure describing parameters of the
allocation. A successful returned allocation must: use the requested
parameters -- no substitution is permitted by the implementation.
* pname:pAllocator controls host memory allocation as described in
the <<memory-allocation, Memory Allocation>> chapter.
* pname:pMemory is a pointer to a sname:VkDeviceMemory structure in which
* pname:pMemory is a pointer to a sname:VkDeviceMemory handle in which
information about the allocated memory is returned.
include::../validity/protos/vkAllocateMemory.txt[]

View File

@ -44,7 +44,7 @@ pass.
The <<pipelines-compute,compute pipeline>> is a separate pipeline from the
graphics pipeline, which operates on one-, two-, or three-dimensional
_work groups_ which can: read from and write to buffer and image memory.
workgroups which can: read from and write to buffer and image memory.
This ordering is meant only as a tool for describing {apiname}, not as a
strict rule of how {apiname} is implemented, and we present it only as a
@ -156,8 +156,8 @@ follows:
* pname:stage is a elink:VkShaderStageFlagBits naming the pipeline stage.
* pname:module is a sname:VkShaderModule object that contains the
shader for this stage.
* pname:pName is a null-terminated UTF-8 string specifying the entry point
name of the shader for this stage.
* pname:pName is a pointer to a null-terminated UTF-8 string specifying
the entry point name of the shader for this stage.
* pname:pSpecializationInfo is a pointer to slink:VkSpecializationInfo, as
described in <<pipelines-specialization-constants,Specialization
Constants>>, and can: be `NULL`.
@ -586,7 +586,7 @@ size of the buffer, in bytes, pointed to by pname:pData, and on return the
variable is overwritten with the amount of data actually written to
pname:pData.
If the value of pname:dataSize is less than the maximum size that can: be
If pname:dataSize is less than the maximum size that can: be
retrieved by the pipeline cache, at most pname:pDataSize bytes will be
written to pname:pData, and fname:vkGetPipelineCacheData will return
ename:VK_INCOMPLETE. Any data written to pname:pData is valid and can: be
@ -632,7 +632,7 @@ bytes. This value includes all fields in the header including the pipeline
cache version field and the size of the length field.
The next four bytes encode the pipeline cache version. This field is
interpreted as an elink:VkPipelineCacheHeaderVersion value, and must:
interpreted as a elink:VkPipelineCacheHeaderVersion value, and must:
have one of the following values:
include::../enums/VkPipelineCacheHeaderVersion.txt[]
@ -640,7 +640,7 @@ include::../enums/VkPipelineCacheHeaderVersion.txt[]
A consumer of the pipeline cache should use the cache version to interpret
the remainder of the cache header.
If the value of pname:dataSize is less than what is necessary to store this
If pname:dataSize is less than what is necessary to store this
header, nothing will be written to pname:pData and zero will be written to
pname:dataSize.
@ -670,7 +670,7 @@ API.
.Note
====
Specialization constants are useful to allow a compute shader to have
its work group size changed at runtime by the user, for example.
its local workgroup size changed at runtime by the user, for example.
====
Each instance of the sname:VkPipelineShaderStageCreateInfo structure
@ -766,7 +766,7 @@ const VkSpecializationInfo info =
Then when calling fname:vkCreateComputePipelines, and passing the
sname:VkSpecializationInfo we defined as the pname:pSpecializationInfo
parameter of sname:VkPipelineShaderStageCreateInfo, we will create a compute
pipeline with the runtime specified work group size.
pipeline with the runtime specified local workgroup size.
Another example would be that an application has a SPIR-V module that has
some platform-dependent constants they wish to use.

View File

@ -84,12 +84,12 @@ as follows:
ANDed with the coverage information generated during rasterization, as
described in <<fragops-samplemask,Sample Mask>>.
* pname:alphaToCoverageEnable controls whether a temporary coverage value
is generated based on the value of the alpha component of the fragment's
is generated based on the alpha component of the fragment's
first color output as specified in the <<fragops-covg,Multisample
Coverage>> section.
* pname:alphaToOneEnable controls whether the value of the alpha component
of the fragment's first color output is replaced with one as described
in <<fragops-covg,Multisample Coverage>>.
* pname:alphaToOneEnable controls whether the alpha component of the
fragment's first color output is replaced with one as described in
<<fragops-covg,Multisample Coverage>>.
include::../validity/structs/VkPipelineMultisampleStateCreateInfo.txt[]
@ -105,9 +105,9 @@ determine associated data for fragments, and can: also modify or replace
their assigned depth values.
If the subpass for which this pipeline is being created uses
color and/or depth/stencil attachments, then the value of
color and/or depth/stencil attachments, then
pname:rasterizationSamples must: be the same as the sample count for
those subpass attachments. Otherwise, the value of
those subpass attachments. Otherwise,
pname:rasterizationSamples must: follow the rules for a
<<renderpass-noattachments, zero-attachment subpass>>.
@ -599,7 +599,7 @@ at every fragment
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
where latexmath:[$n$] is the number of vertices in the polygon and
latexmath:[$f_i$] is the value of the latexmath:[$f$] at vertex
latexmath:[$f_i$] is the value of latexmath:[$f$] at vertex
latexmath:[$i$]. For each latexmath:[$i$], latexmath:[$0 \leq a_i \leq 1$]
and latexmath:[$\sum_{i=1}^{n}a_i = 1$]. The values of latexmath:[$a_i$]
may: differ from fragment to fragment, but at vertex latexmath:[$i$],

View File

@ -474,7 +474,7 @@ statistics query begins, all statistics counters are set to zero. While the
query is active, the pipeline type determines which set of statistics are
available, but these must: be configured on the query pool when it is
created. If a statistic counter is issued on a command buffer that does
not support the corresponding operation, the value of that counter is
not support the corresponding operation, that counter is
undefined after the query has finished. At least one statistic counter
relevant to the operations supported on the recording command buffer
must: be enabled.

View File

@ -15,9 +15,9 @@ metadata.
== Buffers
Buffers represent linear arrays of data which are used for various
purposes by binding them to the graphics pipeline via descriptor sets or via
certain commands, or by directly specifying them as parameters to certain
commands.
purposes by binding them to a graphics or compute pipeline via descriptor
sets or via certain commands, or by directly specifying them as parameters
to certain commands.
Buffers are created by calling:
@ -199,9 +199,9 @@ include::../validity/protos/vkDestroyBufferView.txt[]
== Images
Images represent multidimensional - up to 3 - arrays of data which can: be
used for various purposes (e.g. attachments, textures), by binding them to
the graphics pipeline via descriptor sets, or by directly specifying them as
parameters to certain commands.
used for various purposes (e.g. attachments, textures), by binding them to a
graphics or compute pipeline via descriptor sets, or by directly specifying
them as parameters to certain commands.
Images are created by calling:
@ -406,7 +406,7 @@ include::../structs/VkSubresourceLayout.txt[]
* pname:offset is the byte offset from the start of the image where the
subresource begins.
* pname:size is the size in bytes of the subresource. pname:size includes
any extra memory that is required based on the value of pname:rowPitch.
any extra memory that is required based on pname:rowPitch.
* pname:rowPitch describes the number of bytes between each row of texels
in an image.
* pname:arrayPitch describes the number of bytes between each array layer
@ -554,7 +554,7 @@ The type(s) of device access supported by each layout are:
used as a read-only depth/stencil attachment in a sname:VkFramebuffer
and/or as a read-only image in a shader (which can: be read as a sampled
image, combined image/sampler and/or input attachment). This layout is
valid only for subresources of images created with both the
valid only for subresources of images created with the
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: must: only be used as a
read-only image in a shader (which can: be read as a sampled image,
@ -950,26 +950,25 @@ flink:vkGetImageMemoryRequirements:
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT bit and the
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT bit set. In other words,
mappable coherent memory can: always be attached to these objects.
* The value of the pname:memoryTypeBits member is identical for all
* The pname:memoryTypeBits member is identical for all
sname:VkBuffer 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 code:usage2 contains a subset of
the bits set in code:usage1 and they have the same value of pname:flags,
then the bits set in the value of pname:memoryTypeBits returned for
code:usage1 must: be a subset of the bits set in the value of
pname:memoryTypeBits returned for code:usage2, for all values of
pname:flags.
* The value of the pname:alignment member is identical for all
sname:VkBuffer objects created with the same combination of values for
the pname:usage and pname:flags members in the sname:VkBufferCreateInfo
structure passed to fname:vkCreateBuffer.
* The value of the pname:memoryTypeBits member is identical for all
sname:VkImage objects created with the same combination of values for
the pname:tiling member and the ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
bit of the pname:flags member and the
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT of the pname:usage member
in the sname:VkImageCreateInfo structure passed to fname:vkCreateImage.
elink:VkBufferUsageFlags are such that code:usage2 comprises 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 returned for code:usage2,
for all values of pname:flags.
* The pname:alignment member is identical for all sname:VkBuffer objects
created with the same combination of values for the pname:usage and
pname:flags members in the sname:VkBufferCreateInfo structure passed to
fname:vkCreateBuffer.
* The pname:memoryTypeBits member is identical for all sname:VkImage
objects created with the same combination of values for the pname:tiling
member and the ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT bit of the
pname:flags member and the ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
of the pname:usage member in the sname:VkImageCreateInfo structure
passed to fname:vkCreateImage.
* The pname:memoryTypeBits member mustnot: refer to a sname:VkMemoryType
with a pname:propertyFlags that has the
ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set if the

View File

@ -368,11 +368,11 @@ Compute shaders are invoked via flink:vkCmdDispatch and
flink:vkCmdDispatchIndirect commands. In general, they have access to
similar resources as shader stages executing as part of a graphics pipeline.
Compute workloads are formed from groups of work items called _workgroups_
Compute workloads are formed from groups of work items called workgroups
and processed by the compute shader in the current compute pipeline. A
workgroup is a collection of shader invocations that execute the same
shader, potentially in parallel. Compute shaders execute in global
workgroups which are divided into a number of _local workgroups_ with a size
shader, potentially in parallel. Compute shaders execute in _global
workgroups_ which are divided into a number of _local workgroups_ with a size
that can: be set by assigning a value to the code:LocalSize execution mode
either in the shader code or via
<<pipelines-specialization-constants,Specialization Constants>>. An
@ -414,7 +414,7 @@ or code:Sample, which will mean the same thing as decorating it only as
code:Flat.
For fragment shader input variables decorated with neither code:Centroid nor
code:Sample, the value of the assigned variable may: be interpolated
code:Sample, the assigned variable may: be interpolated
anywhere within the pixel and a single value may: be assigned to each sample
within the pixel.
@ -455,3 +455,30 @@ memory instructions.
Static use is not used to control the behavior of variables with code:Input
and code:Output storage. The effects of those variables are applied based
only on whether they are present in a shader entry point's interface.
[[shaders-invocationgroups]]
== Invocation and Derivative Groups
An _invocation group_ (see the subsection ``Control Flow'' of section 2 of the
SPIR-V specification) for a compute shader is the set of invocations in a
single local workgroup. For graphics shaders, an invocation group is an
implementation-dependent subset of the set of shader invocations of a given
shader stage which are produced by a single drawing command. For indirect
drawing commands with pname:drawCount greater than one, invocations from
separate draws are in distinct invocation groups.
[NOTE]
.Note
====
Because the partitioning of invocations into invocation groups is
implementation-dependent and not observable, applications generally need to
assume the worst case of all invocations in a draw belonging to a single
invocation group.
====
A _derivative group_ (see the subsection ``Control Flow'' of section 2 of the
SPIR-V 1.00 Revision 4 specification) for a fragment shader is the set of
invocations generated by a single primitive (point, line, or triangle),
including any helper invocations generated by that primitive. Derivatives are
undefined for a sampled image instruction if the instruction is in flow
control that is not uniform across the derivative group.

View File

@ -137,7 +137,7 @@ use.
=== Sparse Buffer and Fully-Resident Image Block Size
The block size for sparse buffers and fully-resident images is reported as
sname:VkMemoryRequirements::pname:alignment. This pname:alignment value
sname:VkMemoryRequirements::pname:alignment. pname:alignment
represents both the memory alignment requirement and the binding granularity
(in bytes) for sparse resources.
@ -680,7 +680,7 @@ include::../structs/VkPhysicalDeviceSparseProperties.txt[]
* pname:residencyAlignedMipSize is ename:VK_TRUE if images with mip level
dimensions that are not a multiple of a block size may: be placed in the
mip tail. If this property is not reported, only mip levels with
dimensions smaller than the value of the pname:imageGranularity member
dimensions smaller than the pname:imageGranularity member
of the sname:VkSparseImageFormatProperties structure will be placed in
the mip tail. If this property is reported the implementation is allowed
to return ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT in the
@ -761,11 +761,9 @@ available is returned in pname:pPropertyCount. Otherwise,
pname:pPropertyCount must: point to a variable set by the user to the number
of elements in the pname:pProperties array, and on return the variable is
overwritten with the number of structures actually written to
pname:pProperties. If the value of pname:pPropertyCount is less than the
pname:pProperties. If pname:pPropertyCount is less than the
number of sparse format properties available, at most pname:pPropertyCount
structures will be written, and ename:VK_INCOMPLETE will be returned instead
of ename:VK_SUCCESS to indicate that not all the available values were
returned.
structures will be written.
include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[]
@ -903,12 +901,10 @@ pname:pSparseMemoryRequirementCount. Otherwise,
pname:pSparseMemoryRequirementCount must: point to a variable set by the
user to the number of elements in the pname:pSparseMemoryRequirements array,
and on return the variable is overwritten with the number of structures
actually written to pname:pSparseMemoryRequirements. If the value of
actually written to pname:pSparseMemoryRequirements. If
pname:pSparseMemoryRequirementCount is less than the number of sparse memory
requirements available, at most pname:pSparseMemoryRequirementCount
structures will be written, and ename:VK_INCOMPLETE will be returned instead
of ename:VK_SUCCESS to indicate that not all the available values were
returned.
structures will be written.
If the image was not created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
then pname:pSparseMemoryRequirementCount will be set to zero and
@ -1035,7 +1031,7 @@ include::../validity/structs/VkSparseMemoryBind.txt[]
The _binding range_ latexmath:[$[\mathit{resourceOffset},
\mathit{resourceOffset} + \mathit{size})$] has different constraints based
on the value of pname:flags. If pname:flags contains
on pname:flags. If pname:flags contains
ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range must: be within
the mip tail region of the metadata aspect. This metadata region is defined
by:

View File

@ -135,8 +135,8 @@ include::../protos/vkWaitForFences.txt[]
unblock the wait. If pname:waitAll is ename:VK_TRUE, then the condition
is that all fences in pname:pFences are signaled. Otherwise, the
condition is that at least one fence in pname:pFences is signaled.
* pname:timeout is the timeout period in units of nanoseconds. The value
of pname:timeout is adjusted to the closest value allowed by the
* pname:timeout is the timeout period in units of nanoseconds.
pname:timeout is adjusted to the closest value allowed by the
implementation-dependent timeout accuracy, which may: be substantially
longer than one nanosecond, and may: be longer than the requested
period.
@ -149,7 +149,7 @@ at the time fname:vkWaitForFences is called, then fname:vkWaitForFences will
block and wait up to pname:timeout nanoseconds for the condition to become
satisfied.
If the value of pname:timeout is zero, then fname:vkWaitForFences does not
If pname:timeout is zero, then fname:vkWaitForFences does not
wait, but simply returns the current state of the fences. ename:VK_TIMEOUT
will be returned in this case if the condition is not satisfied, even though
no actual wait was performed.
@ -249,7 +249,7 @@ status of the semaphore will be reset to the unsignaled state.
In the case of slink:VkSubmitInfo, command buffers wait at specific pipeline
stages, rather than delaying the entire command buffer's execution, with the
pipeline stages determined by the value of the corresponding element of the
pipeline stages determined by the corresponding element of the
pname:pWaitDstStageMask member of sname:VkSubmitInfo. Execution of work by
those stages in subsequent commands is stalled until the corresponding
semaphore reaches the signaled state. Subsequent sparse binding operations

View File

@ -126,7 +126,7 @@ latexmath:[$n$] is one, the edge will not be subdivided. Otherwise, the
corresponding edge will be divided into latexmath:[$n-2$] segments of equal
length, and two additional segments of equal length that are typically
shorter than the other segments. The length of the two additional segments
relative to the others will decrease monotonically with the value of
relative to the others will decrease monotonically with
latexmath:[$n-f$], where latexmath:[$f$] is the clamped floating-point
tessellation level. When latexmath:[$n-f$] is zero, the additional segments
will have equal length to the other segments. As latexmath:[$n-f$]
@ -134,30 +134,29 @@ approaches 2.0, the relative length of the additional segments approaches
zero. The two additional segments should: be placed symmetrically on
opposite sides of the subdivided edge. The relative location of these two
segments is implementation-dependent, but must: be identical for any pair of
subdivided edges with identical values of <f>.
subdivided edges with identical values of latexmath:[$f$].
When the tessellator produces triangles (in the code:Triangles or
code:Quads modes), the orientation of all triangles is specified with
an code:OpExecutionMode of code:VertexOrderCw or code:VertexOrderCcw in the
tessellation control or tessellation evaluation shaders. If the order is
code:VertexOrderCw, the vertices of all generated triangles will have a
code:VertexOrderCw, the vertices of all generated triangles will have
clockwise ordering in (u,v) or (u,v,w) space. If the order is
code:VertexOrderCcw, the vertices will be generated with counter-clockwise
order.
code:VertexOrderCcw, the vertices will have counter-clockwise ordering.
The vertices of a triangle have counter-clockwise ordering if
The vertices of a triangle are defined to be in counter-clockwise ordering
if the value
[latexmath]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\[
a = u_0 v_1 - u_1 v_0 + u_1 v_2 - u_2 v_1 + u_2 v_0 - u_0 v_2
\]
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
is positive, where latexmath:[$u_i$] and latexmath:[$v_i$] are the
latexmath:[$u$] and latexmath:[$v$] coordinates in normalized parameter
space of the latexmath:[$i$]th vertex of the triangle. If the value
latexmath:[$a$] is negative, the vertices of the triangle are defined to be
in clockwise ordering.
is positive, and clockwise ordering if latexmath:[$a$] is negative.
latexmath:[$u_i$] and latexmath:[$v_i$] are the latexmath:[$u$] and
latexmath:[$v$] coordinates in normalized parameter space of the
latexmath:[$i$]th vertex of the triangle.
[NOTE]
.Note

View File

@ -531,7 +531,7 @@ elink:VkFormat), using the appropriate equations in
If the image format is sRGB, the color components are first converted as if
they are UNORM, and then sRGB to linear conversion is applied to the R, G,
and B components as described in the ``KHR_DF_TRANSFER_SRGB`` section of the
and B components as described in the ``KHR_DF_TRANSFER_SRGB'' section of the
Khronos Data Format Specification. The A component, if present, is
unchanged.
@ -653,8 +653,8 @@ where:
The texel is expanded from one, two, or three to four components based on
the image base color:
[[textures-border-rgba-replacement-table]]
.Border Texel Components After Replacement
[[textures-texel-color-rgba-conversion-table]]
.Texel Color After Conversion To RGBA
[options="header"]
|====
| Texel Aspect or Format | RGBA Color

View File

@ -115,7 +115,7 @@ enabled cull half-space is negative for all of the vertices of the primitive
under consideration, the primitive is discarded. Otherwise the primitive is
clipped against the clip volume as defined below.
The clip volume is the intersection of up to the value of
The clip volume is the intersection of up to
sname:VkPhysicalDeviceLimits::pname:maxClipDistances client-defined
half-spaces with the view volume (if no client-defined clip half-spaces are
enabled, the clip volume is the view volume).
@ -126,7 +126,7 @@ latexmath:[$i$] is then given by the set of points satisfying the inequality
latexmath:[$c_i(P) \geq 0$]
where latexmath:[$c_i(P)$] is the value of clip distance latexmath:[$i$] at
where latexmath:[$c_i(P)$] is the clip distance latexmath:[$i$] at
point latexmath:[$P$]. For point primitives, latexmath:[$c_i(P)$] is simply
the clip distance for the vertex in question. For line and triangle
primitives, per-vertex clip distances are interpolated using a weighted
@ -169,7 +169,7 @@ latexmath:[$t$] is given by
latexmath:[${\textbf P} = t{\textbf P}_1 + (1-t){\textbf P}_2.$]
The value of latexmath:[$t$] is used to clip vertex output attributes as
latexmath:[$t$] is used to clip vertex output attributes as
described in <<vertexpostproc-clipping-shader-outputs,Clipping Shader
Outputs>>.
@ -313,8 +313,8 @@ include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[]
If a geometry shader is active and has an output variable decorated with
code:ViewportIndex, the viewport transformation uses the viewport
corresponding to the value assigned to code:ViewportIndex taken from an
implementation-dependent vertex of each primitive. If the value of
code:ViewportIndex is outside the range zero to the value of
implementation-dependent vertex of each primitive. If
code:ViewportIndex is outside the range zero to
pname:viewportCount minus one for a primitive, or if the geometry shader did
not assign a value to code:ViewportIndex for all vertices of a primitive due
to flow control, the results of the viewport transformation of the vertices

View File

@ -133,7 +133,12 @@ div.navfooter hr {
}
body td {
line-height: 1.2
line-height: 1.2;
}
table p {
margin-top: 0px;
margin-bottom: 0px;
}
body th {

View File

@ -14,7 +14,7 @@
viewBox="0 0 650.00001 350"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
inkscape:version="0.48.5 r10040"
sodipodi:docname="non_strict_lines.svg">
<defs
id="defs4">
@ -161,7 +161,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@ -183,7 +183,7 @@
y="976.64783">Xa, Ya, Za</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="font-size:25px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal'"
x="507.96738"
y="782.15295"
id="text5042"
@ -191,7 +191,7 @@
sodipodi:role="line"
id="tspan5044"
x="507.96738"
y="782.15295">Ab, Yb, Zb</tspan></text>
y="782.15295">Xb, Yb, Zb</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotL);marker-end:url(#marker11386)"
d="m 140,962.3622 360,-180"

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -16,9 +16,9 @@ endif::doctype-manpage[]
* pname:buffer mustnot: already be backed by a memory object
* pname:buffer mustnot: have been created with any sparse memory binding flags
* pname:memoryOffset must: be less than the size of pname:memory
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* pname:memory must: have been allocated using one of the memory types allowed in the pname:memoryTypeBits member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetBufferMemoryRequirements with pname:buffer
* The size of pname:buffer must: be less than or equal to the size of pname:memory minus pname:memoryOffset
* pname:memoryOffset must: be an integer multiple of the pname:alignment member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetBufferMemoryRequirements with pname:buffer

View File

@ -14,7 +14,7 @@ endif::doctype-manpage[]
* If pname:dynamicOffsetCount is not `0`, pname:pDynamicOffsets must: be a pointer to an array of pname:dynamicOffsetCount basetype:uint32_t values
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* The value of pname:descriptorSetCount must: be greater than `0`
* pname:descriptorSetCount must: be greater than `0`
* Each of pname:commandBuffer, pname:layout and the elements of pname:pDescriptorSets must: have been created, allocated or retrieved from the same sname:VkDevice
* Any given element of pname:pDescriptorSets must: have been created with a sname:VkDescriptorSetLayout that matches the sname:VkDescriptorSetLayout at set _n_ in pname:layout, where _n_ is the sum of the index into pname:pDescriptorSets and pname:firstSet
* pname:dynamicOffsetCount must: be equal to the total number of dynamic descriptors in pname:pDescriptorSets

View File

@ -13,7 +13,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* Each of pname:commandBuffer and pname:buffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The value of pname:offset must: be less than the size of pname:buffer
* pname:offset must: be less than the size of pname:buffer
* The sum of pname:offset, and the address of the range of sname:VkDeviceMemory object that's backing pname:buffer, must: be a multiple of the type indicated by pname:indexType
* pname:buffer must: have been created with the ename:VK_BUFFER_USAGE_INDEX_BUFFER_BIT flag
ifndef::doctype-manpage[]

View File

@ -13,10 +13,10 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* Each of pname:commandBuffer and pname:pipeline must: have been created, allocated or retrieved from the same sname:VkDevice
* If the value of pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_COMPUTE, the sname:VkCommandPool that pname:commandBuffer was allocated from must: support compute operations
* If the value of pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS, the sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* If the value of pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_COMPUTE, pname:pipeline must: be a compute pipeline
* If the value of pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS, pname:pipeline must: be a graphics pipeline
* If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_COMPUTE, the sname:VkCommandPool that pname:commandBuffer was allocated from must: support compute operations
* If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS, the sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_COMPUTE, pname:pipeline must: be a compute pipeline
* If pname:pipelineBindPoint is ename:VK_PIPELINE_BIND_POINT_GRAPHICS, pname:pipeline must: be a graphics pipeline
* If the <<features-features-variableMultisampleRate,variable multisample rate>> feature is not supported, pname:pipeline is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline must: match that set in the previous pipeline
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -12,7 +12,7 @@ endif::doctype-manpage[]
* pname:pOffsets must: be a pointer to an array of pname:bindingCount basetype:VkDeviceSize values
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* The value of pname:bindingCount must: be greater than `0`
* pname:bindingCount must: be greater than `0`
* Each of pname:commandBuffer and the elements of pname:pBuffers must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:firstBinding must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings
* The sum of pname:firstBinding and pname:bindingCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings

View File

@ -17,7 +17,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* This command must: only be called outside of a render pass instance
* The value of pname:regionCount must: be greater than `0`
* pname:regionCount must: be greater than `0`
* Each of pname:commandBuffer, pname:srcImage and pname:dstImage must: have been created, allocated or retrieved from the same sname:VkDevice
* The source region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage

View File

@ -13,8 +13,8 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* This command must: only be called inside of a render pass instance
* The value of pname:attachmentCount must: be greater than `0`
* The value of pname:rectCount must: be greater than `0`
* pname:attachmentCount must: be greater than `0`
* pname:rectCount must: be greater than `0`
* If the pname:aspectMask member of any given element of pname:pAttachments contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the pname:colorAttachment member of those elements must: refer to a valid color attachment in the current subpass
* The rectangular region specified by a given element of pname:pRects must: be contained within the render area of the current render pass instance
* The layers specified by a given element of pname:pRects must: be contained within every attachment that pname:pAttachments refers to

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* This command must: only be called outside of a render pass instance
* The value of pname:rangeCount must: be greater than `0`
* pname:rangeCount must: be greater than `0`
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* This command must: only be called outside of a render pass instance
* The value of pname:rangeCount must: be greater than `0`
* pname:rangeCount must: be greater than `0`
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice

View File

@ -14,7 +14,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* This command must: only be called outside of a render pass instance
* The value of pname:regionCount must: be greater than `0`
* pname:regionCount must: be greater than `0`
* Each of pname:commandBuffer, pname:srcBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The pname:copySize member of a given element of pname:pRegions must: be greater than `0`
* The pname:srcOffset member of a given element of pname:pRegions must: be less than the size of pname:srcBuffer

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* This command must: only be called outside of a render pass instance
* The value of pname:regionCount must: be greater than `0`
* pname:regionCount must: be greater than `0`
* Each of pname:commandBuffer, pname:srcBuffer and pname:dstImage must: have been created, allocated or retrieved from the same sname:VkDevice
* The buffer region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcBuffer
* The image region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage

View File

@ -16,7 +16,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* This command must: only be called outside of a render pass instance
* The value of pname:regionCount must: be greater than `0`
* pname:regionCount must: be greater than `0`
* Each of pname:commandBuffer, pname:srcImage and pname:dstImage must: have been created, allocated or retrieved from the same sname:VkDevice
* The source region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* This command must: only be called outside of a render pass instance
* The value of pname:regionCount must: be greater than `0`
* pname:regionCount must: be greater than `0`
* Each of pname:commandBuffer, pname:srcImage and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The image region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage
* The buffer region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstBuffer

View File

@ -17,7 +17,7 @@ endif::doctype-manpage[]
* Descriptors in each bound descriptor set, specified via fname:vkCmdBindDescriptorSets, must: be valid if they are statically used by the currently bound sname:VkPipeline object, specified via fname:vkCmdBindPipeline
* A valid compute pipeline must: be bound to the current command buffer with ename:VK_PIPELINE_BIND_POINT_COMPUTE
* pname:buffer must: have been created with the ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* The value of pname:offset must: be a multiple of `4`
* pname:offset must: be a multiple of `4`
* The sum of pname:offset and the size of sname:VkDispatchIndirectCommand must: be less than or equal to the size of pname:buffer
* For each push constant that is statically used by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE, a push constant value must: have been set for ename:VK_PIPELINE_BIND_POINT_COMPUTE, with a sname:VkPipelineLayout that is compatible for push constants with the one used to create the current sname:VkPipeline, as described in <<descriptorsets-compatibility>>
* 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 to sample from any sname:VkImage with a sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage

View File

@ -18,7 +18,7 @@ endif::doctype-manpage[]
* For a given vertex buffer binding, any attribute data fetched must: be entirely contained within the corresponding vertex buffer binding, as described in <<fxvertex-input>>
* A valid graphics pipeline must: be bound to the current command buffer with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
* If the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must: have been set on the current command buffer
* The total value of (pname:indexSize * (pname:firstIndex + pname:indexCount) + pname:offset) must: be less than or equal to the size of the currently bound index buffer, with indexSize being based on the type specified by pname:indexType, where the index buffer, pname:indexType, and pname:offset are specified via fname:vkCmdBindIndexBuffer
* (pname:indexSize * (pname:firstIndex + pname:indexCount) + pname:offset) must: be less than or equal to the size of the currently bound index buffer, with indexSize being based on the type specified by pname:indexType, where the index buffer, pname:indexType, and pname:offset are specified via fname:vkCmdBindIndexBuffer
* Every input attachment used by the current subpass must: be bound to the pipeline via a descriptor set
* 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 to sample from any sname:VkImage with a sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage
* 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 with code:ImplicitLod, code:Dref or code:Proj in their name, in any shader stage

View File

@ -13,9 +13,9 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* This command must: only be called inside of a render pass instance
* Each of pname:commandBuffer and pname:buffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The value of pname:offset must: be a multiple of `4`
* If pname:drawCount is greater than `1`, the value of pname:stride must: be a multiple of `4` and must: be greater than or equal to sizeof(sname:VkDrawIndexedIndirectCommand)
* If the <<features-features-multiDrawIndirect,multi-draw indirect>> feature is not enabled, the value of pname:drawCount must: be `0` or `1`
* pname:offset must: be a multiple of `4`
* If pname:drawCount is greater than `1`, pname:stride must: be a multiple of `4` and must: be greater than or equal to sizeof(sname:VkDrawIndexedIndirectCommand)
* If the <<features-features-multiDrawIndirect,multi-draw indirect>> feature is not enabled, pname:drawCount must: be `0` or `1`
* If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the pname:firstInstance members of the sname:VkDrawIndexedIndirectCommand structures accessed by this command must: be code:0
* For each set _n_ that is statically used by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout that is compatible for set _n_, with the sname:VkPipelineLayout used to create the current sname:VkPipeline, as described in <<descriptorsets-compatibility>>
* For each push constant that is statically used by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout that is compatible for push constants, with the sname:VkPipelineLayout used to create the current sname:VkPipeline, as described in <<descriptorsets-compatibility>>
@ -23,8 +23,8 @@ endif::doctype-manpage[]
* All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point's interface must: have valid buffers bound
* A valid graphics pipeline must: be bound to the current command buffer with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
* If the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must: have been set on the current command buffer
* If pname:drawCount is equal to `1`, the total value of (pname:offset + sizeof(sname:VkDrawIndexedIndirectCommand)) must: be less than or equal to the size of pname:buffer
* If pname:drawCount is greater than `1`, the total value of (pname:stride x (pname:drawCount - 1) + pname:offset + sizeof(sname:VkDrawIndexedIndirectCommand)) must: be less than or equal to the size of pname:buffer
* If pname:drawCount is equal to `1`, (pname:offset + sizeof(sname:VkDrawIndexedIndirectCommand)) must: be less than or equal to the size of pname:buffer
* If pname:drawCount is greater than `1`, (pname:stride x (pname:drawCount - 1) + pname:offset + sizeof(sname:VkDrawIndexedIndirectCommand)) must: be less than or equal to the size of pname:buffer
* pname:drawCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxDrawIndirectCount
* Every input attachment used by the current subpass must: be bound to the pipeline via a descriptor set
* 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 to sample from any sname:VkImage with a sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage

View File

@ -13,9 +13,9 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* This command must: only be called inside of a render pass instance
* Each of pname:commandBuffer and pname:buffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The value of pname:offset must: be a multiple of `4`
* If pname:drawCount is greater than `1`, the value of pname:stride must: be a multiple of `4` and must: be greater than or equal to sizeof(sname:VkDrawIndirectCommand)
* If the <<features-features-multiDrawIndirect,multi-draw indirect>> feature is not enabled, the value of pname:drawCount must: be `0` or `1`
* pname:offset must: be a multiple of `4`
* If pname:drawCount is greater than `1`, pname:stride must: be a multiple of `4` and must: be greater than or equal to sizeof(sname:VkDrawIndirectCommand)
* If the <<features-features-multiDrawIndirect,multi-draw indirect>> feature is not enabled, pname:drawCount must: be `0` or `1`
* If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the pname:firstInstance members of the sname:VkDrawIndirectCommand structures accessed by this command must: be code:0
* For each set _n_ that is statically used by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have been bound to _n_ at ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout that is compatible for set _n_, with the sname:VkPipelineLayout used to create the current sname:VkPipeline, as described in <<descriptorsets-compatibility>>
* For each push constant that is statically used by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a push constant value must: have been set for ename:VK_PIPELINE_BIND_POINT_GRAPHICS, with a sname:VkPipelineLayout that is compatible for push constants, with the sname:VkPipelineLayout used to create the current sname:VkPipeline, as described in <<descriptorsets-compatibility>>
@ -23,8 +23,8 @@ endif::doctype-manpage[]
* All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point's interface must: have valid buffers bound
* A valid graphics pipeline must: be bound to the current command buffer with ename:VK_PIPELINE_BIND_POINT_GRAPHICS
* If the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS requires any dynamic state, that state must: have been set on the current command buffer
* If pname:drawCount is equal to `1`, the total value of (pname:offset + sizeof(sname:VkDrawIndirectCommand)) must: be less than or equal to the size of pname:buffer
* If pname:drawCount is greater than `1`, the total value of (pname:stride x (pname:drawCount - 1) + pname:offset + sizeof(sname:VkDrawIndirectCommand)) must: be less than or equal to the size of pname:buffer
* If pname:drawCount is equal to `1`, (pname:offset + sizeof(sname:VkDrawIndirectCommand)) must: be less than or equal to the size of pname:buffer
* If pname:drawCount is greater than `1`, (pname:stride x (pname:drawCount - 1) + pname:offset + sizeof(sname:VkDrawIndirectCommand)) must: be less than or equal to the size of pname:buffer
* pname:drawCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxDrawIndirectCount
* Every input attachment used by the current subpass must: be bound to the pipeline via a descriptor set
* 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 to sample from any sname:VkImage with a sname:VkImageView of the type ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY, ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, in any shader stage

View File

@ -12,10 +12,10 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* pname:commandBuffer must: be a primary sname:VkCommandBuffer
* The value of pname:commandBufferCount must: be greater than `0`
* pname:commandBufferCount must: be greater than `0`
* Each of pname:commandBuffer and the elements of pname:pCommandBuffers must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:commandBuffer must: have been created with a pname:level value of ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
* Any given element of pname:pCommandBuffers must: have been created with a pname:level value of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
* pname:commandBuffer must: have been created with a pname:level of ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
* Any given element of pname:pCommandBuffers must: have been created with a pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
* Any given element of pname:pCommandBuffers mustnot: be already pending execution in pname:commandBuffer, or appear twice in pname:pCommandBuffers, unless it was created with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag
* Any given element of pname:pCommandBuffers mustnot: be already pending execution in any other sname:VkCommandBuffer, unless it was created with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag
* Any given element of pname:pCommandBuffers must: be in the executable state

View File

@ -13,9 +13,9 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* This command must: only be called outside of a render pass instance
* Each of pname:commandBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:size must: be greater than `0`
* pname:dstOffset must: be less than the size of pname:dstBuffer
* pname:dstOffset must: be a multiple of `4`
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be greater than `0`
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of `4`
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag

View File

@ -14,13 +14,13 @@ endif::doctype-manpage[]
* pname:pValues must: be a pointer to an array of pname:size bytes
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* The value of pname:size must: be greater than `0`
* pname:size must: be greater than `0`
* Each of pname:commandBuffer and pname:layout must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:stageFlags must: match exactly the shader stages used in pname:layout for the range specified by pname:offset and pname:size
* pname:offset must: be a multiple of `4`
* pname:size must: be a multiple of `4`
* pname:offset must: be less than the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
* pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset
* pname:offset must: be less than sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
* pname:size must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -16,7 +16,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* This command must: only be called outside of a render pass instance
* The value of pname:regionCount must: be greater than `0`
* pname:regionCount must: be greater than `0`
* Each of pname:commandBuffer, pname:srcImage and pname:dstImage must: have been created, allocated or retrieved from the same sname:VkDevice
* The source region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage

View File

@ -10,7 +10,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be a valid sname:VkCommandBuffer handle
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* If the <<features-features-depthBiasClamp,depth bias clamping>> feature is not enabled, the value of pname:depthBiasClamp must: be code:0.0
* If the <<features-features-depthBiasClamp,depth bias clamping>> feature is not enabled, pname:depthBiasClamp must: be code:0.0
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -10,8 +10,8 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be a valid sname:VkCommandBuffer handle
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* The value of pname:minDepthBounds must: be between `0.0` and `1.0`, inclusive
* The value of pname:maxDepthBounds must: be between `0.0` and `1.0`, inclusive
* pname:minDepthBounds must: be between `0.0` and `1.0`, inclusive
* pname:maxDepthBounds must: be between `0.0` and `1.0`, inclusive
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -10,7 +10,7 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be a valid sname:VkCommandBuffer handle
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* If the <<features-features-wideLines,wide lines>> feature is not enabled, the value of pname:lineWidth must: be `1.0`
* If the <<features-features-wideLines,wide lines>> feature is not enabled, pname:lineWidth must: be `1.0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:pScissors must: be a pointer to an array of pname:scissorCount sname:VkRect2D structures
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* The value of pname:scissorCount must: be greater than `0`
* pname:scissorCount must: be greater than `0`
* pname:firstScissor must: be less than sname:VkPhysicalDeviceLimits::pname:maxViewports
* The sum of pname:firstScissor and pname:scissorCount must: be between `1` and sname:VkPhysicalDeviceLimits::pname:maxViewports, inclusive
* The pname:x and pname:y members of pname:offset must: be greater than or equal to `0`

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:pViewports must: be a pointer to an array of pname:viewportCount valid sname:VkViewport structures
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics operations
* The value of pname:viewportCount must: be greater than `0`
* pname:viewportCount must: be greater than `0`
* pname:firstViewport must: be less than sname:VkPhysicalDeviceLimits::pname:maxViewports
* The sum of pname:firstViewport and pname:viewportCount must: be between `1` and sname:VkPhysicalDeviceLimits::pname:maxViewports, inclusive
ifndef::doctype-manpage[]

View File

@ -14,13 +14,13 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* This command must: only be called outside of a render pass instance
* Each of pname:commandBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The value of pname:dataSize must: be greater than `0`
* The value of pname:dstOffset must: be less than the size of pname:dstBuffer
* The value of pname:dataSize must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset
* pname:dataSize must: be greater than `0`
* pname:dstOffset must: be less than the size of pname:dstBuffer
* pname:dataSize must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* The value of pname:dstOffset must: be a multiple of `4`
* The value of pname:dataSize must: be less than or equal to `65536`
* The value of pname:dataSize must: be a multiple of `4`
* pname:dstOffset must: be a multiple of `4`
* pname:dataSize must: be less than or equal to `65536`
* pname:dataSize must: be a multiple of `4`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -18,7 +18,7 @@ endif::doctype-manpage[]
* If pname:imageMemoryBarrierCount is not `0`, pname:pImageMemoryBarriers must: be a pointer to an array of pname:imageMemoryBarrierCount valid sname:VkImageMemoryBarrier structures
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* The value of pname:eventCount must: be greater than `0`
* pname:eventCount must: be greater than `0`
* Each of pname:commandBuffer and the elements of pname:pEvents must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:srcStageMask must: be the bitwise OR of the pname:stageMask parameter used in previous calls to fname:vkCmdSetEvent with any of the members of pname:pEvents and ename:VK_PIPELINE_STAGE_HOST_BIT if any of the members of pname:pEvents was set using fname:vkSetEvent
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT

View File

@ -14,7 +14,7 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* Each of pname:commandBuffer and pname:queryPool must: have been created, allocated or retrieved from the same sname:VkDevice
* The query identified by pname:queryPool and pname:query must: be _unavailable_
* The command pool's queue family must: support a non-zero value of pname:timestampValidBits
* The command pool's queue family must: support a non-zero pname:timestampValidBits
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -12,10 +12,10 @@ endif::doctype-manpage[]
* pname:pCreateInfos must: be a pointer to an array of pname:createInfoCount valid sname:VkComputePipelineCreateInfo structures
* If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure
* pname:pPipelines must: be a pointer to an array of pname:createInfoCount sname:VkPipeline handles
* The value of pname:createInfoCount must: be greater than `0`
* pname:createInfoCount must: be greater than `0`
* If pname:pipelineCache is a valid handle, it must: have been created, allocated or retrieved from pname:device
* Each of pname:device and pname:pipelineCache that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* If the value of the pname:flags member of any given element of pname:pCreateInfos contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the pname:basePipelineIndex member of that same element is not `-1`, the value of pname:basePipelineIndex must: be less than the index into pname:pCreateInfos that corresponds to that element
* If the pname:flags member of any given element of pname:pCreateInfos contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the pname:basePipelineIndex member of that same element is not `-1`, pname:basePipelineIndex must: be less than the index into pname:pCreateInfos that corresponds to that element
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -12,10 +12,10 @@ endif::doctype-manpage[]
* pname:pCreateInfos must: be a pointer to an array of pname:createInfoCount valid sname:VkGraphicsPipelineCreateInfo structures
* If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure
* pname:pPipelines must: be a pointer to an array of pname:createInfoCount sname:VkPipeline handles
* The value of pname:createInfoCount must: be greater than `0`
* pname:createInfoCount must: be greater than `0`
* If pname:pipelineCache is a valid handle, it must: have been created, allocated or retrieved from pname:device
* Each of pname:device and pname:pipelineCache that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* If the value of the pname:flags member of any given element of pname:pCreateInfos contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the pname:basePipelineIndex member of that same element is not `-1`, the value of pname:basePipelineIndex must: be less than the index into pname:pCreateInfos that corresponds to that element
* If the pname:flags member of any given element of pname:pCreateInfos contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the pname:basePipelineIndex member of that same element is not `-1`, pname:basePipelineIndex must: be less than the index into pname:pCreateInfos that corresponds to that element
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -9,8 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:physicalDevice must: be a valid sname:VkPhysicalDevice handle
* pname:pPropertyCount must: be a pointer to a basetype:uint32_t value
* If pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkLayerProperties structures
* If pname:pProperties is not `NULL`, the value referenced by pname:pPropertyCount must: be greater than `0`
* If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkLayerProperties structures
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -9,7 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:pMemoryRanges must: be a pointer to an array of pname:memoryRangeCount valid sname:VkMappedMemoryRange structures
* The value of pname:memoryRangeCount must: be greater than `0`
* pname:memoryRangeCount must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -9,7 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:commandPool must: be a valid sname:VkCommandPool handle
* The value of pname:commandBufferCount must: be greater than `0`
* pname:commandBufferCount must: be greater than `0`
* pname:commandPool must: have been created, allocated or retrieved from pname:device
* Each element of pname:pCommandBuffers that is a valid handle must: have been created, allocated or retrieved from pname:commandPool
* Each of pname:device, pname:commandPool and the elements of pname:pCommandBuffers that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice

View File

@ -9,11 +9,11 @@ Valid Usage
endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:descriptorPool must: be a valid sname:VkDescriptorPool handle
* The value of pname:descriptorSetCount must: be greater than `0`
* pname:descriptorSetCount must: be greater than `0`
* pname:descriptorPool must: have been created, allocated or retrieved from pname:device
* Each element of pname:pDescriptorSets that is a valid handle must: have been created, allocated or retrieved from pname:descriptorPool
* Each of pname:device, pname:descriptorPool and the elements of pname:pDescriptorSets that are valid handles must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* All submitted commands that refer to any element of pname:pDesciptorSets must: have completed execution
* All submitted commands that refer to any element of pname:pDescriptorSets must: have completed execution
* pname:pDescriptorSets must: be a pointer to an array of pname:descriptorSetCount sname:VkDescriptorSet handles, each element of which must: either be a valid handle or sname:VK_NULL_HANDLE
* pname:descriptorPool must: have been created with the ename:VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT flag
ifndef::doctype-manpage[]

View File

@ -16,11 +16,11 @@ endif::doctype-manpage[]
* pname:tiling must: be a valid elink:VkImageTiling value
* pname:pPropertyCount must: be a pointer to a basetype:uint32_t value
* If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkSparseImageFormatProperties structures
* If pname:format is an integer format, samples must: be one of the bit flag values specified in the value of sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts
* If pname:format is a non-integer color format, samples must: be one of the bit flag values specified in the value of sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts
* If pname:format is a depth format, samples must: be one of the bit flag values specified in the value of sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts
* If pname:format is a stencil format, samples must: be one of the bit flag values specified in the value of sname:VkPhysicalDeviceLimits::pname:sampledImageStencilSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, samples must: be one of the bit flag values specified in the value of sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts
* If pname:format is an integer format, samples must: be one of the bit flags specified in sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts
* If pname:format is a non-integer color format, samples must: be one of the bit flags specified in sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts
* If pname:format is a depth format, samples must: be one of the bit flags specified in sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts
* If pname:format is a stencil format, samples must: be one of the bit flags specified in sname:VkPhysicalDeviceLimits::pname:sampledImageStencilSampleCounts
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, samples must: be one of the bit flags specified in sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:queryPool must: be a valid sname:VkQueryPool handle
* pname:pData must: be a pointer to an array of pname:dataSize bytes
* pname:flags must: be a valid combination of elink:VkQueryResultFlagBits values
* The value of pname:dataSize must: be greater than `0`
* pname:dataSize must: be greater than `0`
* 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

View File

@ -9,7 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:pMemoryRanges must: be a pointer to an array of pname:memoryRangeCount valid sname:VkMappedMemoryRange structures
* The value of pname:memoryRangeCount must: be greater than `0`
* pname:memoryRangeCount must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* Each of pname:device and pname:memory must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* pname:memory mustnot: currently be mapped
* pname:offset must: be less than the size of pname:memory
* pname:size must: be greater than `0`
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be greater than `0`
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to the size of the pname:memory minus pname:offset
* pname:memory must: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
ifndef::doctype-manpage[]

View File

@ -10,7 +10,7 @@ endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:dstCache must: be a valid sname:VkPipelineCache handle
* pname:pSrcCaches must: be a pointer to an array of pname:srcCacheCount valid sname:VkPipelineCache handles
* The value of pname:srcCacheCount must: be greater than `0`
* pname:srcCacheCount must: be greater than `0`
* pname:dstCache must: have been created, allocated or retrieved from pname:device
* Each element of pname:pSrcCaches must: have been created, allocated or retrieved from pname:device
* Each of pname:device, pname:dstCache and the elements of pname:pSrcCaches must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice

View File

@ -9,7 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:pFences must: be a pointer to an array of pname:fenceCount valid sname:VkFence handles
* The value of pname:fenceCount must: be greater than `0`
* pname:fenceCount must: be greater than `0`
* Each element of pname:pFences must: have been created, allocated or retrieved from pname:device
* Each of pname:device and the elements of pname:pFences must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* Any given element of pname:pFences mustnot: currently be associated with any queue command that has not yet completed execution on that queue

View File

@ -9,7 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:pFences must: be a pointer to an array of pname:fenceCount valid sname:VkFence handles
* The value of pname:fenceCount must: be greater than `0`
* pname:fenceCount must: be greater than `0`
* Each element of pname:pFences must: have been created, allocated or retrieved from pname:device
* Each of pname:device and the elements of pname:pFences must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
ifndef::doctype-manpage[]

View File

@ -13,7 +13,7 @@ endif::doctype-manpage[]
* pname:usage must: be a valid combination of elink:VkBufferUsageFlagBits values
* pname:usage mustnot: be `0`
* pname:sharingMode must: be a valid elink:VkSharingMode value
* The value of pname:size must: be greater than `0`
* pname:size must: be greater than `0`
* If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, pname:pQueueFamilyIndices must: be a pointer to an array of pname:queueFamilyIndexCount basetype:uint32_t values
* If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, pname:queueFamilyIndexCount must: be greater than `1`
* If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT

View File

@ -12,8 +12,8 @@ endif::doctype-manpage[]
* pname:srcAccessMask must: be a valid combination of elink:VkAccessFlagBits values
* pname:dstAccessMask must: be a valid combination of elink:VkAccessFlagBits values
* pname:buffer must: be a valid sname:VkBuffer handle
* The value of pname:offset must: be less than the size of pname:buffer
* The value of pname:size must: be greater than `0`
* pname:offset must: be less than the size of pname:buffer
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be greater than `0`
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to than the size of pname:buffer minus pname:offset
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)

View File

@ -12,12 +12,13 @@ endif::doctype-manpage[]
* pname:flags must: be `0`
* pname:buffer must: be a valid sname:VkBuffer handle
* pname:format must: be a valid elink:VkFormat value
* The value of pname:offset must: be less than the size of pname:buffer
* The value of pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* The value of pname:range must: be greater than `0`
* If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be less than or equal to the size of pname:buffer minus pname:offset
* If pname:range is not equal to ename:VK_WHOLE_SIZE, the value of pname:range must: be a multiple of the element size of pname:format
* The value of pname:range, divided by the size of an element of pname:format, must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements
* pname:offset must: be less than the size of pname:buffer
* pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* If pname:range is not equal to ename:VK_WHOLE_SIZE:
* pname:range must: be greater than `0`
* pname:range must: be a multiple of the element size of pname:format
* pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements
* the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer
* pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
* If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties

View File

@ -9,7 +9,7 @@ Valid Usage
endif::doctype-manpage[]
* pname:buffer must: be a valid sname:VkBuffer handle
* pname:offset must: be less than the size of pname:buffer
* The value of pname:range must: be greater than `0`
* If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be greater than `0`
* If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be less than or equal to the size of pname:buffer minus pname:offset
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -11,8 +11,8 @@ endif::doctype-manpage[]
* pname:pNext must: be `NULL`
* pname:flags must: be a valid combination of elink:VkDescriptorPoolCreateFlagBits values
* pname:pPoolSizes must: be a pointer to an array of pname:poolSizeCount valid sname:VkDescriptorPoolSize structures
* The value of pname:poolSizeCount must: be greater than `0`
* The value of pname:maxSets must: be greater than `0`
* pname:poolSizeCount must: be greater than `0`
* pname:maxSets must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -8,7 +8,7 @@ Valid Usage
-----------
endif::doctype-manpage[]
* pname:type must: be a valid elink:VkDescriptorType value
* The value of pname:descriptorCount must: be greater than `0`
* pname:descriptorCount must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -11,9 +11,9 @@ endif::doctype-manpage[]
* pname:pNext must: be `NULL`
* pname:descriptorPool must: be a valid sname:VkDescriptorPool handle
* pname:pSetLayouts must: be a pointer to an array of pname:descriptorSetCount valid sname:VkDescriptorSetLayout handles
* The value of pname:descriptorSetCount must: be greater than `0`
* pname:descriptorSetCount must: be greater than `0`
* Each of pname:descriptorPool and the elements of pname:pSetLayouts must: have been created, allocated or retrieved from the same sname:VkDevice
* The value of pname:descriptorSetCount mustnot: be greater than the number of sets that are currently available for allocation in pname:descriptorPool
* pname:descriptorSetCount mustnot: be greater than the number of sets that are currently available for allocation in pname:descriptorPool
* pname:descriptorPool must: have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -13,8 +13,8 @@ endif::doctype-manpage[]
* pname:pQueueCreateInfos must: be a pointer to an array of pname:queueCreateInfoCount valid sname:VkDeviceQueueCreateInfo structures
* If pname:enabledLayerCount is not `0`, and pname:ppEnabledLayerNames is not `NULL`, pname:ppEnabledLayerNames must: be a pointer to an array of pname:enabledLayerCount null-terminated strings
* If pname:enabledExtensionCount is not `0`, and pname:ppEnabledExtensionNames is not `NULL`, pname:ppEnabledExtensionNames must: be a pointer to an array of pname:enabledExtensionCount null-terminated strings
* pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure
* The value of pname:queueCreateInfoCount must: be greater than `0`
* If pname:pEnabledFeatures is not `NULL`, pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure
* pname:queueCreateInfoCount must: be greater than `0`
* Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties
* Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties
* If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension

View File

@ -11,10 +11,10 @@ endif::doctype-manpage[]
* pname:pNext must: be `NULL`
* pname:flags must: be `0`
* pname:pQueuePriorities must: be a pointer to an array of pname:queueCount basetype:float values
* The value of pname:queueCount must: be greater than `0`
* pname:queueFamilyIndex must: be less than the value of pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties
* pname:queueCount must: be less than or equal to the value of the pname:queueCount member of the sname:VkQueueFamilyProperties structure, as returned by fname:vkGetPhysicalDeviceQueueFamilyProperties in the pname:pQueueFamilyProperties[pname:queueFamilyIndex]
* The value of any given element of pname:pQueuePriorities must: be between `0.0` and `1.0` inclusive
* pname:queueCount must: be greater than `0`
* pname:queueFamilyIndex must: be less than pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties
* pname:queueCount must: be less than or equal to the pname:queueCount member of the sname:VkQueueFamilyProperties structure, as returned by fname:vkGetPhysicalDeviceQueueFamilyProperties in the pname:pQueueFamilyProperties[pname:queueFamilyIndex]
* Each element of pname:pQueuePriorities must: be between `0.0` and `1.0` inclusive
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -8,7 +8,7 @@ Valid Usage
-----------
endif::doctype-manpage[]
* For a given vertex buffer binding, any attribute data fetched must: be entirely contained within the corresponding vertex buffer binding, as described in <<fxvertex-input>>
* The total value of (pname:indexSize * (pname:firstIndex + pname:indexCount) + pname:offset) must: be less than or equal to the size of the currently bound index buffer, with indexSize being based on the type specified by pname:indexType, where the index buffer, pname:indexType, and pname:offset are specified via fname:vkCmdBindIndexBuffer
* (pname:indexSize * (pname:firstIndex + pname:indexCount) + pname:offset) must: be less than or equal to the size of the currently bound index buffer, with pname:indexSize being based on the type specified by pname:indexType, where the index buffer, pname:indexType, and pname:offset are specified via fname:vkCmdBindIndexBuffer
* If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, pname:firstInstance must: be code:0
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -13,7 +13,7 @@ endif::doctype-manpage[]
* pname:renderPass must: be a valid sname:VkRenderPass handle
* If pname:attachmentCount is not `0`, pname:pAttachments must: be a pointer to an array of pname:attachmentCount valid sname:VkImageView handles
* Each of pname:renderPass and the elements of pname:pAttachments that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
* The value of pname:attachmentCount must: be equal to the attachment count specified in pname:renderPass
* pname:attachmentCount must: be equal to the attachment count specified in pname:renderPass
* Any given element of pname:pAttachments that is used as a color attachment or resolve attachment by pname:renderPass must: have been created with a pname:usage value including ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* Any given element of pname:pAttachments that is used as a depth/stencil attachment by pname:renderPass must: have been created with a pname:usage value including ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* Any given element of pname:pAttachments that is used as an input attachment by pname:renderPass must: have been created with a pname:usage value including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
@ -21,10 +21,10 @@ endif::doctype-manpage[]
* Any given element of pname:pAttachments must: have been created with a pname:samples value that matches the pname:samples value specified by the corresponding sname:VkAttachmentDescription in pname:renderPass
* Any given element of pname:pAttachments must: have dimensions at least as large as the corresponding framebuffer dimension
* Any given element of pname:pAttachments must: only specify a single mip-level
* Any given element of pname:pAttachments must: have been created with identity swizzle
* The value of pname:width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth
* The value of pname:height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight
* The value of pname:layers must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
* Any given element of pname:pAttachments must: have been created with the identity swizzle
* pname:width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth
* pname:height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight
* pname:layers must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -17,7 +17,7 @@ endif::doctype-manpage[]
* If pname:pDynamicState is not `NULL`, pname:pDynamicState must: be a pointer to a valid sname:VkPipelineDynamicStateCreateInfo structure
* pname:layout must: be a valid sname:VkPipelineLayout handle
* pname:renderPass must: be a valid sname:VkRenderPass handle
* The value of pname:stageCount must: be greater than `0`
* pname:stageCount must: be greater than `0`
* Each of pname:layout, pname:renderPass and pname:basePipelineHandle that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be sname:VK_NULL_HANDLE
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, it must: be a valid index into the calling command's pname:pCreateInfos parameter
@ -41,9 +41,9 @@ endif::doctype-manpage[]
* If pname:pStages includes a fragment shader stage, its shader code mustnot: read from any input attachment that is defined as ename:VK_ATTACHMENT_UNUSED in pname:subpass
* The shader code for the entry points identified by pname:pStages, and the rest of the state identified by this structure must: adhere to the pipeline linking rules described in the <<interfaces,Shader Interfaces>> chapter
* If pname:subpass uses a depth/stencil attachment in pname:renderpass that has a layout of ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the sname:VkAttachmentReference defined by pname:subpass, and pname:pDepthStencilState is not `NULL`, the pname:depthWriteEnable member of pname:pDepthStencilState must: be ename:VK_FALSE
* If pname:subpass uses a depth/stencil attachment in pname:renderpass that has a layout of ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the sname:VkAttachmentReference defined by pname:subpass, and pname:pDepthStencilState is not `NULL`, the value of the pname:failOp, pname:passOp and pname:depthFailOp members of each of the pname:front and pname:back members of pname:pDepthStencilState must: be ename:VK_STENCIL_OP_KEEP
* If pname:pColorBlendState is not `NULL`, the value of the pname:blendEnable member of each element of the pname:pAttachment member of pname:pColorBlendState must: be ename:VK_FALSE if the pname:format of the attachment referred to in pname:subpass of pname:renderPass does not support color blend operations, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures or sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:pColorBlendState is not `NULL`, The pname:attachmentCount member of pname:pColorBlendState must: be equal to the value of pname:colorAttachmentCount used to create pname:subpass
* If pname:subpass uses a depth/stencil attachment in pname:renderpass that has a layout of ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the sname:VkAttachmentReference defined by pname:subpass, and pname:pDepthStencilState is not `NULL`, the pname:failOp, pname:passOp and pname:depthFailOp members of each of the pname:front and pname:back members of pname:pDepthStencilState must: be ename:VK_STENCIL_OP_KEEP
* If pname:pColorBlendState is not `NULL`, the pname:blendEnable member of each element of the pname:pAttachment member of pname:pColorBlendState must: be ename:VK_FALSE if the pname:format of the attachment referred to in pname:subpass of pname:renderPass does not support color blend operations, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures or sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:pColorBlendState is not `NULL`, The pname:attachmentCount member of pname:pColorBlendState must: be equal to the pname:colorAttachmentCount used to create pname:subpass
* If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_VIEWPORT, the pname:pViewports member of pname:pViewportState must: be a pointer to an array of pname:pViewportState->viewportCount sname:VkViewport structures
* If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_SCISSOR, the pname:pScissors member of pname:pViewportState must: be a pointer to an array of pname:pViewportState->scissorCount sname:VkRect2D structures
* If the wide lines feature is not enabled, and no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_LINE_WIDTH, the pname:lineWidth member of pname:pRasterizationState must: be `1.0`
@ -52,7 +52,7 @@ endif::doctype-manpage[]
* If the pname:rasterizerDiscardEnable member of pname:pRasterizationState is ename:VK_FALSE, and pname:subpass uses a depth/stencil attachment, pname:pDepthStencilState must: be a pointer to a valid sname:VkPipelineDepthStencilStateCreateInfo structure
* If the pname:rasterizerDiscardEnable member of pname:pRasterizationState is ename:VK_FALSE, and pname:subpass uses color attachments, pname:pColorBlendState must: be a pointer to a valid sname:VkPipelineColorBlendStateCreateInfo structure
* If the depth bias clamping feature is not enabled, no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_DEPTH_BIAS, and the pname:depthBiasEnable member of pname:pDepthStencil is ename:VK_TRUE, the pname:depthBiasClamp member of pname:pDepthStencil must: be `0.0`
* If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the pname:depthBoundsTestEnable member of pname:pDepthStencil is ename:VK_TRUE, the value of the pname:minDepthBounds and pname:maxDepthBounds members of pname:pDepthStencil must: be between `0.0` and `1.0`, inclusive
* If no element of the pname:pDynamicStates member of pname:pDynamicState is ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the pname:depthBoundsTestEnable member of pname:pDepthStencil is ename:VK_TRUE, the pname:minDepthBounds and pname:maxDepthBounds members of pname:pDepthStencil must: be between `0.0` and `1.0`, inclusive
* pname:layout must: be <<descriptorsets-pipelinelayout-consistency,consistent>> with all shaders specified in pname:pStages
* If pname:subpass uses color and/or depth/stencil attachments, then the pname:rasterizationSamples member of pname:pMultisampleState must: be the same as the sample count for those subpass attachments
* If pname:subpass does not use any color and/or depth/stencil attachments, then the pname:rasterizationSamples member of pname:pMultisampleState must: follow the rules for a <<renderpass-noattachments, zero-attachment subpass>>

View File

@ -21,27 +21,27 @@ endif::doctype-manpage[]
* If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, pname:pQueueFamilyIndices must: be a pointer to an array of pname:queueFamilyIndexCount basetype:uint32_t values
* If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, pname:queueFamilyIndexCount must: be greater than `1`
* pname:format mustnot: be ename:VK_FORMAT_UNDEFINED
* The values of the pname:width, pname:height and pname:depth members of pname:extent must: all be greater than `0`
* The value of pname:mipLevels must: be greater than `0`
* The value of pname:arrayLayers must: be greater than `0`
* If pname:imageType is ename:VK_IMAGE_TYPE_1D, the value of pname:extent.width must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxImageDimension1D, or the value of sname:VkImageFormatProperties::pname:maxExtent.width (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags does not contain ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, the value of pname:extent.width and pname:extent.height must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxImageDimension2D, or the value of sname:VkImageFormatProperties::pname:maxExtent.width/height (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, the value of pname:extent.width and pname:extent.height must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxImageDimensionCube, or the value of sname:VkImageFormatProperties::pname:maxExtent.width/height (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, the value of pname:extent.width and pname:extent.height must: be equal
* If pname:imageType is ename:VK_IMAGE_TYPE_3D, the value of pname:extent.width, pname:extent.height and pname:extent.depth must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, or the value of sname:VkImageFormatProperties::pname:maxExtent.width/height/depth (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* The value of pname:mipLevels must: be less than or equal to or equal to the value of latexmath:[$\lfloor\log_2(\max(\mathit{extent.width}, \mathit{extent.height}, \mathit{extent.depth}))\rfloor + 1$]
* If the values of any of pname:extent.width, pname:extent.height or pname:extent.depth are greater than the values of the equivalently named members of sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, pname:mipLevels must: be less than or equal to the value of sname:VkImageFormatProperties::pname:maxMipLevels (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure)
* The value of pname:arrayLayers must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or the value of sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* The value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or the value of sname:VkImageFormatProperties::pname:maxExtent.sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with values of 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, the value of 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, the value of 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, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxFramebufferDepthSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxFramebufferStencilSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxSampledImageColorSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxSampledImageDepthSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxSampledImageIntegerSamples
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, the value of pname:samples must: be a bit value that is set in the value of sname:VkPhysicalDeviceLimits::pname:maxStorageImageSamples
* The pname:width, pname:height, and pname:depth members of pname:extent must: all be greater than `0`
* pname:mipLevels must: be greater than `0`
* pname:arrayLayers must: be greater than `0`
* If pname:imageType is ename:VK_IMAGE_TYPE_1D, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimension1D, or sname:VkImageFormatProperties::pname:maxExtent.width (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags does not contain ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimension2D, or sname:VkImageFormatProperties::pname:maxExtent.width/height (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimensionCube, or sname:VkImageFormatProperties::pname:maxExtent.width/height (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be equal
* If pname:imageType is ename:VK_IMAGE_TYPE_3D, pname:extent.width, pname:extent.height and pname:extent.depth must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, or sname:VkImageFormatProperties::pname:maxExtent.width/height/depth (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* pname:mipLevels must: be less than or equal to latexmath:[$\lfloor\log_2(\max(\mathit{extent.width}, \mathit{extent.height}, \mathit{extent.depth}))\rfloor + 1$]
* If any of pname:extent.width, pname:extent.height or pname:extent.depth are greater than the equivalently named members of sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, pname:mipLevels must: be less than or equal to sname:VkImageFormatProperties::pname:maxMipLevels (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure)
* pname:arrayLayers must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
* pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:maxExtent.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 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
@ -53,14 +53,14 @@ endif::doctype-manpage[]
* If the <<features-features-sparseResidency4Samples,sparse residency for images with 4 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_4_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency8Samples,sparse residency for images with 8 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_8_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency16Samples,sparse residency for images with 16 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_16_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -9,8 +9,8 @@ Valid Usage
endif::doctype-manpage[]
* pname:aspectMask must: be a valid combination of elink:VkImageAspectFlagBits values
* pname:aspectMask mustnot: be `0`
* latexmath:[$(baseMipLevel + levelCount)$] must: be less than or equal to the pname:mipLevels specified in slink:VkImageCreateInfo when the image was created
* latexmath:[$(baseArrayLayer + layerCount)$] must: be less than or equal to the pname:arrayLayers specified in slink:VkImageCreateInfo when the image was created
* If pname:levelCount is not ename:VK_REMAINING_MIP_LEVELS, latexmath:[$(baseMipLevel + levelCount)$] must: be less than or equal to the pname:mipLevels specified in slink:VkImageCreateInfo when the image was created
* If pname:layerCount is not ename:VK_REMAINING_ARRAY_LAYERS, latexmath:[$(baseArrayLayer + layerCount)$] must: be less than or equal to the pname:arrayLayers specified in slink:VkImageCreateInfo when the image was created
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -9,8 +9,8 @@ Valid Usage
endif::doctype-manpage[]
* pname:sType must: be ename:VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
* pname:pNext must: be `NULL`
* The value of pname:allocationSize must: be less than or equal to the amount of memory available to the sname:VkMemoryHeap specified by pname:memoryTypeIndex and the calling command's sname:VkDevice
* The value of pname:allocationSize must: be greater than `0`
* pname:allocationSize must: be less than or equal to the amount of memory available to the sname:VkMemoryHeap specified by pname:memoryTypeIndex and the calling command's sname:VkDevice
* pname:allocationSize must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -7,7 +7,7 @@ ifdef::doctype-manpage[]
Valid Usage
-----------
endif::doctype-manpage[]
* If the value of any member of this structure is ename:VK_FALSE, as returned by flink:vkGetPhysicalDeviceFeatures, then it must: be ename:VK_FALSE when passed as part of the sname:VkDeviceCreateInfo struct when creating a device
* If any member of this structure is ename:VK_FALSE, as returned by flink:vkGetPhysicalDeviceFeatures, then it must: be ename:VK_FALSE when passed as part of the sname:VkDeviceCreateInfo struct when creating a device
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -13,7 +13,7 @@ endif::doctype-manpage[]
* pname:depthCompareOp must: be a valid elink:VkCompareOp value
* pname:front must: be a valid sname:VkStencilOpState structure
* pname:back must: be a valid sname:VkStencilOpState structure
* If the <<features-features-depthBounds,depth bounds testing>> feature is not enabled, the value of pname:depthBoundsTestEnable must: be ename:VK_FALSE
* If the <<features-features-depthBounds,depth bounds testing>> feature is not enabled, pname:depthBoundsTestEnable must: be ename:VK_FALSE
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:pNext must: be `NULL`
* pname:flags must: be `0`
* pname:pDynamicStates must: be a pointer to an array of pname:dynamicStateCount valid elink:VkDynamicState values
* The value of pname:dynamicStateCount must: be greater than `0`
* pname:dynamicStateCount must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:pNext must: be `NULL`
* pname:flags must: be `0`
* pname:topology must: be a valid elink:VkPrimitiveTopology value
* If pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, the value of pname:primitiveRestartEnable must: be ename:VK_FALSE
* If pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, pname:primitiveRestartEnable must: be ename:VK_FALSE
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:topology mustnot: be any of ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:topology mustnot: be ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
ifndef::doctype-manpage[]

View File

@ -13,11 +13,11 @@ endif::doctype-manpage[]
* If pname:setLayoutCount is not `0`, pname:pSetLayouts must: be a pointer to an array of pname:setLayoutCount valid sname:VkDescriptorSetLayout handles
* If pname:pushConstantRangeCount is not `0`, pname:pPushConstantRanges must: be a pointer to an array of pname:pushConstantRangeCount valid sname:VkPushConstantRange structures
* pname:setLayoutCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxBoundDescriptorSets
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_SAMPLER and ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSamplers
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER and ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorUniformBuffers
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER and ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageBuffers
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSampledImages
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageImages
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_SAMPLER and ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSamplers
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER and ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorUniformBuffers
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER and ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageBuffers
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, and ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorSampledImages
* The total number of descriptors of the type ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, and ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER accessible to any given shader stage across all elements of pname:pSetLayouts must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageDescriptorStorageImages
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -13,8 +13,8 @@ endif::doctype-manpage[]
* pname:polygonMode must: be a valid elink:VkPolygonMode value
* pname:cullMode must: be a valid combination of elink:VkCullModeFlagBits values
* pname:frontFace must: be a valid elink:VkFrontFace value
* If the <<features-features-depthClamp,depth clamping>> feature is not enabled, the value of pname:depthClampEnable must: be ename:VK_FALSE
* If the <<features-features-fillModeNonSolid,non-solid fill modes>> feature is not enabled, the value of pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL
* If the <<features-features-depthClamp,depth clamping>> feature is not enabled, pname:depthClampEnable must: be ename:VK_FALSE
* If the <<features-features-fillModeNonSolid,non-solid fill modes>> feature is not enabled, pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -14,7 +14,7 @@ endif::doctype-manpage[]
* If pname:vertexAttributeDescriptionCount is not `0`, pname:pVertexAttributeDescriptions must: be a pointer to an array of pname:vertexAttributeDescriptionCount valid sname:VkVertexInputAttributeDescription structures
* pname:vertexBindingDescriptionCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings
* pname:vertexAttributeDescriptionCount must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes
* For every value of pname:binding specified by any given element of pname:pVertexAttributeDescriptions, a sname:VkVertexInputBindingDescription must: exist in pname:pVertexBindingDescriptions with the same value of pname:binding
* For every pname:binding specified by any given element of pname:pVertexAttributeDescriptions, a sname:VkVertexInputBindingDescription must: exist in pname:pVertexBindingDescriptions with the same value of pname:binding
* All elements of pname:pVertexBindingDescriptions must: describe distinct binding numbers
* All elements of pname:pVertexAttributeDescriptions must: describe distinct attribute locations
ifndef::doctype-manpage[]

View File

@ -10,13 +10,13 @@ endif::doctype-manpage[]
* pname:sType must: be ename:VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
* pname:pNext must: be `NULL`
* pname:flags must: be `0`
* The value of pname:viewportCount must: be greater than `0`
* The value of pname:scissorCount must: be greater than `0`
* pname:viewportCount must: be greater than `0`
* pname:scissorCount must: be greater than `0`
* If the <<features-features-multiViewport,multiple viewports>> feature is not enabled, pname:viewportCount must: be `1`
* If the <<features-features-multiViewport,multiple viewports>> feature is not enabled, pname:scissorCount must: be `1`
* pname:viewportCount must: be between `1` and sname:VkPhysicalDeviceLimits::pname:maxViewports, inclusive
* pname:scissorCount must: be between `1` and sname:VkPhysicalDeviceLimits::pname:maxViewports, inclusive
* The values of pname:scissorCount and pname:viewportCount must: be identical
* pname:scissorCount and pname:viewportCount must: be identical
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -9,10 +9,10 @@ Valid Usage
endif::doctype-manpage[]
* pname:stageFlags must: be a valid combination of elink:VkShaderStageFlagBits values
* pname:stageFlags mustnot: be `0`
* The value of pname:offset must: be less than the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
* The value of pname:size must: be greater than `0`
* The value of pname:size must: be a multiple of `4`
* The value of pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset
* pname:offset must: be less than sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
* pname:size must: be greater than `0`
* pname:size must: be a multiple of `4`
* pname:size must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

Some files were not shown because too many files have changed in this diff Show More