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:
parent
7380aee56b
commit
1f875738fd
|
@ -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
|
||||
<<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
|
||||
<<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
|
||||
<<interfaces-resources-layout,Offset and Stride Assignment>>
|
||||
section (public issue 38).
|
||||
* Correct parenthesis floor nesting error in equation for
|
||||
<<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 <<interfaces-builtin-variables,Built-In Variables>>
|
||||
section (public issue 47).
|
||||
* Define the clamping of the
|
||||
<<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
|
||||
<<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
|
||||
<<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.
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
====
|
||||
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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$]
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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_,
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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$],
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 |
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>>)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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>>
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue