mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-02-04 02:23:39 +00:00
Change log for June 24, 2017 Vulkan 1.0.53 spec update:
* Bump API patch number and header version number to 53 for this update. Github Issues: Internal Issues: * Clarify mappings of coordinates for mutable, compatible image views in slink:VkImageViewCreateInfo (internal issue 815). * Make ename:VK_BIND_SFR_BIT require a logical device with multiple physical devices, so that standard sparse image block dimensions are only required on systems that support multi-GPU (internal issue 835). * Convert all files from use of // refBegin .. // refEnd comments to delimit ref pages, to use of open blocks, and update style guide accordingly (internal issue 839). * Add valid usage for slink:VkWriteDescriptorSet when performing updates to a ename:VK_STORAGE_IMAGE descriptor with layout ename:VK_IMAGE_LAYOUT_GENERAL. * Add a hack to the validity generator script to support an odd interaction between flink:vkCmdFillBuffer and an extension (internal issue 853). * Remove redundant text describing slink:VkBufferCreateInfo::pname:usage, which was already covered by implicit valid usage (internal issue 854). * Update implicit validity generator script to properly handle the pname:sType and pname:pNext members of "returnedonly" structures (internal issue 874). * Note that slink:VkApplicationInfo::pname:pApplicationName & slink:VkApplicationInfo::pname:pEngineName are optional, and add missing implicit valid usage statements for flink:vkDestroyInstance. * Added missing valid usage for flink:vkCmdWriteTimestamp to require a timestamp query pool. * Simplify and/or split "`non-atomic`" valid usage statements. New Extensions: * `VK_AMD_gpu_shader_int16` * `VK_EXT_blend_operation_advanced` * `VK_EXT_sampler_filter_minmax` * `VK_NV_framebuffer_mixed_samples` ----------------------------------------------------- Note: the 1.0.52 spec wasn't published on github, so the 1.0.53 release combines both change sets. ----------------------------------------------------- Change log for June 13, 2017 Vulkan 1.0.52 spec update: * Bump API patch number and header version number to 52 for this update. Github Issues: Internal Issues: * Clarify behavior when non-coherent memory has <<memory-device-unmap-does-not-flush, not been flushed before being unmapped>> (internal issue 819). * Fix description of code:WorkgroupSize builtin to note it decorates an object, not a variable (internal issue 836). * Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style equations are rendered properly (internal issue 845). * Add language to the "`Extension Handles, Objects, Enums, and Typedefs`" section of the Procedures and Conventions document stating that any new handle type requires a corresponding entry in the elink:VkObjectType enumerated type (internal issue 856). * Update style guide to use slink macro for Vulkan handle type names, and define narrow conditions under which to use the *name and *text macros instead of *link (internal issue 886). * Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>> extension on VK_KHX_device_group_creation to +vk.xml+ and the extension appendix. * Change the copyright on Vulkan specification asciidoc *source* files to CC-BY 4.0, and update the proprietary Khronos copyright applied to the generated *output* formats (internal issue 327). This enables broader re-use and modification of the Vulkan specification sources, while not affecting the Reciprocal IP License between Vulkan Adopters and Working Group Members. New Extensions: * `VK_NV_fill_rectangle` * `VK_NV_fragment_coverage_to_color`
This commit is contained in:
parent
1d67e47f14
commit
b9e9296cd8
27
COPYING.md
27
COPYING.md
@ -3,19 +3,26 @@ project are under a mix of copyright and license statements. Refer to
|
||||
the individual files for specific information. As a general
|
||||
guideline:
|
||||
|
||||
* The Vulkan Specification asciidoc sources and generated output
|
||||
documents are under a proprietary Khronos license. See
|
||||
https://www.khronos.org/registry/speccopyright.html
|
||||
* The Vulkan headers, spec build tools, and spec and registry
|
||||
configuration files are for the most part under the Apache 2 license.
|
||||
Some older files under BSD-like licenses which may eventually be
|
||||
updated to Apache 2 as we have time.
|
||||
* The Vulkan Specification asciidoc sources, as well as other documentation
|
||||
which we expect people may wish to regenerate and distributed in other
|
||||
formats - such as the reference pages generated from the Specification
|
||||
source - are under a Creative Commons Attribution 4.0 license.
|
||||
** The specification sources have only recently (as of June 2017) been
|
||||
placed under this license. We will now be able to accept pull requests on
|
||||
Github, but there is a related Contribution License Agreement which
|
||||
people proposing PRs to the Vulkan-Docs repository must execute as part
|
||||
of opening the PR.
|
||||
* Generated output documents, including the official Vulkan Specification
|
||||
PDF and HTML documents, are under a proprietary Khronos license. See
|
||||
https://www.khronos.org/registry/speccopyright.html . Only Specification
|
||||
documents posted in the Vulkan Registry are official.
|
||||
* The Vulkan headers, spec build tools, and spec and registry configuration
|
||||
files are, for the most part, under the Apache 2 license. Some older files
|
||||
are under BSD-like licenses which may eventually be updated to Apache 2 as
|
||||
we have time.
|
||||
* There may be some configuration files customized from material shipped
|
||||
with the asciidoc and dblatex distributions. Such files continue under
|
||||
their original copyrights.
|
||||
* Documentation which we expect to be redistributed in different
|
||||
formats, such as the reference pages generated from the Specification
|
||||
source, are under a Creative Commons Attribution 4.0 license.
|
||||
* Some generated, transient files produced during the course of building
|
||||
the specification, headers, or other targets may not have copyrights.
|
||||
These are typically very short asciidoc fragments describing parts of
|
||||
|
@ -1,5 +1,5 @@
|
||||
Update Log for the Vulkan-Docs repository on Github. Updates are in
|
||||
reverse chronological order starting with the latest public release.
|
||||
Update Log for the Vulkan-Docs repository on Github. Updates are in reverse
|
||||
chronological order starting with the latest public release.
|
||||
|
||||
This summarizes the periodic public updates, not individual commits. For the
|
||||
most part, commits on Github are done as single large patches at the release
|
||||
@ -8,6 +8,88 @@ public issues.
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for June 24, 2017 Vulkan 1.0.53 spec update:
|
||||
|
||||
* Bump API patch number and header version number to 53 for this update.
|
||||
|
||||
Github Issues:
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Clarify mappings of coordinates for mutable, compatible image views in
|
||||
slink:VkImageViewCreateInfo (internal issue 815).
|
||||
* Make ename:VK_BIND_SFR_BIT require a logical device with multiple
|
||||
physical devices, so that standard sparse image block dimensions are
|
||||
only required on systems that support multi-GPU (internal issue 835).
|
||||
* Convert all files from use of // refBegin .. // refEnd comments to
|
||||
delimit ref pages, to use of open blocks, and update style guide
|
||||
accordingly (internal issue 839).
|
||||
* Add valid usage for slink:VkWriteDescriptorSet when performing updates
|
||||
to a ename:VK_STORAGE_IMAGE descriptor with layout
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL.
|
||||
* Add a hack to the validity generator script to support an odd
|
||||
interaction between flink:vkCmdFillBuffer and an extension (internal
|
||||
issue 853).
|
||||
* Remove redundant text describing slink:VkBufferCreateInfo::pname:usage,
|
||||
which was already covered by implicit valid usage (internal issue 854).
|
||||
* Update implicit validity generator script to properly handle the
|
||||
pname:sType and pname:pNext members of "returnedonly" structures
|
||||
(internal issue 874).
|
||||
* Note that slink:VkApplicationInfo::pname:pApplicationName &
|
||||
slink:VkApplicationInfo::pname:pEngineName are optional, and add missing
|
||||
implicit valid usage statements for flink:vkDestroyInstance.
|
||||
* Added missing valid usage for flink:vkCmdWriteTimestamp to require a
|
||||
timestamp query pool.
|
||||
* Simplify and/or split "`non-atomic`" valid usage statements.
|
||||
|
||||
New Extensions:
|
||||
|
||||
* `VK_AMD_gpu_shader_int16`
|
||||
* `VK_EXT_blend_operation_advanced`
|
||||
* `VK_EXT_sampler_filter_minmax`
|
||||
* `VK_NV_framebuffer_mixed_samples`
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for June 13, 2017 Vulkan 1.0.52 spec update:
|
||||
|
||||
* Bump API patch number and header version number to 52 for this update.
|
||||
|
||||
Github Issues:
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Clarify behavior when non-coherent memory has
|
||||
<<memory-device-unmap-does-not-flush, not been flushed before being
|
||||
unmapped>> (internal issue 819).
|
||||
* Fix description of code:WorkgroupSize builtin to note it decorates an
|
||||
object, not a variable (internal issue 836).
|
||||
* Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style
|
||||
equations are rendered properly (internal issue 845).
|
||||
* Add language to the "`Extension Handles, Objects, Enums, and Typedefs`"
|
||||
section of the Procedures and Conventions document stating that any new
|
||||
handle type requires a corresponding entry in the elink:VkObjectType
|
||||
enumerated type (internal issue 856).
|
||||
* Update style guide to use slink macro for Vulkan handle type names, and
|
||||
define narrow conditions under which to use the *name and *text macros
|
||||
instead of *link (internal issue 886).
|
||||
* Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>>
|
||||
extension on VK_KHX_device_group_creation to +vk.xml+ and the extension
|
||||
appendix.
|
||||
* Change the copyright on Vulkan specification asciidoc *source* files to
|
||||
CC-BY 4.0, and update the proprietary Khronos copyright applied to the
|
||||
generated *output* formats (internal issue 327). This enables broader
|
||||
re-use and modification of the Vulkan specification sources, while not
|
||||
affecting the Reciprocal IP License between Vulkan Adopters and Working
|
||||
Group Members.
|
||||
|
||||
New Extensions:
|
||||
|
||||
* `VK_NV_fill_rectangle`
|
||||
* `VK_NV_fragment_coverage_to_color`
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for June 4, 2017 Vulkan 1.0.51 spec update:
|
||||
|
||||
* Bump API patch number and header version number to 51 for this update.
|
||||
|
@ -87,7 +87,7 @@ VERBOSE =
|
||||
# $(EXTENSIONS))
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
SPECREVISION = 1.0.51
|
||||
SPECREVISION = 1.0.53
|
||||
# Spell out RFC2822 format as not all date commands support -R
|
||||
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
|
||||
|
||||
@ -124,7 +124,7 @@ ADOCHTMLEXTS = -r $(CURDIR)/config/katex_replace.rb
|
||||
KATEXDIR = katex
|
||||
ADOCHTMLOPTS = $(ADOCHTMLEXTS) -a katexpath=$(KATEXDIR)
|
||||
|
||||
ADOCPDFEXTS = -r asciidoctor-pdf -r asciidoctor-mathematical
|
||||
ADOCPDFEXTS = -r asciidoctor-pdf -r asciidoctor-mathematical -r $(CURDIR)/config/asciidoctor-mathematical-ext.rb
|
||||
ADOCPDFOPTS = $(ADOCPDFEXTS) -a mathematical-format=svg \
|
||||
-a imagesoutdir=$(PDFMATHDIR)
|
||||
|
||||
@ -239,7 +239,7 @@ clean_checks:
|
||||
|
||||
clean_generated:
|
||||
$(QUIET)$(RMRF) api/* hostsynctable/* validity/* vkapi.py
|
||||
$(QUIET)$(RM) man/apispec.txt man/[Vv][Kk]*.txt man/PFN*.txt
|
||||
$(QUIET)$(RM) man/apispec.txt $(LOGFILE) man/[Vv][Kk]*.txt man/PFN*.txt
|
||||
$(QUIET)$(RMRF) $(PDFMATHDIR)
|
||||
|
||||
clean_validusage:
|
||||
@ -273,8 +273,10 @@ MANCOPYRIGHT = $(MANDIR)/copyright-ccby.txt $(MANDIR)/footer.txt
|
||||
# @@ Needs to pass in $(EXTOPTIONS) and use that to determine which
|
||||
# pages to generate. As it stands, all the extension ref pages are
|
||||
# also generated, though they are not useable at present.
|
||||
|
||||
LOGFILE = man/logfile
|
||||
man/apispec.txt: $(SPECFILES) genRef.py reflib.py vkapi.py
|
||||
$(PYTHON) genRef.py $(SPECFILES)
|
||||
$(PYTHON) genRef.py -log $(LOGFILE) $(SPECFILES)
|
||||
|
||||
# These dependencies don't take into account include directives
|
||||
|
||||
|
36
doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
Normal file
36
doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
Normal file
@ -0,0 +1,36 @@
|
||||
== VK_AMD_gpu_shader_int16
|
||||
|
||||
*Name String*::
|
||||
+VK_AMD_gpu_shader_int16+
|
||||
*Extension Type*::
|
||||
Device extension
|
||||
*Registered Extension Number*::
|
||||
133
|
||||
*Last Modified Date*::
|
||||
06/08/2017
|
||||
*Revision*:: 1
|
||||
*IP Status*::
|
||||
No known IP claims.
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- Requires the SPV_AMD_gpu_shader_int16 SPIR-V extension.
|
||||
|
||||
*Contributors*::
|
||||
- Daniel Rakos, AMD
|
||||
- Dominik Witczak, AMD
|
||||
- Matthaeus G.
|
||||
Chajdas, AMD
|
||||
- Rex Xu, AMD
|
||||
- Timothy Lottes, AMD
|
||||
- Zhi Cai, AMD
|
||||
*Contacts*::
|
||||
- Qun Lin, AMD (quentin.lin@amd.com)
|
||||
|
||||
This extension adds support for the following SPIR-V extension in Vulkan:
|
||||
|
||||
* SPV_AMD_gpu_shader_int16
|
||||
|
||||
=== Version History
|
||||
|
||||
* Revision 1, 2017-06-18 (Dominik Witczak)
|
||||
- First version.
|
184
doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
Normal file
184
doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
Normal file
@ -0,0 +1,184 @@
|
||||
[[VK_EXT_blend_operation_advanced]]
|
||||
== VK_EXT_blend_operation_advanced
|
||||
*Name String*::
|
||||
VK_EXT_blend_operation_advanced
|
||||
*Extension Type*::
|
||||
Device extension
|
||||
*Registered Extension Number*::
|
||||
149
|
||||
*Status*::
|
||||
Complete
|
||||
*Last Modified Data*::
|
||||
2017-06-12
|
||||
*Revision*::
|
||||
2
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- This extension requires Vulkan 1.0.
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
*Contact*::
|
||||
- Jeff Bolz (jbolz 'at' nvidia.com)
|
||||
*Overview*::
|
||||
+
|
||||
--
|
||||
This extension adds a number of "advanced" blending operations that can: be
|
||||
used to perform new color blending operations, many of which are more
|
||||
complex than the standard blend modes provided by unextended Vulkan.
|
||||
This extension requires different styles of usage, depending on the level of
|
||||
hardware support and the feature enable:
|
||||
|
||||
- If
|
||||
slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::pname:advancedBlendCoherentOperations
|
||||
is ename:VK_FALSE, the new blending operations are supported, but a memory
|
||||
dependency must: separate each advanced blend operation on a given sample.
|
||||
ename:VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT is used to
|
||||
synchronize reads using advanced blend operations.
|
||||
|
||||
- If
|
||||
slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT::pname:advancedBlendCoherentOperations
|
||||
is ename:VK_TRUE, advanced blend operations obey primitive order just like
|
||||
basic blend operations.
|
||||
|
||||
In unextended Vulkan, the set of blending operations is limited, and can: be
|
||||
expressed very simply.
|
||||
The ename:VK_BLEND_OP_MIN and ename:VK_BLEND_OP_MAX blend operations simply
|
||||
compute component-wise minimums or maximums of source and destination color
|
||||
components.
|
||||
The ename:VK_BLEND_OP_ADD, ename:VK_BLEND_OP_SUBTRACT, and
|
||||
ename:VK_BLEND_OP_REVERSE_SUBTRACT modes multiply the source and destination
|
||||
colors by source and destination factors and either add the two products
|
||||
together or subtract one from the other.
|
||||
This limited set of operations supports many common blending operations but
|
||||
precludes the use of more sophisticated transparency and blending operations
|
||||
commonly available in many dedicated imaging APIs.
|
||||
|
||||
This extension provides a number of new "advanced" blending operations.
|
||||
Unlike traditional blending operations using ename:VK_BLEND_OP_ADD, these
|
||||
blending equations do not use source and destination factors specified by
|
||||
elink:VkBlendFactor.
|
||||
Instead, each blend operation specifies a complete equation based on the
|
||||
source and destination colors.
|
||||
These new blend operations are used for both RGB and alpha components; they
|
||||
must: not be used to perform separate RGB and alpha blending (via different
|
||||
values of color and alpha elink:VkBlendOp).
|
||||
|
||||
These blending operations are performed using premultiplied colors, where
|
||||
RGB colors can: be considered premultiplied or non-premultiplied by alpha,
|
||||
according to the pname:srcPremultiplied and pname:dstPremultiplied members
|
||||
of slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT.
|
||||
If a color is considered non-premultiplied, the (R,G,B) color components are
|
||||
multiplied by the alpha component prior to blending.
|
||||
For non-premultiplied color components in the range eq#[0,1]#, the
|
||||
corresponding premultiplied color component would have values in the range
|
||||
eq#[0 {times} A, 1 {times} A]#.
|
||||
|
||||
Many of these advanced blending equations are formulated where the result of
|
||||
blending source and destination colors with partial coverage have three
|
||||
separate contributions: from the portions covered by both the source and the
|
||||
destination, from the portion covered only by the source, and from the
|
||||
portion covered only by the destination.
|
||||
The blend parameter
|
||||
slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT::pname:blendOverlap
|
||||
can: be used to specify a correlation between source and destination pixel
|
||||
coverage.
|
||||
If set to ename:VK_BLEND_OVERLAP_CONJOINT_EXT, the source and destination
|
||||
are considered to have maximal overlap, as would be the case if drawing two
|
||||
objects on top of each other.
|
||||
If set to ename:VK_BLEND_OVERLAP_DISJOINT_EXT, the source and destination
|
||||
are considered to have minimal overlap, as would be the case when rendering
|
||||
a complex polygon tessellated into individual non-intersecting triangles.
|
||||
If set to ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT, the source and
|
||||
destination coverage are assumed to have no spatial correlation within the
|
||||
pixel.
|
||||
|
||||
In addition to the coherency issues on implementations not supporting
|
||||
pname:advancedBlendCoherentOperations, this extension has several
|
||||
limitations worth noting.
|
||||
First, the new blend operations have a limit on the number of color
|
||||
attachments they can: be used with, as indicated by
|
||||
slink:VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::pname:advancedBlendMaxColorAttachments.
|
||||
Additionally, blending precision may: be limited to 16-bit floating-point,
|
||||
which may: result in a loss of precision and dynamic range for framebuffer
|
||||
formats with 32-bit floating-point components, and in a loss of precision
|
||||
for formats with 12- and 16-bit signed or unsigned normalized integer
|
||||
components.
|
||||
--
|
||||
|
||||
=== New Object Types
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
* Extending elink:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
|
||||
|
||||
* Extending elink:VkAccessFlagBits:
|
||||
** ename:VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
|
||||
|
||||
* Extending elink:VkBlendOp:
|
||||
** ename:VK_BLEND_OP_ZERO_EXT
|
||||
** ename:VK_BLEND_OP_SRC_EXT
|
||||
** ename:VK_BLEND_OP_DST_EXT
|
||||
** ename:VK_BLEND_OP_SRC_OVER_EXT
|
||||
** ename:VK_BLEND_OP_DST_OVER_EXT
|
||||
** ename:VK_BLEND_OP_SRC_IN_EXT
|
||||
** ename:VK_BLEND_OP_DST_IN_EXT
|
||||
** ename:VK_BLEND_OP_SRC_OUT_EXT
|
||||
** ename:VK_BLEND_OP_DST_OUT_EXT
|
||||
** ename:VK_BLEND_OP_SRC_ATOP_EXT
|
||||
** ename:VK_BLEND_OP_DST_ATOP_EXT
|
||||
** ename:VK_BLEND_OP_XOR_EXT
|
||||
** ename:VK_BLEND_OP_MULTIPLY_EXT
|
||||
** ename:VK_BLEND_OP_SCREEN_EXT
|
||||
** ename:VK_BLEND_OP_OVERLAY_EXT
|
||||
** ename:VK_BLEND_OP_DARKEN_EXT
|
||||
** ename:VK_BLEND_OP_LIGHTEN_EXT
|
||||
** ename:VK_BLEND_OP_COLORDODGE_EXT
|
||||
** ename:VK_BLEND_OP_COLORBURN_EXT
|
||||
** ename:VK_BLEND_OP_HARDLIGHT_EXT
|
||||
** ename:VK_BLEND_OP_SOFTLIGHT_EXT
|
||||
** ename:VK_BLEND_OP_DIFFERENCE_EXT
|
||||
** ename:VK_BLEND_OP_EXCLUSION_EXT
|
||||
** ename:VK_BLEND_OP_INVERT_EXT
|
||||
** ename:VK_BLEND_OP_INVERT_RGB_EXT
|
||||
** ename:VK_BLEND_OP_LINEARDODGE_EXT
|
||||
** ename:VK_BLEND_OP_LINEARBURN_EXT
|
||||
** ename:VK_BLEND_OP_VIVIDLIGHT_EXT
|
||||
** ename:VK_BLEND_OP_LINEARLIGHT_EXT
|
||||
** ename:VK_BLEND_OP_PINLIGHT_EXT
|
||||
** ename:VK_BLEND_OP_HARDMIX_EXT
|
||||
** ename:VK_BLEND_OP_HSL_HUE_EXT
|
||||
** ename:VK_BLEND_OP_HSL_SATURATION_EXT
|
||||
** ename:VK_BLEND_OP_HSL_COLOR_EXT
|
||||
** ename:VK_BLEND_OP_HSL_LUMINOSITY_EXT
|
||||
** ename:VK_BLEND_OP_PLUS_EXT
|
||||
** ename:VK_BLEND_OP_PLUS_CLAMPED_EXT
|
||||
** ename:VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT
|
||||
** ename:VK_BLEND_OP_PLUS_DARKER_EXT
|
||||
** ename:VK_BLEND_OP_MINUS_EXT
|
||||
** ename:VK_BLEND_OP_MINUS_CLAMPED_EXT
|
||||
** ename:VK_BLEND_OP_CONTRAST_EXT
|
||||
** ename:VK_BLEND_OP_INVERT_OVG_EXT
|
||||
** ename:VK_BLEND_OP_RED_EXT
|
||||
** ename:VK_BLEND_OP_GREEN_EXT
|
||||
** ename:VK_BLEND_OP_BLUE_EXT
|
||||
|
||||
=== New Enums
|
||||
* elink:VkBlendOverlapEXT
|
||||
|
||||
=== New Structures
|
||||
* slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
|
||||
* slink:VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT
|
||||
* slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT
|
||||
|
||||
=== New Functions
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
* Revisions 1-2, 2017-06-12 (Jeff Bolz)
|
||||
- Internal revisions
|
91
doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
Normal file
91
doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
Normal file
@ -0,0 +1,91 @@
|
||||
[[VK_EXT_sampler_filter_minmax]]
|
||||
== VK_EXT_sampler_filter_minmax
|
||||
|
||||
*Name String*::
|
||||
+VK_EXT_sampler_filter_minmax+
|
||||
*Extension Type*::
|
||||
Device extension
|
||||
*Registered Extension Number*::
|
||||
131
|
||||
*Status*::
|
||||
Draft.
|
||||
*Last Modified Date*::
|
||||
2017-05-19
|
||||
*Revision*::
|
||||
2
|
||||
*IP Status*::
|
||||
No known IP claims.
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- Requires +<<VK_KHR_get_physical_device_properties2>>+.
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
- Piers Daniell, NVIDIA
|
||||
*Contacts*::
|
||||
- Jeff Bolz (jbolz 'at' nvidia.com)
|
||||
*Overview*::
|
||||
+
|
||||
--
|
||||
In unextended Vulkan, minification and magnification filters such as LINEAR
|
||||
allow sampled image lookups to returned a filtered texel value produced by
|
||||
computing an weighted average of a collection of texels in the neighborhood
|
||||
of the texture coordinate provided.
|
||||
|
||||
This extension provides a new sampler parameter which allows applications to
|
||||
produce a filtered texel value by computing a component-wise minimum (MIN)
|
||||
or maximum (MAX) of the texels that would normally be averaged.
|
||||
The reduction mode is orthogonal to the minification and magnification
|
||||
filter parameters.
|
||||
The filter parameters are used to identify the set of texels used to produce
|
||||
a final filtered value; the reduction mode identifies how these texels are
|
||||
combined.
|
||||
--
|
||||
|
||||
=== New Object Types
|
||||
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
|
||||
* Extending ename:VkStructureType:
|
||||
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT
|
||||
** ename:VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT
|
||||
|
||||
* Extending ename:VkFormatFeatureFlagBits
|
||||
** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
|
||||
|
||||
=== New Enums
|
||||
|
||||
* elink:VkSamplerReductionModeEXT
|
||||
|
||||
=== New Structures
|
||||
|
||||
* slink:VkSamplerReductionModeCreateInfoEXT
|
||||
* slink:VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT
|
||||
|
||||
=== New Functions
|
||||
|
||||
None.
|
||||
|
||||
=== New Built-In Variables
|
||||
|
||||
None.
|
||||
|
||||
=== New SPIR-V Capabilities
|
||||
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
|
||||
None.
|
||||
|
||||
=== Examples
|
||||
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
* Revision 2, 2017-05-19 (Piers Daniell)
|
||||
- Renamed to EXT
|
||||
|
||||
* Revision 1, 2017-03-25 (Jeff Bolz)
|
||||
- Internal revisions
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2016 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_GOOGLE_display_timing]]
|
||||
== VK_GOOGLE_display_timing
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_android_surface]]
|
||||
== VK_KHR_android_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_descriptor_update_template]]
|
||||
== VK_KHR_descriptor_update_template
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_display]]
|
||||
== VK_KHR_display
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_display_swapchain]]
|
||||
== VK_KHR_display_swapchain
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_get_physical_device_properties2]]
|
||||
== VK_KHR_get_physical_device_properties2
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_get_surface_capabilities2]]
|
||||
== VK_KHR_get_surface_capabilities2
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_incremental_present]]
|
||||
== VK_KHR_incremental_present
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_maintenance1]]
|
||||
== VK_KHR_maintenance1
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_mir_surface]]
|
||||
== VK_KHR_mir_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_push_descriptor]]
|
||||
== VK_KHR_push_descriptor
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_sampler_mirror_clamp_to_edge]]
|
||||
== VK_KHR_sampler_mirror_clamp_to_edge
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_shader_draw_parameters]]
|
||||
== VK_KHR_shader_draw_parameters
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_shared_presentable_image]]
|
||||
== VK_KHR_shared_presentable_image
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_surface]]
|
||||
== VK_KHR_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_swapchain]]
|
||||
== VK_KHR_swapchain
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_wayland_surface]]
|
||||
== VK_KHR_wayland_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_win32_surface]]
|
||||
== VK_KHR_win32_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_xcb_surface]]
|
||||
== VK_KHR_xcb_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHR_xlib_surface]]
|
||||
== VK_KHR_xlib_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_device_group]]
|
||||
== VK_KHX_device_group
|
||||
@ -21,6 +22,7 @@
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- Requires +VK_KHR_swapchain+ revision 68.
|
||||
- Requires +VK_KHX_device_group_creation+ revision 1.
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
*Contacts*::
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_device_group_creation]]
|
||||
== VK_KHX_device_group_creation
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_memory]]
|
||||
== VK_KHX_external_memory
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_memory_capabilities]]
|
||||
== VK_KHX_external_memory_capabilities
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_memory_fd]]
|
||||
== VK_KHX_external_memory_fd
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_memory_win32]]
|
||||
== VK_KHX_external_memory_win32
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_semaphore]]
|
||||
== VK_KHX_external_semaphore
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_semaphore_capabilities]]
|
||||
== VK_KHX_external_semaphore_capabilities
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_semaphore_fd]]
|
||||
== VK_KHX_external_semaphore_fd
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_external_semaphore_win32]]
|
||||
== VK_KHX_external_semaphore_win32
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_multiview]]
|
||||
== VK_KHX_multiview
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_KHX_win32_keyed_mutex]]
|
||||
== VK_KHX_win32_keyed_mutex
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Brenwill Workshop Ltd.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 The Brenwill Workshop Ltd. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_MVK_ios_surface]]
|
||||
== VK_MVK_ios_surface
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Brenwill Workshop Ltd.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 The Brenwill Workshop Ltd. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[VK_MVK_macos_surface]]
|
||||
== VK_MVK_macos_surface
|
||||
|
56
doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
Normal file
56
doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
Normal file
@ -0,0 +1,56 @@
|
||||
[[VK_NV_fill_rectangle]]
|
||||
== VK_NV_fill_rectangle
|
||||
*Name String*::
|
||||
VK_NV_fill_rectangle
|
||||
*Extension Type*::
|
||||
Device extension
|
||||
*Registered Extension Number*::
|
||||
154
|
||||
*Status*::
|
||||
Complete
|
||||
*Last Modified Data*::
|
||||
2017-05-22
|
||||
*Revision*::
|
||||
1
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- This extension requires Vulkan 1.0.
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
*Contact*::
|
||||
- Jeff Bolz (jbolz 'at' nvidia.com)
|
||||
*Overview*::
|
||||
+
|
||||
--
|
||||
This extension adds a new elink:VkPolygonMode enum where a triangle is
|
||||
rasterized by computing and filling its axis-aligned screen-space bounding
|
||||
box, disregarding the actual triangle edges.
|
||||
This can be useful for drawing a rectangle without being split into two
|
||||
triangles with an internal edge.
|
||||
It is also useful to minimize the number of primitives that need to be
|
||||
drawn, particularly for a user interface.
|
||||
--
|
||||
|
||||
=== New Object Types
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
* Extending elink:VkPolygonMode
|
||||
|
||||
** ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV
|
||||
|
||||
=== New Enums
|
||||
None.
|
||||
|
||||
=== New Structures
|
||||
None.
|
||||
|
||||
=== New Functions
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
* Revision 1, 2017-05-22 (Jeff Bolz)
|
||||
- Internal revisions
|
@ -0,0 +1,61 @@
|
||||
[[VK_NV_fragment_coverage_to_color]]
|
||||
== VK_NV_fragment_coverage_to_color
|
||||
*Name String*::
|
||||
VK_NV_fragment_coverage_to_color
|
||||
*Extension Type*::
|
||||
Device extension
|
||||
*Registered Extension Number*::
|
||||
150
|
||||
*Status*::
|
||||
Complete
|
||||
*Last Modified Data*::
|
||||
2017-05-21
|
||||
*Revision*::
|
||||
1
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- This extension requires Vulkan 1.0.
|
||||
*Contributors*::
|
||||
- Jeff Bolz, NVIDIA
|
||||
*Contact*::
|
||||
- Jeff Bolz (jbolz 'at' nvidia.com)
|
||||
*Overview*::
|
||||
+
|
||||
--
|
||||
This extension allows the fragment coverage value, represented as an integer
|
||||
bitmask, to be substituted for a color output being written to a
|
||||
single-component color attachment with integer components (e.g.
|
||||
ename:VK_FORMAT_R8_UINT).
|
||||
The functionality provided by this extension is different from simply
|
||||
writing the code:SampleMask fragment shader output, in that the coverage
|
||||
value written to the framebuffer is taken after stencil test and depth test,
|
||||
as well as after fragment operations such as alpha-to-coverage.
|
||||
|
||||
This functionality may be useful for deferred rendering algorithms, where
|
||||
the second pass needs to know which samples belong to which original
|
||||
fragments.
|
||||
--
|
||||
|
||||
=== New Object Types
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
* Extending elink:VkStructureType:
|
||||
|
||||
** ename:VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
|
||||
|
||||
=== New Enums
|
||||
* elink:VkPipelineCoverageToColorStateCreateFlagsNV
|
||||
|
||||
=== New Structures
|
||||
* slink:VkPipelineCoverageToColorStateCreateInfoNV
|
||||
|
||||
=== New Functions
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
* Revision 1, 2017-05-21 (Jeff Bolz)
|
||||
- Internal revisions
|
@ -0,0 +1,86 @@
|
||||
[[VK_NV_framebuffer_mixed_samples]]
|
||||
== VK_NV_framebuffer_mixed_samples
|
||||
*Name String*::
|
||||
VK_NV_framebuffer_mixed_samples
|
||||
*Extension Type*::
|
||||
Device extension
|
||||
*Registered Extension Number*::
|
||||
153
|
||||
*Status*::
|
||||
Complete
|
||||
*Last Modified Data*::
|
||||
2017-06-04
|
||||
*Revision*::
|
||||
1
|
||||
*Dependencies*::
|
||||
- This extension is written against version 1.0 of the Vulkan API.
|
||||
- This extension requires Vulkan 1.0.
|
||||
*Contributors*::
|
||||
*Contact*::
|
||||
- Jeff Bolz (jbolz 'at' nvidia.com)
|
||||
*Overview*::
|
||||
+
|
||||
--
|
||||
This extension allows multisample rendering with a raster and depth/stencil
|
||||
sample count that is larger than the color sample count.
|
||||
Rasterization and the results of the depth and stencil tests together
|
||||
determine the portion of a pixel that is "covered".
|
||||
It can be useful to evaluate coverage at a higher frequency than color
|
||||
samples are stored.
|
||||
This coverage is then "reduced" to a collection of covered color samples,
|
||||
each having an opacity value corresponding to the fraction of the color
|
||||
sample covered.
|
||||
The opacity can optionally be blended into individual color samples.
|
||||
|
||||
Rendering with fewer color samples than depth/stencil samples greatly
|
||||
reduces the amount of memory and bandwidth consumed by the color buffer.
|
||||
However, converting the coverage values into opacity introduces artifacts
|
||||
where triangles share edges and may: not be suitable for normal triangle
|
||||
mesh rendering.
|
||||
|
||||
One expected use case for this functionality is Stencil-then-Cover path
|
||||
rendering (similar to the OpenGL GL_NV_path_rendering extension).
|
||||
The stencil step determines the coverage (in the stencil buffer) for an
|
||||
entire path at the higher sample frequency, and then the cover step draws
|
||||
the path into the lower frequency color buffer using the coverage
|
||||
information to antialias path edges.
|
||||
With this two-step process, internal edges are fully covered when
|
||||
antialiasing is applied and there is no corruption on these edges.
|
||||
|
||||
The key features of this extension are:
|
||||
|
||||
* It allows render pass and framebuffer objects to be created where the
|
||||
number of samples in the depth/stencil attachment in a subpass is a
|
||||
multiple of the number of samples in the color attachments in the
|
||||
subpass.
|
||||
|
||||
* A coverage reduction step is added to Fragment Operations which converts
|
||||
a set of covered raster/depth/stencil samples to a set of color samples
|
||||
that perform blending and color writes.
|
||||
The coverage reduction step also includes an optional coverage modulation
|
||||
step, multiplying color values by a fractional opacity corresponding to
|
||||
the number of associated raster/depth/stencil samples covered.
|
||||
--
|
||||
|
||||
=== New Object Types
|
||||
None.
|
||||
|
||||
=== New Enum Constants
|
||||
None.
|
||||
|
||||
=== New Enums
|
||||
* elink:VkCoverageModulationModeNV
|
||||
* elink:VkPipelineCoverageModulationStateCreateFlagsNV
|
||||
|
||||
=== New Structures
|
||||
* slink:VkPipelineCoverageModulationStateCreateInfoNV
|
||||
|
||||
=== New Functions
|
||||
None.
|
||||
|
||||
=== Issues
|
||||
None.
|
||||
|
||||
=== Version History
|
||||
* Revision 1, 2017-06-04 (Jeff Bolz)
|
||||
- Internal revisions
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[appendix]
|
||||
[[boilerplate]]
|
||||
@ -13,7 +14,8 @@ elsewhere in the Specification.
|
||||
[[boilerplate-sType]]
|
||||
== Structure Types
|
||||
|
||||
// refBegin VkStructureType Vulkan structure types (pname:stype)
|
||||
[open,refpage='VkStructureType',desc='Vulkan structure types (pname:stype)',type='enums']
|
||||
--
|
||||
|
||||
Vulkan structures containing pname:sType members must: have a value of
|
||||
pname:sType matching the type of the structure, as described more fully in
|
||||
@ -22,7 +24,7 @@ Structure types supported by the Vulkan API include:
|
||||
|
||||
include::../api/enums/VkStructureType.txt[]
|
||||
|
||||
// refEnd VkStructureType
|
||||
--
|
||||
|
||||
|
||||
[[boilerplate-flags]]
|
||||
@ -86,6 +88,12 @@ include::../api/flags/VkPeerMemoryFeatureFlagsKHX.txt[]
|
||||
endif::VK_KHX_device_group[]
|
||||
include::../api/flags/VkPipelineCacheCreateFlags.txt[]
|
||||
include::../api/flags/VkPipelineColorBlendStateCreateFlags.txt[]
|
||||
ifdef::VK_NV_fragment_coverage_to_color[]
|
||||
include::../api/flags/VkPipelineCoverageToColorStateCreateFlagsNV.txt[]
|
||||
endif::VK_NV_fragment_coverage_to_color[]
|
||||
ifdef::VK_NV_framebuffer_mixed_samples[]
|
||||
include::../api/flags/VkPipelineCoverageModulationStateCreateFlagsNV.txt[]
|
||||
endif::VK_NV_framebuffer_mixed_samples[]
|
||||
include::../api/flags/VkPipelineCreateFlags.txt[]
|
||||
include::../api/flags/VkPipelineDepthStencilStateCreateFlags.txt[]
|
||||
include::../api/flags/VkPipelineDynamicStateCreateFlags.txt[]
|
||||
@ -138,34 +146,38 @@ macros that are described below.
|
||||
<<fundamentals-versionnum,API Version Numbers>> are packed into integers.
|
||||
These macros manipulate version numbers in useful ways.
|
||||
|
||||
// refBegin VK_VERSION_MAJOR Extract API major version number
|
||||
[open,refpage='VK_VERSION_MAJOR',desc='Extract API major version number',type='defines']
|
||||
--
|
||||
|
||||
dname:VK_VERSION_MAJOR extracts the API major version number from a packed
|
||||
version number:
|
||||
|
||||
include::../api/defines/VK_VERSION_MAJOR.txt[]
|
||||
|
||||
// refEnd VK_VERSION_MAJOR
|
||||
--
|
||||
|
||||
// refBegin VK_VERSION_MINOR Extract API minor version number
|
||||
[open,refpage='VK_VERSION_MINOR',desc='Extract API minor version number',type='defines']
|
||||
--
|
||||
|
||||
dname:VK_VERSION_MINOR extracts the API minor version number from a packed
|
||||
version number:
|
||||
|
||||
include::../api/defines/VK_VERSION_MINOR.txt[]
|
||||
|
||||
// refEnd VK_VERSION_MINOR
|
||||
--
|
||||
|
||||
// refBegin VK_VERSION_PATCH Extract API patch version number
|
||||
[open,refpage='VK_VERSION_PATCH',desc='Extract API patch version number',type='defines']
|
||||
--
|
||||
|
||||
dname:VK_VERSION_PATCH extracts the API patch version number from a packed
|
||||
version number:
|
||||
|
||||
include::../api/defines/VK_VERSION_PATCH.txt[]
|
||||
|
||||
// refEnd VK_VERSION_PATCH
|
||||
--
|
||||
|
||||
// refBegin VK_API_VERSION_1_0 Return API version number for Vulkan 1.0
|
||||
[open,refpage='VK_API_VERSION_1_0',desc='Return API version number for Vulkan 1.0',type='defines',xrefs='vkCreateInstance vkGetPhysicalDeviceProperties']
|
||||
--
|
||||
|
||||
dname:VK_API_VERSION_1_0 returns the API version number for Vulkan 1.0.
|
||||
The patch version number in this macro will always be zero.
|
||||
@ -174,17 +186,19 @@ flink:vkGetPhysicalDeviceProperties.
|
||||
|
||||
include::../api/defines/VK_API_VERSION_1_0.txt[]
|
||||
|
||||
// refEnd VK_API_VERSION_1_0 vkCreateInstance vkGetPhysicalDeviceProperties
|
||||
--
|
||||
|
||||
// refBegin VK_API_VERSION Deprecated version number macro
|
||||
[open,refpage='VK_API_VERSION',desc='Deprecated version number macro',type='defines']
|
||||
--
|
||||
|
||||
dname:VK_API_VERSION is now commented out of +vulkan.h+ and cannot: be used.
|
||||
|
||||
include::../api/defines/VK_API_VERSION.txt[]
|
||||
|
||||
// refEnd VK_API_VERSION
|
||||
--
|
||||
|
||||
// refBegin VK_MAKE_VERSION Construct an API version number
|
||||
[open,refpage='VK_MAKE_VERSION',desc='Construct an API version number',type='defines',xrefs='VkApplicationInfo vkCreateInstance']
|
||||
--
|
||||
|
||||
dname:VK_MAKE_VERSION constructs an API version number.
|
||||
|
||||
@ -198,12 +212,13 @@ This macro can: be used when constructing the
|
||||
slink:VkApplicationInfo::pname:apiVersion parameter passed to
|
||||
flink:vkCreateInstance.
|
||||
|
||||
// refEnd VK_MAKE_VERSION VkApplicationInfo vkCreateInstance
|
||||
--
|
||||
|
||||
|
||||
=== Vulkan Header File Version Number
|
||||
|
||||
// refBegin VK_HEADER_VERSION Vulkan header file version number
|
||||
[open,refpage='VK_HEADER_VERSION',desc='Vulkan header file version number',type='defines']
|
||||
--
|
||||
|
||||
dname:VK_HEADER_VERSION is the version number of the +vulkan.h+ header.
|
||||
This value is currently kept synchronized with the release number of the
|
||||
@ -213,12 +228,13 @@ Specification updates have no effect on +vulkan.h+.
|
||||
|
||||
include::../api/defines/VK_HEADER_VERSION.txt[]
|
||||
|
||||
// refEnd VK_HEADER_VERSION
|
||||
--
|
||||
|
||||
|
||||
=== Vulkan Handle Macros
|
||||
|
||||
// refBegin VK_DEFINE_HANDLE Declare a dispatchable object handle
|
||||
[open,refpage='VK_DEFINE_HANDLE',desc='Declare a dispatchable object handle',type='defines',xrefs='VkCommandBuffer VkDevice VkInstance VkPhysicalDevice VkQueue']
|
||||
--
|
||||
|
||||
dname:VK_DEFINE_HANDLE defines a <<fundamentals-objectmodel-overview,
|
||||
dispatchable handle>> type.
|
||||
@ -230,9 +246,10 @@ include::../api/defines/VK_DEFINE_HANDLE.txt[]
|
||||
The only dispatchable handle types are those related to device and instance
|
||||
management, such as slink:VkDevice.
|
||||
|
||||
// refEnd VK_DEFINE_HANDLE VkCommandBuffer VkDevice VkInstance VkPhysicalDevice VkQueue
|
||||
--
|
||||
|
||||
// refBegin VK_DEFINE_NON_DISPATCHABLE_HANDLE Declare a non-dispatchable object handle
|
||||
[open,refpage='VK_DEFINE_NON_DISPATCHABLE_HANDLE',desc='Declare a non-dispatchable object handle',type='defines',xrefs='VkBuffer']
|
||||
--
|
||||
|
||||
dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE defines a
|
||||
<<fundamentals-objectmodel-overview, non-dispatchable handle>> type.
|
||||
@ -260,9 +277,10 @@ careful if it overrides the default dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE
|
||||
definition.
|
||||
==================
|
||||
|
||||
// refEnd VK_DEFINE_NON_DISPATCHABLE_HANDLE VkBuffer
|
||||
--
|
||||
|
||||
// refBegin VK_NULL_HANDLE Reserved non-valid object handle
|
||||
[open,refpage='VK_NULL_HANDLE',desc='Reserved non-valid object handle',type='defines']
|
||||
--
|
||||
|
||||
dname:VK_NULL_HANDLE is a reserved value representing a non-valid object
|
||||
handle.
|
||||
@ -271,8 +289,7 @@ It may be passed to and returned from Vulkan commands only when
|
||||
|
||||
include::../api/defines/VK_NULL_HANDLE.txt[]
|
||||
|
||||
// refEnd VK_NULL_HANDLE
|
||||
|
||||
--
|
||||
|
||||
[[boilerplate-platform-macros]]
|
||||
== Platform-Specific Macro Definitions in +vk_platform.h+
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[appendix]
|
||||
= Compressed Image Formats
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[appendix]
|
||||
[[credits]]
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[appendix]
|
||||
|
||||
@ -195,6 +196,10 @@ ifdef::VK_EXT_acquire_xlib_display[]
|
||||
include::VK_EXT_acquire_xlib_display.txt[]
|
||||
endif::VK_EXT_acquire_xlib_display[]
|
||||
|
||||
ifdef::VK_EXT_blend_operation_advanced[]
|
||||
include::VK_EXT_blend_operation_advanced.txt[]
|
||||
endif::VK_EXT_blend_operation_advanced[]
|
||||
|
||||
ifdef::VK_EXT_debug_marker[]
|
||||
include::VK_EXT_debug_marker.txt[]
|
||||
endif::VK_EXT_debug_marker[]
|
||||
@ -223,6 +228,10 @@ ifdef::VK_EXT_hdr_metadata[]
|
||||
include::VK_EXT_hdr_metadata.txt[]
|
||||
endif::VK_EXT_hdr_metadata[]
|
||||
|
||||
ifdef::VK_EXT_sampler_filter_minmax[]
|
||||
include::VK_EXT_sampler_filter_minmax.txt[]
|
||||
endif::VK_EXT_sampler_filter_minmax[]
|
||||
|
||||
ifdef::VK_EXT_shader_subgroup_ballot[]
|
||||
include::VK_EXT_shader_subgroup_ballot.txt[]
|
||||
endif::VK_EXT_shader_subgroup_ballot[]
|
||||
@ -258,6 +267,10 @@ ifdef::VK_AMD_gpu_shader_half_float[]
|
||||
include::VK_AMD_gpu_shader_half_float.txt[]
|
||||
endif::VK_AMD_gpu_shader_half_float[]
|
||||
|
||||
ifdef::VK_AMD_gpu_shader_int16[]
|
||||
include::VK_AMD_gpu_shader_int16.txt[]
|
||||
endif::VK_AMD_gpu_shader_int16[]
|
||||
|
||||
ifdef::VK_AMD_negative_viewport_height[]
|
||||
include::VK_AMD_negative_viewport_height.txt[]
|
||||
endif::VK_AMD_negative_viewport_height[]
|
||||
@ -355,6 +368,18 @@ ifdef::VK_NV_external_memory_win32[]
|
||||
include::VK_NV_external_memory_win32.txt[]
|
||||
endif::VK_NV_external_memory_win32[]
|
||||
|
||||
ifdef::VK_NV_fill_rectangle[]
|
||||
include::VK_NV_fill_rectangle.txt[]
|
||||
endif::VK_NV_fill_rectangle[]
|
||||
|
||||
ifdef::VK_NV_fragment_coverage_to_color[]
|
||||
include::VK_NV_fragment_coverage_to_color.txt[]
|
||||
endif::VK_NV_fragment_coverage_to_color[]
|
||||
|
||||
ifdef::VK_NV_framebuffer_mixed_samples[]
|
||||
include::VK_NV_framebuffer_mixed_samples.txt[]
|
||||
endif::VK_NV_framebuffer_mixed_samples[]
|
||||
|
||||
ifdef::VK_NV_geometry_shader_passthrough[]
|
||||
include::VK_NV_geometry_shader_passthrough.txt[]
|
||||
endif::VK_NV_geometry_shader_passthrough[]
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
// The asciidoc [glossary] template cannot contain subsections.
|
||||
// The abbreviations and prefixes probably belong in the upcoming
|
||||
@ -25,6 +26,13 @@ Adjacent Vertex::
|
||||
A vertex in an adjacency primitive topology that is not part of a given
|
||||
primitive, but is accessible in geometry shaders.
|
||||
|
||||
ifdef::VK_EXT_blend_operation_advanced[]
|
||||
Advanced Blend Operation::
|
||||
Blending performed using one of the blend operation enums introduced by
|
||||
the +VK_EXT_blend_operation_advanced+ extension.
|
||||
See <<framebuffer-blend-advanced, Advanced Blending Operations>>.
|
||||
endif::VK_EXT_blend_operation_advanced[]
|
||||
|
||||
Aliased Range (Memory)::
|
||||
A range of a device memory allocation that is bound to multiple
|
||||
resources simultaneously.
|
||||
@ -145,6 +153,13 @@ Color Renderable Format::
|
||||
field of VkFormatProperties::optimalTilingFeatures returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties, depending on the tiling used.
|
||||
|
||||
Color Sample Mask::
|
||||
A bitfield associated with a fragment, with one bit for each sample in
|
||||
the color attachment(s).
|
||||
Samples are considered to be covered based on the result of the Coverage
|
||||
Reduction stage.
|
||||
Uncovered samples do not write to color attachments.
|
||||
|
||||
Combined Image Sampler::
|
||||
A descriptor type that includes both a sampled image and a sampler.
|
||||
|
||||
@ -186,6 +201,14 @@ Compressed Texel Block::
|
||||
these elements in units of texels, and a size in bytes of the encoding
|
||||
in memory.
|
||||
|
||||
Coverage::
|
||||
A bitfield associated with a fragment, where each bit is associated to a
|
||||
rasterization sample.
|
||||
Samples are initially considered to be covered based on the result of
|
||||
rasterization, and then coverage can subsequently be turned on or off by
|
||||
other fragment operations or the fragment shader.
|
||||
Uncovered samples do not write to framebuffer attachments.
|
||||
|
||||
Cull Distance::
|
||||
A built-in output from vertex processing stages that defines a cull
|
||||
half-space where the primitive is rejected if all vertices have a
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[appendix]
|
||||
[[invariance]]
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[appendix]
|
||||
[[spirvenv]]
|
||||
@ -134,6 +135,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
uses the +SPV_AMD_gpu_shader_half_float+ SPIR-V extension.
|
||||
endif::VK_AMD_gpu_shader_half_float[]
|
||||
|
||||
ifdef::VK_AMD_gpu_shader_int16[]
|
||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
uses the +SPV_AMD_gpu_shader_int16+ SPIR-V extension.
|
||||
endif::VK_AMD_gpu_shader_int16[]
|
||||
|
||||
ifdef::VK_AMD_shader_ballot[]
|
||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
uses the +SPV_AMD_shader_ballot+ SPIR-V extension.
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin vkAcquireXlibDisplayEXT Acquire access to a VkDisplayKHR using Xlib
|
||||
[open,refpage='vkAcquireXlibDisplayEXT',desc='Acquire access to a VkDisplayKHR using Xlib',type='protos']
|
||||
--
|
||||
|
||||
To acquire permission to directly access a display in Vulkan from an X11
|
||||
server, call:
|
||||
@ -30,8 +31,10 @@ ownership of its virtual terminal.
|
||||
====
|
||||
|
||||
include::../../validity/protos/vkAcquireXlibDisplayEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkGetRandROutputDisplayEXT Query the VkDisplayKHR corresponding to an X11 RandR Output
|
||||
[open,refpage='vkGetRandROutputDisplayEXT',desc='Query the VkDisplayKHR corresponding to an X11 RandR Output',type='protos']
|
||||
--
|
||||
|
||||
When acquiring displays from an X11 server, an application may also wish to
|
||||
enumerate and identify them using a native handle rather than a
|
||||
@ -53,3 +56,4 @@ pname:physicalDevice, ename:VK_NULL_HANDLE must: be returned in
|
||||
pname:pDisplay.
|
||||
|
||||
include::../../validity/protos/vkGetRandROutputDisplayEXT.txt[]
|
||||
--
|
||||
|
@ -0,0 +1,805 @@
|
||||
|
||||
[[framebuffer-blend-advanced]]
|
||||
=== Advanced Blend Operations
|
||||
|
||||
The _advanced blend operations_ are those listed in tables
|
||||
<<framebuffer-blend-advanced-fxyz-modes,f/X/Y/Z Advanced Blend Operations>>,
|
||||
<<framebuffer-blend-advanced-hsl-modes,Hue-Saturation-Luminosity Advanced
|
||||
Blend Operations>>, and
|
||||
<<framebuffer-blend-advanced-additional-rgb,Additional RGB Blend
|
||||
Operations>>.
|
||||
|
||||
[open,refpage='VkPipelineColorBlendAdvancedStateCreateInfoEXT',desc='Structure specifying parameters that affect advanced blend operations',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext list of slink:VkPipelineColorBlendStateCreateInfo
|
||||
includes a sname:VkPipelineColorBlendAdvancedStateCreateInfoEXT structure,
|
||||
then that structure includes parameters that affect advanced blend
|
||||
operations.
|
||||
|
||||
The sname:VkPipelineColorBlendAdvancedStateCreateInfoEXT structure is
|
||||
defined as:
|
||||
|
||||
include::../../api/structs/VkPipelineColorBlendAdvancedStateCreateInfoEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:srcPremultiplied specifies whether the source color of the blend
|
||||
operation is treated as premultiplied.
|
||||
* pname:dstPremultiplied specifies whether the destination color of the
|
||||
blend operation is treated as premultiplied.
|
||||
* pname:blendOverlap is a elink:VkBlendOverlapEXT value specifying how the
|
||||
source and destination sample's coverage is correlated.
|
||||
|
||||
If this structure is not present, pname:srcPremultiplied and
|
||||
pname:dstPremultiplied are both considered to be ename:VK_TRUE, and
|
||||
pname:blendOverlap is considered to be
|
||||
ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424]]
|
||||
If the
|
||||
<<features-limits-advancedBlendNonPremultipliedSrcColor,non-premultiplied
|
||||
source color>> property is not supported, pname:srcPremultiplied must:
|
||||
be ename:VK_TRUE
|
||||
* [[VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425]]
|
||||
If the
|
||||
<<features-limits-advancedBlendNonPremultipliedDstColor,non-premultiplied
|
||||
destination color>> property is not supported, pname:dstPremultiplied
|
||||
must: be ename:VK_TRUE
|
||||
* [[VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426]]
|
||||
If the <<features-limits-advancedBlendCorrelatedOverlap,correlated
|
||||
overlap>> property is not supported, pname:blendOverlap must: be
|
||||
ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkPipelineColorBlendAdvancedStateCreateInfoEXT.txt[]
|
||||
--
|
||||
|
||||
When using one of the operations in table
|
||||
<<framebuffer-blend-advanced-fxyz-modes,f/X/Y/Z Advanced Blend Operations>>
|
||||
or <<framebuffer-blend-advanced-hsl-modes,Hue-Saturation-Luminosity Advanced
|
||||
Blend Operations>>, blending is performed according to the following
|
||||
equations:
|
||||
|
||||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{aligned}
|
||||
R & = & f(R_s',R_d')*p_0(A_s,A_d) & + & Y*R_s'*p_1(A_s,A_d) & + & Z*R_d'*p_2(A_s,A_d) \\
|
||||
G & = & f(G_s',G_d')*p_0(A_s,A_d) & + & Y*G_s'*p_1(A_s,A_d) & + & Z*G_d'*p_2(A_s,A_d) \\
|
||||
B & = & f(B_s',B_d')*p_0(A_s,A_d) & + & Y*B_s'*p_1(A_s,A_d) & + & Z*B_d'*p_2(A_s,A_d) \\
|
||||
A & = & X*p_0(A_s,A_d) & + & Y*p_1(A_s,A_d) & + & Z*p_2(A_s,A_d)
|
||||
\end{aligned}
|
||||
+++++++++++++++++++
|
||||
|
||||
where the function f and terms X, Y, and Z are specified in the table.
|
||||
The R, G, and B components of the source color used for blending are derived
|
||||
according to pname:srcPremultiplied.
|
||||
If pname:srcPremultiplied is set to ename:VK_TRUE, the fragment color
|
||||
components are considered to have been premultiplied by the A component
|
||||
prior to blending.
|
||||
The base source color [eq]#(R~s~',G~s~',B~s~')# is obtained by dividing
|
||||
through by the A component:
|
||||
|
||||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R_s', G_s', B_s') & =
|
||||
\begin{cases}
|
||||
(0, 0, 0) & A_s = 0 \\
|
||||
(\frac{R_s}{A_s}, \frac{G_s}{A_s}, \frac{B_s}{A_s}) & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
+++++++++++++++++++
|
||||
|
||||
If pname:srcPremultiplied is ename:VK_FALSE, the fragment color components
|
||||
are used as the base color:
|
||||
|
||||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R_s', G_s', B_s') & = (R_s, G_s, B_s)
|
||||
\end{aligned}
|
||||
+++++++++++++++++++
|
||||
|
||||
The R, G, and B components of the destination color used for blending are
|
||||
derived according to pname:dstPremultiplied.
|
||||
If pname:dstPremultiplied is set to ename:VK_TRUE, the destination
|
||||
components are considered to have been premultiplied by the A component
|
||||
prior to blending.
|
||||
The base destination color [eq]#(R~d~',G~d~',B~d~')# is obtained by dividing
|
||||
through by the A component:
|
||||
|
||||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R_d', G_d', B_d') & =
|
||||
\begin{cases}
|
||||
(0, 0, 0) & A_d = 0 \\
|
||||
(\frac{R_d}{A_d}, \frac{G_d}{A_d}, \frac{B_d}{A_d}) & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
+++++++++++++++++++
|
||||
|
||||
If pname:dstPremultiplied is ename:VK_FALSE, the destination color
|
||||
components are used as the base color:
|
||||
|
||||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R_d', G_d', B_d') & = (R_d, G_d, B_d)
|
||||
\end{aligned}
|
||||
+++++++++++++++++++
|
||||
|
||||
[open,refpage='VkBlendOverlapEXT',desc='Enumerant specifying the blend overlap parameter',type='enums']
|
||||
--
|
||||
|
||||
When blending using advanced blend operations, we expect that the R, G, and
|
||||
B components of premultiplied source and destination color inputs be stored
|
||||
as the product of non-premultiplied R, G, and B component values and the A
|
||||
component of the color.
|
||||
If any R, G, or B component of a premultiplied input color is non-zero and
|
||||
the A component is zero, the color is considered ill-formed, and the
|
||||
corresponding component of the blend result is undefined.
|
||||
|
||||
The weighting functions [eq]#p~0~#, [eq]#p~1~#, and [eq]#p~2~# are defined
|
||||
in table <<framebuffer-blend-advanced-overlap-modes,Advanced Blend Overlap
|
||||
Modes>>.
|
||||
In these functions, the A components of the source and destination colors
|
||||
are taken to indicate the portion of the pixel covered by the fragment
|
||||
(source) and the fragments previously accumulated in the pixel
|
||||
(destination).
|
||||
The functions [eq]#p~0~#, [eq]#p~1~#, and [eq]#p~2~# approximate the
|
||||
relative portion of the pixel covered by the intersection of the source and
|
||||
destination, covered only by the source, and covered only by the
|
||||
destination, respectively.
|
||||
|
||||
Possible values of
|
||||
slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT::pname:blendOverlap,
|
||||
specifying the blend overlap functions, are:
|
||||
|
||||
include::../../api/enums/VkBlendOverlapEXT.txt[]
|
||||
|
||||
* ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT specifies that there is no
|
||||
correlation between the source and destination coverage.
|
||||
* ename:VK_BLEND_OVERLAP_CONJOINT_EXT specifies that the source and
|
||||
destination coverage are considered to have maximal overlap.
|
||||
* ename:VK_BLEND_OVERLAP_DISJOINT_EXT specifies that the source and
|
||||
destination coverage are considered to have minimal overlap.
|
||||
|
||||
[[framebuffer-blend-advanced-overlap-modes]]
|
||||
.Advanced Blend Overlap Modes
|
||||
[width="80%",options="header"]
|
||||
|====
|
||||
| Overlap Mode | Weighting Equations
|
||||
| ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
p_0(A_s,A_d) & = A_sA_d \\
|
||||
p_1(A_s,A_d) & = A_s(1-A_d) \\
|
||||
p_2(A_s,A_d) & = A_d(1-A_s) \\
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OVERLAP_CONJOINT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
p_0(A_s,A_d) & = min(A_s,A_d) \\
|
||||
p_1(A_s,A_d) & = max(A_s-A_d,0) \\
|
||||
p_2(A_s,A_d) & = max(A_d-A_s,0) \\
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
| ename:VK_BLEND_OVERLAP_DISJOINT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\
|
||||
p_1(A_s,A_d) & = min(A_s,1-A_d) \\
|
||||
p_2(A_s,A_d) & = min(A_d,1-A_s) \\
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|====
|
||||
--
|
||||
|
||||
[[framebuffer-blend-advanced-fxyz-modes]]
|
||||
.f/X/Y/Z Advanced Blend Operations
|
||||
[width="80%",options="header"]
|
||||
|====
|
||||
| Mode | Blend Coefficients
|
||||
| ename:VK_BLEND_OP_ZERO_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (0,0,0) \\
|
||||
f(C_s,C_d) & = 0
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|
||||
| ename:VK_BLEND_OP_SRC_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,0) \\
|
||||
f(C_s,C_d) & = C_s
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DST_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,0,1) \\
|
||||
f(C_s,C_d) & = C_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_SRC_OVER_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = C_s
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DST_OVER_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = C_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_SRC_IN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,0,0) \\
|
||||
f(C_s,C_d) & = C_s
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DST_IN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,0,0) \\
|
||||
f(C_s,C_d) & = C_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_SRC_OUT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (0,1,0) \\
|
||||
f(C_s,C_d) & = 0
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DST_OUT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (0,0,1) \\
|
||||
f(C_s,C_d) & = 0
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_SRC_ATOP_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,0,1) \\
|
||||
f(C_s,C_d) & = C_s
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DST_ATOP_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,0) \\
|
||||
f(C_s,C_d) & = C_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_XOR_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (0,1,1) \\
|
||||
f(C_s,C_d) & = 0
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_MULTIPLY_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = C_sC_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_SCREEN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = C_s+C_d-C_sC_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|
||||
| ename:VK_BLEND_OP_OVERLAY_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
2 C_sC_d & C_d \leq 0.5 \\
|
||||
1-2 (1-C_s)(1-C_d) & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DARKEN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = min(C_s,C_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_LIGHTEN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = max(C_s,C_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_COLORDODGE_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
0 & C_d \leq 0 \\
|
||||
min(1,\frac{C_d}{1-C_s}) & C_d \gt 0 \text{ and } C_s \lt 1 \\
|
||||
1 & C_d \gt 0 \text{ and } C_s \geq 1
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_COLORBURN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
1 & C_d \geq 1 \\
|
||||
1 - min(1,\frac{1-C_d}{C_s}) & C_d \lt 1 \text{ and } C_s \gt 0 \\
|
||||
0 & C_d \lt 1 \text{ and } C_s \leq 0
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_HARDLIGHT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
2 C_sC_d & C_s \leq 0.5 \\
|
||||
1-2 (1-C_s)(1-C_d) & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_SOFTLIGHT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
C_d-(1-2 C_s)C_d(1-C_d) & C_s \leq 0.5 \\
|
||||
C_d+(2 C_s-1)C_d((16 C_d-12)C_d+3) & C_s \gt 0.5 \text{ and } C_d \leq 0.25 \\
|
||||
C_d+(2 C_s-1)(\sqrt{C_d}-C_d) & C_s \gt 0.5 \text{ and } C_d \gt 0.25
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_DIFFERENCE_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = \lvert C_d-C_s \rvert
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_EXCLUSION_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = C_s+C_d-2C_sC_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_INVERT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,0,1) \\
|
||||
f(C_s,C_d) & = 1-C_d
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_INVERT_RGB_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,0,1) \\
|
||||
f(C_s,C_d) & = C_s(1-C_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_LINEARDODGE_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
C_s+C_d & C_s+C_d \leq 1 \\
|
||||
1 & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_LINEARBURN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
C_s+C_d-1 & C_s+C_d \gt 1 \\
|
||||
0 & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_VIVIDLIGHT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
1-min(1,\frac{1-C_d}{2C_s}) & 0 \lt C_s \lt 0.5 \\
|
||||
0 & C_s \leq 0 \\
|
||||
min(1,\frac{C_d}{2(1-C_s)}) & 0.5 \leq C_s \lt 1 \\
|
||||
1 & C_s \geq 1
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_LINEARLIGHT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
1 & 2C_s+C_d \gt 2 \\
|
||||
2C_s+C_d-1 & 1 \lt 2C_s+C_d \leq 2 \\
|
||||
0 & 2C_s+C_d \leq 1
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_PINLIGHT_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
0 & 2C_s-1 \gt C_d \text{ and } C_s \lt 0.5 \\
|
||||
2C_s-1 & 2C_s-1 \gt C_d \text{ and } C_s \geq 0.5 \\
|
||||
2C_s & 2C_s-1 \leq C_d \text{ and } C_s \lt 0.5C_d \\
|
||||
C_d & 2C_s-1 \leq C_d \text{ and } C_s \geq 0.5C_d
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_HARDMIX_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & =
|
||||
\begin{cases}
|
||||
0 & C_s+C_d \lt 1 \\
|
||||
1 & \text{otherwise}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|====
|
||||
|
||||
|
||||
When using one of the HSL blend operations in table
|
||||
<<framebuffer-blend-advanced-hsl-modes,Hue-Saturation-Luminosity Advanced
|
||||
Blend Operations>> as the blend operation, the RGB color components produced
|
||||
by the function f are effectively obtained by converting both the
|
||||
non-premultiplied source and destination colors to the HSL (hue, saturation,
|
||||
luminosity) color space, generating a new HSL color by selecting H, S, and L
|
||||
components from the source or destination according to the blend operation,
|
||||
and then converting the result back to RGB.
|
||||
In the equations below, a blended RGB color is produced according to the
|
||||
following pseudocode:
|
||||
|
||||
[source,c++]
|
||||
----------------------------------------
|
||||
float minv3(vec3 c) {
|
||||
return min(min(c.r, c.g), c.b);
|
||||
}
|
||||
float maxv3(vec3 c) {
|
||||
return max(max(c.r, c.g), c.b);
|
||||
}
|
||||
float lumv3(vec3 c) {
|
||||
return dot(c, vec3(0.30, 0.59, 0.11));
|
||||
}
|
||||
float satv3(vec3 c) {
|
||||
return maxv3(c) - minv3(c);
|
||||
}
|
||||
|
||||
// If any color components are outside [0,1], adjust the color to
|
||||
// get the components in range.
|
||||
vec3 ClipColor(vec3 color) {
|
||||
float lum = lumv3(color);
|
||||
float mincol = minv3(color);
|
||||
float maxcol = maxv3(color);
|
||||
if (mincol < 0.0) {
|
||||
color = lum + ((color-lum)*lum) / (lum-mincol);
|
||||
}
|
||||
if (maxcol > 1.0) {
|
||||
color = lum + ((color-lum)*lum) / (maxcol-lum);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
// Take the base RGB color <cbase> and override its luminosity
|
||||
// with that of the RGB color <clum>.
|
||||
vec3 SetLum(vec3 cbase, vec3 clum) {
|
||||
float lbase = lumv3(cbase);
|
||||
float llum = lumv3(clum);
|
||||
float ldiff = llum - lbase;
|
||||
vec3 color = cbase + vec3(ldiff);
|
||||
return ClipColor(color);
|
||||
}
|
||||
|
||||
// Take the base RGB color <cbase> and override its saturation with
|
||||
// that of the RGB color <csat>. The override the luminosity of the
|
||||
// result with that of the RGB color <clum>.
|
||||
vec3 SetLumSat(vec3 cbase, vec3 csat, vec3 clum)
|
||||
{
|
||||
float minbase = minv3(cbase);
|
||||
float sbase = satv3(cbase);
|
||||
float ssat = satv3(csat);
|
||||
vec3 color;
|
||||
if (sbase > 0) {
|
||||
// Equivalent (modulo rounding errors) to setting the
|
||||
// smallest (R,G,B) component to 0, the largest to <ssat>,
|
||||
// and interpolating the "middle" component based on its
|
||||
// original value relative to the smallest/largest.
|
||||
color = (cbase - minbase) * ssat / sbase;
|
||||
} else {
|
||||
color = vec3(0.0);
|
||||
}
|
||||
return SetLum(color, clum);
|
||||
}
|
||||
----------------------------------------
|
||||
|
||||
[[framebuffer-blend-advanced-hsl-modes]]
|
||||
.Hue-Saturation-Luminosity Advanced Blend Operations
|
||||
[width="80%",options="header"]
|
||||
|====
|
||||
| Mode | Result
|
||||
| ename:VK_BLEND_OP_HSL_HUE_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = SetLumSat(C_s,C_d,C_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_HSL_SATURATION_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = SetLumSat(C_d,C_s,C_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_HSL_COLOR_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = SetLum(C_s,C_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_HSL_LUMINOSITY_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(X,Y,Z) & = (1,1,1) \\
|
||||
f(C_s,C_d) & = SetLum(C_d,C_s)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|====
|
||||
|
||||
|
||||
When using one of the operations in table
|
||||
<<framebuffer-blend-advanced-additional-rgb,Additional RGB Blend
|
||||
Operations>> as the blend operation, the source and destination colors used
|
||||
by these blending operations are interpreted according to
|
||||
pname:srcPremultiplied and pname:dstPremultiplied.
|
||||
The blending operations below are evaluated where the RGB source and
|
||||
destination color components are both considered to have been premultiplied
|
||||
by the corresponding A component.
|
||||
|
||||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R_s', G_s', B_s') & =
|
||||
\begin{cases}
|
||||
(R_s, G_s, B_s) & \text{if srcPremultiplied is VK\_TRUE} \\
|
||||
(R_sA_s, G_sA_s, B_sA_s) & \text{if srcPremultiplied is VK\_FALSE}
|
||||
\end{cases} \\
|
||||
(R_d', G_d', B_d') & =
|
||||
\begin{cases}
|
||||
(R_d, G_d, B_d) & \text{if dstPremultiplied is VK\_TRUE} \\
|
||||
(R_dA_d, G_dA_d, B_dA_d) & \text{if dstPremultiplied is VK\_FALSE}
|
||||
\end{cases}
|
||||
\end{aligned}
|
||||
+++++++++++++++++++
|
||||
|
||||
[[framebuffer-blend-advanced-additional-rgb]]
|
||||
.Additional RGB Blend Operations
|
||||
[width="80%",options="header"]
|
||||
|====
|
||||
| Mode | Result
|
||||
| ename:VK_BLEND_OP_PLUS_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & R_s'+R_d', \\
|
||||
& G_s'+G_d', \\
|
||||
& B_s'+B_d', \\
|
||||
& A_s+A_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_PLUS_CLAMPED_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & min(1,R_s'+R_d'), \\
|
||||
& min(1,G_s'+G_d'), \\
|
||||
& min(1,B_s'+B_d'), \\
|
||||
& min(1,A_s+A_d))
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & min(min(1,A_s+A_d),R_s'+R_d'), \\
|
||||
& min(min(1,A_s+A_d),G_s'+G_d'), \\
|
||||
& min(min(1,A_s+A_d),B_s'+B_d'), \\
|
||||
& min(1,A_s+A_d))
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_PLUS_DARKER_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & max(0,min(1,A_s+A_d)-((A_s-R_s')+(A_d-R_d'))), \\
|
||||
& max(0,min(1,A_s+A_d)-((A_s-G_s')+(A_d-G_d'))), \\
|
||||
& max(0,min(1,A_s+A_d)-((A_s-B_s')+(A_d-B_d'))), \\
|
||||
& min(1,A_s+A_d))
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_MINUS_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & R_d'-R_s', \\
|
||||
& G_d'-G_s', \\
|
||||
& B_d'-B_s', \\
|
||||
& A_d-A_s)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_MINUS_CLAMPED_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & max(0,R_d'-R_s'), \\
|
||||
& max(0,G_d'-G_s'), \\
|
||||
& max(0,B_d'-B_s'), \\
|
||||
& max(0,A_d-A_s))
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_CONTRAST_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & \frac{A_d}{2} + 2(R_d'-\frac{A_d}{2})(R_s'-\frac{A_s}{2}), \\
|
||||
& \frac{A_d}{2} + 2(G_d'-\frac{A_d}{2})(G_s'-\frac{A_s}{2}), \\
|
||||
& \frac{A_d}{2} + 2(B_d'-\frac{A_d}{2})(B_s'-\frac{A_s}{2}), \\
|
||||
& A_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_INVERT_OVG_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) = ( & A_s(1-R_d') + (1-A_s)R_d', \\
|
||||
& A_s(1-G_d') + (1-A_s)G_d', \\
|
||||
& A_s(1-B_d') + (1-A_s)B_d', \\
|
||||
& A_s+A_d-A_sA_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_RED_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) & = (R_s', G_d', B_d', A_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_GREEN_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) & = (R_d', G_s', B_d', A_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
| ename:VK_BLEND_OP_BLUE_EXT a|
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
(R,G,B,A) & = (R_d', G_d', B_s', A_d)
|
||||
\end{aligned}
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|====
|
@ -20,7 +20,8 @@ the command buffer.
|
||||
The commands in this section allow application developers to associate
|
||||
user-defined information with Vulkan objects at will.
|
||||
|
||||
// refBegin vkDebugMarkerSetObjectNameEXT Give a user-friendly name to an object
|
||||
[open,refpage='vkDebugMarkerSetObjectNameEXT',desc='Give a user-friendly name to an object',type='protos']
|
||||
--
|
||||
|
||||
An object can be given a user-friendly name by calling:
|
||||
|
||||
@ -38,8 +39,10 @@ include::../api/protos/vkDebugMarkerSetObjectNameEXT.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDebugMarkerSetObjectNameEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDebugMarkerObjectNameInfoEXT Specify parameters of a name to give to an object
|
||||
[open,refpage='VkDebugMarkerObjectNameInfoEXT',desc='Specify parameters of a name to give to an object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDebugMarkerObjectNameInfoEXT structure is defined as:
|
||||
|
||||
@ -59,8 +62,10 @@ To remove a previously set name, pname:pName should: be set to an empty
|
||||
string.
|
||||
|
||||
include::../validity/structs/VkDebugMarkerObjectNameInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkDebugMarkerSetObjectTagEXT Attach arbitrary data to an object
|
||||
[open,refpage='vkDebugMarkerSetObjectTagEXT',desc='Attach arbitrary data to an object',type='protos']
|
||||
--
|
||||
|
||||
In addition to setting a name for an object, debugging and validation layers
|
||||
may have uses for additional binary data on a per-object basis that has no
|
||||
@ -85,8 +90,10 @@ include::../api/protos/vkDebugMarkerSetObjectTagEXT.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDebugMarkerSetObjectTagEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDebugMarkerObjectTagInfoEXT Specify parameters of a tag to attach to an object
|
||||
[open,refpage='VkDebugMarkerObjectTagInfoEXT',desc='Specify parameters of a tag to attach to an object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDebugMarkerObjectTagInfoEXT structure is defined as:
|
||||
|
||||
@ -108,6 +115,7 @@ This can be used by debugging layers to easily filter for only data that can
|
||||
be used by that implementation.
|
||||
|
||||
include::../validity/structs/VkDebugMarkerObjectTagInfoEXT.txt[]
|
||||
--
|
||||
|
||||
[[debugging-command-buffer-markers]]
|
||||
=== Command Buffer Markers
|
||||
@ -124,7 +132,8 @@ grouped together, and they can be nested to create a hierarchy.
|
||||
The fname:vkCmdDebugMarkerInsertEXT command allows insertion of a single
|
||||
label within a command buffer.
|
||||
|
||||
// refBegin vkCmdDebugMarkerBeginEXT Open a command buffer marker region
|
||||
[open,refpage='vkCmdDebugMarkerBeginEXT',desc='Open a command buffer marker region',type='protos']
|
||||
--
|
||||
|
||||
A marker region can be opened by calling:
|
||||
|
||||
@ -137,8 +146,10 @@ include::../api/protos/vkCmdDebugMarkerBeginEXT.txt[]
|
||||
the marker region to open.
|
||||
|
||||
include::../validity/protos/vkCmdDebugMarkerBeginEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDebugMarkerMarkerInfoEXT Specify parameters of a command buffer marker region
|
||||
[open,refpage='VkDebugMarkerMarkerInfoEXT',desc='Specify parameters of a command buffer marker region',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDebugMarkerMarkerInfoEXT structure is defined as:
|
||||
|
||||
@ -155,8 +166,10 @@ include::../api/structs/VkDebugMarkerMarkerInfoEXT.txt[]
|
||||
If all elements in pname:color are set to 0.0 then it is ignored.
|
||||
|
||||
include::../validity/structs/VkDebugMarkerMarkerInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkCmdDebugMarkerEndEXT Close a command buffer marker region
|
||||
[open,refpage='vkCmdDebugMarkerEndEXT',desc='Close a command buffer marker region',type='protos']
|
||||
--
|
||||
|
||||
A marker region can be closed by calling:
|
||||
|
||||
@ -186,8 +199,10 @@ must: be matched and balanced.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdDebugMarkerEndEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkCmdDebugMarkerInsertEXT Insert a marker label into a command buffer
|
||||
[open,refpage='vkCmdDebugMarkerInsertEXT',desc='Insert a marker label into a command buffer',type='protos']
|
||||
--
|
||||
|
||||
A single marker label can be inserted into a command buffer by calling:
|
||||
|
||||
@ -200,3 +215,4 @@ include::../api/protos/vkCmdDebugMarkerInsertEXT.txt[]
|
||||
the marker to insert.
|
||||
|
||||
include::../validity/protos/vkCmdDebugMarkerInsertEXT.txt[]
|
||||
--
|
||||
|
@ -3,16 +3,18 @@
|
||||
[[debugging-debug-report-callbacks]]
|
||||
== Debug Report Callbacks
|
||||
|
||||
// refBegin VkDebugReportCallbackEXT Opaque handle to a debug report callback object
|
||||
[open,refpage='VkDebugReportCallbackEXT',desc='Opaque handle to a debug report callback object',type='handles']
|
||||
--
|
||||
|
||||
Debug report callbacks are represented by sname:VkDebugReportCallbackEXT
|
||||
handles:
|
||||
|
||||
include::../api/handles/VkDebugReportCallbackEXT.txt[]
|
||||
|
||||
// refEnd VkDebugReportCallbackEXT
|
||||
--
|
||||
|
||||
// refBegin vkCreateDebugReportCallbackEXT Create a debug report callback object
|
||||
[open,refpage='vkCreateDebugReportCallbackEXT',desc='Create a debug report callback object',type='protos']
|
||||
--
|
||||
|
||||
Debug report callbacks give more detailed feedback on the application's use
|
||||
of Vulkan when events of interest occur.
|
||||
@ -32,8 +34,10 @@ include::../api/protos/vkCreateDebugReportCallbackEXT.txt[]
|
||||
sname:VkDebugReportCallbackEXT object created.
|
||||
|
||||
include::../validity/protos/vkCreateDebugReportCallbackEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDebugReportCallbackCreateInfoEXT Structure specifying parameters of a newly created debug report callback
|
||||
[open,refpage='VkDebugReportCallbackCreateInfoEXT',desc='Structure specifying parameters of a newly created debug report callback',type='structs']
|
||||
--
|
||||
|
||||
The definition of slink:VkDebugReportCallbackCreateInfoEXT is:
|
||||
|
||||
@ -72,8 +76,10 @@ application is making Vulkan calls from multiple threads).
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDebugReportCallbackCreateInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDebugReportFlagBitsEXT Bitmask specifying events which cause a debug report callback
|
||||
[open,refpage='VkDebugReportFlagBitsEXT',desc='Bitmask specifying events which cause a debug report callback',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in
|
||||
slink:VkDebugReportCallbackCreateInfoEXT::pname:flags, specifying events
|
||||
@ -102,9 +108,10 @@ include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
|
||||
* ename:VK_DEBUG_REPORT_DEBUG_BIT_EXT specifies diagnostic information
|
||||
from the implementation and layers.
|
||||
|
||||
// refEnd VkDebugReportFlagBitsEXT
|
||||
--
|
||||
|
||||
// refBegin PFN_vkDebugReportCallbackEXT Application-defined debug report callback function
|
||||
[open,refpage='PFN_vkDebugReportCallbackEXT',desc='Application-defined debug report callback function',type='funcpointers']
|
||||
--
|
||||
|
||||
The prototype for the
|
||||
slink:VkDebugReportCallbackCreateInfoEXT::pname:pfnCallback function
|
||||
@ -148,9 +155,10 @@ If the application returns ename:VK_TRUE from its callback and the Vulkan
|
||||
call being aborted returns a elink:VkResult, the layer will return
|
||||
ename:VK_ERROR_VALIDATION_FAILED_EXT.
|
||||
|
||||
// refEnd PFN_vkDebugReportCallbackEXT
|
||||
--
|
||||
|
||||
// refBegin VkDebugReportObjectTypeEXT Specify the type of an object handle
|
||||
[open,refpage='VkDebugReportObjectTypeEXT',desc='Specify the type of an object handle',type='enums']
|
||||
--
|
||||
|
||||
Possible values passed to the pname:objectType parameter of the callback
|
||||
function specified by
|
||||
@ -233,9 +241,10 @@ It is not expected that an application would see this error code during
|
||||
normal use of the validation layers.
|
||||
====
|
||||
|
||||
// refEnd PFN_vkDebugReportCallbackEXT
|
||||
--
|
||||
|
||||
// refBegin vkDebugReportMessageEXT Inject a message into a debug stream
|
||||
[open,refpage='vkDebugReportMessageEXT',desc='Inject a message into a debug stream',type='protos']
|
||||
--
|
||||
|
||||
To inject its own messages into the debug stream, call:
|
||||
|
||||
@ -270,8 +279,10 @@ registered.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDebugReportMessageEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkDestroyDebugReportCallbackEXT Destroy a debug report callback object
|
||||
[open,refpage='vkDestroyDebugReportCallbackEXT',desc='Destroy a debug report callback object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a sname:VkDebugReportCallbackEXT object, call:
|
||||
|
||||
@ -297,3 +308,4 @@ include::../api/protos/vkDestroyDebugReportCallbackEXT.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDestroyDebugReportCallbackEXT.txt[]
|
||||
--
|
||||
|
@ -10,7 +10,8 @@ ifdef::VK_EXT_acquire_xlib_display[]
|
||||
include::../VK_EXT_acquire_xlib_display/acquire_xlib_display.txt[]
|
||||
endif::VK_EXT_acquire_xlib_display[]
|
||||
|
||||
// refBegin vkReleaseDisplayEXT Release access to an acquired VkDisplayKHR
|
||||
[open,refpage='vkReleaseDisplayEXT',desc='Release access to an acquired VkDisplayKHR',type='protos']
|
||||
--
|
||||
|
||||
To release a previously acquired display, call:
|
||||
|
||||
@ -20,3 +21,4 @@ include::../../api/protos/vkReleaseDisplayEXT.txt[]
|
||||
* pname:display The display to release control of.
|
||||
|
||||
include::../../validity/protos/vkReleaseDisplayEXT.txt[]
|
||||
--
|
||||
|
@ -1,6 +1,7 @@
|
||||
=== Display Control
|
||||
|
||||
// refBegin vkDisplayPowerControlEXT Set the power state of a display
|
||||
[open,refpage='vkDisplayPowerControlEXT',desc='Set the power state of a display',type='protos']
|
||||
--
|
||||
|
||||
To set the power state of a display, call:
|
||||
|
||||
@ -12,8 +13,10 @@ include::../../api/protos/vkDisplayPowerControlEXT.txt[]
|
||||
specifying the new power state of pname:display.
|
||||
|
||||
include::../../validity/protos/vkDisplayPowerControlEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayPowerInfoEXT Describe the power state of a display
|
||||
[open,refpage='VkDisplayPowerInfoEXT',desc='Describe the power state of a display',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayPowerInfoEXT structure is defined as:
|
||||
|
||||
@ -25,8 +28,10 @@ include::../../api/structs/VkDisplayPowerInfoEXT.txt[]
|
||||
new power state of the display.
|
||||
|
||||
include::../../validity/structs/VkDisplayPowerInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayPowerStateEXT Possible power states for a display
|
||||
[open,refpage='VkDisplayPowerStateEXT',desc='Possible power states for a display',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkDisplayPowerInfoEXT::pname:powerState, specifying
|
||||
the new power state of a display, are:
|
||||
@ -43,4 +48,4 @@ include::../../api/enums/VkDisplayPowerStateEXT.txt[]
|
||||
* ename:VK_DISPLAY_POWER_STATE_ON_EXT specifies that the display is
|
||||
powered on.
|
||||
|
||||
// refEnd VkDisplayPowerStateEXT
|
||||
--
|
||||
|
@ -4,7 +4,8 @@ Besides submitting a fence to a queue as part of a
|
||||
<<devsandqueues-submission, queue submission>> command, a fence may: also be
|
||||
signaled when a particular event occurs on a device or display.
|
||||
|
||||
// refBegin vkRegisterDeviceEventEXT Signal a fence when a device event occurs
|
||||
[open,refpage='vkRegisterDeviceEventEXT',desc='Signal a fence when a device event occurs',type='protos']
|
||||
--
|
||||
|
||||
To create a fence that will be signaled when an event occurs on a device,
|
||||
call:
|
||||
@ -21,8 +22,10 @@ include::../../api/protos/vkRegisterDeviceEventEXT.txt[]
|
||||
returned.
|
||||
|
||||
include::../../validity/protos/vkRegisterDeviceEventEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDeviceEventInfoEXT Describe a device event to create
|
||||
[open,refpage='VkDeviceEventInfoEXT',desc='Describe a device event to create',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDeviceEventInfoEXT structure is defined as:
|
||||
|
||||
@ -34,8 +37,10 @@ include::../../api/structs/VkDeviceEventInfoEXT.txt[]
|
||||
fence will be signaled.
|
||||
|
||||
include::../../validity/structs/VkDeviceEventInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDeviceEventTypeEXT Events that can occur on a device object
|
||||
[open,refpage='VkDeviceEventTypeEXT',desc='Events that can occur on a device object',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkDeviceEventInfoEXT::pname:device, specifying when
|
||||
a fence will be signaled, are:
|
||||
@ -48,9 +53,10 @@ include::../../api/enums/VkDeviceEventTypeEXT.txt[]
|
||||
Applications can: use this notification to determine when they need to
|
||||
re-enumerate the available displays on a device.
|
||||
|
||||
// refEnd VkDeviceEventTypeEXT
|
||||
--
|
||||
|
||||
// refBegin vkRegisterDisplayEventEXT Signal a fence when a display event occurs
|
||||
[open,refpage='vkRegisterDisplayEventEXT',desc='Signal a fence when a display event occurs',type='protos']
|
||||
--
|
||||
|
||||
To create a fence that will be signaled when an event occurs on a
|
||||
VkDisplayKHR object, call:
|
||||
@ -68,8 +74,10 @@ include::../../api/protos/vkRegisterDisplayEventEXT.txt[]
|
||||
returned.
|
||||
|
||||
include::../../validity/protos/vkRegisterDisplayEventEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayEventInfoEXT Describe a display event to create
|
||||
[open,refpage='VkDisplayEventInfoEXT',desc='Describe a display event to create',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayEventInfoEXT structure is defined as:
|
||||
|
||||
@ -81,8 +89,10 @@ include::../../api/structs/VkDisplayEventInfoEXT.txt[]
|
||||
fence will be signaled.
|
||||
|
||||
include::../../validity/structs/VkDisplayEventInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayEventTypeEXT Events that can occur on a display object
|
||||
[open,refpage='VkDisplayEventTypeEXT',desc='Events that can occur on a display object',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkDisplayEventInfoEXT::pname:displayEvent,
|
||||
specifying when a fence will be signaled, are:
|
||||
@ -93,4 +103,4 @@ include::../../api/enums/VkDisplayEventTypeEXT.txt[]
|
||||
is signaled when the first pixel of the next display refresh cycle
|
||||
leaves the display engine for the display.
|
||||
|
||||
// refEnd VkDisplayEventTypeEXT
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin VkSwapchainCounterCreateInfoEXT Specify the surface counters desired
|
||||
[open,refpage='VkSwapchainCounterCreateInfoEXT',desc='Specify the surface counters desired',type='structs']
|
||||
--
|
||||
|
||||
To enable surface counters when creating a swapchain, add
|
||||
sname:VkSwapchainCounterCreateInfoEXT to the pname:pNext chain of
|
||||
@ -21,8 +22,10 @@ include::../../api/structs/VkSwapchainCounterCreateInfoEXT.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkSwapchainCounterCreateInfoEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkGetSwapchainCounterEXT Query the current value of a surface counter
|
||||
[open,refpage='vkGetSwapchainCounterEXT',desc='Query the current value of a surface counter',type='protos']
|
||||
--
|
||||
|
||||
The requested counters become active when the first presentation command for
|
||||
the associated swapchain is processed by the presentation engine.
|
||||
@ -46,3 +49,4 @@ implementation may: return ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetSwapchainCounterEXT.txt[]
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin vkGetPhysicalDeviceSurfaceCapabilities2EXT Query surface capabilities
|
||||
[open,refpage='vkGetPhysicalDeviceSurfaceCapabilities2EXT',desc='Query surface capabilities',type='protos']
|
||||
--
|
||||
|
||||
To query the basic capabilities of a surface, needed in order to create a
|
||||
swapchain, call:
|
||||
@ -19,8 +20,10 @@ extended information by adding extension structures to its pname:pNext
|
||||
chain.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceCapabilities2EXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSurfaceCapabilities2EXT Structure describing capabilities of a surface
|
||||
[open,refpage='VkSurfaceCapabilities2EXT',desc='Structure describing capabilities of a surface',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSurfaceCapabilities2EXT structure is defined as:
|
||||
|
||||
@ -45,8 +48,10 @@ The remaining members are:
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkSurfaceCapabilities2EXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSurfaceCounterFlagBitsEXT Surface-relative counter types
|
||||
[open,refpage='VkSurfaceCounterFlagBitsEXT',desc='Surface-relative counter types',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in
|
||||
slink:VkSurfaceCapabilities2EXT::pname:supportedSurfaceCounters, indicating
|
||||
@ -58,4 +63,4 @@ include::../../api/enums/VkSurfaceCounterFlagBitsEXT.txt[]
|
||||
once every time a vertical blanking period occurs on the display
|
||||
associated with the surface.
|
||||
|
||||
// refEnd VkSurfaceCounterFlagBitsEXT
|
||||
--
|
||||
|
@ -17,7 +17,8 @@ The definitions below are from the associated SMPTE 2086, CTA 861.3 and CIE
|
||||
|
||||
The definition of fname:vkSetHdrMetadataEXT is:
|
||||
|
||||
// refBegin vkSetHdrMetadataEXT function to set Hdr metadata
|
||||
[open,refpage='vkSetHdrMetadataEXT',desc='function to set Hdr metadata',type='protos']
|
||||
--
|
||||
include::../api/protos/vkSetHdrMetadataEXT.txt[]
|
||||
|
||||
* pname:device is the logical device where the swapchain(s) were created.
|
||||
@ -29,16 +30,19 @@ include::../api/protos/vkSetHdrMetadataEXT.txt[]
|
||||
sname:VkHdrMetadataEXT structures.
|
||||
|
||||
include::../validity/protos/vkSetHdrMetadataEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkXYColorEXT structure to specify X,Y chromaticity coordinates
|
||||
[open,refpage='VkXYColorEXT',desc='structure to specify X,Y chromaticity coordinates',type='structs']
|
||||
--
|
||||
include::../api/structs/VkXYColorEXT.txt[]
|
||||
Chromaticity coordinates x and y are as specified in CIE 15:2004
|
||||
"Calculation of chromaticity coordinates" (Section 7.3) and are limited to
|
||||
between 0 and 1 for real colors for the mastering display.
|
||||
|
||||
// refEnd VkXYColorEXT
|
||||
--
|
||||
|
||||
// refBegin VkHdrMetadataEXT structure to specify Hdr metadata
|
||||
[open,refpage='VkHdrMetadataEXT',desc='structure to specify Hdr metadata',type='structs']
|
||||
--
|
||||
include::../api/structs/VkHdrMetadataEXT.txt[]
|
||||
|
||||
* pname:sType is the type of this structure.
|
||||
@ -66,4 +70,4 @@ The validity and use of this data is outside the scope of Vulkan and thus no
|
||||
+Valid Usage+ is given.
|
||||
====
|
||||
|
||||
// refEnd VkHdrMetadataEXT
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin VkValidationFlagsEXT Specify validation checks to disable for a Vulkan instance
|
||||
[open,refpage='VkValidationFlagsEXT',desc='Specify validation checks to disable for a Vulkan instance',type='structs']
|
||||
--
|
||||
|
||||
When creating a Vulkan instance for which you wish to disable validation
|
||||
checks, add a slink:VkValidationFlagsEXT structure to the pname:pNext chain
|
||||
@ -15,8 +16,10 @@ include::../api/structs/VkValidationFlagsEXT.txt[]
|
||||
disabled.
|
||||
|
||||
include::../validity/structs/VkValidationFlagsEXT.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkValidationCheckEXT Specify validation checks to disable
|
||||
[open,refpage='VkValidationCheckEXT',desc='Specify validation checks to disable',type='enums']
|
||||
--
|
||||
|
||||
Possible values of elements of the
|
||||
slink:VkValidationFlagsEXT::pname:pDisabledValidationChecks array,
|
||||
@ -29,4 +32,4 @@ include::../api/enums/VkValidationCheckEXT.txt[]
|
||||
* ename:VK_VALIDATION_CHECK_SHADERS_EXT specifies that shader validation
|
||||
is disabled.
|
||||
|
||||
// refEnd VkValidationCheckEXT
|
||||
--
|
||||
|
@ -1,5 +1,6 @@
|
||||
|
||||
// refBegin VkPresentTimesInfoGOOGLE - The earliest time each image should be presented
|
||||
[open,refpage='VkPresentTimesInfoGOOGLE',desc='The earliest time each image should be presented',type='structs']
|
||||
--
|
||||
|
||||
When the +VK_GOOGLE_display_timing+ extension is enabled, additional fields
|
||||
can: be specified that allow an application to specify the earliest time
|
||||
@ -38,8 +39,10 @@ include::../../api/structs/VkPresentTimesInfoGOOGLE.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkPresentTimesInfoGOOGLE.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPresentTimeGOOGLE - The earliest time image should be presented
|
||||
[open,refpage='VkPresentTimeGOOGLE',desc='The earliest time image should be presented',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPresentTimeGOOGLE structure is defined as:
|
||||
|
||||
@ -61,4 +64,4 @@ include::../../api/structs/VkPresentTimeGOOGLE.txt[]
|
||||
This is useful when the application desires to provide pname:presentID,
|
||||
but doesn't need a specific pname:desiredPresentTime.
|
||||
|
||||
// refEnd VkPresentTimeGOOGLE
|
||||
--
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2016 Google Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2016-2017 Google Inc. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
== Display Timing Queries
|
||||
|
||||
@ -41,7 +42,8 @@ rate (VRR) display technology, where each refresh cycle (RC) can vary in
|
||||
length.
|
||||
This extension treats VRR displays as if they are FRR.
|
||||
|
||||
// refBegin vkGetRefreshCycleDurationGOOGLE - Obtain the RC duration of the PE's display
|
||||
[open,refpage='vkGetRefreshCycleDurationGOOGLE',desc='Obtain the RC duration of the PE\'s display',type='protos']
|
||||
--
|
||||
|
||||
To query the duration of a refresh cycle (RC) for the presentation engine's
|
||||
display, call:
|
||||
@ -54,8 +56,10 @@ include::../../api/protos/vkGetRefreshCycleDurationGOOGLE.txt[]
|
||||
sname:VkRefreshCycleDurationGOOGLE structure.
|
||||
|
||||
include::../../validity/protos/vkGetRefreshCycleDurationGOOGLE.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a display
|
||||
[open,refpage='VkRefreshCycleDurationGOOGLE',desc='Structure containing the RC duration of a display',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkRefreshCycleDurationGOOGLE structure is defined as:
|
||||
|
||||
@ -66,7 +70,7 @@ include::../../api/structs/VkRefreshCycleDurationGOOGLE.txt[]
|
||||
|
||||
include::../../validity/structs/VkRefreshCycleDurationGOOGLE.txt[]
|
||||
|
||||
// refEnd VkRefreshCycleDurationGOOGLE
|
||||
--
|
||||
|
||||
The rate at which an application renders and presents new images is known as
|
||||
the image present rate (IPR, a.k.a.
|
||||
@ -110,7 +114,8 @@ pname:actualPresentTime and pname:earliestPresentTime members of the
|
||||
slink:VkPastPresentationTimingGOOGLE structure are consistently different,
|
||||
and if pname:presentMargin is consistently large, over multiple images.
|
||||
|
||||
// refBegin vkGetPastPresentationTimingGOOGLE - Obtain timing of a previously-presented image
|
||||
[open,refpage='vkGetPastPresentationTimingGOOGLE',desc='Obtain timing of a previously-presented image',type='protos']
|
||||
--
|
||||
|
||||
The implementation will maintain a limited amount of history of timing
|
||||
information about previous presents.
|
||||
@ -152,8 +157,10 @@ ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
|
||||
that not all the available values were returned.
|
||||
|
||||
include::../../validity/protos/vkGetPastPresentationTimingGOOGLE.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPastPresentationTimingGOOGLE - Structure containing timing information about a previously-presented image
|
||||
[open,refpage='VkPastPresentationTimingGOOGLE',desc='Structure containing timing information about a previously-presented image',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPastPresentationTimingGOOGLE structure is defined as:
|
||||
|
||||
@ -204,7 +211,7 @@ pname:refreshDuration, can also adjust features until
|
||||
pname:actualPresentTime is never late and pname:presentMargin is
|
||||
satisfactory.
|
||||
|
||||
// refEnd VkPastPresentationTimingGOOGLE
|
||||
--
|
||||
|
||||
The full +VK_GOOGLE_display_timing+ extension semantics are described for
|
||||
swapchains created with ename:VK_PRESENT_MODE_FIFO_KHR.
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformCreateSurface_android,platformCreateSurface_android]]
|
||||
|
||||
=== Android Platform
|
||||
|
||||
// refBegin vkCreateAndroidSurfaceKHR - Create a slink:VkSurfaceKHR object for an Android native window
|
||||
[open,refpage='vkCreateAndroidSurfaceKHR',desc='Create a slink:VkSurfaceKHR object for an Android native window',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for an Android native window, call:
|
||||
|
||||
@ -48,8 +50,10 @@ For the system compositor, pname:currentExtent is the window size (i.e. the
|
||||
consumer's preferred size).
|
||||
|
||||
include::../../validity/protos/vkCreateAndroidSurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Android surface object
|
||||
[open,refpage='VkAndroidSurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created Android surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkAndroidSurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -68,4 +72,5 @@ include::../../api/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[display,display]]
|
||||
|
||||
@ -16,15 +17,17 @@ displays.
|
||||
|
||||
=== Display Enumeration
|
||||
|
||||
// refBegin VkDisplayKHR - Opaque handle to a display object
|
||||
[open,refpage='VkDisplayKHR',desc='Opaque handle to a display object',type='handles']
|
||||
--
|
||||
|
||||
Displays are represented by sname:VkDisplayKHR handles:
|
||||
|
||||
include::../../api/handles/VkDisplayKHR.txt[]
|
||||
|
||||
// refEnd VkDisplayKHR
|
||||
--
|
||||
|
||||
// refBegin vkGetPhysicalDeviceDisplayPropertiesKHR - Query information about the available displays
|
||||
[open,refpage='vkGetPhysicalDeviceDisplayPropertiesKHR',desc='Query information about the available displays',type='protos']
|
||||
--
|
||||
|
||||
Various functions are provided for enumerating the available display devices
|
||||
present on a Vulkan physical device.
|
||||
@ -53,8 +56,10 @@ instead of ename:VK_SUCCESS to indicate that not all the available values
|
||||
were returned.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceDisplayPropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayPropertiesKHR - Structure describing an available display device
|
||||
[open,refpage='VkDisplayPropertiesKHR',desc='Structure describing an available display device',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayPropertiesKHR structure is defined as:
|
||||
|
||||
@ -103,6 +108,7 @@ screen needs to be updated in most frames.
|
||||
====
|
||||
|
||||
include::../../validity/structs/VkDisplayPropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_EXT_direct_mode_display[]
|
||||
include::../VK_EXT_direct_mode_display/acquire_release_displays.txt[]
|
||||
@ -110,7 +116,8 @@ endif::VK_EXT_direct_mode_display[]
|
||||
|
||||
==== Display Planes
|
||||
|
||||
// refBegin vkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane properties
|
||||
[open,refpage='vkGetPhysicalDeviceDisplayPlanePropertiesKHR',desc='Query the plane properties',type='protos']
|
||||
--
|
||||
|
||||
Images are presented to individual planes on a display.
|
||||
Devices must: support at least one plane on each display.
|
||||
@ -140,8 +147,10 @@ planes for pname:physicalDevice, at most pname:pPropertyCount structures
|
||||
will be written.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayPlanePropertiesKHR - Structure describing display plane properties
|
||||
[open,refpage='VkDisplayPlanePropertiesKHR',desc='Structure describing display plane properties',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayPlanePropertiesKHR structure is defined as:
|
||||
|
||||
@ -157,8 +166,10 @@ include::../../api/structs/VkDisplayPlanePropertiesKHR.txt[]
|
||||
pname:pPropertyCount.
|
||||
|
||||
include::../../validity/structs/VkDisplayPlanePropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a plane supports
|
||||
[open,refpage='vkGetDisplayPlaneSupportedDisplaysKHR',desc='Query the list of displays a plane supports',type='protos']
|
||||
--
|
||||
|
||||
To determine which displays a plane is usable with, call
|
||||
|
||||
@ -196,6 +207,7 @@ available values were returned.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetDisplayPlaneSupportedDisplaysKHR.txt[]
|
||||
--
|
||||
|
||||
Additional properties of displays are queried using specialized query
|
||||
functions.
|
||||
@ -203,15 +215,17 @@ functions.
|
||||
|
||||
==== Display Modes
|
||||
|
||||
// refBegin VkDisplayModeKHR - Opaque handle to a display mode object
|
||||
[open,refpage='VkDisplayModeKHR',desc='Opaque handle to a display mode object',type='handles']
|
||||
--
|
||||
|
||||
Display modes are represented by sname:VkDisplayModeKHR handles:
|
||||
|
||||
include::../../api/handles/VkDisplayModeKHR.txt[]
|
||||
|
||||
// refEnd VkDisplayModeKHR
|
||||
--
|
||||
|
||||
// refBegin vkGetDisplayModePropertiesKHR - Query the set of mode properties supported by the display
|
||||
[open,refpage='vkGetDisplayModePropertiesKHR',desc='Query the set of mode properties supported by the display',type='protos']
|
||||
--
|
||||
|
||||
Each display has one or more supported modes associated with it by default.
|
||||
These built-in modes are queried by calling:
|
||||
@ -242,8 +256,10 @@ ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
|
||||
that not all the available values were returned.
|
||||
|
||||
include::../../validity/protos/vkGetDisplayModePropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayModePropertiesKHR - Structure describing display mode properties
|
||||
[open,refpage='VkDisplayModePropertiesKHR',desc='Structure describing display mode properties',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayModePropertiesKHR structure is defined as:
|
||||
|
||||
@ -256,8 +272,10 @@ include::../../api/structs/VkDisplayModePropertiesKHR.txt[]
|
||||
describing the display parameters associated with pname:displayMode.
|
||||
|
||||
include::../../validity/structs/VkDisplayModePropertiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayModeParametersKHR - Structure describing display parameters associated with a display mode
|
||||
[open,refpage='VkDisplayModeParametersKHR',desc='Structure describing display parameters associated with a display mode',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayModeParametersKHR structure is defined as:
|
||||
|
||||
@ -274,8 +292,10 @@ For example, a 60Hz display mode would report a pname:refreshRate of 60,000.
|
||||
====
|
||||
|
||||
include::../../validity/structs/VkDisplayModeParametersKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkCreateDisplayModeKHR - Create a display mode
|
||||
[open,refpage='vkCreateDisplayModeKHR',desc='Create a display mode',type='protos']
|
||||
--
|
||||
|
||||
Additional modes may: also be created by calling:
|
||||
|
||||
@ -292,8 +312,10 @@ include::../../api/protos/vkCreateDisplayModeKHR.txt[]
|
||||
* pname:pMode returns the handle of the mode created.
|
||||
|
||||
include::../../validity/protos/vkCreateDisplayModeKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly created display mode object
|
||||
[open,refpage='VkDisplayModeCreateInfoKHR',desc='Structure specifying parameters of a newly created display mode object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayModeCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -318,8 +340,10 @@ include::../../api/structs/VkDisplayModeCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkDisplayModeCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and plane combination
|
||||
[open,refpage='vkGetDisplayPlaneCapabilitiesKHR',desc='Query capabilities of a mode and plane combination',type='protos']
|
||||
--
|
||||
|
||||
Applications that wish to present directly to a display must: select which
|
||||
layer, or "plane" of the display they wish to target, and a mode to use with
|
||||
@ -343,8 +367,10 @@ include::../../api/protos/vkGetDisplayPlaneCapabilitiesKHR.txt[]
|
||||
are returned.
|
||||
|
||||
include::../../validity/protos/vkGetDisplayPlaneCapabilitiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayPlaneCapabilitiesKHR - Structure describing capabilities of a mode and plane combination
|
||||
[open,refpage='VkDisplayPlaneCapabilitiesKHR',desc='Structure describing capabilities of a mode and plane combination',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayPlaneCapabilitiesKHR structure is defined as:
|
||||
|
||||
@ -402,6 +428,7 @@ Vendors may: still fail presentation requests that specify unsupported
|
||||
combinations.
|
||||
|
||||
include::../../validity/structs/VkDisplayPlaneCapabilitiesKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_EXT_display_control[]
|
||||
include::../VK_EXT_display_control/display_control.txt[]
|
||||
@ -410,7 +437,8 @@ endif::VK_EXT_display_control[]
|
||||
[[wsi-display-surfaces]]
|
||||
=== Display Surfaces
|
||||
|
||||
// refBegin vkCreateDisplayPlaneSurfaceKHR - Create a slink:VkSurfaceKHR structure representing a display plane and mode
|
||||
[open,refpage='vkCreateDisplayPlaneSurfaceKHR',desc='Create a slink:VkSurfaceKHR structure representing a display plane and mode',type='protos']
|
||||
--
|
||||
|
||||
A complete display configuration includes a mode, one or more display planes
|
||||
and any parameters describing their behavior, and parameters describing some
|
||||
@ -433,8 +461,10 @@ include::../../api/protos/vkCreateDisplayPlaneSurfaceKHR.txt[]
|
||||
created surface is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateDisplayPlaneSurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplaySurfaceCreateInfoKHR - Structure specifying parameters of a newly created display plane surface object
|
||||
[open,refpage='VkDisplaySurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created display plane surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplaySurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -501,8 +531,10 @@ to a display surface.
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkDisplaySurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending type
|
||||
[open,refpage='VkDisplayPlaneAlphaFlagBitsKHR',desc='Alpha blending type',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkDisplaySurfaceCreateInfoKHR::pname:alphaMode,
|
||||
specifying the type of alpha blending to use on a display, are:
|
||||
@ -526,4 +558,4 @@ include::../../api/enums/VkDisplayPlaneAlphaFlagBitsKHR.txt[]
|
||||
source alpha values are assumed to be premultiplied into the source
|
||||
image's other color channels.
|
||||
|
||||
// refEnd VkDisplayPlaneAlphaFlagBitsKHR
|
||||
--
|
||||
|
@ -1,9 +1,11 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[create_shared_swapchains,create_shared_swapchains]]
|
||||
|
||||
// refBegin vkCreateSharedSwapchainsKHR - Create multiple swapchains that share presentable images
|
||||
[open,refpage='vkCreateSharedSwapchainsKHR',desc='Create multiple swapchains that share presentable images',type='protos']
|
||||
--
|
||||
|
||||
When the +VK_KHR_display_swapchain+ extension is enabled, multiple
|
||||
swapchains that share presentable images are created by calling:
|
||||
@ -38,3 +40,4 @@ After destroying one or more of the swapchains, the remaining swapchains and
|
||||
the presentable images can: continue to be used.
|
||||
|
||||
include::../../validity/protos/vkCreateSharedSwapchainsKHR.txt[]
|
||||
--
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[display_swapchain_present,display_swapchain_present]]
|
||||
|
||||
@ -8,7 +9,8 @@ can: be specified when presenting an image to a swapchain by setting
|
||||
slink:VkPresentInfoKHR::pname:pNext to point to an instance of the
|
||||
slink:VkDisplayPresentInfoKHR structure.
|
||||
|
||||
// refBegin VkDisplayPresentInfoKHR - Structure describing parameters of a queue presentation to a swapchain
|
||||
[open,refpage='VkDisplayPresentInfoKHR',desc='Structure describing parameters of a queue presentation to a swapchain',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDisplayPresentInfoKHR structure is defined as:
|
||||
|
||||
@ -63,3 +65,4 @@ presented pixels will be scaled accordingly.
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkDisplayPresentInfoKHR.txt[]
|
||||
--
|
||||
|
@ -1,7 +1,9 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
// refBegin VkPresentRegionsKHR - Structure hint of rectangular regions changed by vkQueuePresentKHR
|
||||
[open,refpage='VkPresentRegionsKHR',desc='Structure hint of rectangular regions changed by vkQueuePresentKHR',type='structs']
|
||||
--
|
||||
|
||||
When the +VK_KHR_incremental_present+ extension is enabled, additional
|
||||
fields can: be specified that allow an application to specify that only
|
||||
@ -40,8 +42,10 @@ include::../../api/structs/VkPresentRegionsKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkPresentRegionsKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPresentRegionKHR - Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImage
|
||||
[open,refpage='VkPresentRegionKHR',desc='Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImage',type='structs']
|
||||
--
|
||||
|
||||
For a given image and swapchain, the region to present is specified by the
|
||||
sname:VkPresentRegionKHR structure, which is defined as:
|
||||
@ -60,8 +64,10 @@ include::../../api/structs/VkPresentRegionKHR.txt[]
|
||||
given swapchain.
|
||||
|
||||
include::../../validity/structs/VkPresentRegionKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkRectLayerKHR - Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage
|
||||
[open,refpage='VkRectLayerKHR',desc='Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkRectLayerKHR structure is defined as:
|
||||
|
||||
@ -91,4 +97,4 @@ pixels of the image to fit the surface.
|
||||
VkRectLayerKHR specifies pixels of the swapchain's image(s), which will be
|
||||
constant for the life of the swapchain.
|
||||
|
||||
// refEnd VkRectLayerKHR
|
||||
--
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformCreateSurface_mir,platformCreateSurface_mir]]
|
||||
|
||||
=== Mir Platform
|
||||
|
||||
// refBegin vkCreateMirSurfaceKHR - Create a slink:VkSurfaceKHR object for a Mir window
|
||||
[open,refpage='vkCreateMirSurfaceKHR',desc='Create a slink:VkSurfaceKHR object for a Mir window',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for a Mir window, call:
|
||||
|
||||
@ -22,8 +24,10 @@ include::../../api/protos/vkCreateMirSurfaceKHR.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateMirSurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkMirSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Mir surface object
|
||||
[open,refpage='VkMirSurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created Mir surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkMirSurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -45,6 +49,7 @@ include::../../api/structs/VkMirSurfaceCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkMirSurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
On Mir, when a swapchain's pname:imageExtent does not match the surface's
|
||||
pname:currentExtent, the presentable images will be scaled to the surface's
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformQuerySupport_mir,platformQuerySupport_mir]]
|
||||
|
||||
=== Mir Platform
|
||||
|
||||
// refBegin vkGetPhysicalDeviceMirPresentationSupportKHR - Query physical device for presentation to Mir
|
||||
[open,refpage='vkGetPhysicalDeviceMirPresentationSupportKHR',desc='Query physical device for presentation to Mir',type='protos']
|
||||
--
|
||||
|
||||
To determine whether a queue family of a physical device supports
|
||||
presentation to the Mir compositor, call:
|
||||
@ -29,3 +31,4 @@ This platform-specific function can: be called prior to creating a surface.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceMirPresentationSupportKHR.txt[]
|
||||
--
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
If a swapchain is created with pname:presentMode set to either
|
||||
ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or
|
||||
@ -42,7 +43,8 @@ functionality for determining the timing of the presentation engine's
|
||||
refresh cycles.
|
||||
====
|
||||
|
||||
// refBegin vkGetSwapchainStatusKHR - Get a swapchain's status
|
||||
[open,refpage='vkGetSwapchainStatusKHR',desc='Get a swapchain\'s status',type='protos']
|
||||
--
|
||||
|
||||
In order to query a swapchain's status when rendering to a shared
|
||||
presentable image, call:
|
||||
@ -52,6 +54,7 @@ include::../../api/protos/vkGetSwapchainStatusKHR.txt[]
|
||||
* pname:swapchain is the swapchain to query.
|
||||
|
||||
include::../../validity/protos/vkGetSwapchainStatusKHR.txt[]
|
||||
--
|
||||
|
||||
The possible return values for fname:vkGetSwapchainStatusKHR() should: be
|
||||
interpreted as follows:
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[wsi]]
|
||||
= Window System Integration (WSI)
|
||||
@ -37,7 +38,8 @@ before using them.
|
||||
|
||||
== WSI Surface
|
||||
|
||||
// refBegin VkSurfaceKHR - Opaque handle to a surface object
|
||||
[open,refpage='VkSurfaceKHR',desc='Opaque handle to a surface object',type='handles']
|
||||
--
|
||||
|
||||
Native platform surface or window objects are abstracted by surface objects,
|
||||
which are represented by sname:VkSurfaceKHR handles:
|
||||
@ -65,7 +67,7 @@ This does not affect the loader-layer interface; layers may: wrap
|
||||
sname:VkSurfaceKHR objects.
|
||||
====
|
||||
|
||||
// refEnd VkSurfaceKHR
|
||||
--
|
||||
|
||||
ifdef::editing-notes[]
|
||||
[NOTE]
|
||||
@ -133,7 +135,8 @@ unavailable.
|
||||
A lost surface does not otherwise cause devices to be
|
||||
<<devsandqueues-lost-device,lost>>.
|
||||
|
||||
// refBegin vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object
|
||||
[open,refpage='vkDestroySurfaceKHR',desc='Destroy a VkSurfaceKHR object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a sname:VkSurfaceKHR object, call:
|
||||
|
||||
@ -163,6 +166,7 @@ closing a window, or similar behavior.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkDestroySurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_display[]
|
||||
include::../VK_KHR_display/display.txt[]
|
||||
@ -180,7 +184,8 @@ object) and additionally may: be determined in platform-specific manners
|
||||
but do not guarantee support for presentation to a particular surface
|
||||
object).
|
||||
|
||||
// refBegin vkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is supported
|
||||
[open,refpage='vkGetPhysicalDeviceSurfaceSupportKHR',desc='Query if presentation is supported',type='protos']
|
||||
--
|
||||
|
||||
To determine whether a queue family of a physical device supports
|
||||
presentation to a given surface, call:
|
||||
@ -203,6 +208,7 @@ include::../../api/protos/vkGetPhysicalDeviceSurfaceSupportKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceSupportKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_android_surface[]
|
||||
include::../VK_KHR_android_surface/platformQuerySupport_android.txt[]
|
||||
@ -243,7 +249,8 @@ endif::VK_NN_vi_surface[]
|
||||
|
||||
== Surface Queries
|
||||
|
||||
// refBegin vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities
|
||||
[open,refpage='vkGetPhysicalDeviceSurfaceCapabilitiesKHR',desc='Query surface capabilities',type='protos']
|
||||
--
|
||||
|
||||
To query the basic capabilities of a surface, needed in order to create a
|
||||
swapchain, call:
|
||||
@ -259,8 +266,10 @@ include::../../api/protos/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt[]
|
||||
returned.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSurfaceCapabilitiesKHR - Structure describing capabilities of a surface
|
||||
[open,refpage='VkSurfaceCapabilitiesKHR',desc='Structure describing capabilities of a surface',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSurfaceCapabilitiesKHR structure is defined as:
|
||||
|
||||
@ -343,10 +352,12 @@ pname:maxImageCount may: be zero.
|
||||
====
|
||||
|
||||
include::../../validity/structs/VkSurfaceCapabilitiesKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_get_surface_capabilities2[]
|
||||
|
||||
// refBegin vkGetPhysicalDeviceSurfaceCapabilities2KHR Reports capabilities of a surface on a physical device
|
||||
[open,refpage='vkGetPhysicalDeviceSurfaceCapabilities2KHR',desc='Reports capabilities of a surface on a physical device',type='protos']
|
||||
--
|
||||
|
||||
To query the basic capabilities of a surface defined by the core or
|
||||
extensions, call:
|
||||
@ -370,8 +381,10 @@ extended inputs via chained input structures, and to return extended
|
||||
information via chained output structures.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceCapabilities2KHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPhysicalDeviceSurfaceInfo2KHR Structure specifying a surface and related swapchain creation parameters
|
||||
[open,refpage='VkPhysicalDeviceSurfaceInfo2KHR',desc='Structure specifying a surface and related swapchain creation parameters',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPhysicalDeviceSurfaceInfo2KHR structure is defined as:
|
||||
|
||||
@ -386,8 +399,10 @@ arguments to flink:vkGetPhysicalDeviceSurfaceCapabilities, with pname:sType
|
||||
and pname:pNext added for extensibility.
|
||||
|
||||
include::../../validity/structs/VkPhysicalDeviceSurfaceInfo2KHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSurfaceCapabilities2KHR Structure describing capabilities of a surface
|
||||
[open,refpage='VkSurfaceCapabilities2KHR',desc='Structure describing capabilities of a surface',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSurfaceCapabilities2KHR structure is defined as:
|
||||
|
||||
@ -400,9 +415,11 @@ include::../../api/structs/VkSurfaceCapabilities2KHR.txt[]
|
||||
specified surface.
|
||||
|
||||
include::../../validity/structs/VkSurfaceCapabilities2KHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
// refBegin VkSharedPresentSurfaceCapabilitiesKHR - structure describing capabilities of a surface for shared presentation
|
||||
[open,refpage='VkSharedPresentSurfaceCapabilitiesKHR',desc='structure describing capabilities of a surface for shared presentation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSharedPresentSurfaceCapabilitiesKHR structure is defined as:
|
||||
|
||||
@ -422,7 +439,7 @@ include::../../api/structs/VkSharedPresentSurfaceCapabilitiesKHR.txt[]
|
||||
|
||||
include::../../validity/structs/VkSharedPresentSurfaceCapabilitiesKHR.txt[]
|
||||
|
||||
// refEnd VkSharedPresentSurfaceCapabilitiesKHR
|
||||
--
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
endif::VK_KHR_get_surface_capabilities2[]
|
||||
|
||||
@ -430,7 +447,8 @@ ifdef::VK_EXT_display_surface_counter[]
|
||||
include::../VK_EXT_display_surface_counter/surface_capabilities.txt[]
|
||||
endif::VK_EXT_display_surface_counter[]
|
||||
|
||||
// refBegin VkSurfaceTransformFlagBitsKHR - presentation transforms supported on a device
|
||||
[open,refpage='VkSurfaceTransformFlagBitsKHR',desc='presentation transforms supported on a device',type='enums']
|
||||
--
|
||||
|
||||
Bits which may: be set in
|
||||
slink:VkSurfaceCapabilitiesKHR::pname:supportedTransforms indicating the
|
||||
@ -465,9 +483,10 @@ include::../../api/enums/VkSurfaceTransformFlagBitsKHR.txt[]
|
||||
presentation transform is not specified, and is instead determined by
|
||||
platform-specific considerations and mechanisms outside Vulkan.
|
||||
|
||||
// refEnd VkSurfaceTransformFlagBitsKHR
|
||||
--
|
||||
|
||||
// refBegin VkCompositeAlphaFlagBitsKHR - alpha compositing modes supported on a device
|
||||
[open,refpage='VkCompositeAlphaFlagBitsKHR',desc='alpha compositing modes supported on a device',type='enums']
|
||||
--
|
||||
|
||||
The pname:supportedCompositeAlpha member is of type
|
||||
elink:VkCompositeAlphaFlagBitsKHR, which contains the following values:
|
||||
@ -497,9 +516,10 @@ These values are described as follows:
|
||||
If the application does not set the blending mode using native window
|
||||
system commands, then a platform-specific default will be used.
|
||||
|
||||
// refEnd VkCompositeAlphaFlagBitsKHR
|
||||
--
|
||||
|
||||
// refBegin vkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by surface
|
||||
[open,refpage='vkGetPhysicalDeviceSurfaceFormatsKHR',desc='Query color formats supported by surface',type='protos']
|
||||
--
|
||||
|
||||
To query the supported swapchain format-color space pairs for a surface,
|
||||
call:
|
||||
@ -532,8 +552,10 @@ instead of ename:VK_SUCCESS to indicate that not all the available values
|
||||
were returned.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSurfaceFormatKHR - Structure describing a supported swapchain format-color space pair
|
||||
[open,refpage='VkSurfaceFormatKHR',desc='Structure describing a supported swapchain format-color space pair',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSurfaceFormatKHR structure is defined as:
|
||||
|
||||
@ -545,10 +567,12 @@ include::../../api/structs/VkSurfaceFormatKHR.txt[]
|
||||
compatible with the surface.
|
||||
|
||||
include::../../validity/structs/VkSurfaceFormatKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_get_surface_capabilities2[]
|
||||
|
||||
// refBegin vkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by surface
|
||||
[open,refpage='vkGetPhysicalDeviceSurfaceFormats2KHR',desc='Query color formats supported by surface',type='protos']
|
||||
--
|
||||
|
||||
To query the supported swapchain format tuples for a surface, call:
|
||||
|
||||
@ -583,8 +607,10 @@ ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
|
||||
that not all the available values were returned.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfaceFormats2KHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSurfaceFormat2KHR - Structure describing a supported swapchain format tuple
|
||||
[open,refpage='VkSurfaceFormat2KHR',desc='Structure describing a supported swapchain format tuple',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSurfaceFormat2KHR structure is defined as:
|
||||
|
||||
@ -597,6 +623,7 @@ include::../../api/structs/VkSurfaceFormat2KHR.txt[]
|
||||
specified surface.
|
||||
|
||||
include::../../validity/structs/VkSurfaceFormat2KHR.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHR_get_surface_capabilities2[]
|
||||
|
||||
@ -608,7 +635,8 @@ the chromaticities of its primaries and a white point in CIE Lab), and a
|
||||
transfer function that is applied before storing or transmitting color data
|
||||
in the given color space.
|
||||
|
||||
// refBegin VkColorSpaceKHR - supported color space of the presentation engine
|
||||
[open,refpage='VkColorSpaceKHR',desc='supported color space of the presentation engine',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkSurfaceFormatKHR::pname:colorSpace, specifying
|
||||
supported color spaces of a presentation engine, are:
|
||||
@ -683,6 +711,11 @@ conventional colorimetry
|
||||
|
||||
[eq]#E# - corresponding electrical signal (value stored in memory)
|
||||
|
||||
// @@@ The ref page is ended earlier than in the original markup due to
|
||||
// asciidoctor issues described in internal MR 2201.
|
||||
|
||||
--
|
||||
|
||||
|
||||
=== sRGB OETF
|
||||
|
||||
@ -869,9 +902,11 @@ Vulkan naming rules.
|
||||
The older enum is still available for backwards compatibility.
|
||||
====
|
||||
|
||||
// refEnd VkColorSpaceKHR
|
||||
// @@@ originally, the VkColorSpaceKHR ref page ended here
|
||||
// --
|
||||
|
||||
// refBegin vkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation modes
|
||||
[open,refpage='vkGetPhysicalDeviceSurfacePresentModesKHR',desc='Query supported presentation modes',type='protos']
|
||||
--
|
||||
|
||||
To query the supported presentation modes for a surface, call:
|
||||
|
||||
@ -903,8 +938,10 @@ instead of ename:VK_SUCCESS to indicate that not all the available values
|
||||
were returned.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceSurfacePresentModesKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPresentModeKHR - presentation mode supported for a surface
|
||||
[open,refpage='VkPresentModeKHR',desc='presentation mode supported for a surface',type='enums']
|
||||
--
|
||||
|
||||
Possible values of elements of the
|
||||
flink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes array,
|
||||
@ -1002,7 +1039,7 @@ equivalent to the behavior of {wgl|glX}SwapBuffers with a swap interval of
|
||||
-1 (from the {WGL|GLX}_EXT_swap_control_tear extensions).
|
||||
====
|
||||
|
||||
// refEnd VkPresentModeKHR
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_swapchain[]
|
||||
ifdef::VK_KHX_device_group[]
|
||||
@ -1010,7 +1047,8 @@ ifdef::VK_KHX_device_group[]
|
||||
|
||||
== Device Group Queries
|
||||
|
||||
// refBegin vkGetDeviceGroupPresentCapabilitiesKHX Query present capabilities from other physical devices
|
||||
[open,refpage='vkGetDeviceGroupPresentCapabilitiesKHX',desc='Query present capabilities from other physical devices',type='protos']
|
||||
--
|
||||
|
||||
A logical device that represents multiple physical devices may: support
|
||||
presenting from images on more than one physical device, or combining images
|
||||
@ -1026,8 +1064,10 @@ include::../../api/protos/vkGetDeviceGroupPresentCapabilitiesKHX.txt[]
|
||||
logical device's capabilities.
|
||||
|
||||
include::../../validity/protos/vkGetDeviceGroupPresentCapabilitiesKHX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDeviceGroupPresentCapabilitiesKHX Present capabilities from other physical devices
|
||||
[open,refpage='VkDeviceGroupPresentCapabilitiesKHX',desc='Present capabilities from other physical devices',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDeviceGroupPresentCapabilitiesKHX structure is defined as:
|
||||
|
||||
@ -1053,9 +1093,11 @@ If a device group only includes a single physical device, then pname:modes
|
||||
must: equal ename:VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX.
|
||||
|
||||
include::../../validity/structs/VkDeviceGroupPresentCapabilitiesKHX.txt[]
|
||||
--
|
||||
|
||||
|
||||
// refBegin VkDeviceGroupPresentModeFlagBitsKHX Bitmask specifying supported device group present modes
|
||||
[open,refpage='VkDeviceGroupPresentModeFlagBitsKHX',desc='Bitmask specifying supported device group present modes',type='enums']
|
||||
--
|
||||
|
||||
Bits which may: be set in
|
||||
slink:VkDeviceGroupPresentCapabilitiesKHX::pname:modes to indicate which
|
||||
@ -1076,9 +1118,10 @@ include::../../api/enums/VkDeviceGroupPresentModeFlagBitsKHX.txt[]
|
||||
that multiple physical devices with a presentation engine can: each
|
||||
present their own swapchain images.
|
||||
|
||||
// refEnd VkDeviceGroupPresentModeFlagBitsKHX
|
||||
--
|
||||
|
||||
// refBegin vkGetDeviceGroupSurfacePresentModesKHX Query present capabilities for a surface
|
||||
[open,refpage='vkGetDeviceGroupSurfacePresentModesKHX',desc='Query present capabilities for a surface',type='protos']
|
||||
--
|
||||
|
||||
Some surfaces may: not be capable of using all the device group present
|
||||
modes.
|
||||
@ -1101,9 +1144,10 @@ flink:vkGetDeviceGroupPresentCapabilitiesKHX.
|
||||
|
||||
include::../../validity/protos/vkGetDeviceGroupSurfacePresentModesKHX.txt[]
|
||||
|
||||
// refEnd vkGetDeviceGroupSurfacePresentModesKHX
|
||||
--
|
||||
|
||||
// refBegin vkGetPhysicalDevicePresentRectanglesKHX Query present rectangles for a surface on a physical device
|
||||
[open,refpage='vkGetPhysicalDevicePresentRectanglesKHX',desc='Query present rectangles for a surface on a physical device',type='protos']
|
||||
--
|
||||
|
||||
When using ename:VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX,
|
||||
the application may: need to know which regions of the surface are used when
|
||||
@ -1142,7 +1186,7 @@ The rectangles returned by this command must: not overlap.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDevicePresentRectanglesKHX.txt[]
|
||||
|
||||
// refEnd vkGetPhysicalDevicePresentRectanglesKHX
|
||||
--
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
|
@ -1,9 +1,11 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
== WSI Swapchain
|
||||
|
||||
// refBegin VkSwapchainKHR - Opaque handle to a swapchain object
|
||||
[open,refpage='VkSwapchainKHR',desc='Opaque handle to a swapchain object',type='handles']
|
||||
--
|
||||
|
||||
A swapchain object (a.k.a.
|
||||
swapchain) provides the ability to present rendering results to a surface.
|
||||
@ -70,7 +72,7 @@ referencing all of the images in the swapchain at initialization time,
|
||||
rather than in its main loop.
|
||||
====
|
||||
|
||||
// refEnd VkSwapchainKHR
|
||||
--
|
||||
|
||||
How this all works is described below.
|
||||
|
||||
@ -78,7 +80,8 @@ ifdef::VK_KHR_shared_presentable_image[]
|
||||
include::../VK_KHR_shared_presentable_image/wsi.txt[]
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
|
||||
// refBegin vkCreateSwapchainKHR - Create a swapchain
|
||||
[open,refpage='vkCreateSwapchainKHR',desc='Create a swapchain',type='protos']
|
||||
--
|
||||
|
||||
To create a swapchain, call:
|
||||
|
||||
@ -95,8 +98,10 @@ include::../../api/protos/vkCreateSwapchainKHR.txt[]
|
||||
the created swapchain object will be returned.
|
||||
|
||||
include::../../validity/protos/vkCreateSwapchainKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly created swapchain object
|
||||
[open,refpage='VkSwapchainCreateInfoKHR',desc='Structure specifying parameters of a newly created swapchain object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSwapchainCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -234,23 +239,29 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
to the pname:maxImageArrayLayers member of the
|
||||
sname:VkSurfaceCapabilitiesKHR structure returned by
|
||||
fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-imageUsage-01276]]
|
||||
pname:imageUsage must: be a subset of the supported usage flags present
|
||||
in the pname:supportedUsageFlags member of the
|
||||
sname:VkSurfaceCapabilitiesKHR structure returned by
|
||||
fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
if pname:presentMode is set to ename:VK_PRESENT_MODE_IMMEDIATE_KHR,
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-presentMode-01427]]
|
||||
If pname:presentMode is ename:VK_PRESENT_MODE_IMMEDIATE_KHR,
|
||||
ename:VK_PRESENT_MODE_MAILBOX_KHR, ename:VK_PRESENT_MODE_FIFO_KHR or
|
||||
ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR
|
||||
ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR, pname:imageUsage must: be a
|
||||
subset of the supported usage flags present in the
|
||||
pname:supportedUsageFlags member of the slink:VkSurfaceCapabilitiesKHR
|
||||
structure returned by flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR
|
||||
for pname:surface
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-imageUsage-01384]]
|
||||
pname:imageUsage must: be a subset of the supported usage flags present
|
||||
in the pname:sharedPresentSupportedUsageFlags member of the
|
||||
sname:VkSharedPresentSurfaceCapabilitiesKHR structure returned by
|
||||
fname:vkGetPhysicalDeviceSurfaceCapabilities2KHR for the surface if
|
||||
pname:presentMode is set to either
|
||||
ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or
|
||||
ename:VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
|
||||
If pname:presentMode is ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
|
||||
or ename:VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR, pname:imageUsage
|
||||
must: be a subset of the supported usage flags present in the
|
||||
pname:sharedPresentSupportedUsageFlags member of the
|
||||
slink:VkSharedPresentSurfaceCapabilitiesKHR structure returned by
|
||||
flink:vkGetPhysicalDeviceSurfaceCapabilities2KHR for pname:surface
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277]]
|
||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||
@ -259,18 +270,23 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278]]
|
||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT,
|
||||
pname:queueFamilyIndexCount must: be greater than `1`
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-sharingMode-01393]]
|
||||
If pname:sharingMode is ename:VK_SHARING_MODE_CONCURRENT, each element
|
||||
of pname:pQueueFamilyIndices must: be unique and must: be less than
|
||||
pname:pQueueFamilyPropertyCount returned by
|
||||
ifndef::VK_KHR_get_physical_device_properties2[]
|
||||
flink:vkGetPhysicalDeviceQueueFamilyProperties
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393]]
|
||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT, each
|
||||
element of pname:pQueueFamilyIndices must: be unique and must: be less
|
||||
than pname:pQueueFamilyPropertyCount returned by
|
||||
flink:vkGetPhysicalDeviceQueueFamilyProperties for the
|
||||
pname:physicalDevice that was used to create pname:device
|
||||
endif::VK_KHR_get_physical_device_properties2[]
|
||||
ifdef::VK_KHR_get_physical_device_properties2[]
|
||||
either flink:vkGetPhysicalDeviceQueueFamilyProperties or
|
||||
flink:vkGetPhysicalDeviceQueueFamilyProperties2KHR
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428]]
|
||||
If pname:imageSharingMode is ename:VK_SHARING_MODE_CONCURRENT, each
|
||||
element of pname:pQueueFamilyIndices must: be unique and must: be less
|
||||
than pname:pQueueFamilyPropertyCount returned by either
|
||||
flink:vkGetPhysicalDeviceQueueFamilyProperties or
|
||||
flink:vkGetPhysicalDeviceQueueFamilyProperties2KHR for the
|
||||
pname:physicalDevice that was used to create pname:device
|
||||
endif::VK_KHR_get_physical_device_properties2[]
|
||||
for the pname:physicalDevice that was used to create pname:device
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-preTransform-01279]]
|
||||
pname:preTransform must: be one of the bits present in the
|
||||
pname:supportedTransforms member of the sname:VkSurfaceCapabilitiesKHR
|
||||
@ -285,11 +301,20 @@ endif::VK_KHR_get_physical_device_properties2[]
|
||||
pname:presentMode must: be one of the elink:VkPresentModeKHR values
|
||||
returned by fname:vkGetPhysicalDeviceSurfacePresentModesKHR for the
|
||||
surface
|
||||
ifdef::VK_KHX_device_group[]
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429]]
|
||||
If the logical device was created with
|
||||
slink:VkDeviceGroupDeviceCreateInfoKHX::pname:physicalDeviceCount equal
|
||||
to 1, pname:flags must: not contain
|
||||
ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
|
||||
endif::VK_KHX_device_group[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkSwapchainCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSwapchainCreateFlagBitsKHR Bitmask controlling swapchain creation
|
||||
[open,refpage='VkSwapchainCreateFlagBitsKHR',desc='Bitmask controlling swapchain creation',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in slink:VkSwapchainCreateInfoKHR::pname:flags,
|
||||
specifying parameters of swapchain creation, are:
|
||||
@ -303,11 +328,12 @@ ifdef::VK_KHX_device_group[]
|
||||
must: use ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX.
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
// refEnd VkSwapchainCreateFlagBitsKHR
|
||||
--
|
||||
|
||||
ifdef::VK_KHX_device_group[]
|
||||
|
||||
// refBegin VkDeviceGroupSwapchainCreateInfoKHX Structure specifying parameters of a newly created swapchain object
|
||||
[open,refpage='VkDeviceGroupSwapchainCreateInfoKHX',desc='Structure specifying parameters of a newly created swapchain object',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext list of slink:VkSwapchainCreateInfoKHR includes a
|
||||
sname:VkDeviceGroupSwapchainCreateInfoKHX structure, then that structure
|
||||
@ -326,6 +352,7 @@ If this structure is not present, pname:modes is considered to be
|
||||
ename:VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX.
|
||||
|
||||
include::../../validity/structs/VkDeviceGroupSwapchainCreateInfoKHX.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
@ -397,7 +424,8 @@ however the application must: query the surface capabilities again, because
|
||||
they may: differ on a per-physical device basis.
|
||||
====
|
||||
|
||||
// refBegin vkDestroySwapchainKHR - Destroy a swapchain object
|
||||
[open,refpage='vkDestroySwapchainKHR',desc='Destroy a swapchain object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a swapchain object call:
|
||||
|
||||
@ -437,12 +465,14 @@ endif::VK_KHR_display_swapchain[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkDestroySwapchainKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_display_swapchain[]
|
||||
include::../VK_KHR_display_swapchain/create_shared_swapchains.txt[]
|
||||
endif::VK_KHR_display_swapchain[]
|
||||
|
||||
// refBegin vkGetSwapchainImagesKHR - Obtain the array of presentable images associated with a swapchain
|
||||
[open,refpage='vkGetSwapchainImagesKHR',desc='Obtain the array of presentable images associated with a swapchain',type='protos']
|
||||
--
|
||||
|
||||
To obtain the array of presentable images associated with a swapchain, call:
|
||||
|
||||
@ -470,6 +500,7 @@ ename:VK_SUCCESS to indicate that not all the available values were
|
||||
returned.
|
||||
|
||||
include::../../validity/protos/vkGetSwapchainImagesKHR.txt[]
|
||||
--
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
@ -509,7 +540,8 @@ must: be destroyed with flink:vkDestroyImage.
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
// refBegin vkAcquireNextImageKHR - Retrieve the index of the next available presentable image
|
||||
[open,refpage='vkAcquireNextImageKHR',desc='Retrieve the index of the next available presentable image',type='protos']
|
||||
--
|
||||
|
||||
To acquire an available presentable image to use, and retrieve the index of
|
||||
that image, call:
|
||||
@ -541,6 +573,7 @@ include::../../api/protos/vkAcquireNextImageKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkAcquireNextImageKHR.txt[]
|
||||
--
|
||||
|
||||
When successful, fname:vkAcquireNextImageKHR acquires a presentable image
|
||||
that the application can: use, and sets pname:pImageIndex to the index of
|
||||
@ -777,7 +810,8 @@ parameter should: be set to ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT.
|
||||
|
||||
ifdef::VK_KHX_device_group[]
|
||||
|
||||
// refBegin vkAcquireNextImage2KHX Retrieve the index of the next available presentable image
|
||||
[open,refpage='vkAcquireNextImage2KHX',desc='Retrieve the index of the next available presentable image',type='protos']
|
||||
--
|
||||
|
||||
To acquire an available presentable image to use, and retrieve the index of
|
||||
that image, call:
|
||||
@ -791,8 +825,10 @@ include::../../api/protos/vkAcquireNextImage2KHX.txt[]
|
||||
index of the next image to use.
|
||||
|
||||
include::../../validity/protos/vkAcquireNextImage2KHX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkAcquireNextImageInfoKHX Structure specifying parameters of the acquire
|
||||
[open,refpage='VkAcquireNextImageInfoKHX',desc='Structure specifying parameters of the acquire',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkAcquireNextImageInfoKHX structure is defined as:
|
||||
|
||||
@ -840,10 +876,12 @@ succeeds, which the other physical device(s) can: wait upon.
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkAcquireNextImageInfoKHX.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
// refBegin vkQueuePresentKHR - Queue an image for presentation
|
||||
[open,refpage='vkQueuePresentKHR',desc='Queue an image for presentation',type='protos']
|
||||
--
|
||||
|
||||
After queueing all rendering commands and transitioning the image to the
|
||||
correct layout, to queue an image for presentation, call:
|
||||
@ -890,8 +928,10 @@ signal operation, and happens-before the presentation engine accesses the
|
||||
image.
|
||||
|
||||
include::../../validity/protos/vkQueuePresentKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPresentInfoKHR - Structure describing parameters of a queue presentation
|
||||
[open,refpage='VkPresentInfoKHR',desc='Structure describing parameters of a queue presentation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPresentInfoKHR structure is defined as:
|
||||
|
||||
@ -924,18 +964,27 @@ include::../../api/structs/VkPresentInfoKHR.txt[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkPresentInfoKHR-pImageIndices-01296]]
|
||||
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, and the presented
|
||||
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
layout at the time the operation is executed on a sname:VkDevice
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkPresentInfoKHR-pImageIndices-01430]]
|
||||
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, and the presented
|
||||
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
|
||||
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
|
||||
operation is executed on a sname:VkDevice
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkPresentInfoKHR.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_incremental_present[]
|
||||
include::../VK_KHR_incremental_present/wsi.txt[]
|
||||
@ -947,7 +996,8 @@ endif::VK_KHR_display_swapchain[]
|
||||
|
||||
ifdef::VK_KHX_device_group[]
|
||||
|
||||
// refBegin VkDeviceGroupPresentInfoKHX Mode and mask controlling which physical devices' images are presented
|
||||
[open,refpage='VkDeviceGroupPresentInfoKHX',desc='Mode and mask controlling which physical devices\' images are presented',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext list of slink:VkPresentInfoKHR includes a
|
||||
sname:VkDeviceGroupPresentInfoKHX structure, then that structure includes an
|
||||
@ -1039,6 +1089,7 @@ considered to be ename:VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX.
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkDeviceGroupPresentInfoKHX.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformCreateSurface_wayland,platformCreateSurface_wayland]]
|
||||
|
||||
=== Wayland Platform
|
||||
|
||||
// refBegin vkCreateWaylandSurfaceKHR - Create a slink:VkSurfaceKHR object for a Wayland window
|
||||
[open,refpage='vkCreateWaylandSurfaceKHR',desc='Create a slink:VkSurfaceKHR object for a Wayland window',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for a Wayland surface, call:
|
||||
|
||||
@ -22,8 +24,10 @@ include::../../api/protos/vkCreateWaylandSurfaceKHR.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateWaylandSurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Wayland surface object
|
||||
[open,refpage='VkWaylandSurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created Wayland surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkWaylandSurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -44,6 +48,7 @@ include::../../api/structs/VkWaylandSurfaceCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkWaylandSurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
On Wayland, pname:currentExtent is undefined [eq]#(0xFFFFFFFF, 0xFFFFFFFF)#.
|
||||
Whatever the application sets a swapchain's pname:imageExtent to will be the
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformQuerySupport_walyand,platformQuerySupport_walyand]]
|
||||
|
||||
=== Wayland Platform
|
||||
|
||||
// refBegin vkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device for presentation to Wayland
|
||||
[open,refpage='vkGetPhysicalDeviceWaylandPresentationSupportKHR',desc='Query physical device for presentation to Wayland',type='protos']
|
||||
--
|
||||
|
||||
To determine whether a queue family of a physical device supports
|
||||
presentation to a Wayland compositor, call:
|
||||
@ -29,3 +31,4 @@ This platform-specific function can: be called prior to creating a surface.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceWaylandPresentationSupportKHR.txt[]
|
||||
--
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformCreateSurface_win32,platformCreateSurface_win32]]
|
||||
|
||||
=== Win32 Platform
|
||||
|
||||
// refBegin vkCreateWin32SurfaceKHR - Create a slink:VkSurfaceKHR object for an Win32 native window
|
||||
[open,refpage='vkCreateWin32SurfaceKHR',desc='Create a slink:VkSurfaceKHR object for an Win32 native window',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for a Win32 window, call:
|
||||
|
||||
@ -22,8 +24,10 @@ include::../../api/protos/vkCreateWin32SurfaceKHR.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateWin32SurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly created Win32 surface object
|
||||
[open,refpage='VkWin32SurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created Win32 surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkWin32SurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -44,6 +48,7 @@ include::../../api/structs/VkWin32SurfaceCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkWin32SurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
With Win32, pname:minImageExtent, pname:maxImageExtent, and
|
||||
pname:currentExtent are the window size.
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformQuerySupport_win32,platformQuerySupport_win32]]
|
||||
|
||||
=== Win32 Platform
|
||||
|
||||
// refBegin vkGetPhysicalDeviceWin32PresentationSupportKHR - query queue family support for presentation on a Win32 display
|
||||
[open,refpage='vkGetPhysicalDeviceWin32PresentationSupportKHR',desc='query queue family support for presentation on a Win32 display',type='protos']
|
||||
--
|
||||
|
||||
To determine whether a queue family of a physical device supports
|
||||
presentation to the Microsoft Windows desktop, call:
|
||||
@ -27,3 +29,4 @@ This platform-specific function can: be called prior to creating a surface.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceWin32PresentationSupportKHR.txt[]
|
||||
--
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformCreateSurface_xcb,platformCreateSurface_xcb]]
|
||||
|
||||
=== XCB Platform
|
||||
|
||||
// refBegin vkCreateXcbSurfaceKHR - Create a slink:VkSurfaceKHR object for a X11 window, using the XCB client-side library
|
||||
[open,refpage='vkCreateXcbSurfaceKHR',desc='Create a slink:VkSurfaceKHR object for a X11 window, using the XCB client-side library',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for an X11 window, using the XCB
|
||||
client-side library, call:
|
||||
@ -23,8 +25,10 @@ include::../../api/protos/vkCreateXcbSurfaceKHR.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateXcbSurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xcb surface object
|
||||
[open,refpage='VkXcbSurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created Xcb surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkXcbSurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -47,6 +51,7 @@ include::../../api/structs/VkXcbSurfaceCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkXcbSurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
With Xcb, pname:minImageExtent, pname:maxImageExtent, and
|
||||
pname:currentExtent are the window size.
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformQuerySupport_xcb,platformQuerySupport_xcb]]
|
||||
|
||||
=== XCB Platform
|
||||
|
||||
// refBegin vkGetPhysicalDeviceXcbPresentationSupportKHR - Query physical device for presentation to X11 server using XCB
|
||||
[open,refpage='vkGetPhysicalDeviceXcbPresentationSupportKHR',desc='Query physical device for presentation to X11 server using XCB',type='protos']
|
||||
--
|
||||
|
||||
To determine whether a queue family of a physical device supports
|
||||
presentation to an X11 server, using the XCB client-side library, call:
|
||||
@ -30,3 +32,4 @@ This platform-specific function can: be called prior to creating a surface.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceXcbPresentationSupportKHR.txt[]
|
||||
--
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformCreateSurface_xlib,platformCreateSurface_xlib]]
|
||||
|
||||
=== Xlib Platform
|
||||
|
||||
// refBegin vkCreateXlibSurfaceKHR - Create a slink:VkSurfaceKHR object for an X11 window, using the Xlib client-side library
|
||||
[open,refpage='vkCreateXlibSurfaceKHR',desc='Create a slink:VkSurfaceKHR object for an X11 window, using the Xlib client-side library',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for an X11 window, using the Xlib
|
||||
client-side library, call:
|
||||
@ -23,8 +25,10 @@ include::../../api/protos/vkCreateXlibSurfaceKHR.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateXlibSurfaceKHR.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly created Xlib surface object
|
||||
[open,refpage='VkXlibSurfaceCreateInfoKHR',desc='Structure specifying parameters of a newly created Xlib surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkXlibSurfaceCreateInfoKHR structure is defined as:
|
||||
|
||||
@ -46,6 +50,7 @@ include::../../api/structs/VkXlibSurfaceCreateInfoKHR.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkXlibSurfaceCreateInfoKHR.txt[]
|
||||
--
|
||||
|
||||
With Xlib, pname:minImageExtent, pname:maxImageExtent, and
|
||||
pname:currentExtent are the window size.
|
||||
|
@ -1,11 +1,13 @@
|
||||
// Copyright (c) 2014-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[platformQuerySupport_xlib,platformQuerySupport_xlib]]
|
||||
|
||||
=== Xlib Platform
|
||||
|
||||
// refBegin vkGetPhysicalDeviceXlibPresentationSupportKHR - Query physical device for presentation to X11 server using Xlib
|
||||
[open,refpage='vkGetPhysicalDeviceXlibPresentationSupportKHR',desc='Query physical device for presentation to X11 server using Xlib',type='protos']
|
||||
--
|
||||
|
||||
To determine whether a queue family of a physical device supports
|
||||
presentation to an X11 server, using the Xlib client-side library, call:
|
||||
@ -29,3 +31,4 @@ This platform-specific function can: be called prior to creating a surface.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceXlibPresentationSupportKHR.txt[]
|
||||
--
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
=== iOS Platform
|
||||
|
||||
// refBegin vkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIView
|
||||
[open,refpage='vkCreateIOSSurfaceMVK',desc='Create a VkSurfaceKHR object for an iOS UIView',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for an iOS code:UIView, call:
|
||||
|
||||
@ -19,8 +20,10 @@ include::../../api/protos/vkCreateIOSSurfaceMVK.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateIOSSurfaceMVK.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created iOS surface object
|
||||
[open,refpage='VkIOSSurfaceCreateInfoMVK',desc='Structure specifying parameters of a newly created iOS surface object',type='structs']
|
||||
--
|
||||
|
||||
The slink:VkIOSSurfaceCreateInfoMVK structure is defined as:
|
||||
|
||||
@ -42,4 +45,5 @@ include::../../api/structs/VkIOSSurfaceCreateInfoMVK.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkIOSSurfaceCreateInfoMVK.txt[]
|
||||
--
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
=== macOS Platform
|
||||
|
||||
// refBegin vkCreateMacOSSurfaceMVK - Create a VkSurfaceKHR object for a macOS NSView
|
||||
[open,refpage='vkCreateMacOSSurfaceMVK',desc='Create a VkSurfaceKHR object for a macOS NSView',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for a macOS code:NSView, call:
|
||||
|
||||
@ -19,8 +20,10 @@ include::../../api/protos/vkCreateMacOSSurfaceMVK.txt[]
|
||||
created surface object is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateMacOSSurfaceMVK.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly created macOS surface object
|
||||
[open,refpage='VkMacOSSurfaceCreateInfoMVK',desc='Structure specifying parameters of a newly created macOS surface object',type='structs']
|
||||
--
|
||||
|
||||
The slink:VkMacOSSurfaceCreateInfoMVK structure is defined as:
|
||||
|
||||
@ -42,4 +45,5 @@ include::../../api/structs/VkMacOSSurfaceCreateInfoMVK.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkMacOSSurfaceCreateInfoMVK.txt[]
|
||||
--
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
=== VI Platform
|
||||
|
||||
// refBegin vkCreateViSurfaceNN - Create a slink:VkSurfaceKHR object for a VI layer
|
||||
[open,refpage='vkCreateViSurfaceNN',desc='Create a slink:VkSurfaceKHR object for a VI layer',type='protos']
|
||||
--
|
||||
|
||||
To create a sname:VkSurfaceKHR object for an code:nn::code:vi::code:Layer,
|
||||
query the layer's native handle using
|
||||
@ -32,8 +33,10 @@ pname:imageExtent (e.g., by matching the the result of a call to
|
||||
code:nn::code:vi::code:GetDisplayResolution).
|
||||
|
||||
include::../../validity/protos/vkCreateViSurfaceNN.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly created VI surface object
|
||||
[open,refpage='VkViSurfaceCreateInfoNN',desc='Structure specifying parameters of a newly created VI surface object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkViSurfaceCreateInfoNN structure is defined as:
|
||||
|
||||
@ -52,4 +55,5 @@ include::../../api/structs/VkViSurfaceCreateInfoNN.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkViSurfaceCreateInfoNN.txt[]
|
||||
--
|
||||
|
||||
|
@ -35,7 +35,8 @@ automatically synchronized against the command execution.
|
||||
|
||||
== Features and Limitations
|
||||
|
||||
// refBegin vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX Returns device-generated commands related properties of a physical device
|
||||
[open,refpage='vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX',desc='Returns device-generated commands related properties of a physical device',type='protos']
|
||||
--
|
||||
|
||||
To query the support of related features and limitations, call:
|
||||
|
||||
@ -51,8 +52,10 @@ include::../../api/protos/vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX.txt[
|
||||
with returned information.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDeviceGeneratedCommandsFeaturesNVX Structure specifying physical device support
|
||||
[open,refpage='VkDeviceGeneratedCommandsFeaturesNVX',desc='Structure specifying physical device support',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDeviceGeneratedCommandsFeaturesNVX structure is defined as:
|
||||
|
||||
@ -67,8 +70,10 @@ include::../../api/structs/VkDeviceGeneratedCommandsFeaturesNVX.txt[]
|
||||
ename:VK_PIPELINE_BIND_POINT_COMPUTE.
|
||||
|
||||
include::../../validity/structs/VkDeviceGeneratedCommandsFeaturesNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDeviceGeneratedCommandsLimitsNVX Structure specifying physical device limits
|
||||
[open,refpage='VkDeviceGeneratedCommandsLimitsNVX',desc='Structure specifying physical device limits',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDeviceGeneratedCommandsLimitsNVX structure is defined as:
|
||||
|
||||
@ -88,6 +93,7 @@ include::../../api/structs/VkDeviceGeneratedCommandsLimitsNVX.txt[]
|
||||
memory addresses optionally used in fname:vkCmdProcessCommandsNVX.
|
||||
|
||||
include::../../validity/structs/VkDeviceGeneratedCommandsLimitsNVX.txt[]
|
||||
--
|
||||
|
||||
include::objecttable.txt[]
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
== Indirect Commands Generation
|
||||
|
||||
// refBegin vkCmdReserveSpaceForCommandsNVX Perform a reservation of command buffer space
|
||||
[open,refpage='vkCmdReserveSpaceForCommandsNVX',desc='Perform a reservation of command buffer space',type='protos']
|
||||
--
|
||||
|
||||
Command space for generated commands recorded into a secondary command
|
||||
buffer must: be reserved by calling:
|
||||
@ -25,8 +26,10 @@ include::../../api/protos/vkCmdReserveSpaceForCommandsNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkCmdReserveSpaceForCommandsNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCmdReserveSpaceForCommandsInfoNVX Structure specifying parameters for the reservation of command buffer space
|
||||
[open,refpage='VkCmdReserveSpaceForCommandsInfoNVX',desc='Structure specifying parameters for the reservation of command buffer space',type='structs']
|
||||
--
|
||||
|
||||
include::../../api/structs/VkCmdReserveSpaceForCommandsInfoNVX.txt[]
|
||||
|
||||
@ -43,6 +46,7 @@ include::../../api/structs/VkCmdReserveSpaceForCommandsInfoNVX.txt[]
|
||||
command buffer space will be reserved.
|
||||
|
||||
include::../../validity/structs/VkCmdReserveSpaceForCommandsInfoNVX.txt[]
|
||||
--
|
||||
|
||||
The generated commands will behave as if they were recorded within the call
|
||||
to fname:vkCmdReserveSpaceForCommandsNVX, that means they can inherit state
|
||||
@ -52,7 +56,8 @@ not affect commands after the reserved space.
|
||||
Treat the state that can: be affected by the provided
|
||||
sname:VkIndirectCommandsLayoutNVX as undefined.
|
||||
|
||||
// refBegin vkCmdProcessCommandsNVX Performs the generation of commands on the device
|
||||
[open,refpage='vkCmdProcessCommandsNVX',desc='Performs the generation of commands on the device',type='protos']
|
||||
--
|
||||
|
||||
The actual generation on the device is handled with:
|
||||
|
||||
@ -65,8 +70,10 @@ include::../../api/protos/vkCmdProcessCommandsNVX.txt[]
|
||||
affecting the processing of commands.
|
||||
|
||||
include::../../validity/protos/vkCmdProcessCommandsNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCmdProcessCommandsInfoNVX Structure specifying parameters for the generation of commands
|
||||
[open,refpage='VkCmdProcessCommandsInfoNVX',desc='Structure specifying parameters for the generation of commands',type='structs']
|
||||
--
|
||||
|
||||
include::../../api/structs/VkCmdProcessCommandsInfoNVX.txt[]
|
||||
|
||||
@ -148,6 +155,7 @@ include::../../api/structs/VkCmdProcessCommandsInfoNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkCmdProcessCommandsInfoNVX.txt[]
|
||||
--
|
||||
|
||||
Referencing the functions defined in <<indirectmdslayout>>,
|
||||
fname:vkCmdProcessCommandsNVX behaves as:
|
||||
|
@ -1,14 +1,15 @@
|
||||
[[indirectmdslayout]]
|
||||
== Indirect Commands Layout
|
||||
|
||||
// refBegin VkIndirectCommandsLayoutNVX Opaque handle to an indirect commands layout object
|
||||
[open,refpage='VkIndirectCommandsLayoutNVX',desc='Opaque handle to an indirect commands layout object',type='handles']
|
||||
--
|
||||
|
||||
The device-side command generation happens through an iterative processing
|
||||
of an atomic sequence comprised of command tokens, which are represented by:
|
||||
|
||||
include::../../api/handles/VkIndirectCommandsLayoutNVX.txt[]
|
||||
|
||||
// refEnd VkIndirectCommandsLayoutNVX
|
||||
--
|
||||
|
||||
|
||||
=== Tokenized Command Processing
|
||||
@ -46,7 +47,8 @@ however some functional arguments, for example binding sets, are specified
|
||||
at layout creation time.
|
||||
The input size is different for each token.
|
||||
|
||||
// refBegin VkIndirectCommandsTokenTypeNVX Enum specifying
|
||||
[open,refpage='VkIndirectCommandsTokenTypeNVX',desc='Enum specifying',type='enums']
|
||||
--
|
||||
|
||||
Possible values of those elements of the
|
||||
slink:VkIndirectCommandsLayoutCreateInfoNVX::pname:pTokens array which
|
||||
@ -69,9 +71,10 @@ include::../../api/enums/VkIndirectCommandsTokenTypeNVX.txt[]
|
||||
|ename:VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX | fname:vkCmdDispatchIndirect
|
||||
|====
|
||||
|
||||
// refEnd VkIndirectCommandsTokenTypeNVX
|
||||
--
|
||||
|
||||
// refBegin VkIndirectCommandsLayoutTokenNVX Struct specifying the details of an indirect command layout token
|
||||
[open,refpage='VkIndirectCommandsLayoutTokenNVX',desc='Struct specifying the details of an indirect command layout token',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkIndirectCommandsLayoutTokenNVX structure specifies details to
|
||||
the function arguments that need to be known at layout creation time:
|
||||
@ -99,8 +102,10 @@ include::../../api/structs/VkIndirectCommandsLayoutTokenNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkIndirectCommandsLayoutTokenNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkIndirectCommandsTokenNVX Structure specifying parameters for the reservation of command buffer space
|
||||
[open,refpage='VkIndirectCommandsTokenNVX',desc='Structure specifying parameters for the reservation of command buffer space',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkIndirectCommandsTokenNVX structure specifies the input data for
|
||||
a token at processing time.
|
||||
@ -125,6 +130,7 @@ include::../../api/structs/VkIndirectCommandsTokenNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkIndirectCommandsTokenNVX.txt[]
|
||||
--
|
||||
|
||||
|
||||
The following code provides detailed information on how an individual
|
||||
@ -218,6 +224,8 @@ void cmdProcessSequence(cmd, objectTable, indirectCommandsLayout, pIndirectComma
|
||||
|
||||
=== Creation and Deletion
|
||||
|
||||
[open,refpage='vkCreateIndirectCommandsLayoutNVX',desc='Create an indirect command layout object',type='protos']
|
||||
--
|
||||
Indirect command layouts are created by:
|
||||
|
||||
include::../../api/protos/vkCreateIndirectCommandsLayoutNVX.txt[]
|
||||
@ -232,8 +240,10 @@ include::../../api/protos/vkCreateIndirectCommandsLayoutNVX.txt[]
|
||||
in which the resulting object table is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateIndirectCommandsLayoutNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkIndirectCommandsLayoutCreateInfoNVX Structure specifying the parameters of a newly created indirect commands layout object
|
||||
[open,refpage='VkIndirectCommandsLayoutCreateInfoNVX',desc='Structure specifying the parameters of a newly created indirect commands layout object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkIndirectCommandsLayoutCreateInfoNVX structure is defined as:
|
||||
|
||||
@ -299,8 +309,10 @@ void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectC
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkIndirectCommandsLayoutCreateInfoNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkIndirectCommandsLayoutUsageFlagBitsNVX Bitmask specifying allowed usage of a indirect commands layout
|
||||
[open,refpage='VkIndirectCommandsLayoutUsageFlagBitsNVX',desc='Bitmask specifying allowed usage of a indirect commands layout',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in
|
||||
slink:VkIndirectCommandsLayoutCreateInfoNVX::pname:flags, specifying usage
|
||||
@ -323,9 +335,10 @@ include::../../api/enums/VkIndirectCommandsLayoutUsageFlagBitsNVX.txt[]
|
||||
indexed from 0..sequencesUsed but a user provided sname:VkBuffer
|
||||
encoding the index is provided.
|
||||
|
||||
// refEnd VkIndirectCommandsLayoutUsageFlagBitsNVX
|
||||
--
|
||||
|
||||
// refBegin vkDestroyIndirectCommandsLayoutNVX Destroy a object table
|
||||
[open,refpage='vkDestroyIndirectCommandsLayoutNVX',desc='Destroy a object table',type='protos']
|
||||
--
|
||||
|
||||
Indirect command layouts are destroyed by:
|
||||
|
||||
@ -350,3 +363,4 @@ include::../../api/protos/vkDestroyIndirectCommandsLayoutNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkDestroyIndirectCommandsLayoutNVX.txt[]
|
||||
--
|
||||
|
@ -1,12 +1,13 @@
|
||||
== Binding Object Table
|
||||
|
||||
// refBegin VkObjectTableNVX Opaque handle to an object table
|
||||
[open,refpage='VkObjectTableNVX',desc='Opaque handle to an object table',type='handles']
|
||||
--
|
||||
|
||||
The device-side bindings are registered inside a table:
|
||||
|
||||
include::../../api/handles/VkObjectTableNVX.txt[]
|
||||
|
||||
// refEnd VkObjectTableNVX
|
||||
--
|
||||
|
||||
This is required as the CPU-side object pointers, for example when binding a
|
||||
sname:VkPipeline or sname:VkDescriptorSet, cannot be used by the device.
|
||||
@ -23,6 +24,9 @@ maximum.
|
||||
|
||||
=== Table Creation
|
||||
|
||||
[open,refpage='vkCreateObjectTableNVX',desc='Create an object table',type='protos']
|
||||
--
|
||||
|
||||
To create object tables, call:
|
||||
|
||||
include::../../api/protos/vkCreateObjectTableNVX.txt[]
|
||||
@ -37,8 +41,10 @@ include::../../api/protos/vkCreateObjectTableNVX.txt[]
|
||||
the resulting object table is returned.
|
||||
|
||||
include::../../validity/protos/vkCreateObjectTableNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkObjectTableCreateInfoNVX Structure specifying the parameters of a newly created object table
|
||||
[open,refpage='VkObjectTableCreateInfoNVX',desc='Structure specifying the parameters of a newly created object table',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkObjectTableCreateInfoNVX structure is defined as:
|
||||
|
||||
@ -102,8 +108,10 @@ include::../../api/structs/VkObjectTableCreateInfoNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTableCreateInfoNVX.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkObjectEntryTypeNVX Enum specifying object table entry type
|
||||
[open,refpage='VkObjectEntryTypeNVX',desc='Enum specifying object table entry type',type='enums']
|
||||
--
|
||||
|
||||
Possible values of elements of the
|
||||
slink:VkObjectTableCreateInfoNVX::pname:pObjectEntryTypes array, specifying
|
||||
@ -126,9 +134,10 @@ include::../../api/enums/VkObjectEntryTypeNVX.txt[]
|
||||
* ename:VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX indicates the resource entry
|
||||
is registered via sname:VkObjectTablePushConstantEntryNVX.
|
||||
|
||||
// refEnd VkObjectEntryTypeNVX
|
||||
--
|
||||
|
||||
// refBegin VkObjectEntryUsageFlagBitsNVX Bitmask specifying allowed usage of an object entry
|
||||
[open,refpage='VkObjectEntryUsageFlagBitsNVX',desc='Bitmask specifying allowed usage of an object entry',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in elements of the
|
||||
slink:VkObjectTableCreateInfoNVX::pname:pObjectEntryUsageFlags array,
|
||||
@ -141,9 +150,10 @@ include::../../api/enums/VkObjectEntryUsageFlagBitsNVX.txt[]
|
||||
* ename:VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX indicates that the resource
|
||||
is bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE
|
||||
|
||||
// refEnd VkObjectEntryUsageFlagBitsNVX
|
||||
--
|
||||
|
||||
// refBegin vkDestroyObjectTableNVX Destroy a object table
|
||||
[open,refpage='vkDestroyObjectTableNVX',desc='Destroy a object table',type='protos']
|
||||
--
|
||||
|
||||
To destroy an object table, call:
|
||||
|
||||
@ -168,10 +178,14 @@ include::../../api/protos/vkDestroyObjectTableNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkDestroyObjectTableNVX.txt[]
|
||||
--
|
||||
|
||||
|
||||
=== Registering Objects
|
||||
|
||||
[open,refpage='vkRegisterObjectsNVX',desc='Register resource bindings in an object table',type='protos']
|
||||
--
|
||||
|
||||
Resource bindings of Vulkan objects are registered at an arbitrary
|
||||
ftext:uint32_t index within an object table.
|
||||
As long as the object table references such objects, they must: not be
|
||||
@ -207,7 +221,10 @@ include::../../api/protos/vkRegisterObjectsNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkRegisterObjectsNVX.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkObjectTableEntryNVX',desc='Common parameters of an object table resource entry',type='structs']
|
||||
--
|
||||
Common to all resource entries are:
|
||||
|
||||
include::../../api/structs/VkObjectTableEntryNVX.txt[]
|
||||
@ -227,7 +244,10 @@ include::../../api/structs/VkObjectTableEntryNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTableEntryNVX.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkObjectTablePipelineEntryNVX',desc='Parameters of an object table pipeline entry',type='structs']
|
||||
--
|
||||
include::../../api/structs/VkObjectTablePipelineEntryNVX.txt[]
|
||||
|
||||
* pname:pipeline specifies the sname:VkPipeline that this resource entry
|
||||
@ -240,6 +260,10 @@ include::../../api/structs/VkObjectTablePipelineEntryNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTablePipelineEntryNVX.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkObjectTableDescriptorSetEntryNVX',desc='Parameters of an object table descriptor set entry',type='structs']
|
||||
--
|
||||
|
||||
include::../../api/structs/VkObjectTableDescriptorSetEntryNVX.txt[]
|
||||
|
||||
@ -255,6 +279,10 @@ include::../../api/structs/VkObjectTableDescriptorSetEntryNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTableDescriptorSetEntryNVX.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkObjectTableVertexBufferEntryNVX',desc='Parameters of an object table vertex buffer entry',type='structs']
|
||||
--
|
||||
|
||||
include::../../api/structs/VkObjectTableVertexBufferEntryNVX.txt[]
|
||||
|
||||
@ -268,6 +296,10 @@ include::../../api/structs/VkObjectTableVertexBufferEntryNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTableVertexBufferEntryNVX.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkObjectTableIndexBufferEntryNVX',desc='Parameters of an object table index buffer entry',type='structs']
|
||||
--
|
||||
|
||||
include::../../api/structs/VkObjectTableIndexBufferEntryNVX.txt[]
|
||||
|
||||
@ -283,6 +315,10 @@ include::../../api/structs/VkObjectTableIndexBufferEntryNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTableIndexBufferEntryNVX.txt[]
|
||||
--
|
||||
|
||||
[open,refpage='VkObjectTablePushConstantEntryNVX',desc='Parameters of an object table push constant entry',type='structs']
|
||||
--
|
||||
|
||||
include::../../api/structs/VkObjectTablePushConstantEntryNVX.txt[]
|
||||
|
||||
@ -298,8 +334,12 @@ include::../../api/structs/VkObjectTablePushConstantEntryNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkObjectTablePushConstantEntryNVX.txt[]
|
||||
--
|
||||
|
||||
Using the following command to unregister resources from an object table:
|
||||
[open,refpage='vkUnregisterObjectsNVX',desc='Unregister resource bindings in an object table',type='protos']
|
||||
--
|
||||
|
||||
Use the following command to unregister resources from an object table:
|
||||
|
||||
include::../../api/protos/vkUnregisterObjectsNVX.txt[]
|
||||
|
||||
@ -326,3 +366,4 @@ include::../../api/protos/vkUnregisterObjectsNVX.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkUnregisterObjectsNVX.txt[]
|
||||
--
|
||||
|
@ -7,7 +7,8 @@ follows.
|
||||
|
||||
:: [eq]#w~c~' = x~coeff~ x~c~ {plus} y~coeff~ y~c~ {plus} w~c~#
|
||||
|
||||
// refBegin VkPipelineViewportWScalingStateCreateInfoNV Structure specifying parameters of a newly created pipeline viewport W scaling state
|
||||
[open,refpage='VkPipelineViewportWScalingStateCreateInfoNV',desc='Structure specifying parameters of a newly created pipeline viewport W scaling state',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPipelineViewportWScalingStateCreateInfoNV structure is defined
|
||||
as:
|
||||
@ -50,13 +51,15 @@ include::../../api/structs/VkPipelineViewportWScalingStateCreateInfoNV.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkPipelineViewportWScalingStateCreateInfoNV.txt[]
|
||||
--
|
||||
|
||||
The sname:VkPipelineViewportWScalingStateCreateInfoNV state is set by adding
|
||||
an instance of this structure to the pname:pNext chain of an instance of the
|
||||
sname:VkPipelineViewportStateCreateInfo structure and setting the graphics
|
||||
pipeline state with flink:vkCreateGraphicsPipelines.
|
||||
|
||||
// refBegin vkCmdSetViewportWScalingNV Set the viewport W scaling on a command buffer
|
||||
[open,refpage='vkCmdSetViewportWScalingNV',desc='Set the viewport W scaling on a command buffer',type='protos']
|
||||
--
|
||||
|
||||
If the bound pipeline state object was not created with the
|
||||
ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, viewport
|
||||
@ -100,12 +103,14 @@ pname:viewportCount)#.
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkCmdSetViewportWScalingNV.txt[]
|
||||
--
|
||||
|
||||
Both slink:VkPipelineViewportWScalingStateCreateInfoNV and
|
||||
flink:vkCmdSetViewportWScalingNV use sname:VkViewportWScalingNV to set the
|
||||
viewport transformation parameters.
|
||||
|
||||
// refBegin VkViewportWScalingNV Structure specifying a viewport
|
||||
[open,refpage='VkViewportWScalingNV',desc='Structure specifying a viewport',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkViewportWScalingNV structure is defined as:
|
||||
|
||||
@ -115,3 +120,4 @@ include::../../api/structs/VkViewportWScalingNV.txt[]
|
||||
and y respectively.
|
||||
|
||||
include::../../validity/structs/VkViewportWScalingNV.txt[]
|
||||
--
|
||||
|
@ -3,6 +3,8 @@ instance, add a slink:VkExportMemoryAllocateInfoNV structure to the
|
||||
pname:pNext chain of the slink:VkMemoryAllocateInfo structure, specifying
|
||||
the handle types that may: be exported.
|
||||
|
||||
[open,refpage='VkExportMemoryAllocateInfoNV',desc='Specify memory handle types that may be exported',type='structs']
|
||||
--
|
||||
The slink:VkExportMemoryAllocateInfoNV structure is defined as:
|
||||
|
||||
include::../../api/structs/VkExportMemoryAllocateInfoNV.txt[]
|
||||
@ -17,3 +19,4 @@ include::../../api/structs/VkExportMemoryAllocateInfoNV.txt[]
|
||||
flink:vkGetPhysicalDeviceExternalImageFormatPropertiesNV.
|
||||
|
||||
include::../../validity/structs/VkExportMemoryAllocateInfoNV.txt[]
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin vkGetPhysicalDeviceExternalImageFormatPropertiesNV determine image capabilities compatible with external memory handle types
|
||||
[open,refpage='vkGetPhysicalDeviceExternalImageFormatPropertiesNV',desc='determine image capabilities compatible with external memory handle types',type='protos']
|
||||
--
|
||||
|
||||
To determine the image capabilities compatible with an external memory
|
||||
handle type, call:
|
||||
@ -31,8 +32,10 @@ Otherwise, they are filled in as described for
|
||||
slink:VkExternalImageFormatPropertiesNV.
|
||||
|
||||
include::../../validity/protos/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkExternalImageFormatPropertiesNV - Structure specifying external image format properties
|
||||
[open,refpage='VkExternalImageFormatPropertiesNV',desc='Structure specifying external image format properties',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkExternalImageFormatPropertiesNV structure is defined as:
|
||||
|
||||
@ -63,8 +66,10 @@ include::../../api/structs/VkExternalImageFormatPropertiesNV.txt[]
|
||||
flink:vkGetPhysicalDeviceExternalImageFormatPropertiesNV::pname:externalHandleType
|
||||
|
||||
include::../../validity/structs/VkExternalImageFormatPropertiesNV.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory features
|
||||
[open,refpage='VkExternalMemoryFeatureFlagBitsNV',desc='Bitmask specifying external memory features',type='enums',xrefs='vkGetPhysicalDeviceExternalImageFormatPropertiesNV VkExternalImageFormatPropertiesNV']
|
||||
--
|
||||
|
||||
Bits which can: be set in
|
||||
slink:VkExternalMemoryFeatureFlagBitsNV::pname:externalMemoryFeatures,
|
||||
@ -80,4 +85,4 @@ include::../../api/enums/VkExternalMemoryFeatureFlagBitsNV.txt[]
|
||||
* ename:VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV indicates that the
|
||||
implementation supports importing handles of the specified type.
|
||||
|
||||
// refEnd VkExternalMemoryFeatureFlagBitsNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV VkExternalImageFormatPropertiesNV
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin vkGetMemoryWin32HandleNV - retrieve Win32 handle to a device memory object
|
||||
[open,refpage='vkGetMemoryWin32HandleNV',desc='retrieve Win32 handle to a device memory object',type='protos']
|
||||
--
|
||||
|
||||
To retrieve the handle corresponding to a device memory object created with
|
||||
slink:VkExportMemoryAllocateInfoNV::pname:handleTypes set to include
|
||||
@ -24,3 +25,4 @@ include::../../api/protos/vkGetMemoryWin32HandleNV.txt[]
|
||||
****
|
||||
|
||||
include::../../validity/protos/vkGetMemoryWin32HandleNV.txt[]
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin VkExportMemoryWin32HandleInfoNV - specify security attributes and access rights for Win32 memory handles
|
||||
[open,refpage='VkExportMemoryWin32HandleInfoNV',desc='specify security attributes and access rights for Win32 memory handles',type='structs']
|
||||
--
|
||||
|
||||
When slink:VkExportMemoryAllocateInfoNV::pname:handleTypes includes
|
||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV, add a
|
||||
@ -27,3 +28,4 @@ Further, if the structure is not present, the access rights will be
|
||||
[1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms686670.aspx
|
||||
|
||||
include::../../validity/structs/VkExportMemoryWin32HandleInfoNV.txt[]
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin VkImportMemoryWin32HandleInfoNV - import Win32 memory created on the same physical device
|
||||
[open,refpage='VkImportMemoryWin32HandleInfoNV',desc='import Win32 memory created on the same physical device',type='structs']
|
||||
--
|
||||
|
||||
To import memory created on the same physical device but outside of the
|
||||
current Vulkan instance, add a slink:VkImportMemoryWin32HandleInfoNV
|
||||
@ -28,10 +29,12 @@ slink:VkMemoryAllocateInfo structure it is chained from.
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkImportMemoryWin32HandleInfoNV.txt[]
|
||||
--
|
||||
|
||||
Bits which can: be set in pname:handleType are:
|
||||
|
||||
// refBegin VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external memory handle types
|
||||
[open,refpage='VkExternalMemoryHandleTypeFlagBitsNV',desc='Bitmask specifying external memory handle types',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkImportMemoryWin32HandleInfoNV::pname:handleType,
|
||||
specifying the type of an external memory handle, are:
|
||||
@ -61,4 +64,4 @@ defined by.
|
||||
==================
|
||||
endif::editing-notes[]
|
||||
|
||||
// refEnd VkExternalMemoryHandleTypeFlagBitsNV
|
||||
--
|
||||
|
@ -1,4 +1,5 @@
|
||||
// refBegin VkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex mechanism to synchronize work
|
||||
[open,refpage='VkWin32KeyedMutexAcquireReleaseInfoNV',desc='use Windows keyex mutex mechanism to synchronize work',type='structs']
|
||||
--
|
||||
|
||||
When submitting work that operates on memory imported from a Direct3D 11
|
||||
resource to a queue, the keyed mutex mechanism may: be used in addition to
|
||||
@ -37,3 +38,4 @@ include::../../api/structs/VkWin32KeyedMutexAcquireReleaseInfoNV.txt[]
|
||||
entries in pname:pReleaseSyncs.
|
||||
|
||||
include::../../validity/structs/VkWin32KeyedMutexAcquireReleaseInfoNV.txt[]
|
||||
--
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[clears]]
|
||||
= Clear Commands
|
||||
@ -13,7 +14,8 @@ instance using flink:vkCmdClearColorImage or
|
||||
flink:vkCmdClearDepthStencilImage, respectively.
|
||||
These commands are only allowed outside of a render pass instance.
|
||||
|
||||
// refBegin vkCmdClearColorImage Clear regions of a color image
|
||||
[open,refpage='vkCmdClearColorImage',desc='Clear regions of a color image',type='protos']
|
||||
--
|
||||
|
||||
To clear one or more subranges of a color image, call:
|
||||
|
||||
@ -65,13 +67,17 @@ endif::VK_KHR_maintenance1[]
|
||||
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
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdClearColorImage-imageLayout-00005]]
|
||||
pname:imageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or
|
||||
pname:imageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdClearColorImage-imageLayout-01394]]
|
||||
pname:imageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL, or
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdClearColorImage-pRanges-00006]]
|
||||
The image range of any given element of pname:pRanges must: be an image
|
||||
subresource range that is contained within pname:image
|
||||
@ -80,8 +86,10 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdClearColorImage.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkCmdClearDepthStencilImage Fill regions of a combined depth/stencil image
|
||||
[open,refpage='vkCmdClearDepthStencilImage',desc='Fill regions of a combined depth/stencil image',type='protos']
|
||||
--
|
||||
|
||||
To clear one or more subranges of a depth/stencil image, call:
|
||||
|
||||
@ -143,6 +151,7 @@ endif::VK_KHR_maintenance1[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdClearDepthStencilImage.txt[]
|
||||
--
|
||||
|
||||
Clears outside render pass instances are treated as transfer operations for
|
||||
the purposes of memory barriers.
|
||||
@ -151,7 +160,8 @@ the purposes of memory barriers.
|
||||
[[clears-inside]]
|
||||
== Clearing Images Inside A Render Pass Instance
|
||||
|
||||
// refBegin vkCmdClearAttachments Clear regions within currently bound framebuffer attachments
|
||||
[open,refpage='vkCmdClearAttachments',desc='Clear regions within currently bound framebuffer attachments',type='protos']
|
||||
--
|
||||
|
||||
To clear one or more regions of color and depth/stencil attachments inside a
|
||||
render pass instance, call:
|
||||
@ -197,8 +207,10 @@ endif::VK_KHX_multiview[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdClearAttachments.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkClearRect Structure specifying a clear rectangle
|
||||
[open,refpage='VkClearRect',desc='Structure specifying a clear rectangle',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkClearRect structure is defined as:
|
||||
|
||||
@ -213,8 +225,10 @@ pname:layerCount)# counting from the base layer of the attachment image view
|
||||
are cleared.
|
||||
|
||||
include::../validity/structs/VkClearRect.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkClearAttachment Structure specifying a clear attachment
|
||||
[open,refpage='VkClearAttachment',desc='Structure specifying a clear attachment',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkClearAttachment structure is defined as:
|
||||
|
||||
@ -264,12 +278,14 @@ described for flink:vkCreateRenderPass.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkClearAttachment.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[clears-values]]
|
||||
== Clear Values
|
||||
|
||||
// refBegin VkClearColorValue Structure specifying a clear color value
|
||||
[open,refpage='VkClearColorValue',desc='Structure specifying a clear color value',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkClearColorValue structure is defined as:
|
||||
|
||||
@ -303,8 +319,10 @@ If the image has more than one sample, the same value is written to all
|
||||
samples for any pixels being cleared.
|
||||
|
||||
include::../validity/structs/VkClearColorValue.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkClearDepthStencilValue Structure specifying a clear depth stencil value
|
||||
[open,refpage='VkClearDepthStencilValue',desc='Structure specifying a clear depth stencil value',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkClearDepthStencilValue structure is defined as:
|
||||
|
||||
@ -326,8 +344,10 @@ include::../api/structs/VkClearDepthStencilValue.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkClearDepthStencilValue.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkClearValue Structure specifying a clear value
|
||||
[open,refpage='VkClearValue',desc='Structure specifying a clear value',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkClearValue union is defined as:
|
||||
|
||||
@ -350,12 +370,14 @@ initial clear values in the slink:VkRenderPassBeginInfo structure.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkClearValue.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[clears-filling-buffers]]
|
||||
== Filling Buffers
|
||||
|
||||
// refBegin vkCmdFillBuffer Fill a region of a buffer with a fixed value
|
||||
[open,refpage='vkCmdFillBuffer',desc='Fill a region of a buffer with a fixed value',type='protos']
|
||||
--
|
||||
|
||||
To clear buffer data, call:
|
||||
|
||||
@ -410,12 +432,14 @@ endif::VK_KHR_maintenance1[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdFillBuffer.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[clears-updating-buffers]]
|
||||
== Updating Buffers
|
||||
|
||||
// refBegin vkCmdUpdateBuffer Update a buffer's contents from host memory
|
||||
[open,refpage='vkCmdUpdateBuffer',desc='Update a buffer\'s contents from host memory',type='protos']
|
||||
--
|
||||
|
||||
To update buffer data inline in a command buffer, call:
|
||||
|
||||
@ -467,6 +491,7 @@ fname:vkCmdUpdateBuffer.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdUpdateBuffer.txt[]
|
||||
--
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -1,10 +1,12 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[commandbuffers]]
|
||||
= Command Buffers
|
||||
|
||||
// refBegin VkCommandBuffer Opaque handle to a command buffer object
|
||||
[open,refpage='VkCommandBuffer',desc='Opaque handle to a command buffer object',type='handles']
|
||||
--
|
||||
|
||||
Command buffers are objects used to record commands which can: be
|
||||
subsequently submitted to a device queue for execution.
|
||||
@ -17,7 +19,7 @@ Command buffers are represented by sname:VkCommandBuffer handles:
|
||||
|
||||
include::../api/handles/VkCommandBuffer.txt[]
|
||||
|
||||
// refEnd VkCommandBuffer
|
||||
--
|
||||
|
||||
Recorded commands include commands to bind pipelines and descriptor sets to
|
||||
the command buffer, commands to modify dynamic state, commands to draw (for
|
||||
@ -126,7 +128,8 @@ secondary command buffers that were recorded to it.
|
||||
[[commandbuffers-pools]]
|
||||
== Command Pools
|
||||
|
||||
// refBegin VkCommandPool Opaque handle to a command pool object
|
||||
[open,refpage='VkCommandPool',desc='Opaque handle to a command pool object',type='handles']
|
||||
--
|
||||
|
||||
Command pools are opaque objects that command buffer memory is allocated
|
||||
from, and which allow the implementation to amortize the cost of resource
|
||||
@ -141,9 +144,10 @@ Command pools are represented by sname:VkCommandPool handles:
|
||||
|
||||
include::../api/handles/VkCommandPool.txt[]
|
||||
|
||||
// refEnd VkCommandPool
|
||||
--
|
||||
|
||||
// refBegin vkCreateCommandPool Create a new command pool object
|
||||
[open,refpage='vkCreateCommandPool',desc='Create a new command pool object',type='protos']
|
||||
--
|
||||
|
||||
To create a command pool, call:
|
||||
|
||||
@ -157,8 +161,10 @@ include::../api/protos/vkCreateCommandPool.txt[]
|
||||
created pool is returned.
|
||||
|
||||
include::../validity/protos/vkCreateCommandPool.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandPoolCreateInfo Structure specifying parameters of a newly created command pool
|
||||
[open,refpage='VkCommandPoolCreateInfo',desc='Structure specifying parameters of a newly created command pool',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkCommandPoolCreateInfo structure is defined as:
|
||||
|
||||
@ -181,8 +187,10 @@ include::../api/structs/VkCommandPoolCreateInfo.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCommandPoolCreateInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandPoolCreateFlagBits Bitmask specifying usage behavior for a command pool
|
||||
[open,refpage='VkCommandPoolCreateFlagBits',desc='Bitmask specifying usage behavior for a command pool',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in slink:VkCommandPoolCreateInfo::pname:flags to
|
||||
specify usage behavior for a command pool are:
|
||||
@ -202,11 +210,12 @@ include::../api/enums/VkCommandPoolCreateFlagBits.txt[]
|
||||
If this flag is not set on a pool, then fname:vkResetCommandBuffer must:
|
||||
not be called for any command buffer allocated from that pool.
|
||||
|
||||
// refEnd VkCommandPoolCreateFlagBits
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_maintenance1[]
|
||||
|
||||
// refBegin vkTrimCommandPoolKHR Trim a command pool
|
||||
[open,refpage='vkTrimCommandPoolKHR',desc='Trim a command pool',type='protos']
|
||||
--
|
||||
|
||||
To trim a command pool, call:
|
||||
|
||||
@ -260,10 +269,12 @@ cost of trimming is "worth" it.
|
||||
====
|
||||
|
||||
include::../validity/protos/vkTrimCommandPoolKHR.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHR_maintenance1[]
|
||||
|
||||
// refBegin vkResetCommandPool Reset a command pool
|
||||
[open,refpage='vkResetCommandPool',desc='Reset a command pool',type='protos']
|
||||
--
|
||||
|
||||
To reset a command pool, call:
|
||||
|
||||
@ -292,8 +303,10 @@ into it, becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkResetCommandPool.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandPoolResetFlagBits Bitmask controlling behavior of a command pool reset
|
||||
[open,refpage='VkCommandPoolResetFlagBits',desc='Bitmask controlling behavior of a command pool reset',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in flink:vkResetCommandPool::pname:flags to control
|
||||
the reset operation are:
|
||||
@ -304,9 +317,10 @@ include::../api/enums/VkCommandPoolResetFlagBits.txt[]
|
||||
resetting a command pool recycles all of the resources from the command
|
||||
pool back to the system.
|
||||
|
||||
// refEnd VkCommandPoolResetFlagBits
|
||||
--
|
||||
|
||||
// refBegin vkDestroyCommandPool Destroy a command pool object
|
||||
[open,refpage='vkDestroyCommandPool',desc='Destroy a command pool object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a command pool, call:
|
||||
|
||||
@ -339,12 +353,14 @@ into it, becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDestroyCommandPool.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[commandbuffer-allocation]]
|
||||
== Command Buffer Allocation and Management
|
||||
|
||||
// refBegin vkAllocateCommandBuffers Allocate command buffers from an existing command pool
|
||||
[open,refpage='vkAllocateCommandBuffers',desc='Allocate command buffers from an existing command pool',type='protos']
|
||||
--
|
||||
|
||||
To allocate command buffers, call:
|
||||
|
||||
@ -373,8 +389,10 @@ When command buffers are first allocated, they are in the
|
||||
<<commandbuffers-lifecycle, initial state>>.
|
||||
|
||||
include::../validity/protos/vkAllocateCommandBuffers.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandBufferAllocateInfo Structure specifying the allocation parameters for command buffer object
|
||||
[open,refpage='VkCommandBufferAllocateInfo',desc='Structure specifying the allocation parameters for command buffer object',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkCommandBufferAllocateInfo structure is defined as:
|
||||
|
||||
@ -396,8 +414,10 @@ include::../api/structs/VkCommandBufferAllocateInfo.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCommandBufferAllocateInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandBufferLevel Enumerant specifying a command buffer level
|
||||
[open,refpage='VkCommandBufferLevel',desc='Enumerant specifying a command buffer level',type='enums']
|
||||
--
|
||||
|
||||
Possible values of slink:VkCommandBufferAllocateInfo::pname:flags,
|
||||
specifying the command buffer level, are:
|
||||
@ -409,9 +429,10 @@ include::../api/enums/VkCommandBufferLevel.txt[]
|
||||
* ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY specifies a secondary command
|
||||
buffer.
|
||||
|
||||
// refEnd VkCommandBufferLevel
|
||||
--
|
||||
|
||||
// refBegin vkResetCommandBuffer Reset a command buffer to the initial state
|
||||
[open,refpage='vkResetCommandBuffer',desc='Reset a command buffer to the initial state',type='protos']
|
||||
--
|
||||
|
||||
To reset command buffers, call:
|
||||
|
||||
@ -439,8 +460,10 @@ it, becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkResetCommandBuffer.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandBufferResetFlagBits Bitmask controlling behavior of a command buffer reset
|
||||
[open,refpage='VkCommandBufferResetFlagBits',desc='Bitmask controlling behavior of a command buffer reset',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in flink:vkResetCommandBuffer::pname:flags to control
|
||||
the reset operation are:
|
||||
@ -455,9 +478,10 @@ include::../api/enums/VkCommandBufferResetFlagBits.txt[]
|
||||
pname:commandBuffer is moved to the <<commandbuffers-lifecycle, initial
|
||||
state>>.
|
||||
|
||||
// refEnd VkCommandBufferResetFlagBits
|
||||
--
|
||||
|
||||
// refBegin vkFreeCommandBuffers Free command buffers
|
||||
[open,refpage='vkFreeCommandBuffers',desc='Free command buffers',type='protos']
|
||||
--
|
||||
|
||||
To free command buffers, call:
|
||||
|
||||
@ -486,12 +510,14 @@ recorded into it, becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkFreeCommandBuffers.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[commandbuffers-recording]]
|
||||
== Command Buffer Recording
|
||||
|
||||
// refBegin vkBeginCommandBuffer Start recording a command buffer
|
||||
[open,refpage='vkBeginCommandBuffer',desc='Start recording a command buffer',type='protos']
|
||||
--
|
||||
|
||||
To begin recording a command buffer, call:
|
||||
|
||||
@ -527,8 +553,10 @@ include::../api/protos/vkBeginCommandBuffer.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkBeginCommandBuffer.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandBufferBeginInfo Structure specifying a command buffer begin operation
|
||||
[open,refpage='VkCommandBufferBeginInfo',desc='Structure specifying a command buffer begin operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkCommandBufferBeginInfo structure is defined as:
|
||||
|
||||
@ -564,8 +592,10 @@ include::../api/structs/VkCommandBufferBeginInfo.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCommandBufferBeginInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCommandBufferUsageFlagBits Bitmask specifying usage behavior for command buffer
|
||||
[open,refpage='VkCommandBufferUsageFlagBits',desc='Bitmask specifying usage behavior for command buffer',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in slink:VkCommandBufferBeginInfo::pname:flags to
|
||||
specify usage behavior for a command buffer are:
|
||||
@ -583,9 +613,10 @@ include::../api/enums/VkCommandBufferUsageFlagBits.txt[]
|
||||
command buffer can: be resubmitted to a queue while it is in the
|
||||
_pending state_, and recorded into multiple primary command buffers.
|
||||
|
||||
// refEnd VkCommandBufferUsageFlagBits
|
||||
--
|
||||
|
||||
// refBegin VkCommandBufferInheritanceInfo Structure specifying command buffer inheritance info
|
||||
[open,refpage='VkCommandBufferInheritanceInfo',desc='Structure specifying command buffer inheritance info',type='structs']
|
||||
--
|
||||
|
||||
If the command buffer is a secondary command buffer, then the
|
||||
sname:VkCommandBufferInheritanceInfo structure defines any state that will
|
||||
@ -658,6 +689,7 @@ time.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCommandBufferInheritanceInfo.txt[]
|
||||
--
|
||||
|
||||
If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT was not set when
|
||||
creating a command buffer, that command buffer must: not be submitted to a
|
||||
@ -694,7 +726,8 @@ Several commands can also be recorded indirectly from sname:VkBuffer
|
||||
content, see <<device-generated-commands>>.
|
||||
endif::VK_NVX_device_generated_commands[]
|
||||
|
||||
// refBegin vkEndCommandBuffer Finish recording a command buffer
|
||||
[open,refpage='vkEndCommandBuffer',desc='Finish recording a command buffer',type='protos']
|
||||
--
|
||||
|
||||
To complete recording of a command buffer, call:
|
||||
|
||||
@ -731,6 +764,7 @@ endif::VK_EXT_debug_marker[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkEndCommandBuffer.txt[]
|
||||
--
|
||||
|
||||
When a command buffer is in the executable state, it can: be submitted to a
|
||||
queue for execution.
|
||||
@ -739,7 +773,8 @@ queue for execution.
|
||||
[[commandbuffers-submission]]
|
||||
== Command Buffer Submission
|
||||
|
||||
// refBegin vkQueueSubmit Submits a sequence of semaphores or command buffers to a queue
|
||||
[open,refpage='vkQueueSubmit',desc='Submits a sequence of semaphores or command buffers to a queue',type='protos']
|
||||
--
|
||||
|
||||
To submit command buffers to a queue, call:
|
||||
|
||||
@ -868,8 +903,10 @@ See <<devsandqueues-lost-device,Lost Device>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkQueueSubmit.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkSubmitInfo Structure specifying a queue submit operation
|
||||
[open,refpage='VkSubmitInfo',desc='Structure specifying a queue submit operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkSubmitInfo structure is defined as:
|
||||
|
||||
@ -928,10 +965,12 @@ otherwise execute out of order.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkSubmitInfo.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHX_external_semaphore_win32[]
|
||||
|
||||
// refBegin VkD3D12FenceSubmitInfoKHX Structure specifying values for Direct3D 12 fence-backed semaphores
|
||||
[open,refpage='VkD3D12FenceSubmitInfoKHX',desc='Structure specifying values for Direct3D 12 fence-backed semaphores',type='structs']
|
||||
--
|
||||
|
||||
To specify the values to use when waiting for and signaling semaphores whose
|
||||
current state is shared with a Direct3D 12 fence, add the
|
||||
@ -976,12 +1015,14 @@ pname:pWaitSemaphoreValues or pname:pSignalSemaphoreValues entry is ignored.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkD3D12FenceSubmitInfoKHX.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHX_external_semaphore_win32[]
|
||||
|
||||
ifdef::VK_KHX_win32_keyed_mutex[]
|
||||
|
||||
// refBegin VkWin32KeyedMutexAcquireReleaseInfoKHX Use the Windows keyed mutex mechanism to synchronize work
|
||||
[open,refpage='VkWin32KeyedMutexAcquireReleaseInfoKHX',desc='Use the Windows keyed mutex mechanism to synchronize work',type='structs']
|
||||
--
|
||||
|
||||
When submitting work that operates on memory imported from a Direct3D 11
|
||||
resource to a queue, the keyed mutex mechanism may: be used in addition to
|
||||
@ -1029,6 +1070,7 @@ include::../api/structs/VkWin32KeyedMutexAcquireReleaseInfoKHX.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkWin32KeyedMutexAcquireReleaseInfoKHX.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHX_win32_keyed_mutex[]
|
||||
|
||||
@ -1038,7 +1080,8 @@ endif::VK_NV_win32_keyed_mutex[]
|
||||
|
||||
ifdef::VK_KHX_device_group[]
|
||||
|
||||
// refBegin VkDeviceGroupSubmitInfoKHX Structure indicating which physical devices execute semaphore operations and command buffers
|
||||
[open,refpage='VkDeviceGroupSubmitInfoKHX',desc='Structure indicating which physical devices execute semaphore operations and command buffers',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext list of slink:VkSubmitInfo includes a
|
||||
sname:VkDeviceGroupSubmitInfoKHX structure, then that structure includes
|
||||
@ -1095,7 +1138,7 @@ execute on device index zero.
|
||||
|
||||
include::../validity/structs/VkDeviceGroupSubmitInfoKHX.txt[]
|
||||
|
||||
// refEnd VkDeviceGroupSubmitInfoKHX
|
||||
--
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
||||
@ -1124,7 +1167,8 @@ may: include device loss.
|
||||
[[commandbuffers-secondary]]
|
||||
== Secondary Command Buffer Execution
|
||||
|
||||
// refBegin vkCmdExecuteCommands Execute a secondary command buffer from a primary command buffer
|
||||
[open,refpage='vkCmdExecuteCommands',desc='Execute a secondary command buffer from a primary command buffer',type='protos']
|
||||
--
|
||||
|
||||
A secondary command buffer must: not be directly submitted to a queue.
|
||||
Instead, secondary command buffers are recorded to execute as part of a
|
||||
@ -1239,6 +1283,7 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdExecuteCommands.txt[]
|
||||
--
|
||||
|
||||
ifdef::VK_KHX_device_group[]
|
||||
|
||||
@ -1265,7 +1310,8 @@ pname:pCommandBufferDeviceMasks member of slink:VkDeviceGroupSubmitInfoKHX.
|
||||
Commands only execute on a physical device if the device index is set in
|
||||
both device masks.
|
||||
|
||||
// refBegin VkDeviceGroupCommandBufferBeginInfoKHX Set the initial device mask for a command buffer
|
||||
[open,refpage='VkDeviceGroupCommandBufferBeginInfoKHX',desc='Set the initial device mask for a command buffer',type='structs']
|
||||
--
|
||||
|
||||
If the pname:pNext list of slink:VkCommandBufferBeginInfo includes a
|
||||
sname:VkDeviceGroupCommandBufferBeginInfoKHX structure, then that structure
|
||||
@ -1296,9 +1342,11 @@ when the command buffer begins recording.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDeviceGroupCommandBufferBeginInfoKHX.txt[]
|
||||
--
|
||||
|
||||
|
||||
// refBegin vkCmdSetDeviceMaskKHX Modify device mask of a command buffer
|
||||
[open,refpage='vkCmdSetDeviceMaskKHX',desc='Modify device mask of a command buffer',type='protos']
|
||||
--
|
||||
|
||||
To update the current device mask of a command buffer, call:
|
||||
|
||||
@ -1329,5 +1377,6 @@ all physical devices whose bit indices are not set in the mask.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdSetDeviceMaskKHX.txt[]
|
||||
--
|
||||
|
||||
endif::VK_KHX_device_group[]
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[copies]]
|
||||
= Copy Commands
|
||||
@ -75,7 +76,8 @@ synchronization barriers.
|
||||
[[copies-buffers]]
|
||||
== Copying Data Between Buffers
|
||||
|
||||
// refBegin vkCmdCopyBuffer Copy data between buffer regions
|
||||
[open,refpage='vkCmdCopyBuffer',desc='Copy data between buffer regions',type='protos']
|
||||
--
|
||||
|
||||
To copy data between buffer objects, call:
|
||||
|
||||
@ -131,8 +133,10 @@ memory.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdCopyBuffer.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkBufferCopy Structure specifying a buffer copy operation
|
||||
[open,refpage='VkBufferCopy',desc='Structure specifying a buffer copy operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkBufferCopy structure is defined as:
|
||||
|
||||
@ -145,6 +149,7 @@ include::../api/structs/VkBufferCopy.txt[]
|
||||
* pname:size is the number of bytes to copy.
|
||||
|
||||
include::../validity/structs/VkBufferCopy.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[copies-images]]
|
||||
@ -158,7 +163,8 @@ Rather, it simply copies raw image data.
|
||||
fname:vkCmdCopyImage can: copy between images with different formats,
|
||||
provided the formats are compatible as defined below.
|
||||
|
||||
// refBegin vkCmdCopyImage Copy data between images
|
||||
[open,refpage='vkCmdCopyImage',desc='Copy data between images',type='protos']
|
||||
--
|
||||
|
||||
To copy data between image objects, call:
|
||||
|
||||
@ -203,9 +209,10 @@ compressed texel block of the source image is copied as a raw value to the
|
||||
corresponding texel of uncompressed data in the destination image.
|
||||
Thus, for example, it is legal to copy between a 128-bit uncompressed format
|
||||
and a compressed format which has a 128-bit sized compressed texel block
|
||||
representing 4x4 texels (using 8 bits per texel), or between a 64-bit
|
||||
representing 4{times}4 texels (using 8 bits per texel), or between a 64-bit
|
||||
uncompressed format and a compressed format which has a 64-bit sized
|
||||
compressed texel block representing 4x4 texels (using 4 bits per texel).
|
||||
compressed texel block representing 4{times}4 texels (using 4 bits per
|
||||
texel).
|
||||
|
||||
When copying between compressed and uncompressed formats the pname:extent
|
||||
members represent the texel dimensions of the source image and not the
|
||||
@ -287,13 +294,18 @@ endif::VK_KHR_maintenance1[]
|
||||
pname:srcImageLayout must: specify the layout of the image subresources
|
||||
of pname:srcImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImage-srcImageLayout-00129]]
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImage-srcImageLayout-00129]]
|
||||
pname:srcImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL, or
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
ifdef::VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdCopyImage-dstImage-00130]]
|
||||
pname:dstImage must: use a format that supports
|
||||
@ -313,13 +325,18 @@ endif::VK_KHR_maintenance1[]
|
||||
pname:dstImageLayout must: specify the layout of the image subresources
|
||||
of pname:dstImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImage-dstImageLayout-00134]]
|
||||
pname:dstImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImage-dstImageLayout-01395]]
|
||||
pname:dstImageLayout must: be
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL, or
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* [[VUID-vkCmdCopyImage-srcImage-00135]]
|
||||
The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be
|
||||
compatible, as defined <<copies-images-format-compatibility, below>>
|
||||
@ -328,8 +345,10 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdCopyImage.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkImageCopy Structure specifying an image copy operation
|
||||
[open,refpage='VkImageCopy',desc='Structure specifying an image copy operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkImageCopy structure is defined as:
|
||||
|
||||
@ -495,8 +514,10 @@ endif::VK_KHR_maintenance1[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkImageCopy.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkImageSubresourceLayers Structure specifying a image subresource layers
|
||||
[open,refpage='VkImageSubresourceLayers',desc='Structure specifying a image subresource layers',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkImageSubresourceLayers structure is defined as:
|
||||
|
||||
@ -526,12 +547,14 @@ include::../api/structs/VkImageSubresourceLayers.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkImageSubresourceLayers.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[copies-buffers-images]]
|
||||
== Copying Data Between Buffers and Images
|
||||
|
||||
// refBegin vkCmdCopyBufferToImage Copy data from a buffer into an image
|
||||
[open,refpage='vkCmdCopyBufferToImage',desc='Copy data from a buffer into an image',type='protos']
|
||||
--
|
||||
|
||||
To copy data from a buffer object to an image object, call:
|
||||
|
||||
@ -590,18 +613,25 @@ endif::VK_KHR_maintenance1[]
|
||||
pname:dstImageLayout must: specify the layout of the image subresources
|
||||
of pname:dstImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyBufferToImage-dstImageLayout-00181]]
|
||||
pname:dstImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyBufferToImage-dstImageLayout-01396]]
|
||||
pname:dstImageLayout must: be
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL, or
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdCopyBufferToImage.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkCmdCopyImageToBuffer Copy image data into a buffer
|
||||
[open,refpage='vkCmdCopyImageToBuffer',desc='Copy image data into a buffer',type='protos']
|
||||
--
|
||||
|
||||
To copy data from an image object to a buffer object, call:
|
||||
|
||||
@ -654,13 +684,17 @@ endif::VK_KHR_maintenance1[]
|
||||
pname:srcImageLayout must: specify the layout of the image subresources
|
||||
of pname:srcImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190]]
|
||||
pname:srcImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397]]
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-dstBuffer-00191]]
|
||||
pname:dstBuffer must: have been created with
|
||||
ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
@ -670,8 +704,10 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdCopyImageToBuffer.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkBufferImageCopy Structure specifying a buffer image copy operation
|
||||
[open,refpage='VkBufferImageCopy',desc='Structure specifying a buffer image copy operation',type='structs']
|
||||
--
|
||||
|
||||
For both flink:vkCmdCopyBufferToImage and flink:vkCmdCopyImageToBuffer, each
|
||||
element of pname:pRegions is a structure defined as:
|
||||
@ -821,6 +857,7 @@ destination image.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkBufferImageCopy.txt[]
|
||||
--
|
||||
|
||||
Pseudocode for image/buffer addressing is:
|
||||
|
||||
@ -896,7 +933,8 @@ copy.
|
||||
[[copies-imagescaling]]
|
||||
== Image Copies with Scaling
|
||||
|
||||
// refBegin vkCmdBlitImage Copy regions of an image, potentially performing format conversion,
|
||||
[open,refpage='vkCmdBlitImage',desc='Copy regions of an image, potentially performing format conversion,',type='protos']
|
||||
--
|
||||
|
||||
To copy regions of a source image into a destination image, potentially
|
||||
performing format conversion, arbitrary scaling, and filtering, call:
|
||||
@ -1040,13 +1078,17 @@ representable range of the destination format, then casting the value.
|
||||
pname:srcImageLayout must: specify the layout of the image subresources
|
||||
of pname:srcImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdBlitImage-srcImageLayout-00222]]
|
||||
pname:srcImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdBlitImage-srcImageLayout-01398]]
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdBlitImage-dstImage-00223]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by
|
||||
@ -1064,13 +1106,17 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
pname:dstImageLayout must: specify the layout of the image subresources
|
||||
of pname:dstImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdBlitImage-dstImageLayout-00227]]
|
||||
pname:dstImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdBlitImage-dstImageLayout-01399]]
|
||||
pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdBlitImage-srcImage-00228]]
|
||||
The sample count of pname:srcImage and pname:dstImage must: both be
|
||||
equal to ename:VK_SAMPLE_COUNT_1_BIT
|
||||
@ -1118,8 +1164,10 @@ endif::VK_IMG_filter_cubic[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdBlitImage.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkImageBlit Structure specifying an image blit operation
|
||||
[open,refpage='VkImageBlit',desc='Structure specifying an image blit operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkImageBlit structure is defined as:
|
||||
|
||||
@ -1199,12 +1247,14 @@ the specified source and destination regions.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkImageBlit.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[copies-resolve]]
|
||||
== Resolving Multisample Images
|
||||
|
||||
// refBegin vkCmdResolveImage Resolve regions of an image
|
||||
[open,refpage='vkCmdResolveImage',desc='Resolve regions of an image',type='protos']
|
||||
--
|
||||
|
||||
To resolve a multisample image to a non-multisample image, call:
|
||||
|
||||
@ -1268,24 +1318,32 @@ pname:layerCount layers are resolved to the destination image.
|
||||
pname:srcImageLayout must: specify the layout of the image subresources
|
||||
of pname:srcImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdResolveImage-srcImageLayout-00261]]
|
||||
pname:srcImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdResolveImage-srcImageLayout-01400]]
|
||||
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdResolveImage-dstImageLayout-00262]]
|
||||
pname:dstImageLayout must: specify the layout of the image subresources
|
||||
of pname:dstImage specified in pname:pRegions at the time this command
|
||||
is executed on a sname:VkDevice
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdResolveImage-dstImageLayout-00263]]
|
||||
pname:dstImageLayout must: be
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
|
||||
or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdResolveImage-dstImageLayout-01401]]
|
||||
pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
|
||||
ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-vkCmdResolveImage-dstImage-00264]]
|
||||
If pname:dstImage was created with pname:tiling equal to
|
||||
ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created
|
||||
@ -1306,8 +1364,10 @@ endif::VK_KHR_shared_presentable_image[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdResolveImage.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkImageResolve Structure specifying an image resolve operation
|
||||
[open,refpage='VkImageResolve',desc='Structure specifying an image resolve operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkImageResolve structure is defined as:
|
||||
|
||||
@ -1381,4 +1441,5 @@ include::../api/structs/VkImageResolve.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkImageResolve.txt[]
|
||||
--
|
||||
|
||||
|
@ -4,7 +4,8 @@ To aid developers in tracking down errors in the application's use of
|
||||
Vulkan, particularly in combination with an external debugger or profiler,
|
||||
_debugging extensions_ may be available.
|
||||
|
||||
// refBegin VkObjectType Specify an enumeration to track object handle types
|
||||
[open,refpage='VkObjectType',desc='Specify an enumeration to track object handle types',type='enums']
|
||||
--
|
||||
|
||||
The elink:VkObjectType enumeration defines values, each of which corresponds
|
||||
to a specific Vulkan handle type.
|
||||
@ -13,7 +14,7 @@ type of object through one or more extensions.
|
||||
|
||||
include::../api/enums/VkObjectType.txt[]
|
||||
|
||||
// refEnd VkObjectType
|
||||
--
|
||||
|
||||
If this Specification was generated with any such extensions included, they
|
||||
will be described in the remainder of this chapter.
|
||||
|
@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2015-2017 The Khronos Group Inc.
|
||||
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
|
||||
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
|
||||
// Creative Commons Attribution 4.0 International License; see
|
||||
// http://creativecommons.org/licenses/by/4.0/
|
||||
|
||||
[[descriptorsets]]
|
||||
= Resource Descriptors
|
||||
@ -565,7 +566,8 @@ shader stages and shader resources.
|
||||
[[descriptorsets-setlayout]]
|
||||
=== Descriptor Set Layout
|
||||
|
||||
// refBegin VkDescriptorSetLayout Opaque handle to a descriptor set layout object
|
||||
[open,refpage='VkDescriptorSetLayout',desc='Opaque handle to a descriptor set layout object',type='handles']
|
||||
--
|
||||
|
||||
A descriptor set layout object is defined by an array of zero or more
|
||||
descriptor bindings.
|
||||
@ -579,9 +581,10 @@ handles:
|
||||
|
||||
include::../api/handles/VkDescriptorSetLayout.txt[]
|
||||
|
||||
// refEnd VkDescriptorSetLayout
|
||||
--
|
||||
|
||||
// refBegin vkCreateDescriptorSetLayout Create a new descriptor set layout
|
||||
[open,refpage='vkCreateDescriptorSetLayout',desc='Create a new descriptor set layout',type='protos']
|
||||
--
|
||||
|
||||
To create descriptor set layout objects, call:
|
||||
|
||||
@ -598,8 +601,10 @@ include::../api/protos/vkCreateDescriptorSetLayout.txt[]
|
||||
the resulting descriptor set layout object is returned.
|
||||
|
||||
include::../validity/protos/vkCreateDescriptorSetLayout.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorSetLayoutCreateInfo Structure specifying parameters of a newly created descriptor set layout
|
||||
[open,refpage='VkDescriptorSetLayoutCreateInfo',desc='Structure specifying parameters of a newly created descriptor set layout',type='structs']
|
||||
--
|
||||
|
||||
Information about the descriptor set layout is passed in an instance of the
|
||||
sname:VkDescriptorSetLayoutCreateInfo structure:
|
||||
@ -638,8 +643,10 @@ endif::VK_KHR_push_descriptor[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorSetLayoutCreateFlagBits Bitmask specifying descriptor set layout properties
|
||||
[open,refpage='VkDescriptorSetLayoutCreateFlagBits',desc='Bitmask specifying descriptor set layout properties',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in slink:VkDescriptorSetLayoutCreateInfo::pname:flags
|
||||
to specify options for descriptor set layout are:
|
||||
@ -652,9 +659,10 @@ ifdef::VK_KHR_push_descriptor[]
|
||||
descriptors are instead pushed by flink:vkCmdPushDescriptorSetKHR.
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
|
||||
// refEnd VkDescriptorSetLayoutCreateFlagBits
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorSetLayoutBinding Structure specifying a descriptor set layout binding
|
||||
[open,refpage='VkDescriptorSetLayoutBinding',desc='Structure specifying a descriptor set layout binding',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDescriptorSetLayoutBinding structure is defined as:
|
||||
|
||||
@ -676,14 +684,13 @@ include::../api/structs/VkDescriptorSetLayoutBinding.txt[]
|
||||
shader stages, including any additional stages defined by extensions,
|
||||
can: access the resource.
|
||||
+
|
||||
--
|
||||
If a shader stage is not included in pname:stageFlags, then a resource must:
|
||||
not be accessed from that stage via this binding within any pipeline using
|
||||
the set layout.
|
||||
There are no limitations on what combinations of stages can: be used by a
|
||||
descriptor binding, and in particular a binding can: be used by both
|
||||
graphics stages and the compute stage.
|
||||
--
|
||||
|
||||
* pname:pImmutableSamplers affects initialization of samplers.
|
||||
If pname:descriptorType specifies a ename:VK_DESCRIPTOR_TYPE_SAMPLER or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER type descriptor, then
|
||||
@ -734,6 +741,7 @@ avoid wasted memory.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorSetLayoutBinding.txt[]
|
||||
--
|
||||
|
||||
The following examples show a shader snippet using two descriptor sets, and
|
||||
application code that creates corresponding descriptor set layouts.
|
||||
@ -802,7 +810,7 @@ layout (set=1, binding=0) uniform myUniformBuffer
|
||||
|
||||
.API example
|
||||
[source,c++]
|
||||
-------------------------------------------------------------------------------
|
||||
---------------------------------------------------
|
||||
VkResult myResult;
|
||||
|
||||
const VkDescriptorSetLayoutBinding myDescriptorSetLayoutBinding[] =
|
||||
@ -875,9 +883,10 @@ myResult = vkCreateDescriptorSetLayout(
|
||||
&myDescriptorSetLayoutCreateInfo[1],
|
||||
NULL,
|
||||
&myDescriptorSetLayout[1]);
|
||||
-------------------------------------------------------------------------------
|
||||
---------------------------------------------------
|
||||
|
||||
// refBegin vkDestroyDescriptorSetLayout Destroy a descriptor set layout object
|
||||
[open,refpage='vkDestroyDescriptorSetLayout',desc='Destroy a descriptor set layout object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a descriptor set layout, call:
|
||||
|
||||
@ -901,12 +910,14 @@ include::../api/protos/vkDestroyDescriptorSetLayout.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDestroyDescriptorSetLayout.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[descriptorsets-pipelinelayout]]
|
||||
=== Pipeline Layouts
|
||||
|
||||
// refBegin VkPipelineLayout Opaque handle to a pipeline layout object
|
||||
[open,refpage='VkPipelineLayout',desc='Opaque handle to a pipeline layout object',type='handles']
|
||||
--
|
||||
|
||||
Access to descriptor sets from a pipeline is accomplished through a
|
||||
_pipeline layout_.
|
||||
@ -923,9 +934,10 @@ Pipeline layout objects are represented by sname:VkPipelineLayout handles:
|
||||
|
||||
include::../api/handles/VkPipelineLayout.txt[]
|
||||
|
||||
// refEnd VkPipelineLayout
|
||||
--
|
||||
|
||||
// refBegin vkCreatePipelineLayout Creates a new pipeline layout object
|
||||
[open,refpage='vkCreatePipelineLayout',desc='Creates a new pipeline layout object',type='protos']
|
||||
--
|
||||
|
||||
To create a pipeline layout, call:
|
||||
|
||||
@ -941,8 +953,10 @@ include::../api/protos/vkCreatePipelineLayout.txt[]
|
||||
the resulting pipeline layout object is returned.
|
||||
|
||||
include::../validity/protos/vkCreatePipelineLayout.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPipelineLayoutCreateInfo Structure specifying the parameters of a newly created pipeline layout object
|
||||
[open,refpage='VkPipelineLayoutCreateInfo',desc='Structure specifying the parameters of a newly created pipeline layout object',type='structs']
|
||||
--
|
||||
|
||||
The slink:VkPipelineLayoutCreateInfo structure is defined as:
|
||||
|
||||
@ -1023,8 +1037,10 @@ endif::VK_KHR_push_descriptor[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkPipelineLayoutCreateInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkPushConstantRange Structure specifying a push constant range
|
||||
[open,refpage='VkPushConstantRange',desc='Structure specifying a push constant range',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkPushConstantRange structure is defined as:
|
||||
|
||||
@ -1059,6 +1075,7 @@ include::../api/structs/VkPushConstantRange.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkPushConstantRange.txt[]
|
||||
--
|
||||
|
||||
Once created, pipeline layouts are used as part of pipeline creation (see
|
||||
<<pipelines, Pipelines>>), as part of binding descriptor sets (see
|
||||
@ -1129,7 +1146,8 @@ that can: be used in any pipeline stage as described in
|
||||
|====
|
||||
|
||||
|
||||
// refBegin vkDestroyPipelineLayout Destroy a pipeline layout object
|
||||
[open,refpage='vkDestroyPipelineLayout',desc='Destroy a pipeline layout object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a pipeline layout, call:
|
||||
|
||||
@ -1151,6 +1169,7 @@ include::../api/protos/vkDestroyPipelineLayout.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDestroyPipelineLayout.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[descriptorsets-compatibility]]
|
||||
@ -1251,7 +1270,8 @@ myResult = vkCreatePipelineLayout(
|
||||
[[descriptorsets-allocation]]
|
||||
=== Allocation of Descriptor Sets
|
||||
|
||||
// refBegin VkDescriptorPool Opaque handle to a descriptor pool object
|
||||
[open,refpage='VkDescriptorPool',desc='Opaque handle to a descriptor pool object',type='handles']
|
||||
--
|
||||
|
||||
A _descriptor pool_ maintains a pool of descriptors, from which descriptor
|
||||
sets are allocated.
|
||||
@ -1263,9 +1283,10 @@ Descriptor pools are represented by sname:VkDescriptorPool handles:
|
||||
|
||||
include::../api/handles/VkDescriptorPool.txt[]
|
||||
|
||||
// refEnd VkDescriptorPool
|
||||
--
|
||||
|
||||
// refBegin vkCreateDescriptorPool Creates a descriptor pool object
|
||||
[open,refpage='vkCreateDescriptorPool',desc='Creates a descriptor pool object',type='protos']
|
||||
--
|
||||
|
||||
To create a descriptor pool object, call:
|
||||
|
||||
@ -1286,8 +1307,10 @@ pname:pAllocator controls host memory allocation as described in the
|
||||
The created descriptor pool is returned in pname:pDescriptorPool.
|
||||
|
||||
include::../validity/protos/vkCreateDescriptorPool.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorPoolCreateInfo Structure specifying parameters of a newly created descriptor pool
|
||||
[open,refpage='VkDescriptorPoolCreateInfo',desc='Structure specifying parameters of a newly created descriptor pool',type='structs']
|
||||
--
|
||||
|
||||
Additional information about the pool is passed in an instance of the
|
||||
sname:VkDescriptorPoolCreateInfo structure:
|
||||
@ -1339,8 +1362,10 @@ allocations.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorPoolCreateInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorPoolCreateFlagBits Bitmask specifying certain supported operations on a descriptor pool
|
||||
[open,refpage='VkDescriptorPoolCreateFlagBits',desc='Bitmask specifying certain supported operations on a descriptor pool',type='enums']
|
||||
--
|
||||
|
||||
Bits which can: be set in slink:VkDescriptorPoolCreateInfo::pname:flags to
|
||||
enable operations on a descriptor pool are:
|
||||
@ -1356,9 +1381,10 @@ include::../api/enums/VkDescriptorPoolCreateFlagBits.txt[]
|
||||
flink:vkAllocateDescriptorSets and flink:vkResetDescriptorPool are
|
||||
allowed.
|
||||
|
||||
// refEnd VkDescriptorPoolCreateFlagBits
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorPoolSize Structure specifying descriptor pool size
|
||||
[open,refpage='VkDescriptorPoolSize',desc='Structure specifying descriptor pool size',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDescriptorPoolSize structure is defined as:
|
||||
|
||||
@ -1375,8 +1401,10 @@ include::../api/structs/VkDescriptorPoolSize.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorPoolSize.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkDestroyDescriptorPool Destroy a descriptor pool object
|
||||
[open,refpage='vkDestroyDescriptorPool',desc='Destroy a descriptor pool object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a descriptor pool, call:
|
||||
|
||||
@ -1406,17 +1434,20 @@ destroying that descriptor pool.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkDestroyDescriptorPool.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorSet Opaque handle to a descriptor set object
|
||||
[open,refpage='VkDescriptorSet',desc='Opaque handle to a descriptor set object',type='handles']
|
||||
--
|
||||
|
||||
Descriptor sets are allocated from descriptor pool objects, and are
|
||||
represented by sname:VkDescriptorSet handles:
|
||||
|
||||
include::../api/handles/VkDescriptorSet.txt[]
|
||||
|
||||
// refEnd VkDescriptorSet
|
||||
--
|
||||
|
||||
// refBegin vkAllocateDescriptorSets Allocate one or more descriptor sets
|
||||
[open,refpage='vkAllocateDescriptorSets',desc='Allocate one or more descriptor sets',type='protos']
|
||||
--
|
||||
|
||||
To allocate descriptor sets from a descriptor pool, call:
|
||||
|
||||
@ -1487,8 +1518,10 @@ errors are allowed.
|
||||
====
|
||||
|
||||
include::../validity/protos/vkAllocateDescriptorSets.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorSetAllocateInfo Structure specifying the allocation parameters for descriptor sets
|
||||
[open,refpage='VkDescriptorSetAllocateInfo',desc='Structure specifying the allocation parameters for descriptor sets',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDescriptorSetAllocateInfo structure is defined as:
|
||||
|
||||
@ -1521,8 +1554,10 @@ endif::VK_KHR_push_descriptor[]
|
||||
endif::VK_KHR_maintenance1[]
|
||||
|
||||
include::../validity/structs/VkDescriptorSetAllocateInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkFreeDescriptorSets Free one or more descriptor sets
|
||||
[open,refpage='vkFreeDescriptorSets',desc='Free one or more descriptor sets',type='protos']
|
||||
--
|
||||
|
||||
To free allocated descriptor sets, call:
|
||||
|
||||
@ -1557,8 +1592,10 @@ in pname:pDescriptorSets are invalid.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkFreeDescriptorSets.txt[]
|
||||
--
|
||||
|
||||
// refBegin vkResetDescriptorPool Resets a descriptor pool object
|
||||
[open,refpage='vkResetDescriptorPool',desc='Resets a descriptor pool object',type='protos']
|
||||
--
|
||||
|
||||
To return all descriptor sets allocated from a given pool to the pool,
|
||||
rather than freeing individual descriptor sets, call:
|
||||
@ -1581,12 +1618,14 @@ pool, and the descriptor sets are implicitly freed.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkResetDescriptorPool.txt[]
|
||||
--
|
||||
|
||||
|
||||
[[descriptorsets-updates]]
|
||||
=== Descriptor Set Updates
|
||||
|
||||
// refBegin vkUpdateDescriptorSets Update the contents of a descriptor set object
|
||||
[open,refpage='vkUpdateDescriptorSets',desc='Update the contents of a descriptor set object',type='protos']
|
||||
--
|
||||
|
||||
Once allocated, descriptor sets can: be updated with a combination of write
|
||||
and copy operations.
|
||||
@ -1635,8 +1674,10 @@ buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkUpdateDescriptorSets.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkWriteDescriptorSet Structure specifying the parameters of a descriptor set write operation
|
||||
[open,refpage='VkWriteDescriptorSet',desc='Structure specifying the parameters of a descriptor set write operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkWriteDescriptorSet structure is defined as:
|
||||
|
||||
@ -1741,6 +1782,11 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView and
|
||||
pname:imageLayout members of any given element of pname:pImageInfo must:
|
||||
be a valid sname:VkImageView and elink:VkImageLayout, respectively
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01402]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, for
|
||||
each descriptor that will be accessed via load or store operations the
|
||||
pname:imageLayout member for corresponding elements of pname:pImageInfo
|
||||
must: be ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00327]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:offset member
|
||||
@ -1801,6 +1847,13 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageView
|
||||
member of any given element of pname:pImageInfo must: have been created
|
||||
with ename:VK_IMAGE_USAGE_SAMPLED_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageLayout
|
||||
member of any given element of pname:pImageInfo must: be
|
||||
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
|
||||
the pname:imageView member of any given element of pname:pImageInfo
|
||||
@ -1813,8 +1866,10 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkWriteDescriptorSet.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorType Specifies the type of a descriptor in a descriptor set
|
||||
[open,refpage='VkDescriptorType',desc='Specifies the type of a descriptor in a descriptor set',type='enums']
|
||||
--
|
||||
|
||||
The type of descriptors in a descriptor set is specified by
|
||||
slink:VkWriteDescriptorSet::pname:descriptorType, which must: be one of the
|
||||
@ -1842,9 +1897,10 @@ include::../api/enums/VkDescriptorType.txt[]
|
||||
slink:VkDescriptorImageInfo structures will be used to update the
|
||||
descriptors, and other arrays will be ignored.
|
||||
|
||||
// refEnd VkDescriptorType
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorBufferInfo Structure specifying descriptor buffer info
|
||||
[open,refpage='VkDescriptorBufferInfo',desc='Structure specifying descriptor buffer info',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDescriptorBufferInfo structure is defined as:
|
||||
|
||||
@ -1857,13 +1913,12 @@ include::../api/structs/VkDescriptorBufferInfo.txt[]
|
||||
* pname:range is the size in bytes that is used for this descriptor
|
||||
update, or ename:VK_WHOLE_SIZE to use the range from pname:offset to the
|
||||
end of the buffer.
|
||||
+
|
||||
--
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
When using ename:VK_WHOLE_SIZE, the effective range must: not be larger than
|
||||
the maximum range for the descriptor type
|
||||
When setting pname:range to ename:VK_WHOLE_SIZE, the effective range must:
|
||||
not be larger than the maximum range for the descriptor type
|
||||
(<<features-limits-maxUniformBufferRange, maxUniformBufferRange>> or
|
||||
<<features-limits-maxStorageBufferRange, maxStorageBufferRange>>).
|
||||
This means that ename:VK_WHOLE_SIZE is not typically useful in the common
|
||||
@ -1875,7 +1930,6 @@ For ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC and
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor types,
|
||||
pname:offset is the base offset from which the dynamic offset is applied and
|
||||
pname:range is the static size used for all dynamic offsets.
|
||||
--
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
@ -1890,8 +1944,10 @@ pname:range is the static size used for all dynamic offsets.
|
||||
****
|
||||
|
||||
include::../validity/structs/VkDescriptorBufferInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorImageInfo Structure specifying descriptor image info
|
||||
[open,refpage='VkDescriptorImageInfo',desc='Structure specifying descriptor image info',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDescriptorImageInfo structure is defined as:
|
||||
|
||||
@ -1932,8 +1988,10 @@ endif::VK_KHR_maintenance1[]
|
||||
|
||||
|
||||
include::../validity/structs/VkDescriptorImageInfo.txt[]
|
||||
--
|
||||
|
||||
// refBegin VkCopyDescriptorSet Structure specifying a copy descriptor set operation
|
||||
[open,refpage='VkCopyDescriptorSet',desc='Structure specifying a copy descriptor set operation',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkCopyDescriptorSet structure is defined as:
|
||||
|
||||
@ -1975,13 +2033,15 @@ include::../api/structs/VkCopyDescriptorSet.txt[]
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCopyDescriptorSet.txt[]
|
||||
--
|
||||
|
||||
|
||||
ifdef::VK_KHR_descriptor_update_template[]
|
||||
[[descriptorsets-updates-with-template]]
|
||||
=== Descriptor Update Templates
|
||||
|
||||
// refBegin VkDescriptorUpdateTemplateKHR Opaque handle to a descriptor update template
|
||||
[open,refpage='VkDescriptorUpdateTemplateKHR',desc='Opaque handle to a descriptor update template',type='handles']
|
||||
--
|
||||
|
||||
A descriptor update template specifies a mapping from descriptor update
|
||||
information in host memory to descriptors in a descriptor set.
|
||||
@ -1993,11 +2053,12 @@ sname:VkDescriptorUpdateTemplateKHR handles:
|
||||
|
||||
include::../api/handles/VkDescriptorUpdateTemplateKHR.txt[]
|
||||
|
||||
// refEnd VkDescriptorUpdateTemplateKHR
|
||||
--
|
||||
|
||||
=== Descriptor Set Updates with Templates
|
||||
|
||||
// refBegin vkCreateDescriptorUpdateTemplateKHR Create a new descriptor update template
|
||||
[open,refpage='vkCreateDescriptorUpdateTemplateKHR',desc='Create a new descriptor update template',type='protos']
|
||||
--
|
||||
|
||||
Updating a large sname:VkDescriptorSet array can: be an expensive operation
|
||||
since an application must: specify one slink:VkWriteDescriptorSet structure
|
||||
@ -2053,9 +2114,10 @@ endif::VK_KHR_push_descriptor[]
|
||||
|
||||
include::../validity/protos/vkCreateDescriptorUpdateTemplateKHR.txt[]
|
||||
|
||||
// refEnd vkCreateDescriptorUpdateTemplateKHR
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorUpdateTemplateCreateInfoKHR Structure specifying parameters of a newly created descriptor update template
|
||||
[open,refpage='VkDescriptorUpdateTemplateCreateInfoKHR',desc='Structure specifying parameters of a newly created descriptor update template',type='structs']
|
||||
--
|
||||
|
||||
The slink:VkDescriptorUpdateTemplateCreateInfoKHR structure is defined as:
|
||||
include::../api/structs/VkDescriptorUpdateTemplateCreateInfoKHR.txt[]
|
||||
@ -2137,9 +2199,10 @@ endif::VK_KHR_push_descriptor[]
|
||||
|
||||
include::../validity/structs/VkDescriptorUpdateTemplateCreateInfoKHR.txt[]
|
||||
|
||||
// refEnd VkDescriptorUpdateTemplateCreateInfoKHR
|
||||
--
|
||||
|
||||
// refBegin VkDescriptorUpdateTemplateTypeKHR Indicates the valid usage of the descriptor update template
|
||||
[open,refpage='VkDescriptorUpdateTemplateTypeKHR',desc='Indicates the valid usage of the descriptor update template',type='enums']
|
||||
--
|
||||
|
||||
The descriptor update template type is determined by the
|
||||
slink:VkDescriptorUpdateTemplateCreateInfoKHR::pname:templateType property,
|
||||
@ -2156,10 +2219,11 @@ ifdef::VK_KHR_push_descriptor[]
|
||||
updates only.
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
|
||||
// refEnd VkDescriptorUpdateTemplateTypeKHR
|
||||
--
|
||||
|
||||
|
||||
// refBegin VkDescriptorUpdateTemplateEntryKHR Describes a single descriptor update of the descriptor update template
|
||||
[open,refpage='VkDescriptorUpdateTemplateEntryKHR',desc='Describes a single descriptor update of the descriptor update template',type='structs']
|
||||
--
|
||||
|
||||
The sname:VkDescriptorUpdateTemplateEntryKHR structure is defined as:
|
||||
include::../api/structs/VkDescriptorUpdateTemplateEntryKHR.txt[]
|
||||
@ -2204,9 +2268,10 @@ include::../api/structs/VkDescriptorUpdateTemplateEntryKHR.txt[]
|
||||
|
||||
include::../validity/structs/VkDescriptorUpdateTemplateEntryKHR.txt[]
|
||||
|
||||
// refEnd VkDescriptorUpdateTemplateEntryKHR
|
||||
--
|
||||
|
||||
// refBegin vkDestroyDescriptorUpdateTemplateKHR Destroy a descriptor update template object
|
||||
[open,refpage='vkDestroyDescriptorUpdateTemplateKHR',desc='Destroy a descriptor update template object',type='protos']
|
||||
--
|
||||
|
||||
To destroy a descriptor update template, call:
|
||||
|
||||
@ -2232,9 +2297,10 @@ include::../api/protos/vkDestroyDescriptorUpdateTemplateKHR.txt[]
|
||||
|
||||
include::../validity/protos/vkDestroyDescriptorUpdateTemplateKHR.txt[]
|
||||
|
||||
// refEnd vkDestroyDescriptorUpdateTemplateKHR
|
||||
--
|
||||
|
||||
// refBegin vkUpdateDescriptorSetWithTemplateKHR Update the contents of a descriptor set object using an update template
|
||||
[open,refpage='vkUpdateDescriptorSetWithTemplateKHR',desc='Update the contents of a descriptor set object using an update template',type='protos']
|
||||
--
|
||||
|
||||
Once a sname:VkDescriptorUpdateTemplateKHR has been created, descriptor sets
|
||||
can: be updated by calling:
|
||||
@ -2332,7 +2398,7 @@ AppDataStructure appData;
|
||||
vkUpdateDescriptorSetWithTemplateKHR(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);
|
||||
---------------------------------------------------
|
||||
|
||||
// refEnd vkUpdateDescriptorSetWithTemplateKHR
|
||||
--
|
||||
|
||||
endif::VK_KHR_descriptor_update_template[]
|
||||
|
||||
@ -2340,7 +2406,8 @@ endif::VK_KHR_descriptor_update_template[]
|
||||
[[descriptorsets-binding]]
|
||||
=== Descriptor Set Binding
|
||||
|
||||
// refBegin vkCmdBindDescriptorSets Binds descriptor sets to a command buffer
|
||||
[open,refpage='vkCmdBindDescriptorSets',desc='Binds descriptor sets to a command buffer',type='protos']
|
||||
--
|
||||
|
||||
To bind one or more descriptor sets to a command buffer, call:
|
||||
|
||||
@ -2444,13 +2511,15 @@ descriptor set.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdBindDescriptorSets.txt[]
|
||||
--
|
||||
|
||||
|
||||
ifdef::VK_KHR_push_descriptor[]
|
||||
[[descriptorsets-push-descriptors]]
|
||||
=== Push Descriptor Updates
|
||||
|
||||
// refBegin vkCmdPushDescriptorSetKHR Pushes descriptor updates into a command buffer
|
||||
[open,refpage='vkCmdPushDescriptorSetKHR',desc='Pushes descriptor updates into a command buffer',type='protos']
|
||||
--
|
||||
|
||||
In addition to allocating descriptor sets and binding them to a command
|
||||
buffer, an application can: record descriptor updates into the command
|
||||
@ -2538,12 +2607,13 @@ the pipeline layout.
|
||||
|
||||
include::../validity/protos/vkCmdPushDescriptorSetKHR.txt[]
|
||||
|
||||
// refEnd vkCmdPushDescriptorSetKHR
|
||||
--
|
||||
|
||||
ifdef::VK_KHR_descriptor_update_template[]
|
||||
=== Push Descriptor Updates with Descriptor Update Templates
|
||||
|
||||
// refBegin vkCmdPushDescriptorSetWithTemplateKHR Pushes descriptor updates into a command buffer using a descriptor update template
|
||||
[open,refpage='vkCmdPushDescriptorSetWithTemplateKHR',desc='Pushes descriptor updates into a command buffer using a descriptor update template',type='protos']
|
||||
--
|
||||
|
||||
It is also possible to use a descriptor update template to specify the push
|
||||
descriptors to update.
|
||||
@ -2633,7 +2703,7 @@ AppDataStructure appData;
|
||||
vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);
|
||||
---------------------------------------------------
|
||||
|
||||
// refEnd vkCmdPushDescriptorSetWithTemplateKHR
|
||||
--
|
||||
endif::VK_KHR_descriptor_update_template[]
|
||||
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
@ -2657,7 +2727,8 @@ pipelines that is expected to outperform memory-backed resource updates.
|
||||
|
||||
The values of push constants are undefined at the start of a command buffer.
|
||||
|
||||
// refBegin vkCmdPushConstants Update the values of push constants
|
||||
[open,refpage='vkCmdPushConstants',desc='Update the values of push constants',type='protos']
|
||||
--
|
||||
|
||||
To update push constants, call:
|
||||
|
||||
@ -2695,3 +2766,4 @@ include::../api/protos/vkCmdPushConstants.txt[]
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdPushConstants.txt[]
|
||||
--
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user