Change log for April 22, 2016 Vulkan 1.0.11 spec update:
* Bump API patch number and header version number to 11 for this update. Github Issues: * Clarify the WSI extension language by switching from the fuzzier "ownership" language to more-consistent "acquire" language (public issue 117). * Clarify that memory barriers apply to all commands in the dependency chains in the flink:vkGetRenderAreaGranularity command and the <<synchronization-execution-and-memory-dependencies,Execution And Memory Dependencies>> section (public issue 132). * Clarify that a queue family is a set of queues in the <<fundamentals-execmodel,Execution Model>> section (public issue 166). * Removed requirement from valid usage language that VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public issue 171). * Fix broken internal links, describe structures consistently, use consistent style for SPIR-V codewords, and tag normative terms that were missing asciidoc tags (public issue 183 and ancillary markup/normative language fixes). * Fix typos for slink:VkPhysicalDeviceLimits member names in slink:VkImageCreateInfo validity language (public issue 184). Internal Issues: * Document that the requested patch version number specified as part of slink:VkApplicationInfo::pname:apiVersion is ignored when creating an instance (internal issue 176). * Clarify handling of extension structs in the <<fundamentals-validusageValid Usage>> section (internal issue 254). * Update required slink:VkImageFormatProperties::pname:maxMipLevels to be limited to the maximum allowed mipmap pyramid size corresponding to the actual maximum supported size for the format (internal issue 256). * Modify the <<features-extentperimagetype,Allowed Extent Values Based On Image Type>> section so the allowed maximum extent is the maximum image dimension supported for each dimension of the type of texture being queried (internal issue 257). * Clarify in the <<spirvenv-module-validation,Validation Rules within a Module>> section that at least one of the code:LocalSize execution mode or code:WorkgroupSize decoration is required for each compute shader entry point in a shader module (internal issue 279). * Add validity rules for formats in flink:vkCmdClearColorImage and flink:vkCmdClearDepthStencilImage (internal issue 283). * Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is an upper bound, and that it may not be possible to create an image anywhere near that size (internal issue 284). Other Commits: * Fix various minor markup errors reported by validation scripts. * Change copyright from Khronos Free Use License to Apache 2.0 license on relevant script/XML/header files. This does not affect the specification source copyright.
This commit is contained in:
parent
3b32b240f6
commit
6db51e9241
117
ChangeLog.txt
117
ChangeLog.txt
|
@ -11,6 +11,7 @@ February 16, 2016 - Vulkan 1.0 initial public release
|
|||
-----------------------------------------------------
|
||||
|
||||
Change log for February 25, 2015 Vulkan 1.0.4 spec update:
|
||||
|
||||
* Bump API patch number from 3 to 4 for the first public update to the
|
||||
spec. Add patch number to the spec title (this will be done
|
||||
automatically from XML, later).
|
||||
|
@ -67,9 +68,11 @@ Change log for February 25, 2015 Vulkan 1.0.4 spec update:
|
|||
-----------------------------------------------------
|
||||
|
||||
Change log for March 4, 2016 Vulkan 1.0.5 spec update:
|
||||
|
||||
* Bump API patch number to 5 for this update.
|
||||
|
||||
Github Issues:
|
||||
|
||||
* Correctly describe slink:VkPhysicalDeviceProperties pname:deviceName
|
||||
member as a string, not a pointer to a string. Also one typo fix for
|
||||
"hetereogeneous" (public issue 4).
|
||||
|
@ -130,6 +133,7 @@ Github Issues:
|
|||
sname:VkVertexInputAttributeDescription numbers (public issue 72).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Clarify the meaning of
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT in
|
||||
elink:VkFormatFeatureFlagBits with respect to depth compare
|
||||
|
@ -144,6 +148,7 @@ Internal Issues:
|
|||
flink:vkEnumeratePhysicalDevices query (internal issue 163).
|
||||
|
||||
Other Commits:
|
||||
|
||||
* Add the VK_NV_glsl_shader extension definitions to the API.
|
||||
* Update GL_KHR_vulkan_glsl with 1) origin_upper_left as default 2)
|
||||
specialization array constant semantics.
|
||||
|
@ -161,64 +166,49 @@ Github Issues:
|
|||
* Define 'invocation group' for compute and graphics shaders. Cleanup
|
||||
definition and use of 'workgroup', and add glossary entries (public
|
||||
issue 1).
|
||||
|
||||
* Various minor editorial fixes (public issue 33).
|
||||
|
||||
* Clarify locations for block members in the
|
||||
<<interfaces-iointerfaces-locations,Location Assignment>>
|
||||
section (public issue 45).
|
||||
|
||||
* Editorial fixes for <<commandbuffer-allocation,Command Buffer
|
||||
Allocation>> section (public issues 54, 59).
|
||||
|
||||
* Clarify behavior of depth test in the <<fragops-depth,Depth
|
||||
Test>> section (public issues 80, 81).
|
||||
|
||||
* Clarify behavior of depth test in the <<fragops-depth,Depth Test>>
|
||||
section (public issues 80, 81).
|
||||
* Remove discussion of return codes from
|
||||
flink:vkGetPhysicalDeviceSparseImageFormatProperties and
|
||||
flink:vkGetImageSparseMemoryRequirements, which don't return values
|
||||
(public issue 82).
|
||||
|
||||
* Allow flink:vkCmdDrawIndirect and flink:vkCmdDrawIndexedIndirect
|
||||
pname:drawCount of 0, as well as 1, when the multiDrawIndirect
|
||||
feature is not supported (public issue 88).
|
||||
|
||||
* Remove confusing wording in the <<features-limits,Limits>>
|
||||
section describing the slink:VkPhysicalDeviceLimits
|
||||
pname:minTexelBufferOffsetAlignment,
|
||||
pname:minUniformBufferOffsetAlignment, and
|
||||
pname:minStorageBufferOffsetAlignment members as both minimums and
|
||||
maximums (public issue 91).
|
||||
|
||||
* Clarified that only the RGB components should be affected in places
|
||||
where sRGB is referred to in the spec, such as ASTC formats. Minor
|
||||
re-wording to avoid "color space" when actively incorrect, now that
|
||||
we refer to the Data Format Spec which actually makes a distinction
|
||||
between color space and transfer function (public issue 94).
|
||||
|
||||
* Treat pname:pPropertyCount == 0 consistently in
|
||||
flink:vkEnumerateInstanceLayerProperties and
|
||||
flink:vkEnumerateDeviceLayerProperties (public issue 99)
|
||||
|
||||
* Cleanup minor editorial issues in chapters 14-17 (public issue 100).
|
||||
|
||||
* Clarify definition of flink:vkEnumerateInstanceExtensionProperties
|
||||
and flink:vkEnumerateDeviceExtensionProperties (public issue 101).
|
||||
|
||||
* Define the flink:vkEnumerateInstanceExtensionProperties and
|
||||
flink:vkEnumerateDeviceExtensionProperties pname:pLayerName
|
||||
parameter to be a pointer to a null-terminated UTF-8 string (public
|
||||
issue 101).
|
||||
|
||||
* Rearrange "Missing information" references in mandatory format
|
||||
tables (public issue 101).
|
||||
|
||||
* Clarify that the enumerated extensions returned by
|
||||
flink:vkEnumerateInstanceExtensionProperties and
|
||||
flink:vkEnumerateDeviceExtensionProperties will only include
|
||||
extensions provided by the platform or extensions implemented in
|
||||
implicitly enabled layers (public issue 101).
|
||||
|
||||
* Miscellaneous editorial fixes. Include the Vulkan spec patch number
|
||||
in the PDF title. Fix label on <<fig-non-strict-lines,Non
|
||||
strict lines>> diagram. Use more easily distinguished symbols in
|
||||
|
@ -231,7 +221,6 @@ Github Issues:
|
|||
Internal Issues:
|
||||
|
||||
* Fixed excessive spacing in tables in XHTML (internal issue 18).
|
||||
|
||||
* Clarify that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
|
||||
applies to secondary command buffers. Previously spec only referred
|
||||
to the members of pname:pCommandBuffers being affected by this bit.
|
||||
|
@ -240,37 +229,30 @@ Internal Issues:
|
|||
also applies to any secondary command buffers that are recorded into
|
||||
the primary command buffers in pname:pCommandBuffers (internal issue
|
||||
106).
|
||||
|
||||
* Clarify that slink:VkDeviceCreateInfo::pname:pEnabledFeatures can be
|
||||
NULL (internal issue 117).
|
||||
|
||||
* Remove "the value of" where it is redundant (e.g. speaking of an API
|
||||
parameter, struct member, or SPIR-V variable, but not when speaking
|
||||
of color components) (internal issue 175).
|
||||
|
||||
* Forced patch version to always be 0 in the header. Add a
|
||||
"VK_API_VERSION_<major>_<minor>" macro for people to use to do the
|
||||
right thing. Add a VK_HEADER_VERSION which captures the header
|
||||
release number independent of the spec patch number (internal issue
|
||||
176).
|
||||
|
||||
* Correct description of
|
||||
slink:VkPipelineShaderStageCreateInfo::pname:pName to "a pointer to
|
||||
a null-terminated UTF-8 string" (internal issue #197).
|
||||
a null-terminated UTF-8 string" (internal issue 197).
|
||||
|
||||
Other Commits:
|
||||
|
||||
* Updated DataFormat spec reference to the new date for revision 5 of
|
||||
that spec.
|
||||
|
||||
* Fixed KEEP option (to retain LaTeX intermediate files) in the
|
||||
Makefile to be included when edited there, as well as set on the
|
||||
command line.
|
||||
|
||||
* Reserve and add "VK_IMG_filter_cubic" to the registry, and implement
|
||||
script functionality to add and remove validity from existing
|
||||
functions. Includes schema and readme changes.
|
||||
|
||||
* Update GL_KHR_vulkan_glsl so push_constants do not have descriptor
|
||||
sets.
|
||||
|
||||
|
@ -285,60 +267,46 @@ Github Issues:
|
|||
|
||||
* Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict
|
||||
aliasing issues (public issue 14).
|
||||
|
||||
* Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets
|
||||
validity language (public issue 33).
|
||||
|
||||
* Add stub reference pages so xrefs to not-yet-written pages don't
|
||||
generate 404 errors. However, the actual content of these pages
|
||||
still needs to be filled in as time allows (public issue 44, but
|
||||
does not close that issue out).
|
||||
|
||||
* Remove incorrect validity statement for
|
||||
flink:vkGetImageSparseMemoryRequirements (public issue 85).
|
||||
|
||||
* Reword the
|
||||
<<features-limits-bufferImageGranularity,bufferImageGranularity>>
|
||||
feature in terms of "aliasing", and clarify that it applies to
|
||||
bindings in the same memory object (public issue 90).
|
||||
|
||||
* Clarify the relationship of the slink:VkPhysicalDeviceLimits
|
||||
pname:maxViewportDimensions and pname:viewportBoundsRange limits
|
||||
(public issue 92).
|
||||
|
||||
* Specify sparse unbound texture replacement in the
|
||||
<<textures-texel-replacement,Texel Replacement>> section
|
||||
independently of robust buffer access language (public issue 100).
|
||||
|
||||
* Add the <<fundamentals-architecture-model,Architecture Model>>
|
||||
section to explain architecture constraints Vulkan has chosen to
|
||||
accept in order to enable portable and performant code (public issue
|
||||
122).
|
||||
|
||||
* State that an object must not be destroyed until *all* (not *any*)
|
||||
uses of that object have completed (public issue 123).
|
||||
|
||||
* Minor editorial cleanup (public issues 129, 134, 146, 148).
|
||||
|
||||
* Add validity language for layer and extension names to
|
||||
slink:VkDeviceCreateInfo matching that used for
|
||||
slink:VkInstanceCreateInfo (public issue 130).
|
||||
|
||||
* Clean up terminology for the case when the bits set in one bitmask
|
||||
are a subset of the bits set in another bitmask (public issue 138).
|
||||
|
||||
* Document that input attachments are UniformConstant not Input, in
|
||||
the <<interfaces-inputattachment,Fragment Input Attachment
|
||||
Interface>> section (public glslang bug 169).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Add max enum values to "flag bits" enums (internal issue #136).
|
||||
|
||||
* Add max enum values to "flag bits" enums (internal issue 136).
|
||||
* Clarify language around the various uses of the term "block" in the
|
||||
<<appendix-compressedtex-bc,Block Compressed Image Formats>> section
|
||||
(internal issue #202).
|
||||
|
||||
(internal issue 202).
|
||||
* Removed "expand" dependency from <enums> groups in vk.xml and added
|
||||
auto-generation code in the scripts to infer it instead, to ensure
|
||||
consistency. This caused renaming of sname:VkColorSpaceKHR and
|
||||
|
@ -347,7 +315,6 @@ Internal Issues:
|
|||
with this change. This change adds ranges to two additional enums
|
||||
that were missing them due to not defining the "expand" attribute
|
||||
(internal issue 217).
|
||||
|
||||
* Tweak makefile to generate ref page nroff (.3) files in the right
|
||||
output directory, working around an a2x limitation (internal issue
|
||||
223).
|
||||
|
@ -356,7 +323,6 @@ Other Commits:
|
|||
|
||||
* Add validity requirements for flink:vkCmdCopyQueryPoolResults
|
||||
pname:dstBuffer parameter.
|
||||
|
||||
* Fix ref page build to generate .3 targets in the right output
|
||||
directory.
|
||||
|
||||
|
@ -396,7 +362,7 @@ Github Issues:
|
|||
Internal Issues:
|
||||
|
||||
* Link to the fixed-function vertex chapter from the drawing chapter
|
||||
(internal issue #110)
|
||||
(internal issue 110)
|
||||
* Fix typo in slink:VkImageCreateInfo validity language:
|
||||
ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue
|
||||
249).
|
||||
|
@ -499,3 +465,64 @@ Internal Issues:
|
|||
* Fix typo in the definition of point sampling for
|
||||
elink:VkCullModeFlagBits (internal issue 268).
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for April 22, 2016 Vulkan 1.0.11 spec update:
|
||||
|
||||
* Bump API patch number and header version number to 11 for this
|
||||
update.
|
||||
|
||||
Github Issues:
|
||||
|
||||
* Clarify the WSI extension language by switching from the fuzzier
|
||||
"ownership" language to more-consistent "acquire" language (public
|
||||
issue 117).
|
||||
* Clarify that memory barriers apply to all commands in the dependency
|
||||
chains in the flink:vkGetRenderAreaGranularity command and the
|
||||
<<synchronization-execution-and-memory-dependencies,Execution And
|
||||
Memory Dependencies>> section (public issue 132).
|
||||
* Clarify that a queue family is a set of queues in the
|
||||
<<fundamentals-execmodel,Execution Model>> section (public issue
|
||||
166).
|
||||
* Removed requirement from valid usage language that
|
||||
VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
|
||||
issue 171).
|
||||
* Fix broken internal links, describe structures consistently, use
|
||||
consistent style for SPIR-V codewords, and tag normative terms that
|
||||
were missing asciidoc tags (public issue 183 and ancillary
|
||||
markup/normative language fixes).
|
||||
* Fix typos for slink:VkPhysicalDeviceLimits member names in
|
||||
slink:VkImageCreateInfo validity language (public issue 184).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Document that the requested patch version number specified as part
|
||||
of slink:VkApplicationInfo::pname:apiVersion is ignored when
|
||||
creating an instance (internal issue 176).
|
||||
* Clarify handling of extension structs in the
|
||||
<<fundamentals-validusageValid Usage>> section (internal issue 254).
|
||||
* Update required slink:VkImageFormatProperties::pname:maxMipLevels to
|
||||
be limited to the maximum allowed mipmap pyramid size corresponding
|
||||
to the actual maximum supported size for the format (internal issue
|
||||
256).
|
||||
* Modify the <<features-extentperimagetype,Allowed Extent Values Based
|
||||
On Image Type>> section so the allowed maximum extent is the maximum
|
||||
image dimension supported for each dimension of the type of texture
|
||||
being queried (internal issue 257).
|
||||
* Clarify in the <<spirvenv-module-validation,Validation Rules within
|
||||
a Module>> section that at least one of the code:LocalSize execution
|
||||
mode or code:WorkgroupSize decoration is required for each compute
|
||||
shader entry point in a shader module (internal issue 279).
|
||||
* Add validity rules for formats in flink:vkCmdClearColorImage and
|
||||
flink:vkCmdClearDepthStencilImage (internal issue 283).
|
||||
* Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
|
||||
an upper bound, and that it may not be possible to create an image
|
||||
anywhere near that size (internal issue 284).
|
||||
|
||||
Other Commits:
|
||||
|
||||
* Fix various minor markup errors reported by validation scripts.
|
||||
* Change copyright from Khronos Free Use License to Apache 2.0 license
|
||||
on relevant script/XML/header files. This does not affect the
|
||||
specification source copyright.
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@ Status
|
|||
|
||||
Version
|
||||
|
||||
Last Modified Date: 5-Apr-2016
|
||||
Revision: 29
|
||||
Last Modified Date: 12-Apr-2016
|
||||
Revision: 30
|
||||
|
||||
Number
|
||||
|
||||
|
@ -943,24 +943,25 @@ Changes to Chapter 5 of the OpenGL Shading Language Specification
|
|||
operators and with another constant or specialization constant, the
|
||||
result is implicitly a specialization constant.
|
||||
|
||||
- int(), uint(), float(), and bool() constructors for type conversions
|
||||
- int(), uint(), and bool() constructors for type conversions
|
||||
from any of the following types to any of the following types:
|
||||
* int
|
||||
* uint
|
||||
* float
|
||||
* double
|
||||
* bool
|
||||
- vector versions of the above conversion constructors
|
||||
- allowed implicit conversions of the above
|
||||
- The operators
|
||||
- swizzles (e.g., foo.yx)
|
||||
- The following when applied to integer or unsigned integer types:
|
||||
* unary negative ( - )
|
||||
* not ( ! )
|
||||
* binary operations ( + , - , * , / , % )
|
||||
* shift ( <<, >> )
|
||||
* bitwise operations ( & , | , ^ )
|
||||
* swizzles (e.g., foo.yx)
|
||||
* logical operations ( && , || , ^^ )
|
||||
- The following when applied to integer or unsigned integer scalar types:
|
||||
* comparison ( == , != , > , >= , < , <= )
|
||||
- The following when applied to the Boolean scalar type:
|
||||
* not ( ! )
|
||||
* logical operations ( && , || , ^^ )
|
||||
* comparison ( == , != )
|
||||
|
||||
Changes to Chapter 7 of the OpenGL Shading Language Specification
|
||||
|
||||
|
@ -1154,6 +1155,7 @@ Revision History
|
|||
|
||||
Rev. Date Author Changes
|
||||
---- ----------- ------- --------------------------------------------
|
||||
30 12-Apr-2016 JohnK Restrict spec-const operations to non-float
|
||||
29 5-Apr-2016 JohnK Clarify disallowance of spec-const arrays in
|
||||
initializers
|
||||
28 7-Mar-2016 JohnK Make push_constants not have sets
|
||||
|
|
|
@ -31,8 +31,8 @@ QUIET?=@
|
|||
ASCIIDOC ?= asciidoc.py
|
||||
A2X ?= a2x.py
|
||||
DBLATEX ?= dblatex
|
||||
# DBLATEXPREFIX can be overriden by setting it as an environment variable if
|
||||
# the not installed in the standard location on your distribution
|
||||
# DBLATEXPREFIX can be overriden by setting it as an environment variable,
|
||||
# if not installed in the standard location on your distribution
|
||||
DBLATEXPREFIX ?= /etc/asciidoc/dblatex
|
||||
RM=rm -f
|
||||
RMRF=rm -rf
|
||||
|
@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
|
|||
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
|
||||
# A generated included file with the spec version, date, and git commit
|
||||
SPECVERSION = specversion.txt
|
||||
SPECREVISION = 1.0.10
|
||||
SPECREVISION = 1.0.11
|
||||
SPECREMARK =
|
||||
|
||||
# Spec targets
|
||||
|
|
|
@ -26,7 +26,7 @@ s, t, and r directions.
|
|||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending ename:VkSamplerAddressMode:
|
||||
* Extending elink:VkSamplerAddressMode:
|
||||
** ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
|
||||
|
||||
=== Example
|
||||
|
@ -41,11 +41,11 @@ Creating a sampler with the new address mode in each dimension
|
|||
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType
|
||||
// Other members set to application-desired values
|
||||
};
|
||||
|
||||
|
||||
createInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
|
||||
createInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
|
||||
createInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
|
||||
|
||||
|
||||
VkSampler sampler;
|
||||
VkResult result = vkCreateSampler(
|
||||
device,
|
||||
|
|
|
@ -445,9 +445,9 @@ all extensions must: define two additional tokens.
|
|||
extension defined in +vulkan.h+ and the revision supported by the
|
||||
{apiname} implementation (the pname:specVersion field of the
|
||||
slink:VkExtensionProperties structure corresponding to the extension and
|
||||
returned by one of the <<debug-extensions,Extension Queries>>) may:
|
||||
differ. In such cases, only the functionality and behavior of the
|
||||
lowest-numbered revision can: be used.
|
||||
returned by one of the <<extended-functionality-extensions,extension
|
||||
queries>>) may: differ. In such cases, only the functionality and
|
||||
behavior of the lowest-numbered revision can: be used.
|
||||
* VK_EXTNAME_EXTENSION_NAME is a string constant which is the name of the
|
||||
extension.
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ Dynamic Uniform Buffer::
|
|||
|
||||
Explicitly-Enabled Layer::
|
||||
A layer enabled by the application by adding it to the enabled layer
|
||||
list in flink:vkCmdCreateInstance or flink:vkCmdCreateDevice.
|
||||
list in flink:vkCreateInstance or flink:vkCreateDevice.
|
||||
|
||||
Event::
|
||||
A synchronization primitive that is signalled when execution of previous
|
||||
|
@ -317,6 +317,18 @@ Handle::
|
|||
An opaque integer or pointer value used to refer to a {apiname} object.
|
||||
Each object type has a unique handle type.
|
||||
|
||||
Happen-after::
|
||||
A command happens-after a dependency if they are separated by an execution
|
||||
dependency chain, with the command included in the destination of the last
|
||||
dependency of the chain. A memory barrier makes visible memory writes to
|
||||
commands that happen-after it.
|
||||
|
||||
Happen-before::
|
||||
A command happens-before a dependency if they are separated by an execution
|
||||
dependency chain, with the command included in the source of the first
|
||||
dependency of the chain. A memory barrier makes available memory writes of
|
||||
commands that happen-before it.
|
||||
|
||||
Helper Invocation::
|
||||
A fragment shader invocation that is created solely for the purposes of
|
||||
evaluating derivatives for use in non-helper fragment shader
|
||||
|
|
|
@ -26,17 +26,17 @@ described in section 2.3 of the SPIR-V Specification.
|
|||
== Capabilities
|
||||
|
||||
Implementations must: support the following capability operands declared by
|
||||
*OpCapability*:
|
||||
code:OpCapability:
|
||||
|
||||
- Matrix
|
||||
- Shader
|
||||
- InputAttachment
|
||||
- Sampled1D
|
||||
- Image1D
|
||||
- SampledBuffer
|
||||
- ImageBuffer
|
||||
- ImageQuery
|
||||
- DerivativeControl
|
||||
- code:Matrix
|
||||
- code:Shader
|
||||
- code:InputAttachment
|
||||
- code:Sampled1D
|
||||
- code:Image1D
|
||||
- code:SampledBuffer
|
||||
- code:ImageBuffer
|
||||
- code:ImageQuery
|
||||
- code:DerivativeControl
|
||||
|
||||
Implementations may: support features that are not required: by the
|
||||
Specification, as described in the <<features-features,Features>> chapter.
|
||||
|
@ -48,32 +48,32 @@ to that feature must: also be supported.
|
|||
[options="header"]
|
||||
|====
|
||||
| SPIR-V OpCapability | {apiname} feature name
|
||||
| *Geometry* | <<features-features-geometryShader,geometryShader>>
|
||||
| *Tessellation* | <<features-features-tessellationShader,tessellationShader>>
|
||||
| *Float64* | <<features-features-shaderFloat64,shaderFloat64>>
|
||||
| *Int64* | <<features-features-shaderInt64,shaderInt64>>
|
||||
| *Int16* | <<features-features-shaderInt16,shaderInt16>>
|
||||
| *TessellationPointSize* | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
|
||||
| *GeometryPointSize* | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
|
||||
| *ImageGatherExtended* | <<features-features-shaderImageGatherExtended,shaderImageGatherExtended>>
|
||||
| *StorageImageMultisample* | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
||||
| *UniformBufferArrayDynamicIndexing* | <<features-features-shaderUniformBufferArrayDynamicIndexing,shaderUniformBufferArrayDynamicIndexing>>
|
||||
| *SampledImageArrayDynamicIndexing* | <<features-features-shaderSampledImageArrayDynamicIndexing,shaderSampledImageArrayDynamicIndexing>>
|
||||
| *StorageBufferArrayDynamicIndexing* | <<features-features-shaderStorageBufferArrayDynamicIndexing,shaderStorageBufferArrayDynamicIndexing>>
|
||||
| *StorageImageArrayDynamicIndexing* | <<features-features-shaderStorageImageArrayDynamicIndexing,shaderStorageImageArrayDynamicIndexing>>
|
||||
| *ClipDistance* | <<features-features-shaderClipDistance,shaderClipDistance>>
|
||||
| *CullDistance* | <<features-features-shaderCullDistance,shaderCullDistance>>
|
||||
| *ImageCubeArray* | <<features-features-imageCubeArray,imageCubeArray>>
|
||||
| *SampleRateShading* | <<features-features-sampleRateShading,sampleRateShading>>
|
||||
| *SparseResidency* | <<features-features-shaderResourceResidency,shaderResourceResidency>>
|
||||
| *MinLod* | <<features-features-shaderResourceMinLod,shaderResourceMinLod>>
|
||||
| *SampledCubeArray* | <<features-features-imageCubeArray,imageCubeArray>>
|
||||
| *ImageMSArray* | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
||||
| *StorageImageExtendedFormats* | <<features-features-shaderStorageImageExtendedFormats,shaderStorageImageExtendedFormats>>
|
||||
| *InterpolationFunction* | <<features-features-sampleRateShading,sampleRateShading>>
|
||||
| *StorageImageReadWithoutFormat* | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
|
||||
| *StorageImageWriteWithoutFormat* | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
|
||||
| *MultiViewport* | <<features-features-multiViewport,multiViewport>>
|
||||
| code:Geometry | <<features-features-geometryShader,geometryShader>>
|
||||
| code:Tessellation | <<features-features-tessellationShader,tessellationShader>>
|
||||
| code:Float64 | <<features-features-shaderFloat64,shaderFloat64>>
|
||||
| code:Int64 | <<features-features-shaderInt64,shaderInt64>>
|
||||
| code:Int16 | <<features-features-shaderInt16,shaderInt16>>
|
||||
| code:TessellationPointSize | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
|
||||
| code:GeometryPointSize | <<features-features-shaderTessellationAndGeometryPointSize,shaderTessellationAndGeometryPointSize>>
|
||||
| code:ImageGatherExtended | <<features-features-shaderImageGatherExtended,shaderImageGatherExtended>>
|
||||
| code:StorageImageMultisample | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
||||
| code:UniformBufferArrayDynamicIndexing | <<features-features-shaderUniformBufferArrayDynamicIndexing,shaderUniformBufferArrayDynamicIndexing>>
|
||||
| code:SampledImageArrayDynamicIndexing | <<features-features-shaderSampledImageArrayDynamicIndexing,shaderSampledImageArrayDynamicIndexing>>
|
||||
| code:StorageBufferArrayDynamicIndexing | <<features-features-shaderStorageBufferArrayDynamicIndexing,shaderStorageBufferArrayDynamicIndexing>>
|
||||
| code:StorageImageArrayDynamicIndexing | <<features-features-shaderStorageImageArrayDynamicIndexing,shaderStorageImageArrayDynamicIndexing>>
|
||||
| code:ClipDistance | <<features-features-shaderClipDistance,shaderClipDistance>>
|
||||
| code:CullDistance | <<features-features-shaderCullDistance,shaderCullDistance>>
|
||||
| code:ImageCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
|
||||
| code:SampleRateShading | <<features-features-sampleRateShading,sampleRateShading>>
|
||||
| code:SparseResidency | <<features-features-shaderResourceResidency,shaderResourceResidency>>
|
||||
| code:MinLod | <<features-features-shaderResourceMinLod,shaderResourceMinLod>>
|
||||
| code:SampledCubeArray | <<features-features-imageCubeArray,imageCubeArray>>
|
||||
| code:ImageMSArray | <<features-features-shaderStorageImageMultisample,shaderStorageImageMultisample>>
|
||||
| code:StorageImageExtendedFormats | <<features-features-shaderStorageImageExtendedFormats,shaderStorageImageExtendedFormats>>
|
||||
| code:InterpolationFunction | <<features-features-sampleRateShading,sampleRateShading>>
|
||||
| code:StorageImageReadWithoutFormat | <<features-features-shaderStorageImageReadWithoutFormat,shaderStorageImageReadWithoutFormat>>
|
||||
| code:StorageImageWriteWithoutFormat | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
|
||||
| code:MultiViewport | <<features-features-multiViewport,multiViewport>>
|
||||
|====
|
||||
|
||||
The application mustnot: pass a SPIR-V module containing any of the
|
||||
|
@ -100,24 +100,24 @@ following rules:
|
|||
** *Device*
|
||||
** *Workgroup*
|
||||
** *Invocation*
|
||||
* The *OriginLowerLeft* execution mode mustnot: be used; fragment entry
|
||||
points must: declare *OriginUpperLeft*.
|
||||
* The *PixelCenterInteger* execution mode mustnot: be used. Pixels are
|
||||
* The code:OriginLowerLeft execution mode mustnot: be used; fragment entry
|
||||
points must: declare code:OriginUpperLeft.
|
||||
* The code:PixelCenterInteger execution mode mustnot: be used. Pixels are
|
||||
always centered at half-integer coordinates.
|
||||
* Images
|
||||
** *OpTypeImage* must: declare a scalar 32-bit float or 32-bit integer
|
||||
type for the ``Sampled Type''. (RelaxedPrecision can: be applied to a
|
||||
sampling instruction and to the variable holding the result of a
|
||||
** code:OpTypeImage must: declare a scalar 32-bit float or 32-bit integer
|
||||
type for the ``Sampled Type''. (code:RelaxedPrecision can: be applied
|
||||
to a sampling instruction and to the variable holding the result of a
|
||||
sampling instruction.)
|
||||
** *OpSampledImage* must: only consume an ``Image'' operand whose type has
|
||||
its ``Sampled'' operand set to 1.
|
||||
** The ``(u, v)'' coordinates used for a *SubpassData* must: be the <id>
|
||||
** code:OpSampledImage must: only consume an ``Image'' operand whose type
|
||||
has its ``Sampled'' operand set to 1.
|
||||
** The ``(u, v)'' coordinates used for a code:SubpassData must: be the <id>
|
||||
of a constant vector (0, 0), or if a layer coordinate is used, must: be
|
||||
a vector that was formed with constant 0 for the ``u'' and ``v''
|
||||
components.
|
||||
** The ``Depth'' operand of *OpTypeImage* is ignored.
|
||||
** The ``Depth'' operand of code:OpTypeImage is ignored.
|
||||
* Decorations
|
||||
** The *GLSLShared* and *GLSLPacked* decorations mustnot: be used.
|
||||
** The code:GLSLShared and code:GLSLPacked decorations mustnot: be used.
|
||||
** The code:Flat, code:NoPerspective, code:Sample, and code:Centroid
|
||||
decorations mustnot: be used on variables with storage class other than
|
||||
code:Input or on variables used in the interface of non-fragment shader
|
||||
|
@ -125,10 +125,14 @@ following rules:
|
|||
** The code:Patch decoration mustnot: be used on variables in the
|
||||
interface of a vertex, geometry, or fragment shader stage's entry
|
||||
point.
|
||||
- *OpTypeRuntimeArray* must: only be used for the last member of an
|
||||
*OpTypeStruct* in the *Uniform* storage class.
|
||||
- Linkage: See <<interfaces,Shader Interfaces>> for additional linking and
|
||||
* code:OpTypeRuntimeArray must: only be used for the last member of an
|
||||
code:OpTypeStruct in the code:Uniform storage class.
|
||||
* Linkage: See <<interfaces,Shader Interfaces>> for additional linking and
|
||||
validation rules.
|
||||
* Compute Shaders
|
||||
** For each compute shader entry point, either a code:LocalSize execution mode
|
||||
or an object decorated with the code:WorkgroupSize decoration must: be
|
||||
specified.
|
||||
|
||||
|
||||
[[spirvenv-precision-operation]]
|
||||
|
@ -156,29 +160,29 @@ required: to be at least as follows, unless decorated with RelaxedPrecision:
|
|||
.Precision of core SPIR-V Instructions
|
||||
[options="header"]
|
||||
|====
|
||||
|Instruction | Precision
|
||||
|*OpFAdd* | Correctly rounded.
|
||||
|*OpFSub* | Correctly rounded.
|
||||
|*OpFMul* | Correctly rounded.
|
||||
|*OpFOrdEqual*, *OpFUnordEqual* | Correct result.
|
||||
|*OpFOrdLessThan*, *OpFUnordLessThan* | Correct result.
|
||||
|*OpFOrdGreaterThan*, *OpFUnordGreaterThan* | Correct result.
|
||||
|*OpFOrdLessThanEqual*, *OpFUnordLessThanEqual* | Correct result.
|
||||
|*OpFOrdGreaterThanEqual*, *OpFUnordGreaterThanEqual*| Correct result.
|
||||
|*OpFDiv* | 2.5 ULP for b in the range [2^-126^, 2^126^].
|
||||
|conversions between types | Correctly rounded.
|
||||
| Instruction | Precision
|
||||
| code:OpFAdd | Correctly rounded.
|
||||
| code:OpFSub | Correctly rounded.
|
||||
| code:OpFMul | Correctly rounded.
|
||||
| code:OpFOrdEqual, code:OpFUnordEqual | Correct result.
|
||||
| code:OpFOrdLessThan, code:OpFUnordLessThan | Correct result.
|
||||
| code:OpFOrdGreaterThan, code:OpFUnordGreaterThan | Correct result.
|
||||
| code:OpFOrdLessThanEqual, code:OpFUnordLessThanEqual | Correct result.
|
||||
| code:OpFOrdGreaterThanEqual, code:OpFUnordGreaterThanEqual| Correct result.
|
||||
| code:OpFDiv | 2.5 ULP for b in the range [2^-126^, 2^126^].
|
||||
| conversions between types | Correctly rounded.
|
||||
|====
|
||||
|
||||
Precision of GLSL.std.450 Instructions
|
||||
[options="header"]
|
||||
|====
|
||||
|Instruction | Precision
|
||||
|*fma*() | Inherited from *OpFMul* followed by *OpFAdd*.
|
||||
|*exp*(x), *exp2*(x) | latexmath:[$(3 + 2 \times \|x\|)$] ULP.
|
||||
|*log*(), *log2*() | 3 ULP outside the range [0.5, 2.0]. Absolute error < 2^-21^ inside the range [0.5, 2.0].
|
||||
|*pow*(x, y) | Inherited from *exp2* (y × *log2* (x)).
|
||||
|*sqrt*() | Inherited from 1.0 / *inversesqrt*().
|
||||
|*inversesqrt*() | 2 ULP.
|
||||
|Instruction | Precision
|
||||
| code:fma() | Inherited from code:OpFMul followed by code:OpFAdd.
|
||||
| code:exp(x), code:exp2(x) | latexmath:[$(3 + 2 \times \|x\|)$] ULP.
|
||||
| code:log(), code:log2() | 3 ULP outside the range [0.5, 2.0]. Absolute error < 2^-21^ inside the range [0.5, 2.0].
|
||||
| code:pow(x, y) | Inherited from code:exp2(y × code:log2(x)).
|
||||
| code:sqrt() | Inherited from 1.0 / code:inversesqrt().
|
||||
| code:inversesqrt() | 2 ULP.
|
||||
|====
|
||||
|
||||
GLSL.std.450 extended instructions specifically defined in terms of the
|
||||
|
|
|
@ -98,7 +98,7 @@ parameters.
|
|||
|
||||
include::../validity/protos/vkCmdClearAttachments.txt[]
|
||||
|
||||
The sname:VkClearRect struct is defined as follows:
|
||||
The sname:VkClearRect structure is defined as:
|
||||
|
||||
include::../structs/VkClearRect.txt[]
|
||||
|
||||
|
@ -111,7 +111,7 @@ counting from the base layer of the attachment image view are cleared.
|
|||
|
||||
include::../validity/structs/VkClearRect.txt[]
|
||||
|
||||
The sname:VkClearAttachment struct is defined as follows:
|
||||
The sname:VkClearAttachment structure is defined as:
|
||||
|
||||
include::../structs/VkClearAttachment.txt[]
|
||||
|
||||
|
@ -147,7 +147,7 @@ include::../validity/structs/VkClearAttachment.txt[]
|
|||
[[clears-values]]
|
||||
== Clear Values
|
||||
|
||||
The definition of sname:VkClearColorValue is as follows:
|
||||
The sname:VkClearColorValue structure is defined as:
|
||||
|
||||
include::../structs/VkClearColorValue.txt[]
|
||||
|
||||
|
@ -170,12 +170,11 @@ The four array elements of the clear color map to R, G, B, and A components
|
|||
of image formats, in order.
|
||||
|
||||
If the image has more than one sample, the same value is written to all
|
||||
samples for any pixels being cleared. The ftext:vkClear*Image commands do
|
||||
not support compressed image formats.
|
||||
samples for any pixels being cleared.
|
||||
|
||||
include::../validity/structs/VkClearColorValue.txt[]
|
||||
|
||||
The definition of sname:VkClearDepthStencilValue is as follows:
|
||||
The sname:VkClearDepthStencilValue structure is defined as:
|
||||
|
||||
include::../structs/VkClearDepthStencilValue.txt[]
|
||||
|
||||
|
@ -190,8 +189,10 @@ include::../structs/VkClearDepthStencilValue.txt[]
|
|||
include::../validity/structs/VkClearDepthStencilValue.txt[]
|
||||
|
||||
Some parts of the API require either color or depth/stencil clear values,
|
||||
depending on the attachment. For this the sname:VkClearValue union is
|
||||
defined as follows:
|
||||
depending on the attachment. The sname:VkClearValue union represents such
|
||||
values.
|
||||
|
||||
The sname:VkClearValue union is defined as:
|
||||
|
||||
include::../structs/VkClearValue.txt[]
|
||||
|
||||
|
|
|
@ -87,15 +87,14 @@ include::../protos/vkCreateCommandPool.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateCommandPool.txt[]
|
||||
|
||||
The sname:VkCommandPoolCreateInfo structure is defined as follows:
|
||||
The sname:VkCommandPoolCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkCommandPoolCreateInfo.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is a combination of bitfield flags indicating usage behavior
|
||||
for the pool and command buffers allocated from it. Possible values
|
||||
include:
|
||||
* pname:flags is a bitmask indicating usage behavior for the pool and
|
||||
command buffers allocated from it. Bits which can: be set include:
|
||||
+
|
||||
--
|
||||
include::../enums/VkCommandPoolCreateFlagBits.txt[]
|
||||
|
@ -137,7 +136,8 @@ command buffers allocated from the command pool back to the command pool.
|
|||
All command buffers that have been allocated from the command pool are put
|
||||
in the initial state.
|
||||
|
||||
pname:flags is of type elink:VkCommandPoolResetFlags, which is defined as:
|
||||
pname:flags is a bitmask controlling the operation. Bits which which can: be
|
||||
set include:
|
||||
|
||||
include::../enums/VkCommandPoolResetFlagBits.txt[]
|
||||
|
||||
|
@ -174,7 +174,7 @@ include::../protos/vkAllocateCommandBuffers.txt[]
|
|||
allocation.
|
||||
* pname:pCommandBuffers is a pointer to an array of sname:VkCommandBuffer
|
||||
handles in which the resulting command buffer objects are returned. The
|
||||
array must be at least the length specified by the
|
||||
array must: be at least the length specified by the
|
||||
pname:commandBufferCount member of pname:pAllocateInfo. Each allocated
|
||||
command buffer begins in the initial state.
|
||||
|
||||
|
@ -203,7 +203,8 @@ include::../protos/vkResetCommandBuffer.txt[]
|
|||
|
||||
* pname:commandBuffer is the command buffer to reset. The command buffer
|
||||
can: be in any state, and is put in the initial state.
|
||||
* pname:flags is of type elink:VkCommandBufferResetFlags:
|
||||
* pname:flags is a bitmask controlling the reset operation. Bits which
|
||||
can: be set include:
|
||||
+
|
||||
--
|
||||
include::../enums/VkCommandBufferResetFlagBits.txt[]
|
||||
|
@ -252,8 +253,8 @@ include::../structs/VkCommandBufferBeginInfo.txt[]
|
|||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is a combination of bitfield flags indicating usage behavior
|
||||
for the command buffer. Possible values include:
|
||||
* pname:flags is a bitmask indicating usage behavior for the command
|
||||
buffer. Bits which can: be set include:
|
||||
+
|
||||
--
|
||||
include::../enums/VkCommandBufferUsageFlagBits.txt[]
|
||||
|
@ -292,7 +293,7 @@ include::../structs/VkCommandBufferInheritanceInfo.txt[]
|
|||
* pname:framebuffer refers to the sname:VkFramebuffer object that the
|
||||
sname:VkCommandBuffer will be rendering to if it was allocated with
|
||||
the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set. It can:
|
||||
be sname:VK_NULL_HANDLE if the framebuffer is not known.
|
||||
be code:VK_NULL_HANDLE if the framebuffer is not known.
|
||||
+
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -399,10 +400,10 @@ include::../protos/vkQueueSubmit.txt[]
|
|||
which describe the work to submit. All work described by pname:pSubmits
|
||||
must: be submitted to the queue before the command returns.
|
||||
* pname:fence is an optional handle to a fence. If pname:fence is not
|
||||
sname:VK_NULL_HANDLE, the fence is signaled when execution of all
|
||||
code:VK_NULL_HANDLE, the fence is signaled when execution of all
|
||||
sname:VkSubmitInfo::pname:pCommandBuffers members of pname:pSubmits is
|
||||
completed. If pname:submitCount is zero but pname:fence is not
|
||||
sname:VK_NULL_HANDLE, the fence will still be submitted to the queue and
|
||||
code:VK_NULL_HANDLE, the fence will still be submitted to the queue and
|
||||
will become signaled when all work previously submitted to the queue has
|
||||
completed.
|
||||
|
||||
|
@ -443,8 +444,9 @@ signalled before executing any work, followed by a number of command buffers
|
|||
that will be executed, and finally, zero or more semaphores that will be
|
||||
signaled after command buffer execution completes. Each batch is represented
|
||||
as an instance of the slink:VkSubmitInfo structure stored in an array, the
|
||||
address of which is passed in pname:pSubmitInfo. The definition of
|
||||
sname:VkSubmitInfo is:
|
||||
address of which is passed in pname:pSubmitInfo.
|
||||
|
||||
The sname:VkSubmitInfo structure is defined as:
|
||||
|
||||
include::../structs/VkSubmitInfo.txt[]
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ the copy regions overlap in memory.
|
|||
|
||||
include::../validity/protos/vkCmdCopyBuffer.txt[]
|
||||
|
||||
Each element of pname:pRegions is a structure defined as:
|
||||
The sname:VkBufferCopy structure is defined as:
|
||||
|
||||
include::../structs/VkBufferCopy.txt[]
|
||||
|
||||
|
@ -117,7 +117,7 @@ the same image or alias the same memory.
|
|||
|
||||
include::../validity/protos/vkCmdCopyImage.txt[]
|
||||
|
||||
Each element of pname:pRegions is a structure defined as:
|
||||
The sname:VkImageCopy structure is defined as:
|
||||
|
||||
include::../structs/VkImageCopy.txt[]
|
||||
|
||||
|
@ -281,19 +281,19 @@ When copying to or from a depth or stencil aspect, the data in buffer
|
|||
memory uses a layout that is a (mostly) tightly packed representation of
|
||||
the depth or stencil data. Specifically:
|
||||
|
||||
* data copied to or from the stencil aspect of any depth/stencil format
|
||||
is tightly packed with one ename:VK_FORMAT_S8_UINT value per texel.
|
||||
* data copied to or from the depth aspect of a ename:VK_FORMAT_D16_UNORM
|
||||
or ename:VK_FORMAT_D16_UNORM_S8_UINT format is tightly packed with one
|
||||
ename:VK_FORMAT_D16_UNORM value per texel.
|
||||
* data copied to or from the depth aspect of a ename:VK_FORMAT_D32_SFLOAT
|
||||
or ename:VK_FORMAT_D32_SFLOAT_S8_UINT format is tightly packed with
|
||||
one ename:VK_FORMAT_D32_SFLOAT value per texel.
|
||||
* data copied to or from the depth aspect of a
|
||||
ename:VK_FORMAT_X8_D24_UNORM_PACK32 or
|
||||
ename:VK_FORMAT_D24_UNORM_S8_UINT format is packed with one 32-bit word
|
||||
per texel with the D24 value in the LSBs of the word, and undefined
|
||||
values in the eight MSBs.
|
||||
* data copied to or from the stencil aspect of any depth/stencil format
|
||||
is tightly packed with one ename:VK_FORMAT_S8_UINT value per texel.
|
||||
* data copied to or from the depth aspect of a ename:VK_FORMAT_D16_UNORM
|
||||
or ename:VK_FORMAT_D16_UNORM_S8_UINT format is tightly packed with one
|
||||
ename:VK_FORMAT_D16_UNORM value per texel.
|
||||
* data copied to or from the depth aspect of a ename:VK_FORMAT_D32_SFLOAT
|
||||
or ename:VK_FORMAT_D32_SFLOAT_S8_UINT format is tightly packed with
|
||||
one ename:VK_FORMAT_D32_SFLOAT value per texel.
|
||||
* data copied to or from the depth aspect of a
|
||||
ename:VK_FORMAT_X8_D24_UNORM_PACK32 or
|
||||
ename:VK_FORMAT_D24_UNORM_S8_UINT format is packed with one 32-bit word
|
||||
per texel with the D24 value in the LSBs of the word, and undefined
|
||||
values in the eight MSBs.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -404,7 +404,7 @@ include::../validity/protos/vkCmdBlitImage.txt[]
|
|||
fname:vkCmdBlitImage mustnot: be used for multisampled source or destination
|
||||
images. Use flink:vkCmdResolveImage for this purpose.
|
||||
|
||||
Each element of pname:pRegions is a structure defined as:
|
||||
The sname:VkImageBlit structure is defined as:
|
||||
|
||||
include::../structs/VkImageBlit.txt[]
|
||||
|
||||
|
@ -491,7 +491,7 @@ include::../protos/vkCmdResolveImage.txt[]
|
|||
|
||||
include::../validity/protos/vkCmdResolveImage.txt[]
|
||||
|
||||
Each element of pname:pRegions is a structure defined as:
|
||||
The sname:VkImageResolve structure is defined as:
|
||||
|
||||
include::../structs/VkImageResolve.txt[]
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ from within shaders bound to pipelines.
|
|||
Loads from storage images do not use samplers and are unfiltered and do not
|
||||
support coordinate wrapping or clamping. Loads are supported in all shader
|
||||
stages for image formats which report support for the
|
||||
<<features-formats-properties-storage,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT>>
|
||||
<<features-formats-properties,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT>>
|
||||
feature bit via flink:vkGetPhysicalDeviceFormatProperties.
|
||||
|
||||
Stores to storage images are supported in compute shaders for image
|
||||
|
@ -108,7 +108,7 @@ ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT feature.
|
|||
|
||||
Storage images also support atomic operations in compute shaders for
|
||||
image formats which report support for the
|
||||
<<features-formats-properties-storageatomic,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT>>
|
||||
<<features-formats-properties,ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT>>
|
||||
feature.
|
||||
|
||||
Load and store operations on storage images can: only be done on images in
|
||||
|
@ -578,7 +578,7 @@ include::../structs/VkDescriptorSetLayoutCreateInfo.txt[]
|
|||
|
||||
include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[]
|
||||
|
||||
The definition of the sname:VkDescriptorSetLayoutBinding structure is:
|
||||
The sname:VkDescriptorSetLayoutBinding structure is defined as:
|
||||
|
||||
include::../structs/VkDescriptorSetLayoutBinding.txt[]
|
||||
|
||||
|
@ -815,7 +815,7 @@ include::../protos/vkCreatePipelineLayout.txt[]
|
|||
|
||||
include::../validity/protos/vkCreatePipelineLayout.txt[]
|
||||
|
||||
The definition of the slink:VkPipelineLayoutCreateInfo structure is:
|
||||
The slink:VkPipelineLayoutCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineLayoutCreateInfo.txt[]
|
||||
|
||||
|
@ -843,7 +843,7 @@ pipelines that is expected to outperform memory-backed resource updates.
|
|||
|
||||
include::../validity/structs/VkPipelineLayoutCreateInfo.txt[]
|
||||
|
||||
The definition of sname:VkPushConstantRange is:
|
||||
The sname:VkPushConstantRange structure is defined as:
|
||||
|
||||
include::../structs/VkPushConstantRange.txt[]
|
||||
|
||||
|
@ -1114,7 +1114,7 @@ allocated from the pool mustnot: be individually freed back to the pool,
|
|||
i.e. only fname:vkAllocateDescriptorSets and fname:vkResetDescriptorPool are
|
||||
allowed.
|
||||
|
||||
The definition of the sname:VkDescriptorPoolSize structure is:
|
||||
The sname:VkDescriptorPoolSize structure is defined as:
|
||||
|
||||
include::../structs/VkDescriptorPoolSize.txt[]
|
||||
|
||||
|
@ -1149,7 +1149,7 @@ include::../protos/vkAllocateDescriptorSets.txt[]
|
|||
allocation.
|
||||
* pname:pDescriptorSets is a pointer to an array of sname:VkDescriptorSet
|
||||
handles in which the resulting descriptor set objects are returned. The
|
||||
array must be at least the length specified by the
|
||||
array must: be at least the length specified by the
|
||||
pname:descriptorSetCount member of pname:pAllocateInfo.
|
||||
|
||||
include::../validity/protos/vkAllocateDescriptorSets.txt[]
|
||||
|
@ -1191,7 +1191,7 @@ include::../protos/vkFreeDescriptorSets.txt[]
|
|||
sets were allocated.
|
||||
* pname:descriptorSetCount is the number of elements in the
|
||||
pname:pDescriptorSets array.
|
||||
* pname:pDescriptorSets is an array of handles to slink:VkDescriptorSet
|
||||
* pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet
|
||||
objects. All elements of pname:pDescriptorSets must: have been allocated
|
||||
from pname:descriptorPool.
|
||||
|
||||
|
@ -1219,7 +1219,7 @@ include::../protos/vkResetDescriptorPool.txt[]
|
|||
|
||||
* pname:device is the logical device that owns the descriptor pool.
|
||||
* pname:descriptorPool is the descriptor pool to be reset.
|
||||
* pname:flags is currently unused and must be zero.
|
||||
* pname:flags is currently unused and must: be zero.
|
||||
|
||||
include::../validity/protos/vkResetDescriptorPool.txt[]
|
||||
|
||||
|
@ -1259,7 +1259,7 @@ Each element in the pname:pDescriptorWrites array describes an operation
|
|||
updating the descriptor set using descriptors for resources specified in the
|
||||
structure.
|
||||
|
||||
The definition of sname:VkWriteDescriptorSet is:
|
||||
The sname:VkWriteDescriptorSet structure is defined as:
|
||||
|
||||
include::../structs/VkWriteDescriptorSet.txt[]
|
||||
|
||||
|
@ -1297,10 +1297,11 @@ structure, as specified below.
|
|||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:pBufferInfo array
|
||||
will be used to update the descriptors, and other arrays will be ignored.
|
||||
Each element of pname:pBufferInfo is of type sname:VkDescriptorBufferInfo
|
||||
and is defined as:
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the elements of the
|
||||
pname:pBufferInfo array of sname:VkDescriptorBufferInfo structures will be
|
||||
used to update the descriptors, and other arrays will be ignored.
|
||||
|
||||
The sname:VkDescriptorBufferInfo structure is defined as:
|
||||
|
||||
include::../structs/VkDescriptorBufferInfo.txt[]
|
||||
|
||||
|
@ -1329,9 +1330,10 @@ ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
|||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the elements of the
|
||||
pname:pImageInfo array will be used to update the descriptors, and other
|
||||
arrays will be ignored. Each element of pname:pImageInfo is of type
|
||||
sname:VkDescriptorImageInfo and is defined as:
|
||||
pname:pImageInfo array of sname:VkDescriptorImageInfo structures will be
|
||||
used to update the descriptors, and other arrays will be ignored.
|
||||
|
||||
The sname:VkDescriptorImageInfo structure is defined as:
|
||||
|
||||
include::../structs/VkDescriptorImageInfo.txt[]
|
||||
|
||||
|
@ -1369,7 +1371,9 @@ immutable samplers or must: all not use immutable samplers.
|
|||
|
||||
Each element in the pname:pDescriptorCopies array is a
|
||||
slink:VkCopyDescriptorSet structure describing an operation copying
|
||||
descriptors between sets. The definition of sname:VkCopyDescriptorSet is:
|
||||
descriptors between sets.
|
||||
|
||||
The sname:VkCopyDescriptorSet structure is defined as:
|
||||
|
||||
include::../structs/VkCopyDescriptorSet.txt[]
|
||||
|
||||
|
@ -1408,8 +1412,8 @@ include::../protos/vkCmdBindDescriptorSets.txt[]
|
|||
bound.
|
||||
* pname:descriptorSetCount is the number of elements in the
|
||||
pname:pDescriptorSets array.
|
||||
* pname:pDescriptorSets is a pointer to an array of slink:VkDescriptorSet
|
||||
structures describing the descriptor sets to write to.
|
||||
* pname:pDescriptorSets is an array of handles to sname:VkDescriptorSet
|
||||
objects describing the descriptor sets to write to.
|
||||
* pname:dynamicOffsetCount is the number of dynamic offsets
|
||||
in the pname:pDynamicOffsets array.
|
||||
* pname:pDynamicOffsets is a pointer to an array of basetype:uint32_t
|
||||
|
|
|
@ -26,7 +26,7 @@ include::../protos/vkEnumeratePhysicalDevices.txt[]
|
|||
* pname:pPhysicalDeviceCount is a pointer to an integer related to the
|
||||
number of physical devices available or queried, as described below.
|
||||
* pname:pPhysicalDevices is either `NULL` or a pointer to an
|
||||
array of sname:VkPhysicalDevice structures.
|
||||
array of sname:VkPhysicalDevice handles.
|
||||
|
||||
If pname:pPhysicalDevices is `NULL`, then the number of physical devices
|
||||
available is returned in pname:pPhysicalDeviceCount. Otherwise,
|
||||
|
@ -51,17 +51,15 @@ include::../protos/vkGetPhysicalDeviceProperties.txt[]
|
|||
* pname:physicalDevice is the handle to the physical device whose
|
||||
properties will be queried.
|
||||
* pname:pProperties points to an instance of the
|
||||
sname:VkPhysicalDeviceProperties structure, that will be filled with
|
||||
slink:VkPhysicalDeviceProperties structure, that will be filled with
|
||||
returned information.
|
||||
|
||||
include::../validity/protos/vkGetPhysicalDeviceProperties.txt[]
|
||||
|
||||
The definition of sname:VkPhysicalDeviceProperties is:
|
||||
The sname:VkPhysicalDeviceProperties structure is defined as:
|
||||
|
||||
include::../structs/VkPhysicalDeviceProperties.txt[]
|
||||
|
||||
The members of sname:VkPhysicalDeviceProperties have the following meanings:
|
||||
|
||||
* pname:apiVersion is the version of {apiname} supported by the device,
|
||||
encoded as described in the <<fundamentals-versionnum,API Version
|
||||
Numbers and Semantics>> section.
|
||||
|
@ -77,19 +75,19 @@ The members of sname:VkPhysicalDeviceProperties have the following meanings:
|
|||
* pname:pipelineCacheUUID is an array of size ename:VK_UUID_SIZE,
|
||||
containing 8-bit values that represent a universally unique identifier
|
||||
for the device.
|
||||
* pname:limits is the sname:VkPhysicalDeviceLimits structure which
|
||||
* pname:limits is the slink:VkPhysicalDeviceLimits structure which
|
||||
specifies device-specific limits of the physical device. See
|
||||
<<features-limits,Limits>> for details.
|
||||
* pname:sparseProperties is the sname:VkPhysicalDeviceSparseProperties
|
||||
* pname:sparseProperties is the slink:VkPhysicalDeviceSparseProperties
|
||||
structure which specifies various sparse related properties of the
|
||||
physical device. See <<features-sparseproperties,Sparse Properties>> for
|
||||
details.
|
||||
physical device. See <<sparsememory-physicalprops,Sparse Properties>>
|
||||
for details.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceProperties.txt[]
|
||||
|
||||
The pname:vendorID and pname:deviceID fields are provided to allow
|
||||
applications to adapt to device characteristics that are not
|
||||
adequately exposed by other Vulkan queries. These may include
|
||||
adequately exposed by other Vulkan queries. These may: include
|
||||
performance profiles, hardware errata, or other characteristics.
|
||||
In PCI-based implementations, the low sixteen bits of pname:vendorID
|
||||
and pname:deviceID must: contain (respectively) the PCI vendor and
|
||||
|
@ -140,7 +138,7 @@ include::../enums/VkPhysicalDeviceType.txt[]
|
|||
|
||||
The physical device type is advertised for informational purposes only, and
|
||||
does not directly affect the operation of the system. However, the device
|
||||
type may correlate with other advertised properties or capabilities of the
|
||||
type may: correlate with other advertised properties or capabilities of the
|
||||
system, such as how many memory heaps there are.
|
||||
|
||||
Properties of queues available on a physical device are queried by calling:
|
||||
|
@ -166,12 +164,10 @@ written.
|
|||
|
||||
include::../validity/protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[]
|
||||
|
||||
The definition of sname:VkQueueFamilyProperties is:
|
||||
The sname:VkQueueFamilyProperties structure is defined as:
|
||||
|
||||
include::../structs/VkQueueFamilyProperties.txt[]
|
||||
|
||||
The members of sname:VkQueueFamilyProperties have the following meanings:
|
||||
|
||||
* pname:queueFlags contains flags indicating the capabilities of the
|
||||
queues in this queue family.
|
||||
* pname:queueCount is the unsigned integer count of queues in this
|
||||
|
@ -231,10 +227,10 @@ Possible values of pname:minImageTransferGranularity are:
|
|||
queues. In this case, the following restrictions apply to all offset and
|
||||
extent parameters of image transfer operations:
|
||||
|
||||
** The pname:x, pname:y, and pname:z members of a sname:VkOffset3D
|
||||
** The pname:x, pname:y, and pname:z members of a slink:VkOffset3D
|
||||
parameter must: always be zero.
|
||||
** The pname:width, pname:height, and pname:depth members of a
|
||||
sname:VkExtent3D parameter must: always match the width, height, and
|
||||
slink:VkExtent3D parameter must: always match the width, height, and
|
||||
depth of the image subresource corresponding to the parameter,
|
||||
respectively.
|
||||
|
||||
|
@ -242,18 +238,18 @@ Possible values of pname:minImageTransferGranularity are:
|
|||
and latexmath:[$Az$] are all integer powers of two. In this case the
|
||||
following restrictions apply to all image transfer operations:
|
||||
|
||||
** pname:x, pname:y, and pname:z of a sname:VkOffset3D parameter must: be
|
||||
** pname:x, pname:y, and pname:z of a slink:VkOffset3D parameter must: be
|
||||
integer multiples of latexmath:[$Ax$], latexmath:[$Ay$], and
|
||||
latexmath:[$Az$], respectively.
|
||||
** pname:width of a sname:VkExtent3D parameter must: be an integer
|
||||
** pname:width of a slink:VkExtent3D parameter must: be an integer
|
||||
multiple of latexmath:[$Ax$], or else latexmath:[$(x + width)$] must:
|
||||
equal the width of the image subresource corresponding to the
|
||||
parameter.
|
||||
** pname:height of a sname:VkExtent3D parameter must: be an integer
|
||||
** pname:height of a slink:VkExtent3D parameter must: be an integer
|
||||
multiple of latexmath:[$Ay$], or else latexmath:[$(y + height)$] must:
|
||||
equal the height of the image subresource corresponding to the
|
||||
parameter.
|
||||
** pname:depth of a sname:VkExtent3D parameter must: be an integer
|
||||
** pname:depth of a slink:VkExtent3D parameter must: be an integer
|
||||
multiple of latexmath:[$Az$], or else latexmath:[$(z + depth)$] must:
|
||||
equal the depth of the image subresource corresponding to the
|
||||
parameter.
|
||||
|
@ -309,7 +305,7 @@ include::../protos/vkCreateDevice.txt[]
|
|||
call to fname:vkEnumeratePhysicalDevices (see
|
||||
<<devsandqueues-physical-device-enumeration, Physical Device
|
||||
Enumeration>>).
|
||||
* pname:pCreateInfo is a pointer to a sname:VkDeviceCreateInfo structure
|
||||
* pname:pCreateInfo is a pointer to a slink:VkDeviceCreateInfo structure
|
||||
containing information about how to create the device.
|
||||
* pname:pAllocator controls host memory allocation as described in the
|
||||
<<memory-allocation, Memory Allocation>> chapter.
|
||||
|
@ -318,12 +314,10 @@ include::../protos/vkCreateDevice.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateDevice.txt[]
|
||||
|
||||
The definition of sname:VkDeviceCreateInfo is:
|
||||
The sname:VkDeviceCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkDeviceCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkDeviceCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -332,7 +326,7 @@ The members of sname:VkDeviceCreateInfo have the following meanings:
|
|||
<<devsandqueues-queue-creation,Queue Creation>> section below for
|
||||
further details.
|
||||
* pname:pQueueCreateInfos is a pointer to an array of
|
||||
sname:VkDeviceQueueCreateInfo structures describing the queues that are
|
||||
slink:VkDeviceQueueCreateInfo structures describing the queues that are
|
||||
requested to be created along with the logical device. Refer to the
|
||||
<<devsandqueues-queue-creation,Queue Creation>> section below for
|
||||
further details.
|
||||
|
@ -346,10 +340,10 @@ The members of sname:VkDeviceCreateInfo have the following meanings:
|
|||
* pname:ppEnabledExtensionNames is a pointer to an array of
|
||||
pname:enabledExtensionCount null-terminated UTF-8 strings containing the
|
||||
names of extensions to enable for the created device. See the
|
||||
<<querying-layers-and-extensions,Querying Layers and Extensions>>
|
||||
chapter for further details.
|
||||
<<extended-functionality-extensions,Extensions>> section for further
|
||||
details.
|
||||
* pname:pEnabledFeatures is `NULL` or a pointer to a
|
||||
sname:VkPhysicalDeviceFeatures structure that contains boolean
|
||||
slink:VkPhysicalDeviceFeatures structure that contains boolean
|
||||
indicators of all the features to be enabled. Refer to the
|
||||
<<features-features,Features>> section for further details.
|
||||
|
||||
|
@ -440,12 +434,12 @@ or that the error is recoverable.
|
|||
|
||||
When a device is lost, its child objects are not implicitly destroyed and
|
||||
their handles are still valid. Those objects must: still be destroyed before
|
||||
their parents or the device can: be destroyed (see
|
||||
<<objectmodel-lifetime,Lifetime>>). The host address space corresponding to
|
||||
device memory mapped using flink:vkMapMemory is still valid, and host memory
|
||||
accesses to these mapped regions are still valid, but the contents are
|
||||
undefined. It is still legal to call any API command on the device and child
|
||||
objects.
|
||||
their parents or the device can: be destroyed (see the
|
||||
<<fundamentals-objectmodel-lifetime,Object Lifetime>> section). The host
|
||||
address space corresponding to device memory mapped using flink:vkMapMemory
|
||||
is still valid, and host memory accesses to these mapped regions are still
|
||||
valid, but the contents are undefined. It is still legal to call any API
|
||||
command on the device and child objects.
|
||||
|
||||
Once a device is lost, command execution may: fail, and commands that return
|
||||
a basetype:VkResult may: return ename:VK_ERROR_DEVICE_LOST. Commands that do
|
||||
|
@ -544,14 +538,13 @@ device. This is described in the following section.
|
|||
|
||||
Creating a logical device also creates the queues associated with that
|
||||
device. The queues to create are described by a set of
|
||||
sname:VkDeviceQueueCreateInfo structures that are passed to
|
||||
flink:vkCreateDevice in pname:pQueueCreateInfos. The definition of
|
||||
sname:VkDeviceQueueCreateInfo is:
|
||||
slink:VkDeviceQueueCreateInfo structures that are passed to
|
||||
flink:vkCreateDevice in pname:pQueueCreateInfos.
|
||||
|
||||
The sname:VkDeviceQueueCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkDeviceQueueCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkDeviceQueueCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -597,7 +590,7 @@ sname:VkQueue handle from as described in the previous section.
|
|||
|
||||
When creating a sname:VkCommandPool object (see
|
||||
<<commandbuffers-pools,Command Pools>>), a queue family index is specified
|
||||
in the sname:VkCommandPoolCreateInfo structure. Command buffers from this
|
||||
in the slink:VkCommandPoolCreateInfo structure. Command buffers from this
|
||||
pool can: only be submitted on queues corresponding to this queue family.
|
||||
|
||||
When creating sname:VkImage (see <<resources-images,Images>>) and
|
||||
|
@ -617,7 +610,7 @@ Sharing>> section for details.
|
|||
=== Queue Priority
|
||||
|
||||
Each queue is assigned a priority, as set in the
|
||||
sname:VkDeviceQueueCreateInfo structures when creating the device. The
|
||||
slink:VkDeviceQueueCreateInfo structures when creating the device. The
|
||||
priority of each queue is a normalized floating point value between 0.0 and
|
||||
1.0, which is then translated to a discrete priority level by the
|
||||
implementation. Higher values indicate a higher priority, with 0.0 being the
|
||||
|
@ -663,7 +656,7 @@ chapter.
|
|||
=== Sparse Memory Binding
|
||||
|
||||
In {apiname} it is possible to sparsely bind memory to buffers and
|
||||
images as described in the <<sparsemem,Sparse Resource>> chapter. Sparse
|
||||
images as described in the <<sparsememory,Sparse Resource>> chapter. Sparse
|
||||
memory binding is a queue operation. A queue whose flags include the
|
||||
ename:VK_QUEUE_SPARSE_BINDING_BIT must: be able to support the
|
||||
mapping of a virtual address to a physical address on the device. This
|
||||
|
|
|
@ -44,7 +44,7 @@ at pname:offset.
|
|||
|
||||
include::../validity/protos/vkCmdDispatchIndirect.txt[]
|
||||
|
||||
The definition of sname:VkDispatchIndirectCommand is:
|
||||
The sname:VkDispatchIndirectCommand structure is defined as:
|
||||
|
||||
include::../structs/VkDispatchIndirectCommand.txt[]
|
||||
|
||||
|
|
|
@ -336,8 +336,8 @@ ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, or
|
|||
ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY is rendered in
|
||||
one of several ways, such as outlining its border or filling its interior.
|
||||
The order of vertices in such a primitive is significant during
|
||||
<<primsrast-polygons-basic,polygon rasterization>> and <<ref-tbd,fragment
|
||||
shading>>.
|
||||
<<primsrast-polygons-basic,polygon rasterization>> and
|
||||
<<shaders-fragment,fragment shading>>.
|
||||
|
||||
|
||||
=== Programmable Primitive Shading
|
||||
|
@ -481,7 +481,7 @@ less than or equal to one, pname:stride is ignored.
|
|||
|
||||
include::../validity/protos/vkCmdDrawIndirect.txt[]
|
||||
|
||||
The definition of sname:VkDrawIndirectCommand is:
|
||||
The sname:VkDrawIndirectCommand structure is defined as:
|
||||
|
||||
include::../structs/VkDrawIndirectCommand.txt[]
|
||||
|
||||
|
@ -513,7 +513,7 @@ pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
|
||||
include::../validity/protos/vkCmdDrawIndexedIndirect.txt[]
|
||||
|
||||
The definition of sname:VkDrawIndexedIndirectCommand is
|
||||
The sname:VkDrawIndexedIndirectCommand structure is defined as:
|
||||
|
||||
include::../structs/VkDrawIndexedIndirectCommand.txt[]
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[]
|
|||
|
||||
To enable a instance layer, the name of the layer should be added to the
|
||||
pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating
|
||||
a slink:VkInstance.
|
||||
a sname:VkInstance.
|
||||
|
||||
To query the layers available to a given physical device, call:
|
||||
|
||||
|
@ -61,7 +61,7 @@ include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[]
|
|||
|
||||
To enable a device layer, the name of the layer should be added to the
|
||||
pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating
|
||||
a slink:VkDevice.
|
||||
a sname:VkDevice.
|
||||
|
||||
For both flink:vkEnumerateInstanceLayerProperties and
|
||||
flink:vkEnumerateDeviceLayerProperties, if pname:pProperties is `NULL`, then
|
||||
|
@ -76,7 +76,7 @@ number of layers available, ename:VK_INCOMPLETE will be returned instead of
|
|||
ename:VK_SUCCESS, to indicate that not all the available layer properties
|
||||
were returned.
|
||||
|
||||
The definition of sname:VkLayerProperties is:
|
||||
The sname:VkLayerProperties structure is defined as:
|
||||
|
||||
include::../structs/VkLayerProperties.txt[]
|
||||
|
||||
|
@ -104,6 +104,7 @@ and explicitly enabled layers differ only in the way they are enabled.
|
|||
Explicitly enabling a layer that is implicitly enabled has no additional
|
||||
effect.
|
||||
|
||||
|
||||
[[extended-functionality-extensions]]
|
||||
== Extensions
|
||||
|
||||
|
@ -137,7 +138,7 @@ provided by that layer are returned.
|
|||
|
||||
To enable a instance extension, the name of the extension should be added to
|
||||
the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when
|
||||
creating a slink:VkInstance.
|
||||
creating a sname:VkInstance.
|
||||
|
||||
To query the extensions available to a given physical device, call:
|
||||
|
||||
|
@ -160,7 +161,7 @@ provided by that layer are returned.
|
|||
|
||||
To enable a device layer, the name of the layer should be added to the
|
||||
pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when
|
||||
creating a slink:VkDevice.
|
||||
creating a sname:VkDevice.
|
||||
|
||||
For both flink:vkEnumerateInstanceExtensionProperties and
|
||||
flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`,
|
||||
|
@ -175,7 +176,7 @@ pname:pPropertyCount is smaller than the number of extensions available,
|
|||
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to
|
||||
indicate that not all the available properties were returned.
|
||||
|
||||
The definition of sname:VkExtensionProperties is:
|
||||
The sname:VkExtensionProperties structure is defined as:
|
||||
|
||||
include::../structs/VkExtensionProperties.txt[]
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ performance cost. Application writers should: carefully consider the
|
|||
implications of enabling all supported features.
|
||||
====
|
||||
|
||||
The definition of sname:VkPhysicalDeviceFeatures is:
|
||||
The sname:VkPhysicalDeviceFeatures structure is defined as:
|
||||
|
||||
include::../structs/VkPhysicalDeviceFeatures.txt[]
|
||||
|
||||
|
@ -112,7 +112,7 @@ following features:
|
|||
* [[features-features-imageCubeArray]] pname:imageCubeArray indicates
|
||||
whether image views with a elink:VkImageViewType of
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can: be created, and that the
|
||||
corresponding *SampledCubeArray* and *ImageCubeArray* SPIR-V
|
||||
corresponding code:SampledCubeArray and code:ImageCubeArray SPIR-V
|
||||
capabilities can: be used in shader code.
|
||||
* [[features-features-independentBlend]] pname:independentBlend indicates
|
||||
whether the sname:VkPipelineColorBlendAttachmentState settings are
|
||||
|
@ -556,7 +556,7 @@ check for the supported properties of individual formats.
|
|||
the same multisample rate. This has no effect in situations where a
|
||||
subpass uses any attachments.
|
||||
* [[features-features-inheritedQueries]] pname:inheritedQueries indicates
|
||||
whether a secondary command buffer may be executed while a query is
|
||||
whether a secondary command buffer may: be executed while a query is
|
||||
active.
|
||||
|
||||
include::../validity/structs/VkPhysicalDeviceFeatures.txt[]
|
||||
|
@ -582,7 +582,7 @@ device. These are available in the pname:limits member of the
|
|||
slink:VkPhysicalDeviceProperties structure which is returned from
|
||||
flink:vkGetPhysicalDeviceProperties.
|
||||
|
||||
The definition of sname:VkPhysicalDeviceLimits is:
|
||||
The sname:VkPhysicalDeviceLimits structure is defined as:
|
||||
|
||||
include::../structs/VkPhysicalDeviceLimits.txt[]
|
||||
|
||||
|
@ -1212,8 +1212,8 @@ range.
|
|||
// End of list
|
||||
|
||||
1::
|
||||
For all bitmasks of type elink:VkSampleCountFlags above, the bits which
|
||||
can: be set include:
|
||||
For all bitmasks of type ename:VkSampleCountFlags above, possible
|
||||
values include:
|
||||
+
|
||||
--
|
||||
include::../enums/VkSampleCountFlagBits.txt[]
|
||||
|
@ -3147,7 +3147,7 @@ include::../validity/structs/VkFormatProperties.txt[]
|
|||
|
||||
Implementations must: support at least the following set of
|
||||
features on the listed formats. For images, these features must:
|
||||
be supported for every slink:VkImageType (including arrayed and cube
|
||||
be supported for every elink:VkImageType (including arrayed and cube
|
||||
variants) unless otherwise noted. These features are supported
|
||||
on existing formats without needing to advertise an extension or
|
||||
needing to explicitly enable them. Support for additional functionality
|
||||
|
@ -3481,7 +3481,7 @@ ename:VK_FORMAT_D24_UNORM_S8_UINT and ename:VK_FORMAT_D32_SFLOAT_S8_UINT.
|
|||
<<<
|
||||
|
||||
[[features-formats-mandatory-features-bcn]]
|
||||
.Mandatory format support: BC compressed formats with slink:VkImageType ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D
|
||||
.Mandatory format support: BC compressed formats with elink:VkImageType ename:VK_IMAGE_TYPE_2D and ename:VK_IMAGE_TYPE_3D
|
||||
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
|
||||
|=========================================
|
||||
14+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
|
||||
|
@ -3525,7 +3525,7 @@ one of: this table, <<features-formats-mandatory-features-etc>>, or
|
|||
<<<
|
||||
|
||||
[[features-formats-mandatory-features-etc]]
|
||||
.Mandatory format support: ETC2 and EAC compressed formats with slink:VkImageType ename:VK_IMAGE_TYPE_2D
|
||||
.Mandatory format support: ETC2 and EAC compressed formats with elink:VkImageType ename:VK_IMAGE_TYPE_2D
|
||||
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
|
||||
|=========================================
|
||||
14+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
|
||||
|
@ -3563,7 +3563,7 @@ one of: this table, <<features-formats-mandatory-features-bcn>>, or
|
|||
<<<
|
||||
|
||||
[[features-formats-mandatory-features-astc]]
|
||||
.Mandatory format support: ASTC LDR compressed formats with slink:VkImageType ename:VK_IMAGE_TYPE_2D
|
||||
.Mandatory format support: ASTC LDR compressed formats with elink:VkImageType ename:VK_IMAGE_TYPE_2D
|
||||
[width="100%",cols="62,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
|
||||
|=========================================
|
||||
14+>| ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
|
||||
|
@ -3651,19 +3651,23 @@ flink:vkCreateImage.
|
|||
|
||||
include::../validity/protos/vkGetPhysicalDeviceImageFormatProperties.txt[]
|
||||
|
||||
The definition of the sname:VkImageFormatProperties structure is:
|
||||
The sname:VkImageFormatProperties structure is defined as:
|
||||
|
||||
include::../structs/VkImageFormatProperties.txt[]
|
||||
|
||||
* pname:maxExtent are the maximum image dimensions. See the
|
||||
<<features-extentperimagetype,Allowed extent values based on imageType>>
|
||||
table below for how these values are constrained by pname:type.
|
||||
<<features-extentperimagetype,Allowed Extent Values>> section below for
|
||||
how these values are constrained by pname:type.
|
||||
* pname:maxMipLevels is the maximum number of mipmap levels.
|
||||
pname:maxMipLevels must: either be equal to 1 (valid only if
|
||||
pname:tiling is ename:VK_IMAGE_TILING_LINEAR) or be greater than or
|
||||
equal to the latexmath:[$log_2$] of the pname:maxImageDimension1D,
|
||||
pname:maxImageDimension2D, or pname:maxImageDimension3D (depending on
|
||||
pname:type) members of slink:VkPhysicalDeviceLimits.
|
||||
pname:tiling is ename:VK_IMAGE_TILING_LINEAR) or be
|
||||
equal to
|
||||
latexmath:[$\left\lceil\log_2(\max(
|
||||
\mathit{width},\mathit{height},\mathit{depth}))
|
||||
\right\rceil + 1$]
|
||||
where latexmath:[$\mathit{width}$], latexmath:[$\mathit{height}$], and
|
||||
latexmath:[$\mathit{depth}$] are taken from the corresponding members of
|
||||
pname:maxExtent.
|
||||
* pname:maxArrayLayers is the maximum number of array layers.
|
||||
pname:maxArrayLayers must: either be equal to 1 or be greater than or
|
||||
equal to the pname:maxImageArrayLayers member of
|
||||
|
@ -3685,7 +3689,7 @@ include::../structs/VkImageFormatProperties.txt[]
|
|||
pname:storageImageSampleCounts. For depth/stencil images with both a
|
||||
depth and stencil component, both the depth and stencil limits must: be
|
||||
satisfied.
|
||||
* pname:maxResourceSize is the maximum total image size in bytes,
|
||||
* pname:maxResourceSize is an upper bound on the total image size in bytes,
|
||||
inclusive of all image subresources. Implementations may: have an
|
||||
address space limit on total size of a resource, which is advertised by
|
||||
this property. pname:maxResourceSize must: be at least 2^31^.
|
||||
|
@ -3696,7 +3700,9 @@ include::../structs/VkImageFormatProperties.txt[]
|
|||
There is no mechanism to query the size of an image before creating it, to
|
||||
compare that size against pname:maxResourceSize. If an application attempts
|
||||
to create an image that exceeds this limit, the creation will fail or the
|
||||
image will be invalid.
|
||||
image will be invalid. While the advertised limit must: be at least 2^31^,
|
||||
it may: not be possible to create an image that approaches that size,
|
||||
particularly for ename:VK_IMAGE_TYPE_1D.
|
||||
====
|
||||
|
||||
If the combination of parameters to
|
||||
|
@ -3706,25 +3712,6 @@ sname:VkImageFormatProperties will be filled with zero.
|
|||
|
||||
include::../validity/structs/VkImageFormatProperties.txt[]
|
||||
|
||||
[[features-extentperimagetype]]
|
||||
.Allowed extent values based on imageType
|
||||
[cols="1a,1a", options="header"]
|
||||
|====
|
||||
| VkImageType | maxExtent values
|
||||
| VK_IMAGE_TYPE_1D |
|
||||
width >= 1 +
|
||||
height = 1 +
|
||||
depth = 1 +
|
||||
| VK_IMAGE_TYPE_2D |
|
||||
width >= 1 +
|
||||
height >= 1 +
|
||||
depth = 1 +
|
||||
| VK_IMAGE_TYPE_3D |
|
||||
width >= 1 +
|
||||
height >= 1 +
|
||||
depth >= 1 +
|
||||
|====
|
||||
|
||||
If pname:format is not a supported image format, or if the combination of
|
||||
pname:format, pname:type, pname:tiling, pname:usage, and pname:flags is not
|
||||
supported for images, then fname:vkGetPhysicalDeviceImageFormatProperties
|
||||
|
@ -3732,10 +3719,37 @@ returns ename:VK_ERROR_FORMAT_NOT_SUPPORTED.
|
|||
|
||||
The limitations on an image format that are reported by
|
||||
fname:vkGetPhysicalDeviceImageFormatProperties have the following property:
|
||||
if code:usage1 and code:usage2 of type elink:VkImageUsageFlags are such that
|
||||
if code:usage1 and code:usage2 of type ename:VkImageUsageFlags are such that
|
||||
the bits set in code:usage1 are a subset of the bits set in code:usage2, and
|
||||
code:flags1 and code:flags2 of type elink:VkImageCreateFlags are such that
|
||||
code:flags1 and code:flags2 of type ename:VkImageCreateFlags are such that
|
||||
the bits set in code:flags1 are a subset of the bits set in code:flags2,
|
||||
then the limitations for code:usage1 and code:flags1 must: be no more strict
|
||||
than the limitations for code:usage2 and code:flags2, for all values of
|
||||
pname:format, pname:type, and pname:tiling.
|
||||
|
||||
[[features-extentperimagetype]]
|
||||
=== Allowed Extent Values Based On Image Type
|
||||
|
||||
For ename:VK_IMAGE_TYPE_1D:
|
||||
|
||||
* pname:maxExtent.width >=
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageDimension1D
|
||||
* pname:maxExtent.height = 1
|
||||
* pname:maxExtent.depth = 1
|
||||
|
||||
For ename:VK_IMAGE_TYPE_2D:
|
||||
|
||||
* pname:maxExtent.width >=
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageDimension2D
|
||||
* pname:maxExtent.height >=
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageDimension2D
|
||||
* pname:maxExtent.depth = 1
|
||||
|
||||
For ename:VK_IMAGE_TYPE_3D:
|
||||
|
||||
* pname:maxExtent.width >=
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageDimension3D
|
||||
* pname:maxExtent.height >=
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageDimension3D
|
||||
* pname:maxExtent.depth >=
|
||||
slink:VkPhysicalDeviceLimits::pname:maxImageDimension3D
|
||||
|
|
|
@ -140,10 +140,20 @@ latexmath:[$(x_f,y_f)$] and depth latexmath:[$z$], as described in
|
|||
fragment processing, which adds associated data as described in
|
||||
<<shaders,Shaders>>. The fragment is then further modified, and possibly
|
||||
discarded by the late per-fragment operations described in this chapter.
|
||||
These operations are diagrammed in figure <<fig-fragops,Fragment
|
||||
Operations>>, in the order in which they are performed. Finally, if the
|
||||
fragment was not discarded, it is used to update the framebuffer at the
|
||||
fragment's framebuffer coordinates for any samples that remain covered.
|
||||
Finally, if the fragment was not discarded, it is used to update the
|
||||
framebuffer at the fragment's framebuffer coordinates for any samples that
|
||||
remain covered.
|
||||
|
||||
ifdef::editing-notes[]
|
||||
[NOTE]
|
||||
.editing-note
|
||||
==================
|
||||
There used to be a sentence of form "These operations are diagrammed in
|
||||
figure ((fig-fragops,Fragment Operations)), in the order in which they are
|
||||
performed" following "described in this chapter." above, but the referred
|
||||
figure doesn't yet exist.
|
||||
==================
|
||||
endif::editing-notes[]
|
||||
|
||||
The depth bounds test, stencil test, and depth test are performed for each
|
||||
pixel sample, rather than just once for each fragment. Stencil and depth
|
||||
|
@ -186,9 +196,9 @@ of the slink:VkPipelineMultisampleStateCreateInfo structure.
|
|||
|
||||
All alpha values in this section refer only to the alpha component of the
|
||||
fragment shader output that has a code:Location and code:Index decoration of
|
||||
zero (see <<pipelines-linking-fragmentoutput,Fragment Output Interface>>).
|
||||
If that shader output has an integer or unsigned integer type, then these
|
||||
operations are skipped.
|
||||
zero (see the <<interfaces-fragmentoutput,Fragment Output Interface>>
|
||||
section). If that shader output has an integer or unsigned integer type,
|
||||
then these operations are skipped.
|
||||
|
||||
If pname:alphaToCoverageEnable is enabled, a temporary coverage value is
|
||||
generated where each bit is determined by the fragment's alpha value. The
|
||||
|
@ -213,19 +223,19 @@ Next, if pname:alphaToOneEnable is enabled, each alpha value is replaced by
|
|||
the maximum representable alpha value for fixed-point color buffers, or by
|
||||
1.0 for floating-point buffers. Otherwise, the alpha values are not changed.
|
||||
|
||||
|
||||
[[fragops-ds-state]]
|
||||
== Depth and Stencil Operations
|
||||
|
||||
Pipeline state controlling the <<fragops-dbt,depth bounds tests>>,
|
||||
<<fragops-stencil,stencil test>>, and <<fragops-depth,depth test>> is
|
||||
specified through the members of
|
||||
sname:VkPipelineDepthStencilStateCreateInfo:
|
||||
specified through the members of the
|
||||
sname:VkPipelineDepthStencilStateCreateInfo structure.
|
||||
|
||||
The sname:VkPipelineDepthStencilStateCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineDepthStencilStateCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkPipelineDepthStencilStateCreateInfo structure are as
|
||||
follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -297,12 +307,10 @@ The stencil test is controlled with the pname:front and pname:back members
|
|||
of sname:VkPipelineDepthStencilStateCreateInfo which are of type
|
||||
sname:VkStencilOpState.
|
||||
|
||||
The definition of sname:VkStencilOpState is:
|
||||
The sname:VkStencilOpState structure is defined as:
|
||||
|
||||
include::../structs/VkStencilOpState.txt[]
|
||||
|
||||
The members of sname:VkStencilOpState structure are as follows:
|
||||
|
||||
* pname:failOp is the action performed on samples that fail the stencil
|
||||
test.
|
||||
* pname:passOp is the action performed on samples that pass both the depth
|
||||
|
@ -328,7 +336,7 @@ back-facing polygon primitives. For the purposes of stencil testing, a
|
|||
primitive is still considered a polygon even if the polygon is to be
|
||||
rasterized as points or lines due to the current elink:VkPolygonMode.
|
||||
Whether a polygon is front- or back-facing is determined in the same manner
|
||||
used for face culling (see <<primsrast-triangles-basic,Basic Triangle
|
||||
used for face culling (see <<primsrast-polygons-basic,Basic Polygon
|
||||
Rasterization>>).
|
||||
|
||||
The operation of the stencil test is also affected by the
|
||||
|
@ -349,7 +357,7 @@ include::../protos/vkCmdSetStencilCompareMask.txt[]
|
|||
* pname:commandBuffer is the command buffer into which the command will be
|
||||
recorded.
|
||||
* pname:faceMask is a bitmask specifying the set of stencil state for
|
||||
which to update the compare mask, and may include the bits:
|
||||
which to update the compare mask. Bits which can: be set include:
|
||||
+
|
||||
--
|
||||
include::../enums/VkStencilFaceFlagBits.txt[]
|
||||
|
@ -426,7 +434,7 @@ include::../enums/VkCompareOp.txt[]
|
|||
As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp
|
||||
members of pname:VkStencilOpState indicate what happens to the stored
|
||||
stencil value if this or certain subsequent tests fail or pass. Each enum is
|
||||
of type ename:VkStencilOp, which is defined as:
|
||||
of type elink:VkStencilOp, which is defined as:
|
||||
|
||||
include::../enums/VkStencilOp.txt[]
|
||||
|
||||
|
|
|
@ -34,13 +34,12 @@ Blending applies only to fixed-point and floating-point color attachments.
|
|||
If the color attachment has an integer format, blending is not applied.
|
||||
|
||||
The pipeline blend state is included in the
|
||||
sname:VkPipelineColorBlendStateCreateInfo struct during graphics pipeline
|
||||
sname:VkPipelineColorBlendStateCreateInfo structure during graphics pipeline
|
||||
creation:
|
||||
|
||||
include::../structs/VkPipelineColorBlendStateCreateInfo.txt[]
|
||||
The sname:VkPipelineColorBlendStateCreateInfo structure is defined as:
|
||||
|
||||
The members of the sname:VkPipelineColorBlendStateCreateInfo structure are
|
||||
as follows:
|
||||
include::../structs/VkPipelineColorBlendStateCreateInfo.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
|
@ -60,19 +59,17 @@ as follows:
|
|||
|
||||
include::../validity/structs/VkPipelineColorBlendStateCreateInfo.txt[]
|
||||
|
||||
The elements of the pname:pAttachments array specify per-target blending
|
||||
state, and are of type:
|
||||
Each element of the pname:pAttachments array is a
|
||||
slink:VkPipelineColorBlendAttachmentState structure specifying per-target
|
||||
blending state for each individual color attachment. If the
|
||||
<<features-features-independentBlend,independent blending>> feature is not
|
||||
enabled on the device, all slink:VkPipelineColorBlendAttachmentState
|
||||
elements in the pname:pAttachments array must: be identical.
|
||||
|
||||
The sname:VkPipelineColorBlendAttachmentState structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineColorBlendAttachmentState.txt[]
|
||||
|
||||
Blending of each individual color attachment is controlled by the
|
||||
corresponding element of the pname:pAttachments array. If the
|
||||
<<features-features-independent-blending,independent blending>> feature is
|
||||
not enabled on the device, all sname:VkPipelineColorBlendAttachmentState
|
||||
elements in the pname:pAttachments array must: be identical. The members of
|
||||
the sname:VkPipelineColorBlendAttachmentState struct have the following
|
||||
meanings:
|
||||
|
||||
* pname:blendEnable controls whether blending is enabled for the
|
||||
corresponding color attachment. If blending is not enabled, the source
|
||||
fragment's color for that attachment is passed through unmodified.
|
||||
|
|
|
@ -59,9 +59,9 @@ This section outlines the execution model of a {apiname} system.
|
|||
|
||||
{apiname} exposes one or more _devices_,
|
||||
each of which exposes one or more _queues_ which may: process work
|
||||
asynchronously to one another. The queues supported by a device are divided
|
||||
into _families_, each of which supports one or more types of functionality
|
||||
and may:
|
||||
asynchronously to one another. The set of queues supported by a device is
|
||||
partitioned into _families_. Each family supports one or more types of
|
||||
functionality and may:
|
||||
contain multiple queues with similar characteristics. Queues within a single
|
||||
family are considered _compatible_ with one another, and work produced for a
|
||||
family of queues can: be executed on any queue within that family. This
|
||||
|
@ -71,8 +71,8 @@ graphics, compute, transfer, and sparse memory management.
|
|||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
It is possible that a single device may: report multiple similar queue
|
||||
families rather than, or as well as reporting multiple members of one or
|
||||
A single device may: report multiple similar queue
|
||||
families rather than, or as well as, reporting multiple members of one or
|
||||
more of those families. This indicates that while members of those families
|
||||
have similar capabilities, they are _not_ directly compatible with one
|
||||
another.
|
||||
|
@ -186,7 +186,7 @@ commands depends on the first set of commands. These dependencies enforce
|
|||
that both the execution of certain
|
||||
<<synchronization-pipeline-stage-flags,pipeline stages>> in the later set
|
||||
occur after the execution of certain stages in the source set, and that the
|
||||
effects of <<synchronization-access-flags,memory accesses>> performed by
|
||||
effects of <<synchronization-global-memory-barrier,memory accesses>> performed by
|
||||
certain pipeline stages occur in order and are visible to each other. When
|
||||
not enforced by an explicit dependency or otherwise forbidden by the
|
||||
specification, action commands may: overlap execution or execute out of
|
||||
|
@ -293,7 +293,7 @@ the commands that consume it have returned.
|
|||
|
||||
The following object types are consumed when they are passed into a
|
||||
{apiname} command and not further accessed by the objects they are used to
|
||||
create. They can be destroyed at any time they are not in use by an API
|
||||
create. They can: be destroyed at any time they are not in use by an API
|
||||
command:
|
||||
|
||||
* sname:VkShaderModule
|
||||
|
@ -304,7 +304,7 @@ sname:VkDescriptorSetLayout objects may: be accessed by commands that
|
|||
operate on descriptor sets allocated using that layout, and those descriptor
|
||||
sets mustnot: be updated with flink:vkUpdateDescriptorSets after the
|
||||
descriptor set layout has been destroyed. Otherwise, descriptor set layouts
|
||||
can be destroyed any time they are not in use by an API command.
|
||||
can: be destroyed any time they are not in use by an API command.
|
||||
|
||||
The application mustnot: destroy any other type of {apiname} object until
|
||||
all uses of that object by the device (such as via command buffer execution)
|
||||
|
@ -433,7 +433,7 @@ ftext:vkGet*.
|
|||
|
||||
Commands are recorded into a command buffer by calling API commands of the
|
||||
form ftext:vkCmd*. Each such command may: have different restrictions on
|
||||
where it can be used: in a primary and/or secondary command buffer, inside
|
||||
where it can: be used: in a primary and/or secondary command buffer, inside
|
||||
and/or outside a render pass, and in one or more of the supported queue
|
||||
types. These restrictions are documented together with the definition of
|
||||
each such command.
|
||||
|
@ -556,10 +556,10 @@ object handle, unless otherwise specified. An object handle is valid if:
|
|||
* Any objects used by that object, either as part of creation or
|
||||
execution, must: also be valid.
|
||||
|
||||
The reserved handle sname:VK_NULL_HANDLE can: be passed in place of valid
|
||||
The reserved handle code:VK_NULL_HANDLE can: be passed in place of valid
|
||||
object handles when _explicitly called out in the specification_. Any
|
||||
command that creates an object successfully mustnot: return
|
||||
sname:VK_NULL_HANDLE. It is valid to pass sname:VK_NULL_HANDLE to any
|
||||
code:VK_NULL_HANDLE. It is valid to pass code:VK_NULL_HANDLE to any
|
||||
ftext:vkDestroy* or ftext:vkFree* command, which will silently ignore these
|
||||
values.
|
||||
|
||||
|
@ -584,7 +584,7 @@ flags. A bit flag is valid if:
|
|||
* The flag is defined as part of the bits type, where the bits type is
|
||||
obtained by taking the flag type and replacing the trailing etext:Flags
|
||||
with etext:FlagBits. For example, a flag value of type
|
||||
elink:VkColorComponentFlags must: contain only values selected from the
|
||||
ename:VkColorComponentFlags must: contain only values selected from the
|
||||
bit flags in elink:VkColorComponentFlagBits.
|
||||
* The flag is allowed in the context in which it is being used. For
|
||||
example, in some cases, certain bit flags or combinations of bit flags
|
||||
|
@ -606,11 +606,16 @@ use by the loader, and don't have corresponding {apiname} structures in this
|
|||
specification.
|
||||
|
||||
Any parameter that is a structure containing a basetype:void* ptext:pNext
|
||||
member must: have a value of ptext:pNext that is either `NULL`, or points to
|
||||
a valid structure that is defined by an enabled extension. Extension
|
||||
structures are not described in the base {apiname} specification, but either
|
||||
in layered specifications incorporating those extensions, or in separate
|
||||
vendor-provided documents.
|
||||
member must: have a value of ptext:pNext that is either `NULL`, or points to a
|
||||
valid structure defined by an extension. If that extension is supported by
|
||||
the implementation, then it must: be enabled.
|
||||
Any component of the implementation (the loader, any enabled layers, and
|
||||
drivers) must: ignore extension structures with pname:sType values defined
|
||||
by extensions not supported by that component.
|
||||
|
||||
Extension structures are not described in the base {apiname} specification,
|
||||
but either in layered specifications incorporating those extensions,
|
||||
or in separate vendor-provided documents.
|
||||
|
||||
The above rules also apply recursively to members of structures provided as
|
||||
input to a command, either as a direct argument to the command, or
|
||||
|
@ -734,11 +739,11 @@ ifdef::editing-notes[]
|
|||
.editing-note
|
||||
====
|
||||
(Jon, Bug 14966) This is a rat's nest of complexity, both in terms of
|
||||
describing/enumerating places such computation may take place (other than
|
||||
``not shader code'') and in how implementations may do it. We have consciously
|
||||
describing/enumerating places such computation may: take place (other than
|
||||
``not shader code'') and in how implementations may: do it. We have consciously
|
||||
deferred the resolution of this issue to post-1.0, and in the meantime, the
|
||||
following language inherited from the OpenGL Specification is inserted as a
|
||||
placeholder. Hopefully it can be tightened up considerably.
|
||||
placeholder. Hopefully it can: be tightened up considerably.
|
||||
====
|
||||
endif::editing-notes[]
|
||||
|
||||
|
|
|
@ -258,15 +258,14 @@ will result in an invalid pipeline.
|
|||
== Vertex Input Description
|
||||
|
||||
Applications specify vertex input attribute and vertex input binding
|
||||
descriptions as part of graphics pipeline creation, via the
|
||||
pname:pVertexInputState member of sname:VkGraphicsPipelineCreateInfo, which
|
||||
is of type sname:VkPipelineVertexInputStateCreateInfo:
|
||||
descriptions as part of graphics pipeline creation. The
|
||||
slink:VkGraphicsPipelineCreateInfo::pname:pVertexInputState points to a
|
||||
structure of type sname:VkPipelineVertexInputStateCreateInfo.
|
||||
|
||||
The sname:VkPipelineVertexInputStateCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineVertexInputStateCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkPipelineVertexInputStateCreateInfo have the following
|
||||
meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -282,13 +281,12 @@ meanings:
|
|||
include::../validity/structs/VkPipelineVertexInputStateCreateInfo.txt[]
|
||||
|
||||
Each vertex input binding is specified by an instance of the
|
||||
sname:VkVertexInputBindingDescription structure:
|
||||
sname:VkVertexInputBindingDescription structure.
|
||||
|
||||
The sname:VkVertexInputBindingDescription structure is defined as:
|
||||
|
||||
include::../structs/VkVertexInputBindingDescription.txt[]
|
||||
|
||||
The members of sname:VkVertexInputBindingDescription have the following
|
||||
meanings:
|
||||
|
||||
* pname:binding is the binding number that this structure
|
||||
describes.
|
||||
* pname:stride is the distance in bytes between two
|
||||
|
@ -299,7 +297,7 @@ meanings:
|
|||
|
||||
include::../validity/structs/VkVertexInputBindingDescription.txt[]
|
||||
|
||||
The definition of elink:VkVertexInputRate is:
|
||||
elink:VkVertexInputRate is defined as:
|
||||
|
||||
include::../enums/VkVertexInputRate.txt[]
|
||||
|
||||
|
@ -311,13 +309,12 @@ The values of elink:VkVertexInputRate have the following meanings:
|
|||
addressing is a function of the instance index.
|
||||
|
||||
Each vertex input attribute is specified by an instance of the
|
||||
sname:VkVertexInputAttributeDescription structure:
|
||||
sname:VkVertexInputAttributeDescription structure.
|
||||
|
||||
The sname:VkVertexInputAttributeDescription structure is defined as:
|
||||
|
||||
include::../structs/VkVertexInputAttributeDescription.txt[]
|
||||
|
||||
The members of sname:VkVertexInputAttributeDescription have the following
|
||||
meanings:
|
||||
|
||||
* pname:location is the shader binding location number for this
|
||||
attribute.
|
||||
* pname:binding is the binding number which this attribute takes
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
= Initialization
|
||||
|
||||
Before using {apiname}, an application must: initialize it by loading the
|
||||
{apiname} commands, and creating a slink:VkInstance object.
|
||||
{apiname} commands, and creating a sname:VkInstance object.
|
||||
|
||||
[[initialization-functionpointers]]
|
||||
== Command Function Pointers
|
||||
|
@ -34,9 +34,9 @@ Function pointers to commands that don't operate on a specific instance can:
|
|||
be obtained by using this command with pname:instance equal to `NULL`. The
|
||||
following commands can: be accessed this way:
|
||||
|
||||
* fname:vkEnumerateInstanceExtensionProperties
|
||||
* fname:vkEnumerateInstanceLayerProperties
|
||||
* fname:vkCreateInstance
|
||||
* flink:vkEnumerateInstanceExtensionProperties
|
||||
* flink:vkEnumerateInstanceLayerProperties
|
||||
* flink:vkCreateInstance
|
||||
|
||||
If pname:instance is a valid sname:VkInstance, function pointers to any
|
||||
commands that operate on pname:instance or a child of pname:instance can: be
|
||||
|
@ -112,7 +112,7 @@ include::../protos/vkCreateInstance.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateInstance.txt[]
|
||||
|
||||
The definition of sname:VkInstanceCreateInfo is:
|
||||
The sname:VkInstanceCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkInstanceCreateInfo.txt[]
|
||||
|
||||
|
@ -142,7 +142,9 @@ is provided by a layer, both the layer and extension must: be specified at
|
|||
fname:vkCreateInstance time.
|
||||
|
||||
The pname:pApplicationInfo member of slink:VkInstanceCreateInfo can: point
|
||||
to an instance of sname:VkApplicationInfo. This structure is defined as:
|
||||
to an instance of sname:VkApplicationInfo.
|
||||
|
||||
The sname:VkApplicationInfo structure is defined as:
|
||||
|
||||
include::../structs/VkApplicationInfo.txt[]
|
||||
|
||||
|
@ -162,8 +164,11 @@ include::../structs/VkApplicationInfo.txt[]
|
|||
application expects to run, encoded as described in the
|
||||
<<fundamentals-versionnum,API Version Numbers and Semantics>> section.
|
||||
If pname:apiVersion is 0 the implementation must: ignore it, otherwise
|
||||
if the implementation does not support the requested pname:apiVersion
|
||||
it must: return VK_ERROR_INCOMPATIBLE_DRIVER.
|
||||
if the implementation does not support the requested pname:apiVersion it
|
||||
must: return VK_ERROR_INCOMPATIBLE_DRIVER. The patch version number
|
||||
specified in pname:apiVersion is ignored when creating an instance
|
||||
object. Only the major and minor versions of the instance must: match
|
||||
those requested in pname:apiVersion.
|
||||
|
||||
include::../validity/structs/VkApplicationInfo.txt[]
|
||||
|
||||
|
|
|
@ -288,7 +288,7 @@ Components of the output variables are assigned as described in
|
|||
Output components identified as 0, 1, 2, and 3 will be directed
|
||||
to the R, G, B, and A inputs to the blending unit, respectively,
|
||||
or to the output attachment if blending is disabled.
|
||||
If two variables are placed within the same location, they must
|
||||
If two variables are placed within the same location, they must:
|
||||
have the same underlying type (floating-point or integer).
|
||||
|
||||
Fragment outputs identified with an code:Index of zero are directed
|
||||
|
@ -355,7 +355,7 @@ See <<descriptorsets-inputattachment>> for more details.
|
|||
|
||||
When a shader stage accesses buffer or image resources, as described
|
||||
in the <<descriptorsets,Resource Descriptors>> section, the shader
|
||||
resource variables must be matched with the
|
||||
resource variables must: be matched with the
|
||||
<<descriptorsets-pipelinelayout,pipeline layout>> that is provided
|
||||
at pipeline creation time.
|
||||
|
||||
|
@ -365,9 +365,8 @@ with the storage class of code:Uniform, code:UniformConstant, or
|
|||
code:PushConstant. For the fragment shader, this includes the
|
||||
<<interfaces-inputattachment, fragment input attachment interface>>.
|
||||
|
||||
The shader resource interface can be further broken down into two
|
||||
sub-interfaces: the push constant interface and the descriptor
|
||||
set interface.
|
||||
The shader resource interface consists of two sub-interfaces: the push
|
||||
constant interface and the descriptor set interface.
|
||||
|
||||
|
||||
[[interfaces-resources-pushconst]]
|
||||
|
@ -479,7 +478,7 @@ space required for that variable to extend outside the range
|
|||
latexmath:[$[0, \mathit{maxStorageBufferRange})$].
|
||||
|
||||
Variables identified with a storage class of code:UniformConstant and a
|
||||
decoration of code:InputAttachmentIndex must be declared as described in
|
||||
decoration of code:InputAttachmentIndex must: be declared as described in
|
||||
<<interfaces-inputattachment,Fragment Input Attachment Interface>>.
|
||||
|
||||
Each shader variable declaration must: refer to the same type of resource as
|
||||
|
@ -559,7 +558,7 @@ and descriptor set <<descriptorsets-updates,operations>>, if a resource
|
|||
variable is not an array, it is treated as if it has an arrayElement of
|
||||
zero.
|
||||
|
||||
The binding can be any 32-bit unsigned integer value, as described in
|
||||
The binding can: be any 32-bit unsigned integer value, as described in
|
||||
<<descriptorsets-setlayout>>. Each descriptor set has its own binding
|
||||
name space.
|
||||
|
||||
|
@ -574,7 +573,7 @@ multiple limits.
|
|||
|
||||
If multiple entry points in the same pipeline refer to the same set and
|
||||
binding, all variable definitions with that code:DescriptorSet and
|
||||
code:Binding must have the same basic type.
|
||||
code:Binding must: have the same basic type.
|
||||
|
||||
Not all descriptor sets and bindings specified in a pipeline layout need to
|
||||
be used in a particular shader stage or pipeline, but if a
|
||||
|
@ -611,7 +610,7 @@ elink:VkShaderStageFlagBits for that stage.
|
|||
[[interfaces-resources-layout]]
|
||||
=== Offset and Stride Assignment
|
||||
|
||||
All variables with a storage class of code:PushConstant or code:Uniform must
|
||||
All variables with a storage class of code:PushConstant or code:Uniform must:
|
||||
be explicitly laid out using the code:Offset, code:ArrayStride, and
|
||||
code:MatrixStride decorations. There are two different layouts requirements
|
||||
depending on the specific resources.
|
||||
|
@ -623,7 +622,7 @@ Member variables of an code:OpTypeStruct with storage class of
|
|||
code:Uniform and a decoration of code:Block (uniform buffers) must: be laid
|
||||
out according to the following rules.
|
||||
|
||||
* The code:Offset Decoration must be a multiple of its base alignment,
|
||||
* The code:Offset Decoration must: be a multiple of its base alignment,
|
||||
computed recursively as follows:
|
||||
+
|
||||
** a scalar of size latexmath:[$N$] has a base alignment of
|
||||
|
@ -668,7 +667,6 @@ The *std430 layout* in GLSL satisfies these rules.
|
|||
====
|
||||
|
||||
|
||||
|
||||
[[interfaces-builtin-variables]]
|
||||
== Built-In Variables
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ Please tag issues with appropriate labels, such as ``Specification'',
|
|||
``Ref Pages'' or ``Registry'', to help us triage and assign them
|
||||
appropriately. Unfortunately, Github does not currently let users who do not
|
||||
have write access to the repository set Github labels on issues. In the
|
||||
meantime, they can be added to the title line of the issue set in brackets,
|
||||
meantime, they can: be added to the title line of the issue set in brackets,
|
||||
e.g. ''[Specification]''.
|
||||
|
||||
|
||||
|
|
|
@ -74,15 +74,15 @@ with the pointer value being a multiple of pname:alignment.
|
|||
|
||||
[NOTE]
|
||||
====
|
||||
Correct Vulkan operation cannot be assumed if the application doesn't
|
||||
Correct Vulkan operation cannot: be assumed if the application doesn't
|
||||
follow these rules.
|
||||
|
||||
For example, pname:pfnAllocation (or pname:pfnReallocation) could cause
|
||||
termination of running Vulkan instance(s) on a failed allocation for
|
||||
debugging purposes, either directly or indirectly. In these circumstances,
|
||||
it cannot be assumed that any part of any affected VkInstance objects are
|
||||
it cannot: be assumed that any part of any affected VkInstance objects are
|
||||
going to operate correctly (even flink:vkDestroyInstance), and the
|
||||
application must ensure it cleans up properly via other means (e.g.
|
||||
application must: ensure it cleans up properly via other means (e.g.
|
||||
process termination).
|
||||
====
|
||||
|
||||
|
@ -369,7 +369,7 @@ include::../protos/vkGetPhysicalDeviceMemoryProperties.txt[]
|
|||
|
||||
include::../validity/protos/vkGetPhysicalDeviceMemoryProperties.txt[]
|
||||
|
||||
The definition of sname:VkPhysicalDeviceMemoryProperties is:
|
||||
The sname:VkPhysicalDeviceMemoryProperties structure is defined as:
|
||||
|
||||
include::../structs/VkPhysicalDeviceMemoryProperties.txt[]
|
||||
|
||||
|
@ -377,7 +377,7 @@ ifdef::editing-notes[]
|
|||
[NOTE]
|
||||
.editing-note
|
||||
====
|
||||
TODO (Jon) - Need to restructure description like other structs.
|
||||
TODO (Jon) - Need to restructure description like other structures.
|
||||
====
|
||||
endif::editing-notes[]
|
||||
|
||||
|
@ -403,7 +403,7 @@ pname:memoryTypeCount and is less than or equal to
|
|||
ename:VK_MAX_MEMORY_TYPES. Each memory type is described by an element of
|
||||
the pname:memoryTypes array, as a sname:VkMemoryType structure.
|
||||
|
||||
The definition of sname:VkMemoryHeap is:
|
||||
The sname:VkMemoryHeap structure is defined as:
|
||||
|
||||
include::../structs/VkMemoryHeap.txt[]
|
||||
|
||||
|
@ -427,7 +427,7 @@ In a unified memory architecture (UMA) system, there is often only a single
|
|||
memory heap which is considered to be equally ``local'' to the host and to the
|
||||
device, and such an implementation must: advertise the heap as device-local.
|
||||
|
||||
The definition of sname:VkMemoryType is:
|
||||
The sname:VkMemoryType structure is defined as:
|
||||
|
||||
include::../structs/VkMemoryType.txt[]
|
||||
|
||||
|
@ -557,7 +557,7 @@ include::../protos/vkAllocateMemory.txt[]
|
|||
|
||||
include::../validity/protos/vkAllocateMemory.txt[]
|
||||
|
||||
sname:VkMemoryAllocateInfo is defined as:
|
||||
The sname:VkMemoryAllocateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkMemoryAllocateInfo.txt[]
|
||||
|
||||
|
@ -746,7 +746,7 @@ include::../protos/vkInvalidateMappedMemoryRanges.txt[]
|
|||
|
||||
include::../validity/protos/vkInvalidateMappedMemoryRanges.txt[]
|
||||
|
||||
sname:VkMappedMemoryRange is defined as:
|
||||
The sname:VkMappedMemoryRange structure is defined as:
|
||||
|
||||
include::../structs/VkMappedMemoryRange.txt[]
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ Compute pipelines are created by calling:
|
|||
include::../protos/vkCreateComputePipelines.txt[]
|
||||
|
||||
* pname:device is the logical device that creates the compute pipelines.
|
||||
* pname:pipelineCache is either sname:VK_NULL_HANDLE, indicating that
|
||||
* pname:pipelineCache is either code:VK_NULL_HANDLE, indicating that
|
||||
pipeline caching is disabled; or the handle of a valid
|
||||
<<pipelines-cache,pipeline cache>> object, in which case use of that
|
||||
cache is enabled for the duration of the command.
|
||||
|
@ -120,7 +120,7 @@ endif::editing-notes[]
|
|||
|
||||
include::../validity/protos/vkCreateComputePipelines.txt[]
|
||||
|
||||
The definition of sname:VkComputePipelineCreateInfo is:
|
||||
The sname:VkComputePipelineCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkComputePipelineCreateInfo.txt[]
|
||||
|
||||
|
@ -142,14 +142,13 @@ The parameters pname:basePipelineHandle and pname:basePipelineIndex are
|
|||
described in more detail in
|
||||
<<pipelines-pipeline-derivatives,Pipeline Derivatives>>.
|
||||
|
||||
The parameter pname:stage member of type
|
||||
sname:VkPipelineShaderStageCreateInfo is:
|
||||
pname:stage points to a structure of type
|
||||
sname:VkPipelineShaderStageCreateInfo.
|
||||
|
||||
The sname:VkPipelineShaderStageCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineShaderStageCreateInfo.txt[]
|
||||
|
||||
The members of the sname:VkPipelineShaderStageCreateInfo structure are as
|
||||
follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -179,7 +178,7 @@ calling fname:vkCreateGraphicsPipelines:
|
|||
include::../protos/vkCreateGraphicsPipelines.txt[]
|
||||
|
||||
* pname:device is the logical device that creates the graphics pipelines.
|
||||
* pname:pipelineCache is either sname:VK_NULL_HANDLE, indicating that
|
||||
* pname:pipelineCache is either code:VK_NULL_HANDLE, indicating that
|
||||
pipeline caching is disabled; or the handle of a valid
|
||||
<<pipelines-cache,pipeline cache>> object, in which case use of that
|
||||
cache is enabled for the duration of the command.
|
||||
|
@ -197,7 +196,9 @@ include::../validity/protos/vkCreateGraphicsPipelines.txt[]
|
|||
The sname:VkGraphicsPipelineCreateInfo structure includes an array of shader
|
||||
create info structures containing all the desired active shader stages, as
|
||||
well as creation info to define all relevant fixed-function stages, and a
|
||||
pipeline layout. The definition of sname:VkGraphicsPipelineCreateInfo is:
|
||||
pipeline layout.
|
||||
|
||||
The sname:VkGraphicsPipelineCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkGraphicsPipelineCreateInfo.txt[]
|
||||
|
||||
|
@ -281,14 +282,13 @@ parent and possibly a child in a pipeline hierarchy. See
|
|||
<<pipelines-pipeline-derivatives,Pipeline Derivatives>> for more
|
||||
information.
|
||||
|
||||
The definition of the pname:pDynamicState member of type
|
||||
sname:VkPipelineDynamicStateCreateInfo is:
|
||||
pname:pDynamicState points to a structure of type
|
||||
sname:VkPipelineDynamicStateCreateInfo.
|
||||
|
||||
The sname:VkPipelineDynamicStateCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineDynamicStateCreateInfo.txt[]
|
||||
|
||||
The members of the sname:VkPipelineDynamicStateCreateInfo structure are as
|
||||
follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -300,69 +300,69 @@ follows:
|
|||
|
||||
include::../validity/structs/VkPipelineDynamicStateCreateInfo.txt[]
|
||||
|
||||
The definition of the elink:VkDynamicState enumeration is as follows:
|
||||
The elink:VkDynamicState enumerants are defined as:
|
||||
|
||||
include::../enums/VkDynamicState.txt[]
|
||||
|
||||
* ename:VK_DYNAMIC_STATE_VIEWPORT indicates that the pname:pViewports
|
||||
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
|
||||
must: be set dynamically with flink:vkCmdSetViewport before any draw
|
||||
commands. The number of viewports used by a pipeline is still
|
||||
specified by the pname:viewportCount member of
|
||||
sname:VkPipelineViewportStateCreateInfo.
|
||||
* ename:VK_DYNAMIC_STATE_SCISSOR indicates that the pname:pScissors
|
||||
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
|
||||
must: be set dynamically with flink:vkCmdSetScissor before any draw
|
||||
commands. The number of scissor rectangles used by a pipeline is still
|
||||
specified by the pname:scissorCount member of
|
||||
sname:VkPipelineViewportStateCreateInfo.
|
||||
* ename:VK_DYNAMIC_STATE_LINE_WIDTH indicates that the pname:lineWidth
|
||||
state in sname:VkPipelineRasterizationStateCreateInfo will be ignored
|
||||
and must: be set dynamically with flink:vkCmdSetLineWidth before any
|
||||
draw commands that generate line primitives for the rasterizer.
|
||||
* ename:VK_DYNAMIC_STATE_DEPTH_BIAS indicates that the
|
||||
pname:depthBiasConstantFactor, pname:depthBiasClamp and
|
||||
pname:depthBiasSlopeFactor states in
|
||||
sname:VkPipelineRasterizationStateCreateInfo will be ignored and must:
|
||||
be set dynamically with flink:vkCmdSetDepthBias before any draws are
|
||||
performed with pname:depthBiasEnable in
|
||||
sname:VkPipelineRasterizationStateCreateInfo set to ename:VK_TRUE.
|
||||
* ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS indicates that the
|
||||
pname:blendConstants state in
|
||||
sname:VkPipelineColorBlendStateCreateInfo will be ignored and must: be
|
||||
set dynamically with flink:vkCmdSetBlendConstants before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineColorBlendAttachmentState member pname:blendEnable set
|
||||
to ename:VK_TRUE and any of the blend functions using a constant blend
|
||||
color.
|
||||
* ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS indicates that the
|
||||
pname:minDepthBounds and pname:maxDepthBounds states of
|
||||
slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must:
|
||||
be set dynamically with flink:vkCmdSetDepthBounds before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:depthBoundsTestEnable set to ename:VK_TRUE.
|
||||
* ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK indicates that the
|
||||
pname:compareMask state in
|
||||
sname:VkPipelineDepthStencilStateCreateInfo for both pname:front and
|
||||
pname:back will be ignored and must: be set dynamically with
|
||||
flink:vkCmdSetStencilCompareMask before any draws are performed with a
|
||||
pipeline state with sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:stencilTestEnable set to ename:VK_TRUE
|
||||
* ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK indicates that the
|
||||
pname:writeMask state in sname:VkPipelineDepthStencilStateCreateInfo
|
||||
for both pname:front and pname:back will be ignored and must: be set
|
||||
dynamically with flink:vkCmdSetStencilWriteMask before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:stencilTestEnable set to ename:VK_TRUE
|
||||
* ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE indicates that the
|
||||
pname:reference state in sname:VkPipelineDepthStencilStateCreateInfo
|
||||
for both pname:front and pname:back will be ignored and must: be set
|
||||
dynamically with flink:vkCmdSetStencilReference before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:stencilTestEnable set to ename:VK_TRUE
|
||||
* ename:VK_DYNAMIC_STATE_VIEWPORT indicates that the pname:pViewports
|
||||
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
|
||||
must: be set dynamically with flink:vkCmdSetViewport before any draw
|
||||
commands. The number of viewports used by a pipeline is still
|
||||
specified by the pname:viewportCount member of
|
||||
sname:VkPipelineViewportStateCreateInfo.
|
||||
* ename:VK_DYNAMIC_STATE_SCISSOR indicates that the pname:pScissors
|
||||
state in sname:VkPipelineViewportStateCreateInfo will be ignored and
|
||||
must: be set dynamically with flink:vkCmdSetScissor before any draw
|
||||
commands. The number of scissor rectangles used by a pipeline is still
|
||||
specified by the pname:scissorCount member of
|
||||
sname:VkPipelineViewportStateCreateInfo.
|
||||
* ename:VK_DYNAMIC_STATE_LINE_WIDTH indicates that the pname:lineWidth
|
||||
state in sname:VkPipelineRasterizationStateCreateInfo will be ignored
|
||||
and must: be set dynamically with flink:vkCmdSetLineWidth before any
|
||||
draw commands that generate line primitives for the rasterizer.
|
||||
* ename:VK_DYNAMIC_STATE_DEPTH_BIAS indicates that the
|
||||
pname:depthBiasConstantFactor, pname:depthBiasClamp and
|
||||
pname:depthBiasSlopeFactor states in
|
||||
sname:VkPipelineRasterizationStateCreateInfo will be ignored and must:
|
||||
be set dynamically with flink:vkCmdSetDepthBias before any draws are
|
||||
performed with pname:depthBiasEnable in
|
||||
sname:VkPipelineRasterizationStateCreateInfo set to ename:VK_TRUE.
|
||||
* ename:VK_DYNAMIC_STATE_BLEND_CONSTANTS indicates that the
|
||||
pname:blendConstants state in
|
||||
sname:VkPipelineColorBlendStateCreateInfo will be ignored and must: be
|
||||
set dynamically with flink:vkCmdSetBlendConstants before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineColorBlendAttachmentState member pname:blendEnable set
|
||||
to ename:VK_TRUE and any of the blend functions using a constant blend
|
||||
color.
|
||||
* ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS indicates that the
|
||||
pname:minDepthBounds and pname:maxDepthBounds states of
|
||||
slink:VkPipelineDepthStencilStateCreateInfo will be ignored and must:
|
||||
be set dynamically with flink:vkCmdSetDepthBounds before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:depthBoundsTestEnable set to ename:VK_TRUE.
|
||||
* ename:VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK indicates that the
|
||||
pname:compareMask state in
|
||||
sname:VkPipelineDepthStencilStateCreateInfo for both pname:front and
|
||||
pname:back will be ignored and must: be set dynamically with
|
||||
flink:vkCmdSetStencilCompareMask before any draws are performed with a
|
||||
pipeline state with sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:stencilTestEnable set to ename:VK_TRUE
|
||||
* ename:VK_DYNAMIC_STATE_STENCIL_WRITE_MASK indicates that the
|
||||
pname:writeMask state in sname:VkPipelineDepthStencilStateCreateInfo
|
||||
for both pname:front and pname:back will be ignored and must: be set
|
||||
dynamically with flink:vkCmdSetStencilWriteMask before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:stencilTestEnable set to ename:VK_TRUE
|
||||
* ename:VK_DYNAMIC_STATE_STENCIL_REFERENCE indicates that the
|
||||
pname:reference state in sname:VkPipelineDepthStencilStateCreateInfo
|
||||
for both pname:front and pname:back will be ignored and must: be set
|
||||
dynamically with flink:vkCmdSetStencilReference before any draws are
|
||||
performed with a pipeline state with
|
||||
sname:VkPipelineDepthStencilStateCreateInfo member
|
||||
pname:stencilTestEnable set to ename:VK_TRUE
|
||||
|
||||
If tessellation shader stages are omitted, the tessellation shading and
|
||||
fixed-function stages of the pipeline are skipped.
|
||||
|
@ -453,10 +453,10 @@ group-create.
|
|||
When an application attempts to create many pipelines in a single command,
|
||||
it is possible that some subset may: fail creation. In that case, the
|
||||
corresponding entries in the pname:pPipelines output array will be filled
|
||||
with sname:VK_NULL_HANDLE values. If any pipeline fails creation (for
|
||||
with code:VK_NULL_HANDLE values. If any pipeline fails creation (for
|
||||
example, due to out of memory errors), the ftext:vkCreate*Pipelines commands
|
||||
will return an error code. The implementation will attempt to create all
|
||||
pipelines, and only return sname:VK_NULL_HANDLE values for those that
|
||||
pipelines, and only return code:VK_NULL_HANDLE values for those that
|
||||
actually failed.
|
||||
|
||||
|
||||
|
@ -476,7 +476,7 @@ pname:basePipelineHandle or pname:basePipelineIndex members of the structure
|
|||
must: have a valid handle/index, and indicates the parent pipeline. If
|
||||
pname:basePipelineHandle is used, the parent pipeline must: have already
|
||||
been created. If pname:basePipelineIndex is used, then the parent is being
|
||||
created in the same command. sname:VK_NULL_HANDLE acts as the invalid handle
|
||||
created in the same command. code:VK_NULL_HANDLE acts as the invalid handle
|
||||
for pname:basePipelineHandle, and -1 is the invalid index for
|
||||
pname:basePipelineIndex. If pname:basePipelineIndex is used, the base
|
||||
pipeline must: appear earlier in the array. The base pipeline must: have
|
||||
|
@ -513,7 +513,7 @@ include::../protos/vkCreatePipelineCache.txt[]
|
|||
|
||||
include::../validity/protos/vkCreatePipelineCache.txt[]
|
||||
|
||||
The definition of sname:VkPipelineCacheCreateInfo is:
|
||||
The sname:VkPipelineCacheCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineCacheCreateInfo.txt[]
|
||||
|
||||
|
@ -533,7 +533,7 @@ include::../validity/structs/VkPipelineCacheCreateInfo.txt[]
|
|||
Once created, a pipeline cache can: be passed to the
|
||||
fname:vkCreateGraphicsPipelines and fname:vkCreateComputePipelines commands.
|
||||
If the pipeline cache passed into these commands is not
|
||||
sname:VK_NULL_HANDLE, the implementation will query it for possible reuse
|
||||
code:VK_NULL_HANDLE, the implementation will query it for possible reuse
|
||||
opportunities and update it with new content. The use of the pipeline cache
|
||||
object in these commands is internally synchronized, and the same pipeline
|
||||
cache object can: be used in multiple threads simultaneously.
|
||||
|
@ -579,7 +579,7 @@ include::../protos/vkGetPipelineCacheData.txt[]
|
|||
the pipeline cache, as described below.
|
||||
* pname:pData is either `NULL` or a pointer to a buffer.
|
||||
|
||||
If pname:pData is `NULL`, then the maximum size of the data that can be
|
||||
If pname:pData is `NULL`, then the maximum size of the data that can: be
|
||||
retrieved from the pipeline cache, in bytes, is returned in pname:pDataSize.
|
||||
Otherwise, pname:pDataSize must: point to a variable set by the user to the
|
||||
size of the buffer, in bytes, pointed to by pname:pData, and on return the
|
||||
|
@ -675,13 +675,13 @@ its local workgroup size changed at runtime by the user, for example.
|
|||
|
||||
Each instance of the sname:VkPipelineShaderStageCreateInfo structure
|
||||
contains a parameter pname:pSpecializationInfo, which can: be `NULL` to
|
||||
indicate no specialization constants. The definition of the
|
||||
sname:VkSpecializationInfo structure is:
|
||||
indicate no specialization constants, or point to a
|
||||
sname:VkSpecializationInfo structure.
|
||||
|
||||
The sname:VkSpecializationInfo structure is defined as:
|
||||
|
||||
include::../structs/VkSpecializationInfo.txt[]
|
||||
|
||||
The members of sname:VkSpecializationInfo are as follows:
|
||||
|
||||
* pname:mapEntryCount is the number of entries in the pname:pMapEntries
|
||||
array.
|
||||
* pname:pMapEntries is a pointer to an array of
|
||||
|
@ -692,13 +692,13 @@ The members of sname:VkSpecializationInfo are as follows:
|
|||
|
||||
include::../validity/structs/VkSpecializationInfo.txt[]
|
||||
|
||||
The definition of the pname:pMapEntries member of type
|
||||
sname:VkSpecializationMapEntry is:
|
||||
pname:pMapEntries points to a structure of type
|
||||
sname:VkSpecializationMapEntry.
|
||||
|
||||
The sname:VkSpecializationMapEntry structure is defined as:
|
||||
|
||||
include::../structs/VkSpecializationMapEntry.txt[]
|
||||
|
||||
The members of sname:VkSpecializationMapEntry are as follows:
|
||||
|
||||
* pname:constantID ID of the specialization constant in SPIR-V.
|
||||
* pname:offset byte offset of the specialization constant value within the
|
||||
supplied data buffer.
|
||||
|
|
|
@ -67,9 +67,6 @@ The sname:VkPipelineMultisampleStateCreateInfo structure is defined as:
|
|||
|
||||
include::../structs/VkPipelineMultisampleStateCreateInfo.txt[]
|
||||
|
||||
The members of the sname:VkPipelineMultisampleStateCreateInfo structure are
|
||||
as follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
|
|
@ -37,12 +37,10 @@ include::../protos/vkCreateQueryPool.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateQueryPool.txt[]
|
||||
|
||||
The definition of sname:VkQueryPoolCreateInfo is:
|
||||
The sname:VkQueryPoolCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkQueryPoolCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkQueryPoolCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -133,15 +131,16 @@ compute commands. Timestamp queries write timestamps to a query pool.
|
|||
|
||||
A query must: begin and end in the same command buffer, although if it is a
|
||||
primary command buffer, and the
|
||||
<<features-features-inherited-queries,inherited queries>> feature is
|
||||
<<features-features-inheritedQueries,inherited queries>> feature is
|
||||
enabled, it can: execute secondary command buffers during the query
|
||||
operation. For a secondary command buffer to be executed while a query is
|
||||
active, it must: set the pname:occlusionQueryEnable, pname:queryFlags,
|
||||
and/or pname:pipelineStatistics members of slink:VkCommandBufferInheritanceInfo
|
||||
to conservative values, as described in the <<commandbuffers-recording, Command
|
||||
Buffer Recording>> section. A query must: either begin and end inside the
|
||||
same subpass of a render pass instance, or must: both begin and end outside
|
||||
of a render pass instance (i.e. contain entire render pass instances).
|
||||
and/or pname:pipelineStatistics members of
|
||||
slink:VkCommandBufferInheritanceInfo to conservative values, as described in
|
||||
the <<commandbuffers-recording, Command Buffer Recording>> section. A query
|
||||
must: either begin and end inside the same subpass of a render pass
|
||||
instance, or must: both begin and end outside of a render pass instance
|
||||
(i.e. contain entire render pass instances).
|
||||
|
||||
Begin a query by calling:
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ include::../protos/vkCreateRenderPass.txt[]
|
|||
|
||||
* pname:device is the logical device that creates the render pass.
|
||||
* pname:pCreateInfo is a pointer to an instance of the
|
||||
sname:VkRenderPassCreateInfo structure that describes the parameters of
|
||||
slink:VkRenderPassCreateInfo structure that describes the parameters of
|
||||
the render pass.
|
||||
* pname:pAllocator controls host memory allocation as described in the
|
||||
<<memory-allocation, Memory Allocation>> chapter.
|
||||
|
@ -127,7 +127,7 @@ include::../structs/VkRenderPassCreateInfo.txt[]
|
|||
|
||||
include::../validity/structs/VkRenderPassCreateInfo.txt[]
|
||||
|
||||
sname:VkAttachmentDescription is defined as:
|
||||
The sname:VkAttachmentDescription structure is defined as:
|
||||
|
||||
include::../structs/VkAttachmentDescription.txt[]
|
||||
|
||||
|
@ -271,7 +271,7 @@ until a framebuffer is created using the render pass, so the above
|
|||
conditions cannot: be validated at render pass creation time.
|
||||
====
|
||||
|
||||
sname:VkSubpassDescription is defined as:
|
||||
The sname:VkSubpassDescription structure is defined as:
|
||||
|
||||
include::../structs/VkSubpassDescription.txt[]
|
||||
|
||||
|
@ -299,7 +299,7 @@ include::../structs/VkSubpassDescription.txt[]
|
|||
i.e. if the shader declared an output variable `layout(location=X)` then
|
||||
it uses the attachment provided in pname:pColorAttachments[X].
|
||||
* pname:pResolveAttachments is `NULL` or a pointer to an array of
|
||||
sname:VkAttachmentReference structures. If pname:pResolveAttachments is
|
||||
slink:VkAttachmentReference structures. If pname:pResolveAttachments is
|
||||
not `NULL`, each of its elements corresponds to a color attachment (the
|
||||
element in pname:pColorAttachments at the same index). At the end of
|
||||
each subpass, the subpass's color attachments are resolved to
|
||||
|
@ -500,7 +500,7 @@ It will be common for a render pass to consist of a simple linear graph of
|
|||
dependencies, where subpass N depends on subpass N-1 for all N, and the
|
||||
operation of the memory barriers and layout transitions is fairly
|
||||
straightforward to reason about for those simple cases. But for more complex
|
||||
graphs, there are some rules that govern when there must be dependencies
|
||||
graphs, there are some rules that govern when there must: be dependencies
|
||||
between subpasses.
|
||||
|
||||
As stated earlier, render passes must: include subpass dependencies which
|
||||
|
@ -623,9 +623,9 @@ references are compatible.
|
|||
If two render passes contain more than one subpass, they are compatible if
|
||||
they are identical except for:
|
||||
|
||||
* Initial and final image layout in attachment descriptions
|
||||
* Load and store operations in attachment descriptions
|
||||
* Image layout in attachment references
|
||||
* Initial and final image layout in attachment descriptions
|
||||
* Load and store operations in attachment descriptions
|
||||
* Image layout in attachment references
|
||||
|
||||
A framebuffer is compatible with a render pass if it was created using the
|
||||
same render pass or a compatible render pass.
|
||||
|
@ -641,7 +641,7 @@ An application creates a framebuffer by calling:
|
|||
include::../protos/vkCreateFramebuffer.txt[]
|
||||
|
||||
* pname:device is the logical device that creates the framebuffer.
|
||||
* pname:pCreateInfo points to a sname:VkFramebufferCreateInfo structure
|
||||
* pname:pCreateInfo points to a slink:VkFramebufferCreateInfo structure
|
||||
which describes additional information about framebuffer creation.
|
||||
* pname:pAllocator controls host memory allocation as described in the
|
||||
<<memory-allocation, Memory Allocation>> chapter.
|
||||
|
@ -687,12 +687,12 @@ rather use shader side effects such as image stores and atomics to produce
|
|||
an output. In this case, the subpass continues to use the pname:width,
|
||||
pname:height, and pname:layers of the framebuffer to define the dimensions
|
||||
of the rendering area, and the pname:rasterizationSamples from each
|
||||
pipeline's sname:VkPipelineMultisampleStateCreateInfo to define the number
|
||||
pipeline's slink:VkPipelineMultisampleStateCreateInfo to define the number
|
||||
of samples used in rasterization; however, if
|
||||
sname:VkPhysicalDeviceFeatures::pname:variableMultisampleRate is
|
||||
slink:VkPhysicalDeviceFeatures::pname:variableMultisampleRate is
|
||||
code:VK_FALSE, then all pipelines to be bound with a given zero-attachment
|
||||
subpass must: have the same value for
|
||||
sname:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
|
||||
slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
|
||||
|
||||
To destroy a framebuffer, call:
|
||||
|
||||
|
@ -720,7 +720,7 @@ include::../protos/vkCmdBeginRenderPass.txt[]
|
|||
|
||||
* pname:commandBuffer is the command buffer in which to record the
|
||||
command.
|
||||
* pname:pRenderPassBegin is a pointer to a sname:VkRenderPassBeginInfo
|
||||
* pname:pRenderPassBegin is a pointer to a slink:VkRenderPassBeginInfo
|
||||
structure (defined below) which indicates the render pass to begin an
|
||||
instance of, and the framebuffer the instance uses.
|
||||
* pname:contents specifies how the commands in the first subpass will be
|
||||
|
@ -743,7 +743,6 @@ include::../validity/protos/vkCmdBeginRenderPass.txt[]
|
|||
After beginning a render pass instance, the command buffer is ready to
|
||||
record the commands for the first subpass of that render pass.
|
||||
|
||||
[[renderpass-VkRenderPassBeginInfo]]
|
||||
The sname:VkRenderPassBeginInfo structure is defined as:
|
||||
|
||||
include::../structs/VkRenderPassBeginInfo.txt[]
|
||||
|
@ -756,7 +755,7 @@ include::../structs/VkRenderPassBeginInfo.txt[]
|
|||
* pname:renderArea is the render area that is affected by the render pass
|
||||
instance, and is described in more detail below.
|
||||
* pname:clearValueCount is the number of elements in pname:pClearValues.
|
||||
* pname:pClearValues is an array of sname:VkClearValue structures that
|
||||
* pname:pClearValues is an array of slink:VkClearValue structures that
|
||||
contains clear values for each attachment, if the attachment uses a
|
||||
pname:loadOp value of ename:VK_ATTACHMENT_LOAD_OP_CLEAR. The array is
|
||||
indexed by attachment number, with elements corresponding to uncleared
|
||||
|
@ -788,7 +787,7 @@ include::../protos/vkGetRenderAreaGranularity.txt[]
|
|||
|
||||
* pname:device is the logical device that owns the render pass.
|
||||
* pname:renderPass is a handle to a render pass.
|
||||
* pname:pGranularity points to a sname:VkExtent2D structure in which the
|
||||
* pname:pGranularity points to a slink:VkExtent2D structure in which the
|
||||
granularity is returned.
|
||||
|
||||
include::../validity/protos/vkGetRenderAreaGranularity.txt[]
|
||||
|
@ -796,19 +795,23 @@ include::../validity/protos/vkGetRenderAreaGranularity.txt[]
|
|||
The conditions leading to an optimal pname:renderArea are:
|
||||
|
||||
* the pname:offset.x member in pname:renderArea is a multiple of the
|
||||
pname:width member of the returned sname:VkExtent2D (the horizontal
|
||||
pname:width member of the returned slink:VkExtent2D (the horizontal
|
||||
granularity).
|
||||
* the pname:offset.y member in pname:renderArea is a multiple of the
|
||||
pname:height of the returned sname:VkExtent2D (the vertical
|
||||
pname:height of the returned slink:VkExtent2D (the vertical
|
||||
granularity).
|
||||
* either the pname:offset.width member in pname:renderArea is a multiple
|
||||
of the horizontal granularity or pname:offset.x+pname:offset.width is
|
||||
equal to the pname:width of the pname:framebuffer in the
|
||||
sname:VkRenderPassBeginInfo.
|
||||
slink:VkRenderPassBeginInfo.
|
||||
* either the pname:offset.height member in pname:renderArea is a multiple
|
||||
of the vertical granularity or pname:offset.y+pname:offset.height is
|
||||
equal to the pname:height of the pname:framebuffer in the
|
||||
sname:VkRenderPassBeginInfo.
|
||||
slink:VkRenderPassBeginInfo.
|
||||
|
||||
Subpass dependencies are not affected by the render area, and apply to the
|
||||
entire image subresources attached to the framebuffer. Similarly, pipeline
|
||||
barriers are valid even if their effect extends outside the render area.
|
||||
|
||||
After recording the commands for a subpass, an application transitions to
|
||||
the next subpass in the render pass instance by calling:
|
||||
|
|
|
@ -34,12 +34,10 @@ include::../protos/vkCreateBuffer.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateBuffer.txt[]
|
||||
|
||||
The definition of sname:VkBufferCreateInfo is:
|
||||
The sname:VkBufferCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkBufferCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkBufferCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is a bitfield describing additional parameters of the
|
||||
|
@ -163,12 +161,10 @@ include::../protos/vkCreateBufferView.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateBufferView.txt[]
|
||||
|
||||
The definition of sname:VkBufferViewCreateInfo is:
|
||||
The sname:VkBufferViewCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkBufferViewCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkBufferViewCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -221,12 +217,10 @@ include::../protos/vkCreateImage.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateImage.txt[]
|
||||
|
||||
The definition of sname:VkImageCreateInfo is:
|
||||
The sname:VkImageCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkImageCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkImageCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is a bitfield describing additional parameters of the image.
|
||||
|
@ -372,10 +366,10 @@ See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
|
|||
more details.
|
||||
|
||||
* ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can:
|
||||
be used to create a slink:VkImageView with a different format from the
|
||||
be used to create a sname:VkImageView with a different format from the
|
||||
image.
|
||||
* ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT indicates that the image can:
|
||||
be used to create a slink:VkImageView of type
|
||||
be used to create a sname:VkImageView of type
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY.
|
||||
|
||||
The layout of an image subresource (mipLevel/arrayLayer) of an image created
|
||||
|
@ -392,11 +386,11 @@ include::../protos/vkGetImageSubresourceLayout.txt[]
|
|||
|
||||
include::../validity/protos/vkGetImageSubresourceLayout.txt[]
|
||||
|
||||
The definition of the sname:VkImageSubresource structure is:
|
||||
The sname:VkImageSubresource structure is defined as:
|
||||
|
||||
include::../structs/VkImageSubresource.txt[]
|
||||
|
||||
* pname:aspectMask is a elink:VkImageAspectFlags selecting the image
|
||||
* pname:aspectMask is a ename:VkImageAspectFlags selecting the image
|
||||
aspect.
|
||||
* pname:mipLevel selects the mipmap level.
|
||||
* pname:arrayLayer selects the array layer.
|
||||
|
@ -762,8 +756,9 @@ baseArrayLayer = 0 +
|
|||
arrayLayers = 1
|
||||
|========================================
|
||||
|
||||
The pname:subresourceRange member is of type sname:VkImageSubresourceRange
|
||||
and is defined as:
|
||||
The pname:subresourceRange member is of type sname:VkImageSubresourceRange.
|
||||
|
||||
The sname:VkImageSubresourceRange structure is defined as:
|
||||
|
||||
include::../structs/VkImageSubresourceRange.txt[]
|
||||
|
||||
|
@ -818,7 +813,9 @@ depth/stencil image is used as a depth/stencil framebuffer attachment, the
|
|||
pname:aspectMask is ignored and both depth and stencil image subresources
|
||||
are used.
|
||||
|
||||
The pname:components member is defined as follows:
|
||||
The pname:components member is of type sname:VkComponentMapping.
|
||||
|
||||
The sname:VkComponentMapping structure is defined as:
|
||||
|
||||
include::../structs/VkComponentMapping.txt[]
|
||||
|
||||
|
@ -891,7 +888,7 @@ details on resource memory association for sparse resources is described in
|
|||
<<sparsememory>>.
|
||||
|
||||
Non-sparse resources must: be bound completely and contiguously to a single
|
||||
slink:VkDeviceMemory object before the resource is passed as a parameter to
|
||||
sname:VkDeviceMemory object before the resource is passed as a parameter to
|
||||
any of the following operations:
|
||||
|
||||
* creating image or buffer views
|
||||
|
@ -925,9 +922,7 @@ include::../protos/vkGetImageMemoryRequirements.txt[]
|
|||
|
||||
include::../validity/protos/vkGetImageMemoryRequirements.txt[]
|
||||
|
||||
The sname:VkMemoryRequirements structure returned by
|
||||
flink:vkGetBufferMemoryRequirements and flink:vkGetImageMemoryRequirements
|
||||
is defined as follows:
|
||||
The sname:VkMemoryRequirements structure is defined as:
|
||||
|
||||
include::../structs/VkMemoryRequirements.txt[]
|
||||
|
||||
|
@ -963,7 +958,7 @@ flink:vkGetImageMemoryRequirements:
|
|||
objects created with the same value for the pname:flags and pname:usage
|
||||
members in the sname:VkBufferCreateInfo structure passed to
|
||||
fname:vkCreateBuffer. Further, if code:usage1 and code:usage2 of type
|
||||
elink:VkBufferUsageFlags are such that the bits set in code:usage2 are a
|
||||
ename:VkBufferUsageFlags are such that the bits set in code:usage2 are a
|
||||
subset of the bits set in code:usage1, and they have the same
|
||||
pname:flags, then the bits set in pname:memoryTypeBits returned for
|
||||
code:usage1 must: be a subset of the bits set in pname:memoryTypeBits
|
||||
|
@ -1178,7 +1173,7 @@ Buffers, and linear image subresources in either the
|
|||
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
layouts, are _host-accessible subresources_. That is, the host has a
|
||||
well-defined addressing scheme to interpret the contents, and thus the
|
||||
layout of the data in memory can be consistently interpreted across aliases
|
||||
layout of the data in memory can: be consistently interpreted across aliases
|
||||
if each of those aliases is a host-accessible subresource. Opaque images and
|
||||
linear image subresources in other layouts are not host-accessible.
|
||||
|
||||
|
|
|
@ -23,12 +23,10 @@ include::../protos/vkCreateSampler.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateSampler.txt[]
|
||||
|
||||
The sname:VkSamplerCreateInfo structure is defined as follows:
|
||||
The sname:VkSamplerCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkSamplerCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkSamplerCreateInfo are described as follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -123,7 +121,7 @@ ename:VK_SAMPLER_MIPMAP_MODE_NEAREST correspond to
|
|||
code:GL_LINEAR_MIPMAP_NEAREST).
|
||||
|
||||
There are no {apiname} filter modes that directly correspond to OpenGL
|
||||
minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can be
|
||||
minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can: be
|
||||
emulated using ename:VK_SAMPLER_MIPMAP_MODE_NEAREST, pname:minLod = 0, and
|
||||
pname:maxLod = 0.25, and using pname:minFilter = ename:VK_FILTER_LINEAR or
|
||||
pname:minFilter = ename:VK_FILTER_NEAREST, respectively.
|
||||
|
|
|
@ -424,7 +424,7 @@ be assigned to that variable for all samples in the pixel, but that value
|
|||
must: be interpolated to a location that lies in both the pixel and in the
|
||||
primitive being rendered, including any of the pixel's samples covered by
|
||||
the primitive. Because the location at which the variable is interpolated
|
||||
may be different in neighboring pixels, and derivatives may be computed by
|
||||
may: be different in neighboring pixels, and derivatives may: be computed by
|
||||
computing differences between neighboring pixels, derivatives of
|
||||
centroid-sampled inputs may: be less accurate than those for non-centroid
|
||||
interpolated variables. If a fragment shader input is decorated with
|
||||
|
|
|
@ -463,12 +463,12 @@ must: abide by the following guidelines:
|
|||
* All sparse resources that are bound to aliased physical memory must: be
|
||||
created with the ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT /
|
||||
ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT flag.
|
||||
* All resources that access aliased physical memory must interpret the
|
||||
* All resources that access aliased physical memory must: interpret the
|
||||
memory in the same way. This implies the following:
|
||||
** Buffers and images cannot: alias the same physical memory in a data
|
||||
consistent fashion. The physical memory ranges must be used exclusively
|
||||
by buffers or used exclusively by images for data consistency to be
|
||||
guaranteed.
|
||||
consistent fashion. The physical memory ranges must: be used
|
||||
exclusively by buffers or used exclusively by images for data
|
||||
consistency to be guaranteed.
|
||||
** Memory in sparse image mip tail regions cannot: access
|
||||
aliased memory in a data consistent fashion.
|
||||
** Sparse images that alias the same physical memory must: have compatible
|
||||
|
@ -477,7 +477,7 @@ must: abide by the following guidelines:
|
|||
|
||||
Failure to follow any of the above guidelines will require the application
|
||||
to abide by the normal, non-sparse resource <<resources-memory-aliasing,
|
||||
aliasing rules>>. In this case memory cannot be accessed in a data
|
||||
aliasing rules>>. In this case memory cannot: be accessed in a data
|
||||
consistent fashion.
|
||||
|
||||
[NOTE]
|
||||
|
@ -667,8 +667,10 @@ features.
|
|||
Some features of the implementation are not possible to disable, and are
|
||||
reported to allow applications to alter their sparse resource usage
|
||||
accordingly. These read-only capabilites are reported in the
|
||||
pname:sparseProperties member of slink:VkPhysicalDeviceProperties.
|
||||
The definition of pname:sparseProperties is
|
||||
slink:VkPhysicalDeviceProperties::pname:sparseProperties member, which is a
|
||||
structure of type sname:VkPhysicalDeviceSparseProperties.
|
||||
|
||||
The sname:VkPhysicalDeviceSparseProperties structure is defined as:
|
||||
|
||||
include::../structs/VkPhysicalDeviceSparseProperties.txt[]
|
||||
|
||||
|
@ -734,12 +736,12 @@ supported and what the sparse image block shape will be.
|
|||
|
||||
include::../structs/VkSparseImageFormatProperties.txt[]
|
||||
|
||||
* pname:aspectMask is a elink:VkImageAspectFlags specifying which
|
||||
aspects of the image the properties apply to.
|
||||
* pname:aspectMask is a bitmask of elink:VkImageAspectFlagBits specifying
|
||||
which aspects of the image the properties apply to.
|
||||
* pname:imageGranularity is the width, height, and depth of the
|
||||
sparse image block in texels or compressed texel blocks.
|
||||
* pname:flags is a bitmask specifying additional information about
|
||||
the sparse resource. Bits which can: be set include:
|
||||
* pname:flags is a bitmask specifying additional information about the
|
||||
sparse resource. Bits which can: be set include:
|
||||
+
|
||||
--
|
||||
include::../enums/VkSparseImageFormatFlagBits.txt[]
|
||||
|
@ -877,8 +879,8 @@ include::../structs/VkSparseImageMemoryRequirements.txt[]
|
|||
single bindable sparse image block in pixel units. For aspect
|
||||
ename:VK_IMAGE_ASPECT_METADATA_BIT, all dimensions will be zero
|
||||
pixels. All metadata is located in the mip tail region.
|
||||
* pname:formatProperties.flags contains members of
|
||||
elink:VkSparseImageFormatFlags:
|
||||
* pname:formatProperties.flags is a bitmask of
|
||||
elink:VkSparseImageFormatFlagBits:
|
||||
** If ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT is set the image
|
||||
uses a single mip tail region for all array layers.
|
||||
** If ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is set the
|
||||
|
@ -954,8 +956,8 @@ resource.
|
|||
|
||||
Non-sparse resources are backed by a single physical allocation prior to
|
||||
device use (via fname:vkBindImageMemory or fname:vkBindBufferMemory), and
|
||||
their backing mustnot: be changed. On the other hand, sparse resources can
|
||||
be bound to memory non-contiguously and these bindings can be altered
|
||||
their backing mustnot: be changed. On the other hand, sparse resources can:
|
||||
be bound to memory non-contiguously and these bindings can: be altered
|
||||
during the lifetime of the resource.
|
||||
|
||||
[NOTE]
|
||||
|
@ -1045,10 +1047,10 @@ include::../structs/VkSparseMemoryBind.txt[]
|
|||
* pname:resourceOffset is the offset into the resource.
|
||||
* pname:size is the size of the memory region to be bound.
|
||||
* pname:memory is the sname:VkDeviceMemory object that the range of the
|
||||
resource is bound to. If pname:memory is sname:VK_NULL_HANDLE, the range
|
||||
resource is bound to. If pname:memory is code:VK_NULL_HANDLE, the range
|
||||
is unbound.
|
||||
* pname:memoryOffset is the offset into the sname:VkDeviceMemory object to
|
||||
bind the resource range to. If pname:memory is sname:VK_NULL_HANDLE,
|
||||
bind the resource range to. If pname:memory is code:VK_NULL_HANDLE,
|
||||
this value is ignored.
|
||||
* pname:flags are sparse memory binding flags.
|
||||
|
||||
|
@ -1155,7 +1157,7 @@ include::../structs/VkSparseImageMemoryBindInfo.txt[]
|
|||
|
||||
include::../validity/structs/VkSparseImageMemoryBindInfo.txt[]
|
||||
|
||||
Where sname:VkSparseImageMemoryBind is defined as follows:
|
||||
The sname:VkSparseImageMemoryBind structure is defined as:
|
||||
|
||||
include::../structs/VkSparseImageMemoryBind.txt[]
|
||||
|
||||
|
@ -1169,10 +1171,10 @@ include::../structs/VkSparseImageMemoryBind.txt[]
|
|||
latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding
|
||||
dimensions of the image subresource.
|
||||
* pname:memory is the sname:VkDeviceMemory object that the sparse image
|
||||
blocks of the image are bound to. If pname:memory is sname:VK_NULL_HANDLE,
|
||||
blocks of the image are bound to. If pname:memory is code:VK_NULL_HANDLE,
|
||||
the sparse image blocks are unbound.
|
||||
* pname:memoryOffset is an offset into sname:VkDeviceMemory object. If
|
||||
pname:memory is sname:VK_NULL_HANDLE, this value is ignored.
|
||||
pname:memory is code:VK_NULL_HANDLE, this value is ignored.
|
||||
* pname:flags are sparse memory binding flags.
|
||||
|
||||
include::../validity/structs/VkSparseImageMemoryBind.txt[]
|
||||
|
@ -1188,7 +1190,7 @@ include::../protos/vkQueueBindSparse.txt[]
|
|||
* pname:pBindInfo is an array of slink:VkBindSparseInfo structures
|
||||
each specifying the parameters of a sparse binding operation batch as
|
||||
described below.
|
||||
* pname:fence, if not ename:VK_NULL_HANDLE, is a fence to be signaled
|
||||
* pname:fence, if not code:VK_NULL_HANDLE, is a fence to be signaled
|
||||
once the sparse binding operation completes.
|
||||
|
||||
Each batch of sparse binding operations is represented by a list of
|
||||
|
|
|
@ -59,7 +59,7 @@ include::../protos/vkCreateFence.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateFence.txt[]
|
||||
|
||||
The definition of sname:VkFenceCreateInfo is:
|
||||
The sname:VkFenceCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkFenceCreateInfo.txt[]
|
||||
|
||||
|
@ -201,12 +201,10 @@ include::../protos/vkCreateSemaphore.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateSemaphore.txt[]
|
||||
|
||||
The definition of sname:VkSemaphoreCreateInfo is:
|
||||
The sname:VkSemaphoreCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkSemaphoreCreateInfo.txt[]
|
||||
|
||||
The members of sname:VkSemaphoreCreateInfo have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
@ -271,7 +269,7 @@ Some implementations may: be able to execute transfer operations and/or
|
|||
vertex processing work before the semaphore is signaled.
|
||||
|
||||
If an image layout transition needs to be performed on a swapchain image
|
||||
before it is used in a framebuffer, that can be performed as the first
|
||||
before it is used in a framebuffer, that can: be performed as the first
|
||||
operation submitted to the queue after acquiring the image,
|
||||
and shouldnot: prevent other work from overlapping with the presentation
|
||||
operation. For example, a sname:VkImageMemoryBarrier could use:
|
||||
|
@ -336,7 +334,7 @@ include::../protos/vkCreateEvent.txt[]
|
|||
|
||||
include::../validity/protos/vkCreateEvent.txt[]
|
||||
|
||||
The definition of sname:VkEventCreateInfo is:
|
||||
The sname:VkEventCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkEventCreateInfo.txt[]
|
||||
|
||||
|
@ -554,6 +552,43 @@ conditions:
|
|||
** pname:dstStageMask of the previous dependency includes
|
||||
ename:VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, and pname:srcStageMask of the
|
||||
current dependency includes at least one graphics pipeline stage.
|
||||
* for each dependency in the sequence (except the first), at least one of the
|
||||
following conditions is true:
|
||||
** the current dependency is a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair
|
||||
(where the fname:vkCmdWaitEvents may: be inside or outside a render pass
|
||||
instance), or a fname:vkCmdPipelineBarrier outside of a render pass instance,
|
||||
or a subpass dependency with pname:srcSubpass equal to
|
||||
ename:VK_SUBPASS_EXTERNAL for a render pass instance that begins with a
|
||||
fname:vkCmdBeginRenderPass command, and the previous dependency is any of:
|
||||
*** a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair or a
|
||||
fname:vkCmdPipelineBarrier, either one outside of a render pass instance,
|
||||
that precedes the current dependency in the queue execution order. Or,
|
||||
*** a subpass dependency, with pname:dstSubpass equal to
|
||||
ename:VK_SUBPASS_EXTERNAL, for a renderpass instance that was ended with a
|
||||
fname:vkCmdEndRenderPass command that precedes the current dependency in
|
||||
the queue execution order.
|
||||
** the current dependency is a subpass dependency for a render pass instance,
|
||||
and the previous dependency is any of:
|
||||
*** another dependency for the same render pass instance, with a
|
||||
pname:dstSubpass equal to the pname:srcSubpass of the current dependency.
|
||||
Or,
|
||||
*** a fname:vkCmdPipelineBarrier of the same render pass instance, recorded
|
||||
for the subpass indicated by the pname:srcSubpass of the current
|
||||
dependency. Or,
|
||||
*** a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair, where the
|
||||
fname:vkCmdWaitEvents is inside the same render pass instance, recorded
|
||||
for the subpass indicated by the pname:srcSubpass of the current
|
||||
dependency.
|
||||
** the current dependency is a fname:vkCmdPipelineBarrier inside a subpass of
|
||||
a render pass instance, and the previous dependency is any of:
|
||||
*** a subpass dependency for the same render pass instance, with a
|
||||
pname:dstSubpass equal to the subpass of the fname:vkCmdPipelineBarrier.
|
||||
Or,
|
||||
*** a fname:vkCmdPipelineBarrier of the same render pass instance, recorded
|
||||
for the same subpass, before the current dependency. Or,
|
||||
*** a fname:vkCmdSetEvent/fname:vkCmdWaitEvents pair, where the
|
||||
fname:vkCmdWaitEvents is inside the same render pass instance, recorded
|
||||
for the same subpass, before the current dependency.
|
||||
|
||||
A pair of consecutive execution dependencies in an execution dependency
|
||||
chain accomplishes a dependency between the stages latexmath:[$A$] and
|
||||
|
@ -566,6 +601,29 @@ pipeline stages latexmath:[$A$] in the first set of commands completes
|
|||
before the work performed by pipeline stages latexmath:[$B$] in the second
|
||||
set of commands begins.
|
||||
|
||||
A command latexmath:[$C_1$] is said to _happen-before_ an execution dependency
|
||||
latexmath:[$D_2$] for a pipeline stage latexmath:[$S$] if all the following
|
||||
conditions are true:
|
||||
|
||||
* latexmath:[$C_1$] is in the first set of commands for an execution dependency
|
||||
latexmath:[$D_1$] that includes latexmath:[$S$] in its pname:srcStageMask.
|
||||
And,
|
||||
* there exists an execution dependency chain that includes latexmath:[$D_1$]
|
||||
and latexmath:[$D_2$], where latexmath:[$D_2$] follows latexmath:[$D_1$] in the
|
||||
execution dependency sequence.
|
||||
|
||||
Similarly, a command latexmath:[$C_2$] is said to _happen-after_ an execution
|
||||
dependency latexmath:[$D_1$] for a pipeline stage latexmath:[$S$] if all the
|
||||
following conditions are true:
|
||||
|
||||
* latexmath:[$C_2$] is in the second set of commands for an execution dependency
|
||||
latexmath:[$D_2$] that includes latexmath:[$S$] in its pname:dstStageMask.
|
||||
And,
|
||||
* there exists an execution dependency chain that includes latexmath:[$D_1$]
|
||||
and latexmath:[$D_2$], where latexmath:[$D_2$] follows latexmath:[$D_1$] in the
|
||||
execution dependency sequence.
|
||||
|
||||
|
||||
An execution dependency is _by-region_ if its pname:dependencyFlags
|
||||
parameter includes ename:VK_DEPENDENCY_BY_REGION_BIT. Such a barrier
|
||||
describes a per-region (x,y,layer) dependency. That is, for each region, the
|
||||
|
@ -581,22 +639,23 @@ stages must: have completed for preceding commands before any destination
|
|||
stages starts for subsequent commands.
|
||||
|
||||
[[synchronization-execution-and-memory-dependencies-available-and-visible]]
|
||||
_Memory dependencies_ synchronize accesses to memory between two sets of
|
||||
commands. They operate according to two ``halves'' of a dependency to
|
||||
synchronize two sets of commands, the commands that execute first vs the
|
||||
commands that execute second, as described above. The first half of the
|
||||
dependency makes memory accesses using the set of access types in
|
||||
pname:srcAccessMask performed in pipeline stages in pname:srcStageMask by
|
||||
the first set of commands complete and writes be _available_ for subsequent
|
||||
commands. The second half of the dependency makes any available writes from
|
||||
previous commands _visible_ to pipeline stages in pname:dstStageMask using
|
||||
the set of access types in pname:dstAccessMask for the second set of
|
||||
commands, if those writes have been made available with the first half of
|
||||
the same or a previous dependency. The two halves of a memory dependency
|
||||
_Memory dependencies_ are coupled to execution dependencies, and synchronize
|
||||
accesses to memory between two sets of commands. They operate according to two
|
||||
``halves'' of a dependency to synchronize two sets of commands, the commands
|
||||
that happen-before the execution dependency for the pname:srcStageMask vs the
|
||||
commands that happen-after the execution dependency for the pname:dstStageMask,
|
||||
as described above. The first half of the dependency makes memory accesses using
|
||||
the set of access types in pname:srcAccessMask performed in pipeline stages in
|
||||
pname:srcStageMask by the first set of commands complete and writes be
|
||||
_available_ for subsequent commands. The second half of the dependency makes any
|
||||
available writes from previous commands _visible_ to pipeline stages in
|
||||
pname:dstStageMask using the set of access types in pname:dstAccessMask for the
|
||||
second set of commands, if those writes have been made available with the first
|
||||
half of the same or a previous dependency. The two halves of a memory dependency
|
||||
can: either be expressed as part of a single command, or can: be part of
|
||||
separate barriers as long as there is an execution dependency chain between
|
||||
them. The application must: use memory dependencies to make writes visible
|
||||
before subsequent reads can rely on them, and before subsequent writes can
|
||||
before subsequent reads can: rely on them, and before subsequent writes can:
|
||||
overwrite them. Failure to do so causes the result of the reads to be
|
||||
undefined, and the order of writes to be undefined.
|
||||
|
||||
|
@ -812,7 +871,8 @@ ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT is useful for accomplishing
|
|||
memory barriers and layout transitions when the next accesses will be done
|
||||
in a different queue or by a presentation engine; in these cases subsequent
|
||||
commands in the same queue do not need to wait, but the barrier or
|
||||
transition must complete before semaphores associated with the batch signal.
|
||||
transition must: complete before semaphores associated with the batch
|
||||
signal.
|
||||
====
|
||||
|
||||
[NOTE]
|
||||
|
@ -886,18 +946,18 @@ memory, and image memory.
|
|||
The global memory barrier type is specified with an instance of the
|
||||
sname:VkMemoryBarrier structure. This type of barrier applies to memory
|
||||
accesses involving all memory objects that exist at the time of its
|
||||
execution. The definition of sname:VkMemoryBarrier is:
|
||||
execution.
|
||||
|
||||
The sname:VkMemoryBarrier structure is defined as:
|
||||
|
||||
include::../structs/VkMemoryBarrier.txt[]
|
||||
|
||||
The members of sname:VkMemoryBarrier have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:srcAccessMask is a mask of the classes of memory accesses
|
||||
* pname:srcAccessMask is a bitmask of the classes of memory accesses
|
||||
performed by the first set of commands that will participate in
|
||||
the dependency.
|
||||
* pname:dstAccessMask is a mask of the classes of memory accesses
|
||||
* pname:dstAccessMask is a bitmask of the classes of memory accesses
|
||||
performed by the second set of commands that will participate in
|
||||
the dependency.
|
||||
|
||||
|
@ -1046,18 +1106,16 @@ specified range of the buffer. It is also used to transfer ownership of a
|
|||
buffer range from one queue family to another, as described in the
|
||||
<<resources-sharing,Resource Sharing>> section.
|
||||
|
||||
sname:VkBufferMemoryBarrier has the following definition:
|
||||
The sname:VkBufferMemoryBarrier structure is defined as:
|
||||
|
||||
include::../structs/VkBufferMemoryBarrier.txt[]
|
||||
|
||||
The members of sname:VkBufferMemoryBarrier have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:srcAccessMask is a mask of the classes of memory accesses
|
||||
* pname:srcAccessMask is a bitmask of the classes of memory accesses
|
||||
performed by the first set of commands that will participate in
|
||||
the dependency.
|
||||
* pname:dstAccessMask is a mask of the classes of memory accesses
|
||||
* pname:dstAccessMask is a bitmask of the classes of memory accesses
|
||||
performed by the second set of commands that will participate in
|
||||
the dependency.
|
||||
* pname:srcQueueFamilyIndex is the queue family that is relinquishing
|
||||
|
@ -1092,18 +1150,16 @@ layout transition for an image subresource range, or to transfer ownership
|
|||
of an image subresource range from one queue family to another as described
|
||||
in the <<resources-sharing,Resource Sharing>> section.
|
||||
|
||||
sname:VkImageMemoryBarrier has the following definition:
|
||||
The sname:VkImageMemoryBarrier structure is defined as:
|
||||
|
||||
include::../structs/VkImageMemoryBarrier.txt[]
|
||||
|
||||
The members of sname:VkImageMemoryBarrier have the following meanings:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:srcAccessMask is a mask of the classes of memory accesses
|
||||
* pname:srcAccessMask is a bitmask of the classes of memory accesses
|
||||
performed by the first set of commands that will participate in
|
||||
the dependency.
|
||||
* pname:dstAccessMask is a mask of the classes of memory accesses
|
||||
* pname:dstAccessMask is a bitmask of the classes of memory accesses
|
||||
performed by the second set of commands that will participate in
|
||||
the dependency.
|
||||
* pname:oldLayout describes the current layout of the image
|
||||
|
|
|
@ -423,14 +423,13 @@ segment are both implementation-dependent.
|
|||
|
||||
== Tessellation Pipeline State
|
||||
|
||||
The pname:pTessellationState member of slink:VkGraphicsPipelineCreateInfo is
|
||||
of type sname:VkPipelineTessellationStateCreateInfo:
|
||||
The pname:pTessellationState member of slink:VkGraphicsPipelineCreateInfo
|
||||
points to a structure of type sname:VkPipelineTessellationStateCreateInfo.
|
||||
|
||||
The sname:VkPipelineTessellationStateCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineTessellationStateCreateInfo.txt[]
|
||||
|
||||
The members of the sname:VkPipelineTessellationStateCreateInfo structure are
|
||||
as follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
|
|
|
@ -365,7 +365,7 @@ These cases include:
|
|||
pname:shaderStorageImageReadWithoutFormat feature is not enabled, or the
|
||||
instruction is code:OpImageWrite and the
|
||||
pname:shaderStorageImageWriteWithoutFormat feature is not enabled, then
|
||||
the SPIR-V Image Format must be <<spirvenv-image-formats,compatible>>
|
||||
the SPIR-V Image Format must: be <<spirvenv-image-formats,compatible>>
|
||||
with the image view's pname:format.
|
||||
* The sampler pname:unnormalizedCoordinates is ename:VK_TRUE and any of
|
||||
the <<samplers-unnormalizedCoordinates,limitations of unnormalized
|
||||
|
@ -726,7 +726,7 @@ the value of the texel after swizzle is undefined.
|
|||
[[textures-sparse-residency]]
|
||||
=== Sparse Residency
|
||||
|
||||
code:OpImageSparse* instructions return a struct which includes a
|
||||
code:OpImageSparse* instructions return a structure which includes a
|
||||
_residency code_ indicating whether any texels accessed by the instruction
|
||||
are sparse unbound texels. This code can: be interpreted by the
|
||||
code:OpImageSparseTexelsResident instruction which converts the residency
|
||||
|
@ -759,7 +759,7 @@ There are a series of validations that the texel undergoes.
|
|||
[[textures-format-validation]]
|
||||
==== Texel Format Validation
|
||||
|
||||
If the image format of the pname:OpTypeImage is not compatible with the
|
||||
If the image format of the code:OpTypeImage is not compatible with the
|
||||
sname:VkImageView's pname:format, the effect of the write on the image
|
||||
view's memory is undefined, but the write mustnot: access memory outside of
|
||||
the image view.
|
||||
|
@ -800,7 +800,7 @@ Each component is converted based on its type and size (as defined in the
|
|||
<<features-formats-definition,Format Definition>> section for each
|
||||
elink:VkFormat), using the appropriate equations in
|
||||
<<fundamentals-fp16,16-Bit Floating-Point Numbers>> and
|
||||
<<fundamentals-fixedconf,Fixed-Point Data Conversion>>.
|
||||
<<fundamentals-fixedconv,Fixed-Point Data Conversion>>.
|
||||
|
||||
|
||||
== Derivative Operations
|
||||
|
|
|
@ -17,7 +17,7 @@ operations are applied to vertices of the resulting primitives:
|
|||
* Viewport mapping, including depth range scaling (see
|
||||
<<vertexpostproc-viewport,Controlling the Viewport>>).
|
||||
* Front face determination for polygon primitives (see
|
||||
<<primsrast-triangles-basic,Basic Triangle Rasterization>>).
|
||||
<<primsrast-polygons-basic,Basic Polygon Rasterization>>).
|
||||
|
||||
ifdef::editing-notes[]
|
||||
[NOTE]
|
||||
|
@ -288,24 +288,23 @@ Multiple viewports are available, numbered zero up to
|
|||
sname:VkPhysicalDeviceLimits::pname:maxViewports minus one. The number of
|
||||
viewports used by a pipeline is controlled by the pname:viewportCount member
|
||||
of the sname:VkPipelineViewportStateCreateInfo structure used in pipeline
|
||||
creation:
|
||||
creation.
|
||||
|
||||
The sname:VkPipelineViewportStateCreateInfo structure is defined as:
|
||||
|
||||
include::../structs/VkPipelineViewportStateCreateInfo.txt[]
|
||||
|
||||
The members of the sname:VkPipelineViewportStateCreateInfo structure are as
|
||||
follows:
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is reserved for future use.
|
||||
* pname:viewportCount is the number of viewports used by the pipeline.
|
||||
* pname:pViewports is a pointer to an array of slink:VkViewport structs,
|
||||
defining the viewport transforms. If the viewport state is dynamic, this
|
||||
member is ignored.
|
||||
* pname:pViewports is a pointer to an array of slink:VkViewport
|
||||
structures, defining the viewport transforms. If the viewport state is
|
||||
dynamic, this member is ignored.
|
||||
* pname:scissorCount is the number of <<fragops-scissor,scissors>> and
|
||||
must: match the number of viewports.
|
||||
* pname:pScissors is a pointer to an array of sname:VkRect2D structs which
|
||||
define the rectangular bounds of the scissor for the corresponding
|
||||
* pname:pScissors is a pointer to an array of sname:VkRect2D structures
|
||||
which define the rectangular bounds of the scissor for the corresponding
|
||||
viewport. If the scissor state is dynamic, this member is ignored.
|
||||
|
||||
include::../validity/structs/VkPipelineViewportStateCreateInfo.txt[]
|
||||
|
|
|
@ -2,24 +2,17 @@
|
|||
#
|
||||
# Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# checkLinks.py - validate link/reference API constructs in files
|
||||
#
|
||||
|
|
|
@ -79,7 +79,7 @@ should be clear. Secondary command buffers may be referenced at most once from
|
|||
a primary command buffer (even the same primary command buffer) unless
|
||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is set.
|
||||
|
||||
The pname:renderPass and pname:framebuffer members must be sname:VK_NULL_HANDLE
|
||||
The pname:renderPass and pname:framebuffer members must be code:VK_NULL_HANDLE
|
||||
for primary command buffers. For secondary command buffers, they must refer to
|
||||
the render pass and framebuffer that will be active when the secondary command
|
||||
buffer is called.
|
||||
|
|
|
@ -58,7 +58,7 @@ of the slink:VkClearValue union, the definition of which is:
|
|||
include::../structs/VkClearValue.txt[]
|
||||
|
||||
If the attachment and aspect referenced by ptext:aspectMask and
|
||||
ptext:colorAttachment is a color attachment, the the values contained in the
|
||||
ptext:colorAttachment is a color attachment, the values contained in the
|
||||
pname:color field of slink:VkClearValue is used to clear the attachment
|
||||
regions. If the attachment and aspect referenced by ptext:aspectMask and
|
||||
ptext:colorAttachment is a depth, stencil or depth-stencil attachment, then
|
||||
|
|
|
@ -41,7 +41,7 @@ slink:VkClearDepthStencilValue structure, the definition of which is:
|
|||
|
||||
include::../structs/VkClearDepthStencilValue.txt[]
|
||||
|
||||
The pname:depth and pname:stencil members contain the value to clear the the
|
||||
The pname:depth and pname:stencil members contain the value to clear the
|
||||
depth and stencil aspects of the image to, respectively. pname:imageLayout
|
||||
specifies the layout of the image being cleared. pname:pRanges points to an
|
||||
array pname:rangeCount regions of the image are cleared, each of which is described
|
||||
|
|
|
@ -38,7 +38,7 @@ indirect command consumes pname:drawCount structures, stored at pname:offset
|
|||
bytes into the buffer object whose handle is specified in pname:buffer.
|
||||
The beginning of each structure is pname:stride bytes from the previous.
|
||||
The data structures have the a layout in memory which may be represented by
|
||||
the the slink:VkDrawIndirectCommand structure, the definition of which is:
|
||||
the slink:VkDrawIndirectCommand structure, the definition of which is:
|
||||
|
||||
include::../structs/VkDrawIndirectCommand.txt[]
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ compute shader.
|
|||
pipeline and the descritor sets.
|
||||
|
||||
- pname:basePipelineHandle the pipeline to derive from (can be
|
||||
VK_NULL_HANDLE, if pipeline is not derived).
|
||||
code:VK_NULL_HANDLE, if pipeline is not derived).
|
||||
|
||||
- pname:basePipelineIndex the index into the pname:pCreateInfos parameter
|
||||
to fname:vkCreateComputePipelines.
|
||||
|
@ -71,7 +71,7 @@ earlier than the current sname:VkComputePipelineCreateInfo in the list. The
|
|||
parameters pname:basePipelineHandle and pname:basePipelineIndex are mutually
|
||||
exclusive. If you specify a valid pname:basePipelineHandle,
|
||||
pname:basePipelineIndex must be set to -1. If you specify a valid
|
||||
pname:basePipelineIndex, pname:basePipelineHandle must be VK_NULL_HANDLE.
|
||||
pname:basePipelineIndex, pname:basePipelineHandle must be code:VK_NULL_HANDLE.
|
||||
|
||||
include::../validity/protos/vkCreateComputePipelines.txt[]
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ The ename:VK_IMAGE_ASPECT_COLOR_BIT aspect is valid only for image formats that
|
|||
ename:VK_IMAGE_ASPECT_DEPTH_BIT aspect is valid for formats containing depth information and the
|
||||
ename:VK_IMAGE_ASPECT_STENCIL_BIT aspect is valid only for formats containing stencil information. Note
|
||||
that some formats contain both depth and stencil information, and
|
||||
in this case, pname:aspectMask is is used to select which to query. It is not legal to include more than
|
||||
in this case, pname:aspectMask is used to select which to query. It is not legal to include more than
|
||||
one member of elink:VkImageAspectFlagBits in pname:aspectMask. Some formats also include metadata
|
||||
which may be implementation dependent but is queryable by specifying ename:VK_IMAGE_ASPECT_METADATA_BIT.
|
||||
|
||||
|
|
|
@ -271,9 +271,11 @@ following table:
|
|||
slink:VkCommandPoolCreateInfo.
|
||||
| sname{cl} | Formats the macro argument like slink{cl}. Does not
|
||||
generate a cross-reference. May also be an abstract
|
||||
structure name. Examples: sname{cl}VkCommandPoolCreateInfo
|
||||
-> sname:VkCommandPoolCreateInfo, sname{cl}VK_NULL_HANDLE
|
||||
-> sname:VK_NULL_HANDLE. The slink{cl} macro is preferred.
|
||||
structure or handle name. Example:
|
||||
sname{cl}VkCommandPoolCreateInfo ->
|
||||
sname:VkCommandPoolCreateInfo. The slink{cl} macro is
|
||||
preferred if a definition of the target type with an
|
||||
anchor exists in the document.
|
||||
| stext{cl} | Formats the macro argument like sname{cl}. May contain
|
||||
asterisks for wildcards. Not validated. Example:
|
||||
stext{cl}Vk*CreateInfo -> stext:Vk*CreateInfo.
|
||||
|
@ -323,7 +325,8 @@ following table:
|
|||
basetype{cl}VkDeviceSize -> basetype:VkDeviceSize.
|
||||
| code{cl} | Formats the macro argument as a code sample. Primarily
|
||||
used for SPIR-V keywords. Examples: code{cl}ClipDistance
|
||||
-> code:ClipDistance, code{cl}NULL -> code:NULL.
|
||||
-> code:ClipDistance, code{cl}VK_NULL_HANDLE ->
|
||||
code:VK_NULL_HANDLE, code{cl}NULL -> code:NULL.
|
||||
|=====
|
||||
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ endif::doctype-manpage[]
|
|||
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
|
||||
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
|
||||
* pname:image mustnot: have a compressed or depth/stencil format
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -21,6 +21,7 @@ endif::doctype-manpage[]
|
|||
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
|
||||
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
|
||||
* pname:image must: have a depth/stencil format
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -18,10 +18,10 @@ endif::doctype-manpage[]
|
|||
* pname:dstOffset must: be less than the size of pname:dstBuffer
|
||||
* pname:firstQuery must: be less than the number of queries in pname:queryPool
|
||||
* The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must be multiples of `8`
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `4`
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `8`
|
||||
* pname:dstBuffer must: have enough storage, from pname:dstOffset, to contain the result of each query, as described <<queries-operation-memorylayout,here>>
|
||||
* pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -23,7 +23,7 @@ endif::doctype-manpage[]
|
|||
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -25,7 +25,7 @@ endif::doctype-manpage[]
|
|||
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -24,7 +24,7 @@ endif::doctype-manpage[]
|
|||
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -25,7 +25,7 @@ endif::doctype-manpage[]
|
|||
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -32,7 +32,7 @@ endif::doctype-manpage[]
|
|||
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -32,7 +32,7 @@ endif::doctype-manpage[]
|
|||
* If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set
|
||||
* Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -21,7 +21,7 @@ endif::doctype-manpage[]
|
|||
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
||||
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
||||
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
||||
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
||||
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
||||
* If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see <<synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency>>
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -15,8 +15,8 @@ endif::doctype-manpage[]
|
|||
* pname:queryPool must: have been created, allocated or retrieved from pname:device
|
||||
* Each of pname:device and pname:queryPool must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
|
||||
* pname:firstQuery must: be less than the number of queries in pname:queryPool
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must be multiples of `4`
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must be multiples of `8`
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must: be multiples of `4`
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must: be multiples of `8`
|
||||
* The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool
|
||||
* pname:dataSize must: be large enough to contain the result of each query, as described <<queries-operation-memorylayout,here>>
|
||||
* If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT
|
||||
|
|
|
@ -23,7 +23,7 @@ endif::doctype-manpage[]
|
|||
* pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width
|
||||
* pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height
|
||||
* pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth
|
||||
* pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>>
|
||||
* pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>>
|
||||
* The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter
|
||||
* The pname:aspectMask member of pname:imageSubresource must: only have a single bit set
|
||||
* If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively
|
||||
|
|
|
@ -30,7 +30,7 @@ endif::doctype-manpage[]
|
|||
* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width
|
||||
* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height
|
||||
* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth
|
||||
* pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>>
|
||||
* pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>>
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -37,13 +37,13 @@ endif::doctype-manpage[]
|
|||
* pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferDepthSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferStencilSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageColorSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageDepthSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageIntegerSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxStorageImageSamples
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts
|
||||
* If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts
|
||||
* If the <<features-features-textureCompressionETC2,ETC2 texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, ename:VK_FORMAT_EAC_R11_UNORM_BLOCK, ename:VK_FORMAT_EAC_R11_SNORM_BLOCK, ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK, or ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK
|
||||
* If the <<features-features-textureCompressionASTC_LDR,ASTC LDR texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK, ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK, ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK, ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK, ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK
|
||||
* If the <<features-features-textureCompressionBC,BC texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK, ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK, ename:VK_FORMAT_BC2_UNORM_BLOCK, ename:VK_FORMAT_BC2_SRGB_BLOCK, ename:VK_FORMAT_BC3_UNORM_BLOCK, ename:VK_FORMAT_BC3_SRGB_BLOCK, ename:VK_FORMAT_BC4_UNORM_BLOCK, ename:VK_FORMAT_BC4_SNORM_BLOCK, ename:VK_FORMAT_BC5_UNORM_BLOCK, ename:VK_FORMAT_BC5_SNORM_BLOCK, ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, ename:VK_FORMAT_BC6H_SFLOAT_BLOCK, ename:VK_FORMAT_BC7_UNORM_BLOCK, or ename:VK_FORMAT_BC7_SRGB_BLOCK
|
||||
|
|
|
@ -14,10 +14,10 @@ endif::doctype-manpage[]
|
|||
* pname:dstAlphaBlendFactor must: be a valid elink:VkBlendFactor value
|
||||
* pname:alphaBlendOp must: be a valid elink:VkBlendOp value
|
||||
* pname:colorWriteMask must: be a valid combination of elink:VkColorComponentFlagBits values
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
|
||||
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -10,7 +10,7 @@ endif::doctype-manpage[]
|
|||
* If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer to an array of pname:mapEntryCount sname:VkSpecializationMapEntry structures
|
||||
* If pname:dataSize is not `0`, pname:pData must: be a pointer to an array of pname:dataSize bytes
|
||||
* The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize
|
||||
* For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset
|
||||
* For any given element of pname:pMapEntries, pname:size must: be less than or equal to pname:dataSize minus pname:offset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -25,7 +25,7 @@ endif::doctype-manpage[]
|
|||
* If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any pipelines bound during the subpass mustnot: accesss those input attachments from the fragment shader
|
||||
* The pname:attachment member of any element of pname:pPreserveAttachments mustnot: be ename:VK_ATTACHMENT_UNUSED
|
||||
* Any given element of pname:pPreserveAttachments mustnot: also be an element of any other member of the subpass description
|
||||
* If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must use the same pname:layout
|
||||
* If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must: use the same pname:layout
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -1,23 +1,16 @@
|
|||
# Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Generator scripts and options
|
||||
# GENOPTS can be e.g. '-noprotect'
|
||||
|
|
|
@ -2,24 +2,17 @@
|
|||
#
|
||||
# Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os,re,sys
|
||||
|
||||
|
@ -765,9 +758,9 @@ class COutputGenerator(OutputGenerator):
|
|||
def genGroup(self, groupinfo, groupName):
|
||||
OutputGenerator.genGroup(self, groupinfo, groupName)
|
||||
groupElem = groupinfo.elem
|
||||
|
||||
|
||||
expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper()
|
||||
|
||||
|
||||
expandPrefix = expandName
|
||||
expandSuffix = ''
|
||||
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName)
|
||||
|
@ -775,12 +768,12 @@ class COutputGenerator(OutputGenerator):
|
|||
expandSuffix = '_' + expandSuffixMatch.group()
|
||||
# Strip off the suffix from the prefix
|
||||
expandPrefix = expandName.rsplit(expandSuffix, 1)[0]
|
||||
|
||||
|
||||
# Prefix
|
||||
body = "\ntypedef enum " + groupName + " {\n"
|
||||
|
||||
|
||||
isEnum = ('FLAG_BITS' not in expandPrefix)
|
||||
|
||||
|
||||
# Loop over the nested 'enum' tags. Keep track of the minimum and
|
||||
# maximum numeric values, if they can be determined; but only for
|
||||
# core API enumerants, not extension enumerants. This is inferred
|
||||
|
@ -816,9 +809,9 @@ class COutputGenerator(OutputGenerator):
|
|||
body += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n"
|
||||
body += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n"
|
||||
body += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n"
|
||||
|
||||
|
||||
body += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n"
|
||||
|
||||
|
||||
# Postfix
|
||||
body += "} " + groupName + ";"
|
||||
if groupElem.get('type') == 'bitmask':
|
||||
|
@ -964,24 +957,24 @@ class DocOutputGenerator(OutputGenerator):
|
|||
def genGroup(self, groupinfo, groupName):
|
||||
OutputGenerator.genGroup(self, groupinfo, groupName)
|
||||
groupElem = groupinfo.elem
|
||||
|
||||
|
||||
# See if we need min/max/num/padding at end
|
||||
expand = self.genOpts.expandEnumerants
|
||||
|
||||
|
||||
if expand:
|
||||
expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)',r'\1_\2',groupName).upper()
|
||||
isEnum = ('FLAG_BITS' not in expandName)
|
||||
|
||||
|
||||
expandPrefix = expandName
|
||||
expandSuffix = ''
|
||||
|
||||
|
||||
# Look for a suffix
|
||||
expandSuffixMatch = re.search(r'[A-Z][A-Z]+$',groupName)
|
||||
if expandSuffixMatch:
|
||||
expandSuffix = '_' + expandSuffixMatch.group()
|
||||
# Strip off the suffix from the prefix
|
||||
expandPrefix = expandName.rsplit(expandSuffix, 1)[0]
|
||||
|
||||
|
||||
# Prefix
|
||||
s = "typedef enum " + groupName + " {\n"
|
||||
|
||||
|
@ -1020,7 +1013,7 @@ class DocOutputGenerator(OutputGenerator):
|
|||
s += " " + expandPrefix + "_BEGIN_RANGE" + expandSuffix + " = " + minName + ",\n"
|
||||
s += " " + expandPrefix + "_END_RANGE" + expandSuffix + " = " + maxName + ",\n"
|
||||
s += " " + expandPrefix + "_RANGE_SIZE" + expandSuffix + " = (" + maxName + " - " + minName + " + 1),\n"
|
||||
|
||||
|
||||
s += " " + expandPrefix + "_MAX_ENUM" + expandSuffix + " = 0x7FFFFFFF\n"
|
||||
# Postfix
|
||||
s += "} " + groupName + ";"
|
||||
|
@ -2087,7 +2080,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
usages.append(usage.text)
|
||||
for usage in cmdinfo.removedValidity:
|
||||
usages.remove(usage.text)
|
||||
|
||||
|
||||
validity = self.makeValidUsageStatements(cmdinfo.elem, name, params, usages)
|
||||
threadsafety = self.makeThreadSafetyBlock(cmdinfo.elem, 'param')
|
||||
commandpropertiesentry = self.makeCommandPropertiesTableEntry(cmdinfo.elem, name)
|
||||
|
@ -2114,7 +2107,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
usages.append(usage.text)
|
||||
for usage in typeinfo.removedValidity:
|
||||
usages.remove(usage.text)
|
||||
|
||||
|
||||
validity = self.makeValidUsageStatements(typeinfo.elem, typename, params, usages)
|
||||
threadsafety = self.makeThreadSafetyBlock(typeinfo.elem, 'member')
|
||||
|
||||
|
|
|
@ -2,24 +2,17 @@
|
|||
#
|
||||
# Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import sys, time, pdb, string, cProfile
|
||||
from reg import *
|
||||
|
@ -125,24 +118,17 @@ prefixStrings = [
|
|||
'/*',
|
||||
'** Copyright (c) 2015-2016 The Khronos Group Inc.',
|
||||
'**',
|
||||
'** Permission is hereby granted, free of charge, to any person obtaining a',
|
||||
'** copy of this software and/or associated documentation files (the',
|
||||
'** "Materials"), to deal in the Materials without restriction, including',
|
||||
'** without limitation the rights to use, copy, modify, merge, publish,',
|
||||
'** distribute, sublicense, and/or sell copies of the Materials, and to',
|
||||
'** permit persons to whom the Materials are furnished to do so, subject to',
|
||||
'** the following conditions:',
|
||||
'** Licensed under the Apache License, Version 2.0 (the "License");',
|
||||
'** you may not use this file except in compliance with the License.',
|
||||
'** You may obtain a copy of the License at',
|
||||
'**',
|
||||
'** The above copyright notice and this permission notice shall be included',
|
||||
'** in all copies or substantial portions of the Materials.',
|
||||
'** http://www.apache.org/licenses/LICENSE-2.0',
|
||||
'**',
|
||||
'** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,',
|
||||
'** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF',
|
||||
'** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.',
|
||||
'** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY',
|
||||
'** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,',
|
||||
'** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE',
|
||||
'** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.',
|
||||
'** Unless required by applicable law or agreed to in writing, software',
|
||||
'** distributed under the License is distributed on an "AS IS" BASIS,',
|
||||
'** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
|
||||
'** See the License for the specific language governing permissions and',
|
||||
'** limitations under the License.',
|
||||
'*/',
|
||||
''
|
||||
]
|
||||
|
|
|
@ -1,23 +1,16 @@
|
|||
% Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
%
|
||||
% Permission is hereby granted, free of charge, to any person obtaining a
|
||||
% copy of this software and/or associated documentation files (the
|
||||
% "Materials"), to deal in the Materials without restriction, including
|
||||
% without limitation the rights to use, copy, modify, merge, publish,
|
||||
% distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
% permit persons to whom the Materials are furnished to do so, subject to
|
||||
% the following conditions:
|
||||
% Licensed under the Apache License, Version 2.0 (the "License");
|
||||
% you may not use this file except in compliance with the License.
|
||||
% You may obtain a copy of the License at
|
||||
%
|
||||
% The above copyright notice and this permission notice shall be included
|
||||
% in all copies or substantial portions of the Materials.
|
||||
% http://www.apache.org/licenses/LICENSE-2.0
|
||||
%
|
||||
% THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
% IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
% CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
% TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
% MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
% Unless required by applicable law or agreed to in writing, software
|
||||
% distributed under the License is distributed on an "AS IS" BASIS,
|
||||
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
% See the License for the specific language governing permissions and
|
||||
% limitations under the License.
|
||||
|
||||
\documentclass{article}
|
||||
|
||||
|
|
|
@ -2,24 +2,17 @@
|
|||
#
|
||||
# Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Usage: realign [infile] > outfile
|
||||
# Used to realign XML tags in the Vulkan registry after it's operated on by
|
||||
|
|
|
@ -2,24 +2,17 @@
|
|||
#
|
||||
# Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import io,os,re,string,sys,copy
|
||||
from lxml import etree
|
||||
|
@ -102,7 +95,7 @@ class TypeInfo(BaseInfo):
|
|||
BaseInfo.resetState(self)
|
||||
self.additionalValidity = []
|
||||
self.removedValidity = []
|
||||
|
||||
|
||||
# GroupInfo - registry information about a group of related enums
|
||||
# in an <enums> block, generally corresponding to a C "enum" type.
|
||||
class GroupInfo(BaseInfo):
|
||||
|
@ -499,7 +492,7 @@ class Registry:
|
|||
for feature in interface.findall('remove'):
|
||||
if (matchAPIProfile(api, profile, feature)):
|
||||
self.markRequired(feature,False)
|
||||
|
||||
|
||||
def assignAdditionalValidity(self, interface, api, profile):
|
||||
#
|
||||
# Loop over all usage inside all <require> tags.
|
||||
|
@ -510,7 +503,7 @@ class Registry:
|
|||
self.cmddict[v.get('command')].additionalValidity.append(copy.deepcopy(v))
|
||||
if v.get('struct'):
|
||||
self.typedict[v.get('struct')].additionalValidity.append(copy.deepcopy(v))
|
||||
|
||||
|
||||
#
|
||||
# Loop over all usage inside all <remove> tags.
|
||||
for feature in interface.findall('remove'):
|
||||
|
@ -602,17 +595,17 @@ class Registry:
|
|||
# interface - Element for <version> or <extension>
|
||||
def generateRequiredInterface(self, interface):
|
||||
"""Generate required C interface for specified API version/extension"""
|
||||
|
||||
|
||||
#
|
||||
# Loop over all features inside all <require> tags.
|
||||
for features in interface.findall('require'):
|
||||
for features in interface.findall('require'):
|
||||
for t in features.findall('type'):
|
||||
self.generateFeature(t.get('name'), 'type', self.typedict)
|
||||
for e in features.findall('enum'):
|
||||
self.generateFeature(e.get('name'), 'enum', self.enumdict)
|
||||
for c in features.findall('command'):
|
||||
self.generateFeature(c.get('name'), 'command', self.cmddict)
|
||||
|
||||
|
||||
#
|
||||
# apiGen(genOpts) - generate interface for specified versions
|
||||
# genOpts - GeneratorOptions object with parameters used
|
||||
|
|
|
@ -1,23 +1,16 @@
|
|||
# Copyright (c) 2013-2016 The Khronos Group Inc.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and/or associated documentation files (the
|
||||
# "Materials"), to deal in the Materials without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
# permit persons to whom the Materials are furnished to do so, subject to
|
||||
# the following conditions:
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Materials.
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Relax NG schema for Khronos Vulkan API Registry XML
|
||||
#
|
||||
|
|
108
src/spec/vk.xml
108
src/spec/vk.xml
|
@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="define">// Vulkan 1.0 version number
|
||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 10</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 11</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -822,13 +822,13 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferDepthSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferStencilSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageColorSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageDepthSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxSampledImageIntegerSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxStorageImageSamples</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format includes a stencil aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a color aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format includes a depth aspect, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and pname:format is an integer format, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts</usage>
|
||||
<usage>If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts</usage>
|
||||
<usage>If the <<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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
|
@ -987,7 +987,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage> pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width</usage>
|
||||
<usage> pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height</usage>
|
||||
<usage> pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth</usage>
|
||||
<usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>></usage>
|
||||
<usage>pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>></usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkImageBlit">
|
||||
|
@ -1032,7 +1032,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage> pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width</usage>
|
||||
<usage> pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height</usage>
|
||||
<usage> pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth</usage>
|
||||
<usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<execution-physical-device-enumeration,Physical Device Enumeration>></usage>
|
||||
<usage>pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>></usage>
|
||||
<usage>The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter</usage>
|
||||
<usage>The pname:aspectMask member of pname:imageSubresource must: only have a single bit set</usage>
|
||||
<usage>If the calling command's sname:VkImage parameter is of elink:VkImageType ename:VK_IMAGE_TYPE_3D, the pname:baseArrayLayer and pname:layerCount members of pname:imageSubresource must: be `0` and `1`, respectively</usage>
|
||||
|
@ -1125,7 +1125,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member len="dataSize">const <type>void</type>* <name>pData</name></member> <!-- Pointer to SpecConstant data -->
|
||||
<validity>
|
||||
<usage>The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize</usage>
|
||||
<usage>For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset</usage>
|
||||
<usage>For any given element of pname:pMapEntries, pname:size must: be less than or equal to pname:dataSize minus pname:offset</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineShaderStageCreateInfo">
|
||||
|
@ -1294,10 +1294,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>VkBlendOp</type> <name>alphaBlendOp</name></member>
|
||||
<member optional="true"><type>VkColorComponentFlags</type> <name>colorWriteMask</name></member>
|
||||
<validity>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
<usage>If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_FACTOR_SRC1_COLOR, ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_FACTOR_SRC1_ALPHA, or ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineColorBlendStateCreateInfo">
|
||||
|
@ -1596,7 +1596,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any input attachments are ename:VK_ATTACHMENT_UNUSED, then any pipelines bound during the subpass mustnot: accesss those input attachments from the fragment shader</usage>
|
||||
<usage>The pname:attachment member of any element of pname:pPreserveAttachments mustnot: be ename:VK_ATTACHMENT_UNUSED</usage>
|
||||
<usage>Any given element of pname:pPreserveAttachments mustnot: also be an element of any other member of the subpass description</usage>
|
||||
<usage>If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must use the same pname:layout</usage>
|
||||
<usage>If any attachment is used as both an input attachment and a color or depth/stencil attachment, then each use must: use the same pname:layout</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkSubpassDependency">
|
||||
|
@ -1967,8 +1967,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member optional="true"><type>VkDisplayModeCreateFlagsKHR</type> <name>flags</name></member> <!-- Reserved -->
|
||||
<member><type>VkDisplayModeParametersKHR</type> <name>parameters</name></member> <!-- The parameters this mode uses. -->
|
||||
<validity>
|
||||
<usage>The pname:width and pname:height members of the pname:visibleRegion member of pname:parameters must be greater than `0`</usage>
|
||||
<usage>The pname:refreshRate member of pname:parameters must be greater than `0`</usage>
|
||||
<usage>The pname:width and pname:height members of the pname:visibleRegion member of pname:parameters must: be greater than `0`</usage>
|
||||
<usage>The pname:refreshRate member of pname:parameters must: be greater than `0`</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkDisplayPlaneCapabilitiesKHR">
|
||||
|
@ -1998,7 +1998,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If the pname:planeReorderPossible member of the sname:VkDisplayPropertiesKHR structure returned by fname:vkGetPhysicalDeviceDisplayPropertiesKHR for the display corresponding to pname:displayMode is ename:VK_TRUE then pname:planeStackIndex must: be less than the number of display planes supported by the device as determined by calling fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR; otherwise pname:planeStackIndex must: equal the pname:currentStackIndex member of sname:VkDisplayPlanePropertiesKHR returned by fname:vkGetPhysicalDeviceDisplayPlanePropertiesKHR for the display plane corresponding to pname:displayMode</usage>
|
||||
<usage>If pname:alphaMode is ename:VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR then pname:globalAlpha must: be between `0` and `1`, inclusive</usage>
|
||||
<usage>pname:alphaMode must: be `0` or one of the bits present in the pname:supportedAlpha member of sname:VkDisplayPlaneCapabilitiesKHR returned by fname:vkGetDisplayPlaneCapabilitiesKHR for the display plane corresponding to pname:displayMode</usage>
|
||||
<usage>The pname:width and pname:height members of pname:imageExtent must be less than the pname:maxImageDimensions2D member of sname:VkPhysicalDeviceLimits</usage>
|
||||
<usage>The pname:width and pname:height members of pname:imageExtent must: be less than the pname:maxImageDimensions2D member of sname:VkPhysicalDeviceLimits</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkDisplayPresentInfoKHR">
|
||||
|
@ -2111,14 +2111,14 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="struct" name="VkPresentInfoKHR">
|
||||
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR -->
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting -->
|
||||
<member optional="true"><type>uint32_t</type> <name>waitSemaphoreCount</name></member> <!-- Number of semaphores to wait for before presenting -->
|
||||
<member optional="true" len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></member> <!-- Semaphores to wait for before presenting -->
|
||||
<member><type>uint32_t</type> <name>swapchainCount</name></member> <!-- Number of swap chains to present in this call -->
|
||||
<member len="swapchainCount">const <type>VkSwapchainKHR</type>* <name>pSwapchains</name></member> <!-- Swapchains to present an image from -->
|
||||
<member len="swapchainCount">const <type>uint32_t</type>* <name>pImageIndices</name></member> <!-- Indices of which swapchain images to present -->
|
||||
<member optional="true" len="swapchainCount"><type>VkResult</type>* <name>pResults</name></member> <!-- Optional (i.e. if non-NULL) VkResult for each swapchain -->
|
||||
<validity>
|
||||
<usage>Any given element of pname:pImageIndices must: be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pname:pSwapchains array that is owned by the application</usage>
|
||||
<usage>Any given element of pname:pImageIndices must: be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pname:pSwapchains array</usage>
|
||||
<usage>Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore</usage>
|
||||
</validity>
|
||||
</type>
|
||||
|
@ -2665,7 +2665,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum bitpos="3" name="VK_QUEUE_SPARSE_BINDING_BIT" comment="Queue supports sparse resource memory management operations"/>
|
||||
</enums>
|
||||
<enums name="VkMemoryPropertyFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/>
|
||||
<enum bitpos="0" name="VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT" comment="If otherwise stated, then allocate memory on device"/>
|
||||
<enum bitpos="1" name="VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT" comment="Memory is mappable by host"/>
|
||||
<enum bitpos="2" name="VK_MEMORY_PROPERTY_HOST_COHERENT_BIT" comment="Memory will have i/o coherency. If not set, application may need to use vkFlushMappedMemoryRanges and vkInvalidateMappedMemoryRanges to flush/invalidate host cache"/>
|
||||
<enum bitpos="3" name="VK_MEMORY_PROPERTY_HOST_CACHED_BIT" comment="Memory will be cached by the host"/>
|
||||
|
@ -2694,8 +2694,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum bitpos="16" name="VK_ACCESS_MEMORY_WRITE_BIT" comment="Controls coherency of memory writes"/>
|
||||
</enums>
|
||||
<enums name="VkBufferUsageFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
|
||||
<enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
|
||||
<enum bitpos="0" name="VK_BUFFER_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
|
||||
<enum bitpos="1" name="VK_BUFFER_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
|
||||
<enum bitpos="2" name="VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT" comment="Can be used as TBO"/>
|
||||
<enum bitpos="3" name="VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT" comment="Can be used as IBO"/>
|
||||
<enum bitpos="4" name="VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT" comment="Can be used as UBO"/>
|
||||
|
@ -2720,8 +2720,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/>
|
||||
</enums>
|
||||
<enums name="VkImageUsageFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
|
||||
<enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
|
||||
<enum bitpos="0" name="VK_IMAGE_USAGE_TRANSFER_SRC_BIT" comment="Can be used as a source of transfer operations"/>
|
||||
<enum bitpos="1" name="VK_IMAGE_USAGE_TRANSFER_DST_BIT" comment="Can be used as a destination of transfer operations"/>
|
||||
<enum bitpos="2" name="VK_IMAGE_USAGE_SAMPLED_BIT" comment="Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)"/>
|
||||
<enum bitpos="3" name="VK_IMAGE_USAGE_STORAGE_BIT" comment="Can be used as storage image (STORAGE_IMAGE descriptor type)"/>
|
||||
<enum bitpos="4" name="VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT" comment="Can be used as framebuffer color attachment"/>
|
||||
|
@ -2777,7 +2777,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enums name="VkCommandBufferUsageFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"/>
|
||||
<enum bitpos="1" name="VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"/>
|
||||
<enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/>
|
||||
<enum bitpos="2" name="VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT" comment="Command buffer may be submitted/executed more than once simultaneously"/>
|
||||
</enums>
|
||||
<enums name="VkQueryPipelineStatisticFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT" comment="Optional"/>
|
||||
|
@ -2801,7 +2801,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enums name="VkSparseImageFormatFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT" comment="Image uses a single miptail region for all array layers"/>
|
||||
<enum bitpos="1" name="VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT" comment="Image requires mip level dimensions to be an integer multiple of the sparse image block dimensions for non-miptail levels."/>
|
||||
<enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/>
|
||||
<enum bitpos="2" name="VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT" comment="Image uses a non-standard sparse image block dimensions"/>
|
||||
</enums>
|
||||
<enums name="VkSparseMemoryBindFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_SPARSE_MEMORY_BIND_METADATA_BIT" comment="Operation binds resource metadata to memory"/>
|
||||
|
@ -2826,14 +2826,14 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum bitpos="16" name="VK_PIPELINE_STAGE_ALL_COMMANDS_BIT" comment="All stages supported on the queue"/>
|
||||
</enums>
|
||||
<enums name="VkCommandPoolCreateFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/>
|
||||
<enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/>
|
||||
<enum bitpos="0" name="VK_COMMAND_POOL_CREATE_TRANSIENT_BIT" comment="Command buffers have a short lifetime"/>
|
||||
<enum bitpos="1" name="VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT" comment="Command buffers may release their memory individually"/>
|
||||
</enums>
|
||||
<enums name="VkCommandPoolResetFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/>
|
||||
<enum bitpos="0" name="VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the pool"/>
|
||||
</enums>
|
||||
<enums name="VkCommandBufferResetFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/>
|
||||
<enum bitpos="0" name="VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT" comment="Release resources owned by the buffer"/>
|
||||
</enums>
|
||||
<enums name="VkSampleCountFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_SAMPLE_COUNT_1_BIT" comment="Sample count 1 supported"/>
|
||||
|
@ -2850,7 +2850,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enums name="VkStencilFaceFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_STENCIL_FACE_FRONT_BIT" comment="Front face"/>
|
||||
<enum bitpos="1" name="VK_STENCIL_FACE_BACK_BIT" comment="Back face"/>
|
||||
<enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/>
|
||||
<enum value="0x00000003" name="VK_STENCIL_FRONT_AND_BACK" comment="Front and back faces"/>
|
||||
</enums>
|
||||
<enums name="VkDescriptorPoolCreateFlagBits" type="bitmask">
|
||||
<enum bitpos="0" name="VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT" comment="Descriptor sets may be freed individually"/>
|
||||
|
@ -3358,8 +3358,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
|
||||
<validity>
|
||||
<usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must be multiples of `4`</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must be multiples of `8`</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:pData and pname:stride must: be multiples of `4`</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:pData and pname:stride must: be multiples of `8`</usage>
|
||||
<usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage>
|
||||
<usage>pname:dataSize must: be large enough to contain the result of each query, as described <<queries-operation-memorylayout,here>></usage>
|
||||
<usage>If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT</usage>
|
||||
|
@ -3918,7 +3918,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -3944,7 +3944,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -3974,7 +3974,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4004,7 +4004,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4026,7 +4026,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4047,7 +4047,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set</usage>
|
||||
<usage>Any slink:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4204,6 +4204,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
|
||||
<usage>pname:image mustnot: have a compressed or depth/stencil format</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4219,6 +4220,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
|
||||
<usage>pname:image must: have a depth/stencil format</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4316,7 +4318,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
|
||||
<usage>If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see <<synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency>></usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -4383,10 +4385,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:dstOffset must: be less than the size of pname:dstBuffer</usage>
|
||||
<usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage>
|
||||
<usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must be multiples of `8`</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `4`</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is set in pname:flags then pname:dstOffset and pname:stride must: be multiples of `8`</usage>
|
||||
<usage>pname:dstBuffer must: have enough storage, from pname:dstOffset, to contain the result of each query, as described <<queries-operation-memorylayout,here>></usage>
|
||||
<usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>If the pname:queryType used to create pname:queryPool was ename:VK_QUERY_TYPE_TIMESTAMP, pname:flags mustnot: contain ename:VK_QUERY_RESULT_PARTIAL_BIT</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -4497,7 +4499,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<proto><type>VkResult</type> <name>vkCreateDisplayModeKHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param externsync="true"><type>VkDisplayKHR</type> <name>display</name></param>
|
||||
<param>const <type>VkDisplayModeCreateInfoKHR</type>*<name>pCreateInfo</name></param>
|
||||
<param>const <type>VkDisplayModeCreateInfoKHR</type>* <name>pCreateInfo</name></param>
|
||||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<param><type>VkDisplayModeKHR</type>* <name>pMode</name></param>
|
||||
</command>
|
||||
|
@ -4593,7 +4595,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="true" externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
|
||||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<validity>
|
||||
<usage>All uses of presentable images acquired from pname:swapchain and owned by the application must: have completed execution</usage>
|
||||
<usage>All uses of presentable images acquired from pname:swapchain must: have completed execution</usage>
|
||||
<usage>If sname:VkAllocationCallbacks were provided when pname:swapchain was created, a compatible set of callbacks must: be provided here</usage>
|
||||
<usage>If no sname:VkAllocationCallbacks were provided when pname:swapchain was created, pname:pAllocator must: be `NULL`</usage>
|
||||
</validity>
|
||||
|
@ -4605,7 +4607,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="false,true"><type>uint32_t</type>* <name>pSwapchainImageCount</name></param>
|
||||
<param optional="true" len="pSwapchainImageCount"><type>VkImage</type>* <name>pSwapchainImages</name></param>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
|
||||
<command successcodes="VK_SUCCESS,VK_TIMEOUT,VK_NOT_READY,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
|
||||
<proto><type>VkResult</type> <name>vkAcquireNextImageKHR</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param externsync="true"><type>VkSwapchainKHR</type> <name>swapchain</name></param>
|
||||
|
@ -4720,9 +4722,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param>const <type>char</type>* <name>pMessage</name></param>
|
||||
<validity>
|
||||
<usage>pname:instance must: be a valid sname:VkInstance handle</usage>
|
||||
<usage>pname:flags must be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
|
||||
<usage>pname:objType must be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
|
||||
<usage>pname:object may be a {apiname} object</usage>
|
||||
<usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
|
||||
<usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
|
||||
<usage>pname:object may: be a {apiname} object</usage>
|
||||
<usage>pname:pLayerPrefix must: be a `NULL` terminated string.</usage>
|
||||
<usage>pname:pMsg must: be a `NULL` terminated string.</usage>
|
||||
</validity>
|
||||
|
@ -4977,7 +4979,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
</extension>
|
||||
<extension name="VK_KHR_swapchain" number="2" supported="vulkan">
|
||||
<require>
|
||||
<enum value="67" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
|
||||
<enum value="68" name="VK_KHR_SWAPCHAIN_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_swapchain"" name="VK_KHR_SWAPCHAIN_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"/>
|
||||
|
@ -5137,7 +5139,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_filter_cubic"" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/>
|
||||
<enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
|
||||
<enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
|
||||
<usage command="vkCmdDraw">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command must: be of a format which supports cubic filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage command="vkCmdDraw">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command mustnot: have an elink:VkImageViewType of ename:VK_IMAGE_VIEW_TYPE_3D, ename:VK_IMAGE_VIEW_TYPE_CUBE, or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</usage>
|
||||
<usage command="vkCmdDrawIndexed">Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a result of this command must: be of a format which supports cubic filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
|
|
|
@ -4,24 +4,17 @@
|
|||
/*
|
||||
** Copyright (c) 2014-2015 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||
** you may not use this file except in compliance with the License.
|
||||
** You may obtain a copy of the License at
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
** http://www.apache.org/licenses/LICENSE-2.0
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
** Unless required by applicable law or agreed to in writing, software
|
||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -8,24 +8,17 @@ extern "C" {
|
|||
/*
|
||||
** Copyright (c) 2015-2016 The Khronos Group Inc.
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||
** copy of this software and/or associated documentation files (the
|
||||
** "Materials"), to deal in the Materials without restriction, including
|
||||
** without limitation the rights to use, copy, modify, merge, publish,
|
||||
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
** permit persons to whom the Materials are furnished to do so, subject to
|
||||
** the following conditions:
|
||||
** Licensed under the Apache License, Version 2.0 (the "License");
|
||||
** you may not use this file except in compliance with the License.
|
||||
** You may obtain a copy of the License at
|
||||
**
|
||||
** The above copyright notice and this permission notice shall be included
|
||||
** in all copies or substantial portions of the Materials.
|
||||
** http://www.apache.org/licenses/LICENSE-2.0
|
||||
**
|
||||
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
** Unless required by applicable law or agreed to in writing, software
|
||||
** distributed under the License is distributed on an "AS IS" BASIS,
|
||||
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
** See the License for the specific language governing permissions and
|
||||
** limitations under the License.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -50,7 +43,7 @@ extern "C" {
|
|||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 10
|
||||
#define VK_HEADER_VERSION 11
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -3278,7 +3271,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
|
|||
#define VK_KHR_swapchain 1
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
|
||||
|
||||
#define VK_KHR_SWAPCHAIN_SPEC_VERSION 67
|
||||
#define VK_KHR_SWAPCHAIN_SPEC_VERSION 68
|
||||
#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
|
||||
|
||||
typedef VkFlags VkSwapchainCreateFlagsKHR;
|
||||
|
@ -3434,7 +3427,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhys
|
|||
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
|
||||
|
||||
|
|
Loading…
Reference in New Issue