Change log for January 5, 2018 Vulkan 1.0.67 spec update:

* Bump API patch number and header version number to 67 for this update.
  * Update copyright dates to 2018

Github Issues:

  * Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification
    (public pull request 363).
  * Clarify the state waited semaphores are left in when a call to
    flink:vkQueuePresentKHR fails (public issue 572).
  * Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and
    slink:VkObjectTableDescriptorSetEntryNVX (public issue 583)
  * Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage
    statements (public pull 586).
  * Make dynamic state array length valid usage statements implicit for
    flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and
    flink:vkCmdSetViewport (public pull 589).
  * Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the
    Windows and X11 platforms, in their respective extensions (public issue
    590).
  * Allow flink:vkGetPastPresentationTimingGOOGLE to return
    ename:VK_INCOMPLETE (public issue 604).
  * Add synchronization valid usage statements to flink:vkAcquireNextImage
    (public pull 611).
  * Fix some broken external links and internal xrefs (public pull 613).
  * Clean up slink:VkViewport valid usage statements in the presence or
    absence of relevant extensions (public pull 623).
  * Remove
    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
    token from VK_KHR_maintenance2 from the non-extension VU path for
    slink:VkGraphicsPipelineCreateInfo (public issue 628).
  * Miscellaneous minor markup fixes - extension name strings (public pull
    631), Notes (pull 633), queue names emitted by generator scripts (pull
    634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull
    635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull
    641), quotes and apostrophes (pull 643),
  * Miscellaneous minor grammar fixes (public pull 644).
  * Fix markup macros so usage like ptext:*Src* works (public pull 647).

Internal Issues:

  * Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that
    parameter combinations which aren't supported for normal images are also
    unsupported for presentable images, even if the parameter values are
    individually supported as reported by the surface capability queries
    (internal issue 1029).
  * Fixed XML typo in the valid value field of the pname:sType member of
    slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue
    1100).

Other Issues:

  * Add memory semantics validity rules to the <<spirvenv-module-validation,
    Validation Rules within a Module>> section of the SPIR-V environment
    appendix, and specify that sequentiality consistency is not supported.
    This forbids certain cases like "`Load+Release`" that we don't expect to
    ever be meaningful.
  * Document mapping of OpenGL Shading Language barriers to SPIR-V scope and
    semantics in the `GL_KHR_vulkan_glsl` specification.

New Extensions:

  * `VK_EXT_conservative_rasterization`
This commit is contained in:
Jon Leech 2018-01-05 17:39:15 -08:00
parent 1d38929270
commit b7b1c3a65d
183 changed files with 1189 additions and 451 deletions

View File

@ -8,6 +8,73 @@ public pull requests that have been accepted.
-----------------------------------------------------
Change log for January 5, 2018 Vulkan 1.0.67 spec update:
* Bump API patch number and header version number to 67 for this update.
* Update copyright dates to 2018
Github Issues:
* Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification
(public pull request 363).
* Clarify the state waited semaphores are left in when a call to
flink:vkQueuePresentKHR fails (public issue 572).
* Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and
slink:VkObjectTableDescriptorSetEntryNVX (public issue 583)
* Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage
statements (public pull 586).
* Make dynamic state array length valid usage statements implicit for
flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and
flink:vkCmdSetViewport (public pull 589).
* Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the
Windows and X11 platforms, in their respective extensions (public issue
590).
* Allow flink:vkGetPastPresentationTimingGOOGLE to return
ename:VK_INCOMPLETE (public issue 604).
* Add synchronization valid usage statements to flink:vkAcquireNextImage
(public pull 611).
* Fix some broken external links and internal xrefs (public pull 613).
* Clean up slink:VkViewport valid usage statements in the presence or
absence of relevant extensions (public pull 623).
* Remove
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
token from VK_KHR_maintenance2 from the non-extension VU path for
slink:VkGraphicsPipelineCreateInfo (public issue 628).
* Miscellaneous minor markup fixes - extension name strings (public pull
631), Notes (pull 633), queue names emitted by generator scripts (pull
634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull
635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull
641), quotes and apostrophes (pull 643),
* Miscellaneous minor grammar fixes (public pull 644).
* Fix markup macros so usage like ptext:*Src* works (public pull 647).
Internal Issues:
* Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that
parameter combinations which aren't supported for normal images are also
unsupported for presentable images, even if the parameter values are
individually supported as reported by the surface capability queries
(internal issue 1029).
* Fixed XML typo in the valid value field of the pname:sType member of
slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue
1100).
Other Issues:
* Add memory semantics validity rules to the <<spirvenv-module-validation,
Validation Rules within a Module>> section of the SPIR-V environment
appendix, and specify that sequentiality consistency is not supported.
This forbids certain cases like "`Load+Release`" that we don't expect to
ever be meaningful.
* Document mapping of OpenGL Shading Language barriers to SPIR-V scope and
semantics in the `GL_KHR_vulkan_glsl` specification.
New Extensions:
* `VK_EXT_conservative_rasterization`
-----------------------------------------------------
Change log for November 27, 2017 Vulkan 1.0.66 spec update:
* Bump API patch number and header version number to 66 for this update.

View File

@ -33,8 +33,8 @@ Status
Version
Last Modified Date: 25-Oct-2017
Revision: 43
Last Modified Date: 12-Dec-2017
Revision: 44
Number
@ -426,18 +426,56 @@ Overview
max_vertices -> OutputVertices
Mapping of other instructions
Mapping of barriers
% -> OpUMod/OpSMod
mod() -> OpFMod
N/A -> OpSRem/OpFRem
barrier() (compute) -> OpControlBarrier(/*Execution*/Workgroup,
/*Memory*/Workgroup,
/*Semantics*/AcquireRelease |
WorkgroupMemory)
barrier() (tess control) -> OpControlBarrier(/*Execution*/Workgroup,
/*Memory*/Invocation,
/*Semantics*/None)
memoryBarrier() -> OpMemoryBarrier(/*Memory*/Device,
/*Semantics*/AcquireRelease |
UniformMemory |
WorkgroupMemory |
ImageMemory)
memoryBarrierBuffer() -> OpMemoryBarrier(/*Memory*/Device,
/*Semantics*/AcquireRelease |
UniformMemory)
memoryBarrierShared() -> OpMemoryBarrier(/*Memory*/Device,
/*Semantics*/AcquireRelease |
WorkgroupMemory)
memoryBarrierImage() -> OpMemoryBarrier(/*Memory*/Device,
/*Semantics*/AcquireRelease |
ImageMemory)
groupMemoryBarrier() -> OpMemoryBarrier(/*Memory*/Workgroup,
/*Semantics*/AcquireRelease |
UniformMemory |
WorkgroupMemory |
ImageMemory)
Mapping of atomics
all atomic builtin functions -> Semantics = None(Relaxed)
atomicExchange() -> OpAtomicExchange
imageAtomicExchange() -> OpAtomicExchange
atomicCompSwap() -> OpAtomicCompareExchange
imageAtomicCompSwap() -> OpAtomicCompareExchange
N/A -> OpAtomicCompareExchangeWeak
Mapping of other instructions
% -> OpUMod/OpSMod
mod() -> OpFMod
N/A -> OpSRem/OpFRem
Changes to Chapter 1 of the OpenGL Shading Language Specification
Change the last paragraph of "1.3 Overview": "The OpenGL Graphics System
@ -1404,6 +1442,8 @@ Revision History
Rev. Date Author Changes
---- ----------- ------- --------------------------------------------
44 12-Dec-2017 jbolz Document mapping of barrier/atomic ops to
SPIR-V
43 25-Oct-2017 JohnK remove the already deprecated noise functions
42 07-Jul-2017 JohnK arrays of buffers consume only one binding
41 05-Jul-2017 JohnK allow std430 on push_constant declarations

View File

@ -1,4 +1,4 @@
# Copyright (c) 2014-2017 The Khronos Group Inc.
# Copyright (c) 2014-2018 The Khronos Group Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -92,7 +92,7 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
SPECREVISION = 1.0.66
SPECREVISION = 1.0.67
# Spell out ISO 8601 format as not all date commands support --rfc-3339
SPECDATE = $(shell echo `date -u "+%Y-%m-%d %TZ"`)

View File

@ -44,8 +44,7 @@ None.
=== New SPIR-V Capabilities
* <<spirvenv-capabilities-table-fragmentmaskamd,
code:FragmentMaskAMD>>
* <<spirvenv-capabilities-table-fragmentmaskamd, code:FragmentMaskAMD>>
=== New Structures

View File

@ -0,0 +1,74 @@
include::meta/VK_EXT_conservative_rasterization.txt[]
*Last Modified Data*::
2017-08-28
*Contributors*::
- Daniel Koch, NVIDIA
- Daniel Rakos, AMD
- Jeff Bolz, NVIDIA
- Slawomir Grajewski, Intel
- Stu Smith, Imagination Technologies
This extension adds a new rasterization mode called conservative
rasterization.
There are two modes of conservative rasterization; overestimation and
underestimation.
When overestimation is enabled, if any part of the primitive, including its
edges, covers any part of the rectangular pixel area, including its sides,
then a fragment is generated with all coverage samples turned on.
This extension allows for some variation in implementations by accounting
for differences in overestimation, where the generating primitive size is
increased at each of its edges by some sub-pixel amount to further increase
conservative pixel coverage.
Implementations can allow the application to specify an extra overestimation
beyond the base overestimation the implementation already does.
It also allows implementations to either cull degenerate primitives or
rasterize them.
When underestimation is enabled, fragments are only generated if the
rectangular pixel area is fully covered by the generating primitive.
If supported by the implementation, when a pixel rectangle is fully covered
the fragment shader input variable builtin called FullyCoveredEXT is set to
true.
The shader variable works in either overestimation or underestimation mode.
Implementations can process degenerate triangles and lines by either
discarding them or generating conservative fragments for them.
Degenerate triangles are those that end up with zero area after the
rasterizer quantizes them to the fixed-point pixel grid.
Degenerate lines are those with zero length after quantization.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
** ename:VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
=== New Enums
* elink:VkPipelineRasterizationConservativeStateCreateFlagsEXT
* elink:VkConservativeRasterizationModeEXT
=== New Structures
* slink:VkPhysicalDeviceConservativeRasterizationPropertiesEXT
* slink:VkPipelineRasterizationConservativeStateCreateInfoEXT
=== New Functions
None.
=== Issues
None.
=== Version History
* Revision 1, 2017-08-28 (Piers Daniell)
- Internal revisions

View File

@ -37,16 +37,16 @@ None.
=== Issues
1) Should this extension and its related platform-specific extensions
leverage <<VK_KHR_display>>, or provide separate equivalent interfaces.
leverage `<<VK_KHR_display>>`, or provide separate equivalent interfaces.
*RESOLVED*: Use <<VK_KHR_display>> concepts and objects.
<<VK_KHR_display>> can be used to enumerate all displays on the system,
*RESOLVED*: Use `<<VK_KHR_display>>` concepts and objects.
`<<VK_KHR_display>>` can be used to enumerate all displays on the system,
including those attached to/in use by a window system or native platform,
but <<VK_KHR_display_swapchain>> will fail to create a swapchain on in-use
but `<<VK_KHR_display_swapchain>>` will fail to create a swapchain on in-use
displays.
This extension and its platform-specific children will allow applications to
grab in-use displays away from window systems and/or native platforms,
allowing them to be used with <<VK_KHR_display_swapchain>>.
allowing them to be used with `<<VK_KHR_display_swapchain>>`.
2) Are separate calls needed to acquire displays and enable direct mode?

View File

@ -21,7 +21,7 @@ rejected if the fragment is within any of the operational discard rectangles
These discard rectangles operate orthogonally to the existing scissor test
functionality.
If the <<VK_KHX_device_group>> extension is enabled the discard rectangles
If the `<<VK_KHX_device_group>>` extension is enabled the discard rectangles
can be different for each physical device in the device group by specifying
the device mask and setting discard rectangle dynamic state.

View File

@ -12,7 +12,7 @@ include::meta/VK_EXT_display_control.txt[]
- Daniel Vetter, Intel
This extension defines a set of utility functions for use with the
<<VK_KHR_display>> and <<VK_KHR_display_swapchain>> extensions.
`<<VK_KHR_display>>` and `<<VK_KHR_display_swapchain>>` extensions.
=== New Enum Constants

View File

@ -50,7 +50,7 @@ will be provided by an extension layered atop this one.
This extension provides exactly one new feature: the ability to
import/export between dma_bufs and slink:VkDeviceMemory.
This feature, together with features provided by
<<VK_KHR_external_memory_fd>>, is sufficient to bind a slink:VkBuffer to
`<<VK_KHR_external_memory_fd>>`, is sufficient to bind a slink:VkBuffer to
dma_buf.
--

View File

@ -16,7 +16,7 @@ This extension defines a special queue family,
ename:VK_QUEUE_FAMILY_FOREIGN_EXT, which can be used to transfer ownership
of resources backed by external memory to foreign, external queues.
This is similar to ename:VK_QUEUE_FAMILY_EXTERNAL_KHR, defined in
<<VK_KHR_external_memory>>.
`<<VK_KHR_external_memory>>`.
The key differences between the two are:
* The queues represented by ename:VK_QUEUE_FAMILY_EXTERNAL_KHR must share

View File

@ -44,7 +44,7 @@ ifdef::VK_NV_viewport_array2[]
====
The code:ShaderViewportIndexLayerEXT capability is equivalent to the
code:ShaderViewportIndexLayerNV capability added by
<<VK_NV_viewport_array2>>.
`<<VK_NV_viewport_array2>>`.
====
endif::VK_NV_viewport_array2[]

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -13,9 +13,9 @@ include::meta/VK_GOOGLE_display_timing.txt[]
- Jesse Hall, Google
This device extension allows an application that uses the
<<VK_KHR_swapchain>> extension to obtain information about the presentation
engine's display, to obtain timing information about each present, and to
schedule a present to happen no earlier than a desired time.
`<<VK_KHR_swapchain>>` extension to obtain information about the
presentation engine's display, to obtain timing information about each
present, and to schedule a present to happen no earlier than a desired time.
An application can use this to minimize various visual anomalies (e.g.
stuttering).
@ -68,10 +68,10 @@ None.
[NOTE]
.Note
====
The example code for the this extension (like the <<VK_KHR_surface>> and
<<VK_GOOGLE_display_timing>> extensions) is contained in the cube demo that
is shipped with the official Khronos SDK, and is being kept up-to-date in
that location (see:
The example code for the this extension (like the `<<VK_KHR_surface>>` and
`VK_GOOGLE_display_timing` extensions) is contained in the cube demo that is
shipped with the official Khronos SDK, and is being kept up-to-date in that
location (see:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.c
).
====

View File

@ -1,4 +1,4 @@
// Copyright (c) 2017 Khronos Group. This work is licensed under a
// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -28,7 +28,7 @@ include::meta/VK_KHR_android_surface.txt[]
The `VK_KHR_android_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to an code:ANativeWindow,
the `<<VK_KHR_surface>>` extension) that refers to an code:ANativeWindow,
Android's native surface type.
The code:ANativeWindow represents the producer endpoint of any buffer queue,
regardless of consumer endpoint.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -9,7 +9,7 @@ include::meta/VK_KHR_descriptor_update_template.txt[]
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- Interacts with <<VK_KHR_push_descriptor>>
- Interacts with `<<VK_KHR_push_descriptor>>`
*Contributors*::
- Jeff Bolz, NVIDIA
- Michael Worcester, Imagination Technologies

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -128,7 +128,7 @@ work with which present queues?
*PROPOSED RESOLUTION*: No known hardware has such limitations, but
determining such limitations is supported automatically using the existing
<<VK_KHR_surface>> and <<VK_KHR_swapchain>> query mechanisms.
`<<VK_KHR_surface>>` and `<<VK_KHR_swapchain>>` query mechanisms.
8) Should all presentation need to be done relative to an overlay plane, or
can a display mode + display be used alone to target an output?
@ -232,7 +232,7 @@ creation time, or on a per-present basis.
[NOTE]
.Note
====
The example code for the `VK_KHR_display` and <<VK_KHR_display_swapchain>>
The example code for the `VK_KHR_display` and `<<VK_KHR_display_swapchain>>`
extensions was removed from the appendix after revision 1.0.43.
The display enumeration example code was ported to the cube demo that is
shipped with the official Khronos SDK, and is being kept up-to-date in that

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -91,7 +91,7 @@ use for that image.
[NOTE]
.Note
====
The example code for the <<VK_KHR_display>> and `VK_KHR_display_swapchain`
The example code for the `<<VK_KHR_display>>` and `VK_KHR_display_swapchain`
extensions was removed from the appendix after revision 1.0.43.
The display swapchain creation example code was ported to the cube demo that
is shipped with the official Khronos SDK, and is being kept up-to-date in

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -13,7 +13,7 @@ include::meta/VK_KHR_external_fence.txt[]
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Cass Everitt, Oculus
- Contributors to <<VK_KHR_external_semaphore,VK_KHR_external_semaphore>>
- Contributors to `<<VK_KHR_external_semaphore>>`
An application using external memory may wish to synchronize access to that
memory using fences.
@ -44,5 +44,5 @@ None.
=== Issues
This extension borrows concepts, semantics, and language from
<<VK_KHR_external_semaphore,VK_KHR_external_semaphore>>.
`<<VK_KHR_external_semaphore>>`.
That extension's issues apply equally to this extension.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -13,8 +13,7 @@ include::meta/VK_KHR_external_fence_capabilities.txt[]
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Cass Everitt, Oculus
- Contributors to
<<VK_KHR_external_semaphore_capabilities,VK_KHR_external_semaphore_capablities>>
- Contributors to `<<VK_KHR_external_semaphore_capablities>>`
An application may wish to reference device fences in multiple Vulkan
logical devices or instances, in multiple processes, and/or in multiple

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -13,8 +13,7 @@ include::meta/VK_KHR_external_fence_fd.txt[]
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Cass Everitt, Oculus
- Contributors to
<<VK_KHR_external_semaphore_fd,VK_KHR_external_semaphore_fd>>
- Contributors to `<<VK_KHR_external_semaphore_fd>>`
An application using external memory may wish to synchronize access to that
memory using fences.
@ -47,5 +46,5 @@ None.
=== Issues
This extension borrows concepts, semantics, and language from
<<VK_KHR_external_semaphore_fd,VK_KHR_external_semaphore_fd>>.
`<<VK_KHR_external_semaphore_fd>>`.
That extension's issues apply equally to this extension.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -13,8 +13,7 @@ include::meta/VK_KHR_external_fence_win32.txt[]
- James Jones, NVIDIA
- Jeff Juliano, NVIDIA
- Cass Everitt, Oculus
- Contributors to
<<VK_KHR_external_semaphore_win32,VK_KHR_external_semaphore_win32>>
- Contributors to `<<VK_KHR_external_semaphore_win32>>`
An application using external memory may wish to synchronize access to that
memory using fences.
@ -49,7 +48,7 @@ None.
=== Issues
This extension borrows concepts, semantics, and language from
<<VK_KHR_external_semaphore_win32,VK_KHR_external_semaphore_win32>>.
`<<VK_KHR_external_semaphore_win32>>`.
That extension's issues apply equally to this extension.
1) Should D3D12 fence handle types be supported, like they are for

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -9,8 +9,8 @@ include::meta/VK_KHR_external_memory.txt[]
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- Interacts with <<VK_KHR_dedicated_allocation>>.
- Interacts with <<VK_NV_dedicated_allocation>>.
- Interacts with `<<VK_KHR_dedicated_allocation>>`.
- Interacts with `<<VK_NV_dedicated_allocation>>`.
*Contributors*::
- Jason Ekstrand, Intel
- Ian Elliot, Google
@ -63,7 +63,7 @@ None.
Vulkan instance boundaries?
*RESOLVED*: New device ID fields have been introduced by
<<VK_KHR_external_memory_capabilities>>.
`<<VK_KHR_external_memory_capabilities>>`.
These fields, combined with the existing
slink:VkPhysicalDeviceProperties::pname:driverVersion field can be used to
identify compatible devices across processes, drivers, and APIs.
@ -125,8 +125,8 @@ Options for defining this transition include:
A new structure has the advantage that the type of external transition can
be described in as much detail as necessary.
However, there is not currently a known need for anything beyond
differentiating external vs. internal accesses, so this is likely an
over-engineered solution.
differentiating external vs.
internal accesses, so this is likely an over-engineered solution.
The access flag bit has the advantage that it can be applied at buffer,
image, or global granularity, and semantically it maps pretty well to the
operation being described.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -10,9 +10,9 @@ include::meta/VK_KHR_external_memory_capabilities.txt[]
No known IP claims.
*Interactions and External Dependencies*::
- This extension is written against version 1.0 of the Vulkan API.
- Requires <<VK_KHR_get_physical_device_properties2>>.
- Interacts with <<VK_KHR_dedicated_allocation>>.
- Interacts with <<VK_NV_dedicated_allocation>>.
- Requires `<<VK_KHR_get_physical_device_properties2>>`.
- Interacts with `<<VK_KHR_dedicated_allocation>>`.
- Interacts with `<<VK_NV_dedicated_allocation>>`.
*Contributors*::
- Ian Elliot, Google
- Jesse Hall, Google

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -58,8 +58,9 @@ ifdef::editing-notes[]
[NOTE]
.editing-note
==================
(Jon) This issue refers to a token from `VK_KHR_external_semaphore_win32`,
but there's no dependency or interaction with that extension defined above.
(Jon) This issue refers to a token from
`<<VK_KHR_external_semaphore_win32>>`, but there's no dependency or
interaction with that extension defined above.
==================
endif::editing-notes[]

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2017 Khronos Group. This work is licensed under a
// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -16,9 +16,8 @@ include::meta/VK_KHR_get_surface_capabilities2.txt[]
This extension provides new entry points to query device surface
capabilities in a way that can be easily extended by other extensions,
without introducing any further entry points.
This extension can be considered the <<VK_KHR_surface,VK_KHR_surface>>
equivalent of the <<VK_KHR_get_physical_device_properties2,
VK_KHR_get_physical_device_properties2>> extension.
This extension can be considered the `<<VK_KHR_surface>>` equivalent of the
`<<VK_KHR_get_physical_device_properties2>>` extension.
=== New Object Types
@ -54,7 +53,7 @@ None.
Other alternatives:
* `VK_KHR_surface2`
* One extension, combined with `VK_KHR_get_display_properties2`
* One extension, combined with `<<VK_KHR_get_display_properties2>>`
2) Should additional WSI query functions be extended?

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Intel Corporation
// Copyright (c) 2016-2018 Intel Corporation
include::meta/VK_KHR_image_format_list.txt[]

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -20,8 +20,8 @@ include::meta/VK_KHR_incremental_present.txt[]
- Jeff Bolz, NVIDIA
This device extension extends slink:vkQueuePresentKHR, from the
<<VK_KHR_swapchain>> extension, allowing an application to specify a list of
rectangular, modified regions of each image to present.
`<<VK_KHR_swapchain>>` extension, allowing an application to specify a list
of rectangular, modified regions of each image to present.
This should be used in situations where an application is only changing a
small portion of the presentable images within a swapchain, since it enables
the presentation engine to avoid wasting time presenting parts of the

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -29,8 +29,8 @@ include::meta/VK_KHR_mir_surface.txt[]
The `VK_KHR_mir_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to a Mir surface, as well as a
query to determine support for rendering to the windows desktop.
the `<<VK_KHR_surface>>` extension) that refers to a Mir surface, as well as
a query to determine support for rendering to the windows desktop.
=== New Object Types

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2017 Khronos Group. This work is licensed under a
// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -9,7 +9,7 @@ include::meta/VK_KHR_sampler_ycbcr_conversion.txt[]
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- This extension interacts with <<VK_EXT_debug_report>>
- This extension interacts with `<<VK_EXT_debug_report>>`
*Contributors*::
- Andrew Garrard, Samsung Electronics
- Tobias Hector, Imagination Technologies

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -23,7 +23,7 @@ include::meta/VK_KHR_shared_presentable_image.txt[]
- Cass Everitt, Oculus
- Johannes Van Waveren, Oculus
This extension extends <<VK_KHR_swapchain>> to enable creation of a shared
This extension extends `<<VK_KHR_swapchain>>` to enable creation of a shared
presentable image.
This allows the application to use the image while the presention engine is
accessing it, in order to reduce the latency between rendering and

View File

@ -1,4 +1,4 @@
// Copyright (c) 2017 Khronos Group. This work is licensed under a
// Copyright (c) 2017-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -28,10 +28,10 @@ surface or window objects for use with Vulkan.
It also provides a way to determine whether a queue family in a physical
device supports presenting to particular surface.
Separate extensions for each platform provide the mechanisms for
creating slink:VkSurfaceKHR objects, but once created they may be used in
this and other platform-independent extensions, in particular the
<<VK_KHR_swapchain>> extension.
Separate extensions for each platform provide the mechanisms for creating
slink:VkSurfaceKHR objects, but once created they may be used in this and
other platform-independent extensions, in particular the
`<<VK_KHR_swapchain>>` extension.
=== New Object Types
@ -68,7 +68,7 @@ this and other platform-independent extensions, in particular the
[NOTE]
.Note
====
The example code for the `VK_KHR_surface` and <<VK_KHR_swapchain>>
The example code for the `VK_KHR_surface` and `<<VK_KHR_swapchain>>`
extensions was removed from the appendix after revision 1.0.29.
This WSI example code was ported to the cube demo that is shipped with the
official Khronos SDK, and is being kept up-to-date in that location (see:
@ -94,8 +94,8 @@ section of the desktop they exist on.
2) Should the flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR,
flink:vkGetPhysicalDeviceSurfaceFormatsKHR, and
flink:vkGetPhysicalDeviceSurfacePresentModesKHR functions from
<<VK_KHR_swapchain>> be modified to operate on physical devices and moved to
this extension to implement the resolution of issue 1?
`<<VK_KHR_swapchain>>` be modified to operate on physical devices and moved
to this extension to implement the resolution of issue 1?
*RESOLVED*: No, separate query functions are needed, as the purposes served
are similar but incompatible.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -26,7 +26,7 @@ include::meta/VK_KHR_swapchain.txt[]
- Ray Smith, ARM
The `VK_KHR_swapchain` extension is the device-level companion to the
<<VK_KHR_surface>> extension.
`<<VK_KHR_surface>>` extension.
It introduces slink:VkSwapchainKHR objects, which provide the ability to
present rendering results to a surface.
@ -435,7 +435,7 @@ requirement is only sensible at the swapchain level.
[NOTE]
.Note
====
The example code for the <<VK_KHR_surface>> and `VK_KHR_swapchain`
The example code for the `<<VK_KHR_surface>>` and `VK_KHR_swapchain`
extensions was removed from the appendix after revision 1.0.29.
This WSI example code was ported to the cube demo that is shipped with the
official Khronos SDK, and is being kept up-to-date in that location (see:

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -28,9 +28,9 @@ include::meta/VK_KHR_wayland_surface.txt[]
The `VK_KHR_wayland_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to a Wayland code:wl_surface,
as well as a query to determine support for rendering to a Wayland
compositor.
the `<<VK_KHR_surface>>` extension) that refers to a Wayland
code:wl_surface, as well as a query to determine support for rendering to a
Wayland compositor.
=== New Object Types

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -28,8 +28,8 @@ include::meta/VK_KHR_win32_surface.txt[]
The `VK_KHR_win32_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to a Win32 code:HWND, as well
as a query to determine support for rendering to the windows desktop.
the `<<VK_KHR_surface>>` extension) that refers to a Win32 code:HWND, as
well as a query to determine support for rendering to the windows desktop.
=== New Object Types

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -28,7 +28,7 @@ include::meta/VK_KHR_xcb_surface.txt[]
The `VK_KHR_xcb_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to an X11 code:Window, using
the `<<VK_KHR_surface>>` extension) that refers to an X11 code:Window, using
the XCB client-side library, as well as a query to determine support for
rendering via XCB.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -28,7 +28,7 @@ include::meta/VK_KHR_xlib_surface.txt[]
The `VK_KHR_xlib_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to an X11 code:Window, using
the `<<VK_KHR_surface>>` extension) that refers to an X11 code:Window, using
the Xlib client-side library, as well as a query to determine support for
rendering via Xlib.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -14,7 +14,7 @@ include::meta/VK_KHX_device_group.txt[]
This extension provides functionality to use a logical device that consists
of multiple physical devices, as created with the
<<VK_KHX_device_group_creation>> extension.
`<<VK_KHX_device_group_creation>>` extension.
A device group can allocate memory across the subdevices, bind memory from
one subdevice to a resource on another subdevice, record command buffers
where some work executes on an arbitrary subset of the subdevices, and

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -15,7 +15,7 @@ This extension provides instance-level commands to enumerate groups of
physical devices, and to create a logical device from a subset of one of
those groups.
Such a logical device can then be used with new features in the
<<VK_KHX_device_group>> extension.
`<<VK_KHX_device_group>>` extension.
=== New Object Types

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 The Brenwill Workshop Ltd. This work is licensed under a
// Copyright (c) 2015-2018 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/
@ -13,7 +13,7 @@ include::meta/VK_MVK_ios_surface.txt[]
The `VK_MVK_ios_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to a code:UIView, the native
the `<<VK_KHR_surface>>` extension) that refers to a code:UIView, the native
surface type of iOS, which is underpinned by a code:CAMetalLayer, to support
rendering to the surface using Apple's Metal framework.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 The Brenwill Workshop Ltd. This work is licensed under a
// Copyright (c) 2015-2018 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/
@ -13,9 +13,9 @@ include::meta/VK_MVK_macos_surface.txt[]
The `VK_MVK_macos_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) that refers to an code:NSView, the native
surface type of macOS, which is underpinned by a code:CAMetalLayer, to
support rendering to the surface using Apple's Metal framework.
the `<<VK_KHR_surface>>` extension) that refers to an code:NSView, the
native surface type of macOS, which is underpinned by a code:CAMetalLayer,
to support rendering to the surface using Apple's Metal framework.
=== New Object Types

View File

@ -12,7 +12,7 @@ include::meta/VK_NN_vi_surface.txt[]
The `VK_NN_vi_surface` extension is an instance extension.
It provides a mechanism to create a slink:VkSurfaceKHR object (defined by
the <<VK_KHR_surface>> extension) associated with an
the `<<VK_KHR_surface>>` extension) associated with an
code:nn::code:vi::code:Layer.
=== New Object Types

View File

@ -150,9 +150,8 @@ Extending elink:VkAccessFlagBits:
As usual, one of the hardest issues ;)
Alternatives:
`VK_gpu_commands`, `VK_execute_commands`, `VK_device_commands`,
`VK_device_execute_commands`, `VK_device_execute`,
Alternatives: `VK_gpu_commands`, `VK_execute_commands`,
`VK_device_commands`, `VK_device_execute_commands`, `VK_device_execute`,
`VK_device_created_commands`, `VK_device_recorded_commands`,
`VK_device_generated_commands`
@ -164,9 +163,9 @@ They also benefit from being processable in parallel.
3) How to name sequence description
stext:ExecuteCommandSignature is a bit long. Maybe just
stext:ExecuteSignature, or actually more following Vulkan nomenclature:
slink:VkIndirectCommandsLayoutNVX.
stext:ExecuteCommandSignature is a bit long.
Maybe just stext:ExecuteSignature, or actually more following Vulkan
nomenclature: slink:VkIndirectCommandsLayoutNVX.
4) Do we want to provide code:indirectCommands inputs with layout or at
code:indirectCommands time?

View File

@ -10,7 +10,7 @@ include::meta/VK_NVX_multiview_per_view_attributes.txt[]
SPIR-V extension.
- This extension requires the +GL_NVX_multiview_per_view_attributes+
extension for GLSL source languages.
- This extension interacts with <<VK_NV_viewport_array2>>.
- This extension interacts with `<<VK_NV_viewport_array2>>`.
*Contributors*::
- Jeff Bolz, NVIDIA
- Daniel Koch, NVIDIA
@ -41,8 +41,8 @@ gl_PositionPerViewNV[gl_ViewIndex]` for all views in the subpass.
Implementations are free to either use the per-view outputs or the
non-per-view outputs, whichever would be more efficient.
If <<VK_NV_viewport_array2>> is not also supported and enabled, the per-view
viewport mask must: not be used.
If `<<VK_NV_viewport_array2>>` is not also supported and enabled, the
per-view viewport mask must: not be used.
=== New Object Types

View File

@ -5,8 +5,8 @@ include::meta/VK_NV_external_memory_capabilities.txt[]
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- Interacts with <<VK_KHR_dedicated_allocation>>.
- Interacts with <<VK_NV_dedicated_allocation>>.
- Interacts with `<<VK_KHR_dedicated_allocation>>`.
- Interacts with `<<VK_NV_dedicated_allocation>>`.
*Contributors*::
- James Jones, NVIDIA

View File

@ -52,8 +52,8 @@ ifdef::VK_EXT_shader_viewport_index_layer[]
.Note
====
The code:ShaderViewportIndexLayerNV capability is equivalent to the
code:ShaderViewportIndexLayerEXT capability added by
<<VK_EXT_shader_viewport_index_layer,VK_EXT_shader_viewport_index_layer>>.
code:ShaderViewportIndexLayerEXT capability added by
`<<VK_EXT_shader_viewport_index_layer>>`.
====
endif::VK_EXT_shader_viewport_index_layer[]

View File

@ -59,7 +59,7 @@ must happen prior to the viewport transform.
In particular, it needs to be performed before clipping and perspective
division.
The viewport mask expansion (<<VK_NV_viewport_array2>>) and the viewport
The viewport mask expansion (`<<VK_NV_viewport_array2>>`) and the viewport
swizzle could potentially be performed before or after transform feedback,
but feeding back several viewports worth of primitives with different
swizzles doesn't seem particularly useful.
@ -67,8 +67,8 @@ This specification applies the viewport mask and swizzle after transform
feedback, and makes primitive queries only count each primitive once.
2) Any interesting examples of how this extension,
<<VK_NV_viewport_array2>>, and <<VK_NV_geometry_shader_passthrough>> can be
used together in practice?
`<<VK_NV_viewport_array2>>`, and `<<VK_NV_geometry_shader_passthrough>>` can
be used together in practice?
**RESOLVED**: One interesting use case for this extension is for single-pass
rendering to a cubemap.
@ -164,9 +164,9 @@ Each face also has a separate swizzle, programmed via the
slink:VkPipelineViewportSwizzleStateCreateInfoNV pipeline state.
The viewport swizzle feature performs the coordinate transformation handled
by the code:rotate() function in the original shader.
The code:viewport_relative layout qualifier says that the viewport number
(0 to 5) is added to the base code:gl_Layer value of 0 to determine which
layer (cube face) the primitive should be sent to.
The code:viewport_relative layout qualifier says that the viewport number (0
to 5) is added to the base code:gl_Layer value of 0 to determine which layer
(cube face) the primitive should be sent to.
Note that the use of the passed through input code:normal in this example
suggests that the fragment shader in this example would perform an operation

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -103,6 +103,9 @@ include::../api/flags/VkPipelineDynamicStateCreateFlags.txt[]
include::../api/flags/VkPipelineInputAssemblyStateCreateFlags.txt[]
include::../api/flags/VkPipelineLayoutCreateFlags.txt[]
include::../api/flags/VkPipelineMultisampleStateCreateFlags.txt[]
ifdef::VK_EXT_conservative_rasterization[]
include::../api/flags/VkPipelineRasterizationConservativeStateCreateFlagsEXT.txt[]
endif::VK_EXT_conservative_rasterization[]
include::../api/flags/VkPipelineRasterizationStateCreateFlags.txt[]
include::../api/flags/VkPipelineShaderStageCreateFlags.txt[]
include::../api/flags/VkPipelineStageFlags.txt[]
@ -353,13 +356,13 @@ typedef <return_type> (VKAPI_PTR *PFN_<command_name>)(<command_parameters>);
=== Platform-Specific Header Control
// @refBegin VK_NO_STDINT_H Control definition of +<stdint.h>+ types
// @refBegin VK_NO_STDINT_H Control definition of <stdint.h> types
If the dname:VK_NO_STDINT_H macro is defined by the application at compile
time, extended integer types used by `vulkan.h`, such as code:uint8_t, must:
also be defined by the application.
Otherwise, `vulkan.h` will not compile.
If dname:VK_NO_STDINT_H is not defined, the system `+<stdint.h>+` is used to
If dname:VK_NO_STDINT_H is not defined, the system `<stdint.h>` is used to
define these types, or there is a fallback path when Microsoft Visual Studio
version 2008 and earlier versions are detected at compile time.
@ -389,20 +392,20 @@ the macro is ``#define``d are shown in the
[options="header"]
|====
| Extension Name | Required Compile Time Symbol | Window System Name | External Header Files Used
| <<VK_KHR_android_surface>> | dname:VK_USE_PLATFORM_ANDROID_KHR | Android Native | `+<android/native_window.h>+`
| <<VK_KHR_mir_surface>> | dname:VK_USE_PLATFORM_MIR_KHR | Mir | `+<mir_toolkit/client_types.h>+`
| <<VK_KHR_wayland_surface>> | dname:VK_USE_PLATFORM_WAYLAND_KHR | Wayland | `+<wayland-client.h>+`
| <<VK_KHR_win32_surface>> | dname:VK_USE_PLATFORM_WIN32_KHR | Microsoft Windows | `+<windows.h>+`
| <<VK_KHR_xcb_surface>> | dname:VK_USE_PLATFORM_XCB_KHR | X Window System Xcb library | `+<xcb/xcb.h>+`
| <<VK_KHR_xlib_surface>> | dname:VK_USE_PLATFORM_XLIB_KHR | X Window System Xlib library | `+<X11/Xlib.h>+`
| `<<VK_KHR_android_surface>>` | dname:VK_USE_PLATFORM_ANDROID_KHR | Android Native | `<android/native_window.h>`
| `<<VK_KHR_mir_surface>>` | dname:VK_USE_PLATFORM_MIR_KHR | Mir | `<mir_toolkit/client_types.h>`
| `<<VK_KHR_wayland_surface>>` | dname:VK_USE_PLATFORM_WAYLAND_KHR | Wayland | `<wayland-client.h>`
| `<<VK_KHR_win32_surface>>` | dname:VK_USE_PLATFORM_WIN32_KHR | Microsoft Windows | `<windows.h>`
| `<<VK_KHR_xcb_surface>>` | dname:VK_USE_PLATFORM_XCB_KHR | X Window System Xcb library | `<xcb/xcb.h>`
| `<<VK_KHR_xlib_surface>>` | dname:VK_USE_PLATFORM_XLIB_KHR | X Window System Xlib library | `<X11/Xlib.h>`
ifdef::VK_MVK_ios_surface[]
| <<VK_MVK_ios_surface>> | dname:VK_USE_PLATFORM_IOS_MVK | iOS | None
| `<<VK_MVK_ios_surface>>` | dname:VK_USE_PLATFORM_IOS_MVK | iOS | None
endif::VK_MVK_ios_surface[]
ifdef::VK_MVK_macos_surface[]
| <<VK_MVK_macos_surface>> | dname:VK_USE_PLATFORM_MACOS_MVK | macOS | None
| `<<VK_MVK_macos_surface>>` | dname:VK_USE_PLATFORM_MACOS_MVK | macOS | None
endif::VK_MVK_macos_surface[]
ifdef::VK_NN_vi_surface[]
| <<VK_NN_vi_surface>> | dname:VK_USE_PLATFORM_VI_NN | VI | None
| `<<VK_NN_vi_surface>>` | dname:VK_USE_PLATFORM_VI_NN | VI | None
endif::VK_NN_vi_surface[]
|====

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -262,6 +262,10 @@ ifdef::VK_EXT_blend_operation_advanced[]
include::VK_EXT_blend_operation_advanced.txt[]
endif::VK_EXT_blend_operation_advanced[]
ifdef::VK_EXT_conservative_rasterization[]
include::VK_EXT_conservative_rasterization.txt[]
endif::VK_EXT_conservative_rasterization[]
ifdef::VK_EXT_debug_marker[]
include::VK_EXT_debug_marker.txt[]
endif::VK_EXT_debug_marker[]

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -29,7 +29,7 @@ Adjacent Vertex::
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.
the `<<VK_EXT_blend_operation_advanced>>` extension.
See <<framebuffer-blend-advanced, Advanced Blending Operations>>.
endif::VK_EXT_blend_operation_advanced[]

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -79,7 +79,7 @@ to that feature must: also be supported.
| code:MultiViewport | <<features-features-multiViewport,multiViewport>>
ifdef::VK_KHR_shader_draw_parameters[]
[[spirvenv-capabilities-table-drawparameters]]
| code:DrawParameters | <<VK_KHR_shader_draw_parameters,VK_KHR_shader_draw_parameters>>
| code:DrawParameters | `<<VK_KHR_shader_draw_parameters>>`
endif::VK_KHR_shader_draw_parameters[]
ifdef::VK_KHR_variable_pointers[]
[[spirvenv-capabilities-table-variablepointers]]
@ -88,56 +88,56 @@ ifdef::VK_KHR_variable_pointers[]
endif::VK_KHR_variable_pointers[]
ifdef::VK_EXT_shader_stencil_export[]
[[spirvenv-capabilities-table-shaderstencilexportext]]
| code:StencilExportEXT | <<VK_EXT_shader_stencil_export,VK_EXT_shader_stencil_export>>
| code:StencilExportEXT | `<<VK_EXT_shader_stencil_export>>`
endif::VK_EXT_shader_stencil_export[]
ifdef::VK_EXT_shader_subgroup_ballot[]
[[spirvenv-capabilities-table-subgroupballot]]
| code:SubgroupBallotKHR | <<VK_EXT_shader_subgroup_ballot,VK_EXT_shader_subgroup_ballot>>
| code:SubgroupBallotKHR | `<<VK_EXT_shader_subgroup_ballot>>`
endif::VK_EXT_shader_subgroup_ballot[]
ifdef::VK_EXT_shader_subgroup_vote[]
[[spirvenv-capabilities-table-subgroupvote]]
| code:SubgroupVoteKHR | <<VK_EXT_shader_subgroup_vote,VK_EXT_shader_subgroup_vote>>
| code:SubgroupVoteKHR | `<<VK_EXT_shader_subgroup_vote>>`
endif::VK_EXT_shader_subgroup_vote[]
ifdef::VK_KHX_multiview[]
[[spirvenv-capabilities-table-multiview]]
| code:MultiView | <<VK_KHX_multiview,VK_KHX_multiview>>
| code:MultiView | `<<VK_KHX_multiview>>`
endif::VK_KHX_multiview[]
ifdef::VK_KHX_device_group[]
[[spirvenv-capabilities-table-devicegroup]]
| code:DeviceGroup | <<VK_KHX_device_group,VK_KHX_device_group>>
| code:DeviceGroup | `<<VK_KHX_device_group>>`
endif::VK_KHX_device_group[]
ifdef::VK_AMD_shader_image_load_store_lod[]
[[spirvenv-capabilities-table-imagereadwritelodamd]]
| code:ImageReadWriteLodAMD | <<VK_AMD_shader_image_load_store_lod,VK_AMD_shader_image_load_store_lod>>
| code:ImageReadWriteLodAMD | `<<VK_AMD_shader_image_load_store_lod>>`
endif::VK_AMD_shader_image_load_store_lod[]
ifdef::VK_AMD_texture_gather_bias_lod[]
[[spirvenv-capabilities-table-imagegatherbiaslodamd]]
| code:ImageGatherBiasLodAMD | <<VK_AMD_texture_gather_bias_lod,VK_AMD_texture_gather_bias_lod>>
| code:ImageGatherBiasLodAMD | `<<VK_AMD_texture_gather_bias_lod>>`
endif::VK_AMD_texture_gather_bias_lod[]
ifdef::VK_AMD_shader_fragment_mask[]
[[spirvenv-capabilities-table-fragmentmaskamd]]
| code:FragmentMaskAMD | <<VK_AMD_shader_fragment_mask,VK_AMD_shader_fragment_mask>>
| code:FragmentMaskAMD | `<<VK_AMD_shader_fragment_mask>>`
endif::VK_AMD_shader_fragment_mask[]
ifdef::VK_NV_sample_mask_override_coverage[]
[[spirvenv-capabilities-table-samplemaskoverridecoverage]]
| code:SampleMaskOverrideCoverageNV | <<VK_NV_sample_mask_override_coverage,VK_NV_sample_mask_override_coverage>>
| code:SampleMaskOverrideCoverageNV | `<<VK_NV_sample_mask_override_coverage>>`
endif::VK_NV_sample_mask_override_coverage[]
ifdef::VK_NV_geometry_shader_passthrough[]
[[spirvenv-capabilities-table-geometryshaderpassthrough]]
| code:GeometryShaderPassthroughNV | <<VK_NV_geometry_shader_passthrough,VK_NV_geometry_shader_passthrough>>
| code:GeometryShaderPassthroughNV | `<<VK_NV_geometry_shader_passthrough>>`
endif::VK_NV_geometry_shader_passthrough[]
ifdef::VK_EXT_shader_viewport_index_layer[]
[[spirvenv-capabilities-table-shader-viewport-index-layer]]
| code:ShaderViewportIndexLayerEXT | <<VK_EXT_shader_viewport_index_layer,VK_EXT_shader_viewport_index_layer>>
| code:ShaderViewportIndexLayerEXT | `<<VK_EXT_shader_viewport_index_layer>>`
endif::VK_EXT_shader_viewport_index_layer[]
ifdef::VK_NV_viewport_array2[]
[[spirvenv-capabilities-table-viewportarray2]]
| code:ShaderViewportIndexLayerNV | <<VK_NV_viewport_array2,VK_NV_viewport_array2>>
| code:ShaderViewportMaskNV | <<VK_NV_viewport_array2,VK_NV_viewport_array2>>
| code:ShaderViewportIndexLayerNV | `<<VK_NV_viewport_array2>>`
| code:ShaderViewportMaskNV | `<<VK_NV_viewport_array2>>`
endif::VK_NV_viewport_array2[]
ifdef::VK_NVX_multiview_per_view_attributes[]
[[spirvenv-capabilities-table-perviewattributes]]
| code:PerViewAttributesNV | <<VK_NVX_multiview_per_view_attributes,VK_NVX_multiview_per_view_attributes>>
| code:PerViewAttributesNV | `<<VK_NVX_multiview_per_view_attributes>>`
endif::VK_NVX_multiview_per_view_attributes[]
ifdef::VK_KHR_16bit_storage[]
[[spirvenv-capabilities-table-16bitstorage]]
@ -148,7 +148,7 @@ ifdef::VK_KHR_16bit_storage[]
endif::VK_KHR_16bit_storage[]
ifdef::VK_EXT_post_depth_coverage[]
[[spirvenv-capabilities-table-postdepthcoverage]]
| code:SampleMaskPostDepthCoverage | <<VK_EXT_post_depth_coverage,VK_EXT_post_depth_coverage>>
| code:SampleMaskPostDepthCoverage | `<<VK_EXT_post_depth_coverage>>`
endif::VK_EXT_post_depth_coverage[]
|====
@ -305,6 +305,20 @@ following rules:
ifdef::VK_KHR_storage_buffer_storage_class[]
** *StorageBuffer*
endif::VK_KHR_storage_buffer_storage_class[]
* Memory semantics must: obey the following rules:
** *Acquire* must: not be used with code:OpAtomicStore.
** *Release* must: not be used with code:OpAtomicLoad.
** *AcquireRelease* must: not be used with code:OpAtomicStore or
code:OpAtomicLoad.
** Sequentially consistent atomics and barriers are not supported and
*SequentiallyConsistent* is treated as *AcquireRelease*.
*SequentiallyConsistent* should: not be used.
** code:OpMemoryBarrier must: not use *None* and must: include at least
one storage class.
** If the semantics for code:OpControlBarrier is not *None*, then it must:
include at least one storage class.
** *SubgroupMemory*, *CrossWorkgroupMemory*, and *AtomicCounterMemory* are
ignored.
* Any code:OpVariable with an code:Initializer operand must: have one of
the following as its code:Storage code:Class operand:
** *Output*

View File

@ -2,7 +2,7 @@
[open,refpage='VkPresentTimesInfoGOOGLE',desc='The earliest time each image should be presented',type='structs']
--
When the <<VK_GOOGLE_display_timing>> extension is enabled, additional
When the `<<VK_GOOGLE_display_timing>>` extension is enabled, additional
fields can: be specified that allow an application to specify the earliest
time that an image should be displayed.
This allows an application to avoid stutter that is caused by an image being

View File

@ -1,4 +1,4 @@
// Copyright (c) 2016-2017 Google Inc. This work is licensed under a
// Copyright (c) 2016-2018 Google Inc. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -29,7 +29,7 @@ Applications also need to tell the presentation engine to display an image
no sooner than a given time.
This can allow the application's animation to look smooth to the user, with
no stuttering.
The <<VK_GOOGLE_display_timing>> extension allows an application to satisfy
The `VK_GOOGLE_display_timing` extension allows an application to satisfy
these needs.
The presentation engine's display typically refreshes the pixels that are
@ -213,7 +213,7 @@ satisfactory.
--
The full <<VK_GOOGLE_display_timing>> extension semantics are described for
The full `VK_GOOGLE_display_timing` extension semantics are described for
swapchains created with ename:VK_PRESENT_MODE_FIFO_KHR.
For example, non-zero values of
sname:VkPresentTimeGOOGLE::pname:desiredPresentTime must: be honored, and

View File

@ -1,7 +1,7 @@
[open,refpage='VkPhysicalDevice16BitStorageFeaturesKHR',desc='Structure describing features supported by VK_KHR_16bit_storage',type='structs']
--
To query features additionally supported by the <<VK_KHR_16bit_storage>>
To query features additionally supported by the `<<VK_KHR_16bit_storage>>`
extension, call flink:vkGetPhysicalDeviceFeatures2KHR with a
sname:VkPhysicalDevice16BitStorageFeaturesKHR structure included in the
pname:pNext chain of its pname:pFeatures parameter.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -10,7 +10,7 @@ In some environments applications can: also present Vulkan rendering
directly to display devices without using an intermediate windowing system.
This can: be useful for embedded applications, or implementing the
rendering/presentation backend of a windowing system using Vulkan.
The <<VK_KHR_display>> extension provides the functionality necessary to
The `VK_KHR_display` extension provides the functionality necessary to
enumerate display devices and create sname:VkSurfaceKHR objects that target
displays.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -7,7 +7,7 @@
[open,refpage='vkCreateSharedSwapchainsKHR',desc='Create multiple swapchains that share presentable images',type='protos']
--
When the <<VK_KHR_display_swapchain>> extension is enabled, multiple
When the `VK_KHR_display_swapchain` extension is enabled, multiple
swapchains that share presentable images are created by calling:
include::../../api/protos/vkCreateSharedSwapchainsKHR.txt[]

View File

@ -1,10 +1,10 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 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]]
When the <<VK_KHR_display_swapchain>> extension is enabled additional fields
When the `VK_KHR_display_swapchain` extension is enabled additional fields
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.

View File

@ -1,11 +1,11 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
[open,refpage='VkPresentRegionsKHR',desc='Structure hint of rectangular regions changed by vkQueuePresentKHR',type='structs']
--
When the <<VK_KHR_incremental_present>> extension is enabled, additional
When the `VK_KHR_incremental_present` extension is enabled, additional
fields can: be specified that allow an application to specify that only
certain rectangular regions of the presentable images of a swapchain are
changed.

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -38,7 +38,7 @@ they are intended for.
[NOTE]
.Note
====
The <<VK_KHR_shared_presentable_image>> extension does not provide
The `VK_KHR_shared_presentable_image` extension does not provide
functionality for determining the timing of the presentation engine's
refresh cycles.
====

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -46,7 +46,7 @@ which are represented by sname:VkSurfaceKHR handles:
include::../../api/handles/VkSurfaceKHR.txt[]
The <<VK_KHR_surface>> extension declares the sname:VkSurfaceKHR object, and
The `VK_KHR_surface` extension declares the sname:VkSurfaceKHR object, and
provides a function for destroying sname:VkSurfaceKHR objects.
Separate platform-specific extensions each provide a function for creating a
sname:VkSurfaceKHR object for the respective platform.
@ -121,7 +121,7 @@ endif::VK_NN_vi_surface[]
=== Platform-Independent Information
Once created, sname:VkSurfaceKHR objects can: be used in this and other
extensions, in particular the <<VK_KHR_swapchain>> extension.
extensions, in particular the `<<VK_KHR_swapchain>>` extension.
Several WSI functions return ename:VK_ERROR_SURFACE_LOST_KHR if the surface
becomes no longer available.
@ -249,6 +249,18 @@ endif::VK_NN_vi_surface[]
== Surface Queries
The capabilities of a swapchain targetting a surface are the intersection of
the capabilities of the WSI platform, the native window or display, and the
physical device.
The resulting capabilities can be obtained with the queries listed below in
this section.
Capabilities that correspond to image creation parameters are not
independent of each other: combinations of parameters that are not supported
as reported by flink:vkGetPhysicalDeviceImageFormatProperties are not
supported by the surface on that physical device, even if the capabilities
taken individually are supported as part of some other parameter
combinations.
[open,refpage='vkGetPhysicalDeviceSurfaceCapabilitiesKHR',desc='Query surface capabilities',type='protos']
--
@ -290,6 +302,10 @@ include::../../api/structs/VkSurfaceCapabilitiesKHR.txt[]
the surface.
* pname:minImageExtent contains the smallest valid swapchain extent for
the surface on the specified device.
The pname:width and pname:height of the extent will each be less than or
equal to the corresponding pname:width and pname:height of
pname:currentExtent, unless pname:currentExtent has the special value
described above.
* pname:maxImageExtent contains the largest valid swapchain extent for the
surface on the specified device.
The pname:width and pname:height of the extent will each be greater than
@ -892,7 +908,7 @@ In this case, the application can: use any valid elink:VkFormat value.
[NOTE]
.Note
====
In the initial release of the <<VK_KHR_surface>> and <<VK_KHR_swapchain>>
In the initial release of the `VK_KHR_surface` and `<<VK_KHR_swapchain>>`
extensions, the token ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR was used.
Starting in the 2016-05-13 updates to the extension branches, matching
release 1.0.13 of the core API specification,

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -131,17 +131,10 @@ include::../../api/structs/VkSwapchainCreateInfoKHR.txt[]
[NOTE]
.Note
====
During some situations, sname:VkSwapchainKHR cannot: be created because of
the Valid Usage of the pname:imageExtent parameter.
The flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR may: return in
slink:VkSurfaceCapabilitiesKHR a pname:currentExtent that has the
pname:width and/or pname:height equal to 0, or that is less than its
counterpart in pname:minImageExtent.
Similarly, pname:maxImageExtent may: also have 0 values for pname:width
and/or pname:height.
For example, on some platforms that may: happen while an associated window
is minimized.
On some platforms, it is normal that pname:maxImageExtent may: become `(0,
0)`, for example when the window is minimized.
In such a case, it is not possible to create a swapchain due to the Valid
Usage requirements.
====
* pname:imageArrayLayers is the number of views in a multiview/stereo
@ -227,7 +220,7 @@ E.g., an application may present an image from the old swapchain before an
image from the new swapchain is ready to be presented.
As usual, flink:vkQueuePresentKHR may: fail if sname:oldSwapchain has
entered a state that causes ename:VK_ERROR_OUT_OF_DATE_KHR to be returned.
ifdef::VK_KHR_shared_presentable_image[]
The application can: continue to use a shared presentable image obtained
from pname:oldSwapchain until a presentable image is acquired from the new
@ -347,6 +340,11 @@ ifdef::VK_KHX_device_group[]
endif::VK_KHX_device_group[]
* [[VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01674]]
pname:oldSwapchain must: not be in the retired state
* [[VUID-VkSwapchainCreateInfoKHR-imageFormat-01778]]
pname:imageFormat, pname:imageUsage, pname:imageExtent, and
pname:imageArrayLayers must: be supported for ename:VK_IMAGE_TYPE_2D
ename:VK_IMAGE_TILING_OPTIMAL images as reported by
flink:vkGetPhysicalDeviceImageFormatProperties.
****
@ -612,13 +610,15 @@ include::../../api/protos/vkAcquireNextImageKHR.txt[]
pname:swapchain must: not be in the retired state
* [[VUID-vkAcquireNextImageKHR-semaphore-01286]]
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
* If pname:semaphore is not dlink:VK_NULL_HANDLE it must: not have any
* [[VUID-vkAcquireNextImageKHR-semaphore-01779]]
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: not have any
uncompleted signal or wait operations pending
* [[VUID-vkAcquireNextImageKHR-fence-01287]]
If pname:fence is not dlink:VK_NULL_HANDLE it must: be unsignaled and
must: not be associated with any other queue command that has not yet
completed execution on that queue
* pname:semaphore and pname:fence must: not both be equal to
* [[VUID-vkAcquireNextImageKHR-semaphore-01780]]
pname:semaphore and pname:fence must: not both be equal to
dlink:VK_NULL_HANDLE
****
@ -919,13 +919,15 @@ succeeds, which the other physical device(s) can: wait upon.
pname:swapchain must: not be in the retired state
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01288]]
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
* If pname:semaphore is not dlink:VK_NULL_HANDLE it must: not have any
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01781]]
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: not have any
uncompleted signal or wait operations pending
* [[VUID-VkAcquireNextImageInfoKHX-fence-01289]]
If pname:fence is not dlink:VK_NULL_HANDLE it must: be unsignaled and
must: not be associated with any other queue command that has not yet
completed execution on that queue
* pname:semaphore and pname:fence must: not both be equal to
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01782]]
pname:semaphore and pname:fence must: not both be equal to
dlink:VK_NULL_HANDLE
* [[VUID-VkAcquireNextImageInfoKHX-deviceMask-01290]]
pname:deviceMask must: be a valid device mask
@ -985,6 +987,29 @@ This automatic visibility operation for an image happens-after the semaphore
signal operation, and happens-before the presentation engine accesses the
image.
Queueing an image for presentation defines a set of _queue operations_,
including waiting on the semaphores and submitting a presentation request to
the presentation engine.
However, the scope of this set of queue operations does not include the
actual processing of the image by the presentation engine.
If fname:vkQueuePresentKHR fails to enqueue the corresponding set of queue
operations, it may: return ename:VK_ERROR_OUT_OF_HOST_MEMORY or
ename:VK_ERROR_OUT_OF_DEVICE_MEMORY.
If it does, the implementation must: ensure that the state and contents of
any resources or synchronization primitives referenced is unaffected by the
call or its failure.
If fname:vkQueuePresentKHR fails in such a way that the implementation can:
not make that guarantee, the implementation must: return
ename:VK_ERROR_DEVICE_LOST.
However, if the presentation request is rejected by the presentation engine
with an error ename:VK_ERROR_OUT_OF_DATE_KHR or
ename:VK_ERROR_SURFACE_LOST_KHR, the set of queue operations are still
considered to be enqueued and thus any semaphore to be waited on gets
unsignaled when the corresponding queue operation is complete.
include::../../validity/protos/vkQueuePresentKHR.txt[]
--

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -51,5 +51,19 @@ include::../../validity/structs/VkWin32SurfaceCreateInfoKHR.txt[]
--
With Win32, pname:minImageExtent, pname:maxImageExtent, and
pname:currentExtent are the window size.
Therefore, a swapchain's pname:imageExtent must: match the window's size.
pname:currentExtent must: always equal the window size.
The pname:currentExtent of a Win32 surface must: have both pname:width and
pname:height greater than 0, or both of them 0.
[NOTE]
.Note
====
Due to above restrictions, it is only possible to create a new swapchain on
this platform with pname:imageExtent being equal to the current size of the
window.
The window size may: become [eq]#(0, 0)# on this platform (e.g. when the
window is minimized), and so a swapchain cannot: be created until the size
changes.
====

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -54,8 +54,22 @@ include::../../validity/structs/VkXcbSurfaceCreateInfoKHR.txt[]
--
With Xcb, pname:minImageExtent, pname:maxImageExtent, and
pname:currentExtent are the window size.
Therefore, a swapchain's pname:imageExtent must: match the window's size.
pname:currentExtent must: always equal the window size.
The pname:currentExtent of an Xcb surface must: have both pname:width and
pname:height greater than 0, or both of them 0.
[NOTE]
.Note
====
Due to above restrictions, it is only possible to create a new swapchain on
this platform with pname:imageExtent being equal to the current size of the
window.
The window size may: become [eq]#(0, 0)# on this platform (e.g. when the
window is minimized), and so a swapchain cannot: be created until the size
changes.
====
Some Vulkan functions may: send protocol over the specified xcb connection
when using a swapchain or presentable images created from a

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -53,8 +53,22 @@ include::../../validity/structs/VkXlibSurfaceCreateInfoKHR.txt[]
--
With Xlib, pname:minImageExtent, pname:maxImageExtent, and
pname:currentExtent are the window size.
Therefore, a swapchain's pname:imageExtent must: match the window's size.
pname:currentExtent must: always equal the window size.
The pname:currentExtent of an Xlib surface must: have both pname:width and
pname:height greater than 0, or both of them 0.
[NOTE]
.Note
====
Due to above restrictions, it is only possible to create a new swapchain on
this platform with pname:imageExtent being equal to the current size of the
window.
The window size may: become [eq]#(0, 0)# on this platform (e.g. when the
window is minimized), and so a swapchain cannot: be created until the size
changes.
====
Some Vulkan functions may: send protocol over the specified Xlib
code:Display connection when using a swapchain or presentable images created

View File

@ -1,4 +1,4 @@
// Copyright (c) 2014-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -267,7 +267,7 @@ include::../../validity/structs/VkObjectTablePipelineEntryNVX.txt[]
include::../../api/structs/VkObjectTableDescriptorSetEntryNVX.txt[]
* pname:layout specifies the sname:VkPipelineLayout that the
* pname:pipelineLayout specifies the sname:VkPipelineLayout that the
pname:descriptorSet is used with.
* pname:descriptorSet specifies the sname:VkDescriptorSet that can be
bound with this entry.
@ -322,10 +322,10 @@ include::../../validity/structs/VkObjectTableIndexBufferEntryNVX.txt[]
include::../../api/structs/VkObjectTablePushConstantEntryNVX.txt[]
* pname:layout specifies the sname:VkPipelineLayout that pushconstants
using this pname:objectIndex are used with.
* pname:descriptorSet stageFlags the sname:VkShaderStageFlags that
pushconstants using this pname:objectIndex are used with.
* pname:pipelineLayout specifies the sname:VkPipelineLayout that the
pushconstants are used with
* pname:stageFlags specifies the sname:VkShaderStageFlags that the
pushconstants are used with
.Valid Usage
****

View File

@ -58,9 +58,9 @@ ifdef::editing-notes[]
.editing-note
==================
(Jon) If additional (non-Win32) bits are added to the possible memory types,
this type should move to the +VK_NV_external_memory_capabilities+ section,
and each bit would then be protected by ifdefs for the extension it's
defined by.
this type should move to the `<<VK_NV_external_memory_capabilities>>`
section, and each bit would then be protected by ifdefs for the extension
it's defined by.
==================
endif::editing-notes[]

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -2721,9 +2721,9 @@ If the descriptor type is ename:VK_DESCRIPTOR_TYPE_SAMPLER, the
pname:pImageInfo parameter is ignored and the immutable sampler is taken
from the push descriptor set layout in the pipeline layout.
If the descriptor type is ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
the pname:sampler member of the pname:pImageInfo parameter is ignored
and the immutable sampler is taken from the push descriptor set layout in
the pipeline layout.
the pname:sampler member of the pname:pImageInfo parameter is ignored and
the immutable sampler is taken from the push descriptor set layout in the
pipeline layout.
.Valid Usage
****

View File

@ -1,4 +1,4 @@
// Copyright (c) 2015-2017 Khronos Group. This work is licensed under a
// Copyright (c) 2015-2018 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
@ -725,7 +725,7 @@ ifdef::VK_KHR_maintenance1[]
ifdef::VK_AMD_negative_viewport_height[]
* [[VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374]]
pname:ppEnabledExtensionNames must: not contain both
<<VK_KHR_maintenance1>> and <<VK_AMD_negative_viewport_height>>
`<<VK_KHR_maintenance1>>` and `<<VK_AMD_negative_viewport_height>>`
endif::VK_AMD_negative_viewport_height[]
endif::VK_KHR_maintenance1[]
****

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