You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: chapters/depth.adoc
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -127,7 +127,7 @@ When clearing, notice that `VkClearValue` is a union and `VkClearDepthStencilVal
127
127
[[pre-rasterization]]
128
128
== Pre-rasterization
129
129
130
-
In the graphics pipeline, there are a series of link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization[pre-rasterization shader stages] that generate primitives to be rasterized. Before reaching the rasterization step, the final `vec4` position (`gl_Position`) of the last pre-rasterization stage runs through link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#vertexpostproc[Fixed-Function Vertex Post-Processing].
130
+
In the graphics pipeline, there are a series of link:https://docs.vulkan.org/spec/latest/chapters/pipelines.html#pipelines-graphics-subsets-pre-rasterization[pre-rasterization shader stages] that generate primitives to be rasterized. Before reaching the rasterization step, the final `vec4` position (`gl_Position`) of the last pre-rasterization stage runs through link:https://docs.vulkan.org/spec/latest/chapters/vertexpostproc.html[Fixed-Function Vertex Post-Processing].
131
131
132
132
The following gives a high level overview of the various coordinates name and operations that occur before rasterization.
133
133
@@ -155,7 +155,7 @@ A few examples where `Zd` is the result of `Zc`/`Wc`:
155
155
[[user-defined-clipping-and-culling]]
156
156
==== User defined clipping and culling
157
157
158
-
Using `ClipDistance` and `CullDistance` built-in arrays the link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization[pre-rasterization shader stages] can set link:https://www.khronos.org/opengl/wiki/Vertex_Post-Processing#User-defined_clipping[user defined clipping and culling].
158
+
Using `ClipDistance` and `CullDistance` built-in arrays the link:https://docs.vulkan.org/spec/latest/chapters/pipelines.html#pipelines-graphics-subsets-pre-rasterization[pre-rasterization shader stages] can set link:https://www.khronos.org/opengl/wiki/Vertex_Post-Processing#User-defined_clipping[user defined clipping and culling].
159
159
160
160
In the last pre-rasterization shader stage, these values will be linearly interpolated across the primitive and the portion of the primitive with interpolated distances less than `0` will be considered outside the clip volume. If `ClipDistance` or `CullDistance` are then used by a fragment shader, they contain these linearly interpolated values.
161
161
@@ -229,7 +229,7 @@ Zf = Pz * Zd + Oz
229
229
230
230
The depth values of all fragments generated by the rasterization of a polygon can be offset by a single value that is computed for that polygon. If `VkPipelineRasterizationStateCreateInfo::depthBiasEnable` is `VK_FALSE` at draw time, no depth bias is applied.
231
231
232
-
Using the `depthBiasConstantFactor`, `depthBiasClamp`, and `depthBiasSlopeFactor` in `VkPipelineRasterizationStateCreateInfo` the depth bias link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-depthbias[can be calculated].
232
+
Using the `depthBiasConstantFactor`, `depthBiasClamp`, and `depthBiasSlopeFactor` in `VkPipelineRasterizationStateCreateInfo` the depth bias link:https://docs.vulkan.org/spec/latest/chapters/primsrast.html#primsrast-depthbias[can be calculated].
233
233
234
234
[NOTE]
235
235
====
@@ -284,9 +284,9 @@ Violating the condition yields undefined behavior.
284
284
[[per-sample-processing-and-coverage-mask]]
285
285
=== Per-sample processing and coverage mask
286
286
287
-
The following post-rasterization occurs as a "per-sample" operation. This means when doing link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#fragops-covg[multisampling] with a color attachment, any "depth buffer" `VkImage` used as well must also have been created with the same `VkSampleCountFlagBits` value.
287
+
The following post-rasterization occurs as a "per-sample" operation. This means when doing link:https://docs.vulkan.org/spec/latest/chapters/fragops.html#fragops-covg[multisampling] with a color attachment, any "depth buffer" `VkImage` used as well must also have been created with the same `VkSampleCountFlagBits` value.
288
288
289
-
Each fragment has a link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask[coverage mask] based on which samples within that fragment are determined to be within the area of the primitive that generated the fragment. If a fragment operation results in all bits of the coverage mask being `0`, the fragment is discarded.
289
+
Each fragment has a link:https://docs.vulkan.org/spec/latest/chapters/primsrast.html#primsrast-multisampling-coverage-mask[coverage mask] based on which samples within that fragment are determined to be within the area of the primitive that generated the fragment. If a fragment operation results in all bits of the coverage mask being `0`, the fragment is discarded.
290
290
291
291
[[resolving-depth-buffer]]
292
292
==== Resolving depth buffer
@@ -301,7 +301,7 @@ It is possible in Vulkan using the xref:{chapters}extensions/cleanup.adoc#vk_khr
301
301
Requires the `VkPhysicalDeviceFeatures::depthBounds` feature to be supported.
302
302
====
303
303
304
-
If `VkPipelineDepthStencilStateCreateInfo::depthBoundsTestEnable` is used to take each `Za` in the depth attachment and check if it is within the range set by `VkPipelineDepthStencilStateCreateInfo::minDepthBounds` and `VkPipelineDepthStencilStateCreateInfo::maxDepthBounds`. If the value is not within the bounds, the link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask[coverage mask] is set to zero.
304
+
If `VkPipelineDepthStencilStateCreateInfo::depthBoundsTestEnable` is used to take each `Za` in the depth attachment and check if it is within the range set by `VkPipelineDepthStencilStateCreateInfo::minDepthBounds` and `VkPipelineDepthStencilStateCreateInfo::maxDepthBounds`. If the value is not within the bounds, the link:https://docs.vulkan.org/spec/latest/chapters/primsrast.html#primsrast-multisampling-coverage-mask[coverage mask] is set to zero.
305
305
306
306
[NOTE]
307
307
====
@@ -336,7 +336,7 @@ The `depthTestEnable` and `depthCompareOp` value can be set xref:{chapters}dynam
336
336
[[depth-buffer-writes]]
337
337
==== Depth Buffer Writes
338
338
339
-
Even if the depth test passes, if `VkPipelineDepthStencilStateCreateInfo::depthWriteEnable` is set to `VK_FALSE` it will not write the value out to the depth attachment. The main reason for this is because the depth test itself will set the link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#primsrast-multisampling-coverage-mask[coverage mask] which can be used for certain render techniques.
339
+
Even if the depth test passes, if `VkPipelineDepthStencilStateCreateInfo::depthWriteEnable` is set to `VK_FALSE` it will not write the value out to the depth attachment. The main reason for this is because the depth test itself will set the link:https://docs.vulkan.org/spec/latest/chapters/primsrast.html#primsrast-multisampling-coverage-mask[coverage mask] which can be used for certain render techniques.
Copy file name to clipboardExpand all lines: chapters/descriptor_dynamic_offset.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ ifndef::images[:images: images/]
7
7
[[descriptor-dynamic-offset]]
8
8
= Descriptor Dynamic Offset
9
9
10
-
Vulkan offers two types of descriptors that allow adjusting the offset at bind time as link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#descriptorsets-binding-dynamicoffsets[defined in the spec].
10
+
Vulkan offers two types of descriptors that allow adjusting the offset at bind time as link:https://docs.vulkan.org/spec/latest/chapters/descriptorsets.html#descriptorsets-binding-dynamicoffsets[defined in the spec].
When the `VkPipeline` uses link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-dynamic-state[dynamic state], some pipeline information can be omitted at creation time and instead set during recording of the command buffer. The new logical flow is:
41
+
When the `VkPipeline` uses link:https://docs.vulkan.org/spec/latest/chapters/pipelines.html#pipelines-dynamic-state[dynamic state], some pipeline information can be omitted at creation time and instead set during recording of the command buffer. The new logical flow is:
42
42
43
43
[source,cpp]
44
44
----
@@ -87,7 +87,7 @@ Some implementations might have a performance loss using some certain `VkDynamic
87
87
[[dynamic-state-lifetime]]
88
88
== Dynamic state lifetime
89
89
90
-
The spec talks about how there is a link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#dynamic-state-lifetime[dynamic state lifetime]. The following best describes it in some examples:
90
+
The spec talks about how there is a link:https://docs.vulkan.org/spec/latest/chapters/pipelines.html#dynamic-state-lifetime[dynamic state lifetime]. The following best describes it in some examples:
91
91
92
92
[source,cpp]
93
93
----
@@ -130,6 +130,6 @@ vkCmdDraw()
130
130
[[states-that-are-dynamic]]
131
131
== What states are dynamic
132
132
133
-
The full list of possible dynamic states can be found in link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkDynamicState[VkDynamicState].
133
+
The full list of possible dynamic states can be found in link:https://docs.vulkan.org/spec/latest/chapters/pipelines.html#VkDynamicState[VkDynamicState].
134
134
135
135
The `VK_EXT_extended_dynamic_state`, `VK_EXT_extended_dynamic_state2`, `VK_EXT_extended_dynamic_state3`, `VK_EXT_vertex_input_dynamic_state`, `VK_EXT_attachment_feedback_loop_dynamic_state` and `VK_EXT_color_write_enable` extensions were added with the goal to support applications that need to reduce the number of pipeline state objects they compile and bind.
An application can link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-extensions[query the physical device] first to check if the extension is **supported** with `vkEnumerateInstanceExtensionProperties` or `vkEnumerateDeviceExtensionProperties`.
22
+
An application can link:https://docs.vulkan.org/spec/latest/chapters/extensions.html#extendingvulkan-extensions[query the physical device] first to check if the extension is **supported** with `vkEnumerateInstanceExtensionProperties` or `vkEnumerateDeviceExtensionProperties`.
23
23
24
24
[source,cpp]
25
25
----
@@ -78,17 +78,17 @@ This means after enabling the extension, an application will still need to xref:
78
78
79
79
== Promotion Process
80
80
81
-
When minor versions of xref:{chapters}vulkan_release_summary.adoc#vulkan-release-summary[Vulkan are released], some extensions are link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-compatibility-promotion[promoted as defined in the spec]. The goal of promotion is to have extended functionality, that the Vulkan Working Group has decided is widely supported, to be in the core Vulkan spec. More details about Vulkan versions can be found in the xref:{chapters}versions.adoc#versions[version chapter].
81
+
When minor versions of xref:{chapters}vulkan_release_summary.adoc#vulkan-release-summary[Vulkan are released], some extensions are link:https://docs.vulkan.org/spec/latest/chapters/extensions.html#extendingvulkan-compatibility-promotion[promoted as defined in the spec]. The goal of promotion is to have extended functionality, that the Vulkan Working Group has decided is widely supported, to be in the core Vulkan spec. More details about Vulkan versions can be found in the xref:{chapters}versions.adoc#versions[version chapter].
82
82
83
83
An example would be something such as `VK_KHR_get_physical_device_properties2` which is used for most other extensions. In Vulkan 1.0, an application has to query for support of `VK_KHR_get_physical_device_properties2` before being able to call a function such as `vkGetPhysicalDeviceFeatures2KHR`. Starting in Vulkan 1.1, the `vkGetPhysicalDeviceFeatures2` function is guaranteed to be supported.
84
84
85
85
Another way to look at promotion is with the `VK_KHR_8bit_storage` as an example again. Since Vulkan 1.0 some features, such as `textureCompressionASTC_LDR`, are not required to be supported, but are available to query without needing to enable any extensions. Starting in Vulkan 1.2 when `VK_KHR_8bit_storage` was promoted to core, all the features in `VkPhysicalDevice8BitStorageFeatures` can now be found in `VkPhysicalDeviceVulkan12Features`.
86
86
87
87
=== Promotion Change of Behavior
88
88
89
-
It is important to realize there is a subtle difference for **some** extension that are promoted. link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#extendingvulkan-compatibility-promotion[The spec describes] how promotion **can** involve minor changes such as in the extension's "`Feature advertisement/enablement`". To best describe the subtlety of this, `VK_KHR_8bit_storage` can be used as a use case.
89
+
It is important to realize there is a subtle difference for **some** extension that are promoted. link:https://docs.vulkan.org/spec/latest/chapters/extensions.html#extendingvulkan-compatibility-promotion[The spec describes] how promotion **can** involve minor changes such as in the extension's "`Feature advertisement/enablement`". To best describe the subtlety of this, `VK_KHR_8bit_storage` can be used as a use case.
90
90
91
-
The link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#_differences_relative_to_vk_khr_8bit_storage[Vulkan spec describes the change] for `VK_KHR_8bit_storage` for Vulkan 1.2 where it states:
91
+
The link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_8bit_storage.html#_promotion_to_vulkan_1_2[Vulkan spec describes the change] for `VK_KHR_8bit_storage` for Vulkan 1.2 where it states:
92
92
93
93
____
94
94
If the VK_KHR_8bit_storage extension is not supported, support for the SPIR-V StorageBuffer8BitAccess capability in shader modules is optional.
@@ -99,4 +99,4 @@ ____
99
99
* If `VK_KHR_8bit_storage` is found in `vkEnumerateDeviceExtensionProperties` then the `storageBuffer8BitAccess` feature is **guaranteed** to be supported.
100
100
* If `VK_KHR_8bit_storage` is **not** found in `vkEnumerateDeviceExtensionProperties` then the `storageBuffer8BitAccess` feature **might** be supported and can be checked by querying `VkPhysicalDeviceVulkan12Features::storageBuffer8BitAccess`.
101
101
102
-
The list of all feature changes to promoted extensions can be found in the link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#versions[version appendix of the spec].
102
+
The list of all feature changes to promoted extensions can be found in the link:https://docs.vulkan.org/spec/latest/appendices/versions.html[version appendix of the spec].
Copy file name to clipboardExpand all lines: chapters/enabling_features.adoc
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,17 +14,17 @@ This section goes over the logistics for enabling features.
14
14
All features in Vulkan can be categorized/found in 3 sections
15
15
16
16
1. Core 1.0 Features
17
-
** These are the set of features that were available from the initial 1.0 release of Vulkan. The list of features can be found in link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkPhysicalDeviceFeatures[VkPhysicalDeviceFeatures]
17
+
** These are the set of features that were available from the initial 1.0 release of Vulkan. The list of features can be found in link:https://docs.vulkan.org/spec/latest/chapters/features.html#VkPhysicalDeviceFeatures[VkPhysicalDeviceFeatures]
18
18
2. Future Core Version Features
19
19
** With Vulkan 1.1+ some new features were added to the core version of Vulkan. To keep the size of `VkPhysicalDeviceFeatures` backward compatible, new structs were created to hold the grouping of features.
** Sometimes extensions contain features in order to enable certain aspects of the extension. These are easily found as they are all labeled as `VkPhysicalDevice[ExtensionName]Features`
24
24
25
25
== How to Enable the Features
26
26
27
-
All features must be enabled at `VkDevice` creation time inside the link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkDeviceCreateInfo[VkDeviceCreateInfo] struct.
27
+
All features must be enabled at `VkDevice` creation time inside the link:https://docs.vulkan.org/spec/latest/chapters/devsandqueues.html#VkDeviceCreateInfo[VkDeviceCreateInfo] struct.
Copy file name to clipboardExpand all lines: chapters/extensions/cleanup.adoc
+9-7Lines changed: 9 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ These are extensions that are unofficially called "`cleanup extension`". The Vul
21
21
Promoted to core in Vulkan 1.2
22
22
====
23
23
24
-
This extension adds more information to query about each implementation. The link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkDriverId[VkDriverId] will be a registered vendor's ID for the implementation. The link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkConformanceVersion[VkConformanceVersion] displays which version of xref:{chapters}vulkan_cts.adoc#vulkan-cts[the Vulkan Conformance Test Suite] the implementation passed.
24
+
This extension adds more information to query about each implementation. The link:https://docs.vulkan.org/spec/latest/chapters/devsandqueues.html#VkDriverId[VkDriverId] will be a registered vendor's ID for the implementation. The link:https://docs.vulkan.org/spec/latest/chapters/devsandqueues.html#VkConformanceVersion[VkConformanceVersion] displays which version of xref:{chapters}vulkan_cts.adoc#vulkan-cts[the Vulkan Conformance Test Suite] the implementation passed.
25
25
26
26
[[VK_EXT_host_query_reset]]
27
27
== VK_EXT_host_query_reset
@@ -129,12 +129,14 @@ The maintenance extensions add a collection of minor features that were intentio
129
129
130
130
Currently, there are 6 maintenance extensions. The first 3 were bundled in Vulkan 1.1 as core. All the details for each are well defined in the extension appendix page.
131
131
132
-
* link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance1[VK_KHR_maintenance1] - core in Vulkan 1.1
133
-
* link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance2[VK_KHR_maintenance2] - core in Vulkan 1.1
134
-
* link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance3[VK_KHR_maintenance3] - core in Vulkan 1.1
135
-
* link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance4[VK_KHR_maintenance4] - core in Vulkan 1.3
136
-
* link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance5[VK_KHR_maintenance5] - extension only
137
-
* link:https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_maintenance6[VK_KHR_maintenance6] - extension only
132
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance1.html[VK_KHR_maintenance1] - core in Vulkan 1.1
133
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance2.html[VK_KHR_maintenance2] - core in Vulkan 1.1
134
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance3.html[VK_KHR_maintenance3] - core in Vulkan 1.1
135
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance4.html[VK_KHR_maintenance4] - core in Vulkan 1.3
136
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance5.html[VK_KHR_maintenance5] - core in Vulkan 1.4
137
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance6.html[VK_KHR_maintenance6] - core in Vulkan 1.4
138
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance7.html[VK_KHR_maintenance7] - extension only
139
+
* link:https://registry.khronos.org/vulkan/specs/latest/man/html/VK_KHR_maintenance8.html[VK_KHR_maintenance8] - extension only
0 commit comments