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:
Jon Leech 2017-06-26 19:32:10 -07:00
parent 1d67e47f14
commit b9e9296cd8
144 changed files with 5843 additions and 1804 deletions

View File

@ -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

View File

@ -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.

View File

@ -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

View 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.

View 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

View 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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*::

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View File

@ -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+

View File

@ -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

View File

@ -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]]

View File

@ -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[]

View File

@ -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

View File

@ -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]]

View File

@ -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.

View File

@ -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[]
--

View File

@ -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}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|====

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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
--

View File

@ -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
--

View File

@ -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[]
--

View File

@ -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
--

View File

@ -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
--

View File

@ -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
--

View File

@ -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
--

View File

@ -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.

View File

@ -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[]
--

View File

@ -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
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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
--

View File

@ -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

View File

@ -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[]
--

View File

@ -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:

View File

@ -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[]

View File

@ -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[]

View File

@ -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

View File

@ -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[]
--

View File

@ -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.

View File

@ -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[]
--

View File

@ -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.

View File

@ -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[]
--

View File

@ -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.

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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[]

View File

@ -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:

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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
--

View File

@ -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[]
--

View File

@ -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[]
--

View File

@ -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
--

View File

@ -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[]
--

View File

@ -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

View File

@ -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[]

View File

@ -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[]
--

View File

@ -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.

View File

@ -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