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
This time, if we attempt to apply a dynamic offset it will be met with undefined behavior and the link:https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/2846[validation layers will give an error]
110
111
@@ -122,8 +123,8 @@ vkCmdBindDescriptorSets(
122
123
123
124
This is what it looks like with the invalid dynamic offset
It is important to also check the `minUniformBufferOffsetAlignment` and `minStorageBufferOffsetAlignment` as both the base offset and dynamic offset must be multiples of these limits.
130
+
It is important to also check the `minUniformBufferOffsetAlignment` and `minStorageBufferOffsetAlignment` as both the base offset and dynamic offset must be multiples of these limits.
It is important to remember that extensions add the existence of functionality to the Vulkan spec, but this doesn't mean that all features of an extension are available if the extension is **supported**. An example is an extension such as `VK_KHR_8bit_storage`, which has 3 features it exposes in `VkPhysicalDevice8BitStorageFeatures`.
This means after enabling the extension, an application will still need to xref:{chapters}enabling_features.adoc#enabling-features[query and enable the features] needed from an extension.
Copy file name to clipboardexpand all lines: chapters/extensions/VK_EXT_inline_uniform_block.adoc
+3-2
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
// SPDX-License-Identifier: CC-BY-4.0
3
3
4
4
ifndef::chapters[:chapters: ../]
5
+
ifndef::images[:images: ../images/]
5
6
6
7
[[VK_EXT_inline_uniform_block]]
7
8
= VK_EXT_inline_uniform_block
@@ -13,11 +14,11 @@ Promoted to core in Vulkan 1.3
13
14
14
15
For a common implementation, descriptors are just a table to indirectly point to the data that was bound to it during the recording of the command buffer. The issue is that not all descriptors are created equally, for example, one descriptor might only be a few DWORDS in size.
Using `VK_EXT_inline_uniform_block` gives an implementation the opportunity to reduce the number of indirections an implementation takes to access uniform values, when only a few values are used. Unlike push constants, this data can be reused across multiple disjoint sets of draws/dispatches.
Copy file name to clipboardexpand all lines: chapters/extensions/VK_EXT_memory_priority.adoc
+3-2
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
// SPDX-License-Identifier: CC-BY-4.0
3
3
4
4
ifndef::chapters[:chapters: ../]
5
+
ifndef::images[:images: ../images/]
5
6
6
7
[[VK_EXT_memory_priority]]
7
8
= VK_EXT_memory_priority
@@ -10,13 +11,13 @@ Memory management is an important part of Vulkan. The `VK_EXT_memory_priority` e
10
11
11
12
This extension can be explained with an example of two applications (the main application and another process on the host machine). Over time the applications both attempt to consume the limited device heap memory.
In this situation, the allocation from the main application is still present, just possibly on slower memory (implementation might have moved it to host visible memory until it is needed again).
16
17
17
18
The decision of **what** memory will get moved is implementation defined. Let's now imagine this is the main application's memory usage
Copy file name to clipboardexpand all lines: chapters/extensions/cleanup.adoc
+2-1
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,7 @@
3
3
4
4
// Required for both single-page and combined guide xrefs to work
5
5
ifndef::chapters[:chapters: ../]
6
+
ifndef::images[:images: ../images/]
6
7
7
8
[[cleanup]]
8
9
= Cleanup Extensions
@@ -64,7 +65,7 @@ Promoted to core in Vulkan 1.2
64
65
65
66
There are formats that express both the usage of depth and stencil, but there was no way to list a different usage for them. The `VkImageStencilUsageCreateInfo` now lets an application pass in a separate `VkImageUsageFlags` for the stencil usage of an image. The depth usage is the original usage passed into `VkImageCreateInfo::usage` and without using `VkImageStencilUsageCreateInfo` the stencil usage will be the same as well.
66
67
67
-
A good use case of this is when using the xref:{chapters}VK_KHR_image_format_list.adoc#VK_KHR_image_format_list[VK_KHR_image_format_list] extension. This provides a way for the application to more explicitly describe the possible image views of their `VkImage` at creation time. This allows some implementations to possibly do implementation dependent optimization depending on the usages set.
68
+
A good use case of this is when using the xref:{chapters}extensions/VK_KHR_image_format_list.adoc#VK_KHR_image_format_list[VK_KHR_image_format_list] extension. This provides a way for the application to more explicitly describe the possible image views of their `VkImage` at creation time. This allows some implementations to possibly do implementation dependent optimization depending on the usages set.
Copy file name to clipboardexpand all lines: chapters/extensions/external.adoc
+2-1
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
// SPDX-License-Identifier: CC-BY-4.0
3
3
4
4
ifndef::chapters[:chapters: ../]
5
+
ifndef::images[:images: ../images/]
5
6
6
7
[[external-memory]]
7
8
= External Memory and Synchronization
@@ -81,4 +82,4 @@ There is a `VkImport*` function for importing and a `VkGet*` function for export
81
82
82
83
Here is a simple diagram showing the timeline of events between Vulkan and some other API talking to the GPU. This is used to represent a common use case for these external memory and synchronization extensions.
Copy file name to clipboardexpand all lines: chapters/extensions/shader_features.adoc
+2-1
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,7 @@
3
3
4
4
// Required for both single-page and combined guide xrefs to work
5
5
ifndef::chapters[:chapters: ../]
6
+
ifndef::images[:images: ../images/]
6
7
7
8
[[shader-features]]
8
9
= Shader Features
@@ -306,4 +307,4 @@ Promoted to core in Vulkan 1.3
306
307
307
308
This extension allows `OpVariable` with a `Workgroup` `Storage Class` to use the `Initializer` operand.
308
309
309
-
For security reasons, applications running untrusted content (e.g. web browsers) need to be able to zero-initialize workgroup memory at the start of workgroup execution. Adding instructions to set all workgroup variables to zero would be less efficient than what some hardware is capable of, due to poor access patterns.
310
+
For security reasons, applications running untrusted content (e.g. web browsers) need to be able to zero-initialize workgroup memory at the start of workgroup execution. Adding instructions to set all workgroup variables to zero would be less efficient than what some hardware is capable of, due to poor access patterns.
Copy file name to clipboardexpand all lines: chapters/formats.adoc
+3-2
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,7 @@
2
2
// SPDX-License-Identifier: CC-BY-4.0
3
3
4
4
ifndef::chapters[:chapters:]
5
+
ifndef::images[:images: images/]
5
6
6
7
[[formats]]
7
8
= Formats
@@ -111,7 +112,7 @@ representation of multiple pixels encoded interdependently within a region.
111
112
112
113
=== Planar
113
114
114
-
link:https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_sampler_ycbcr_conversion.html[VK_KHR_sampler_ycbcr_conversion] and link:https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_ycbcr_2plane_444_formats.html[VK_EXT_ycbcr_2plane_444_formats] add xref:{chapters}VK_KHR_sampler_ycbcr_conversion.adoc#multi-planar-formats[multi-planar formats] to Vulkan. The planes can be accessed separately with `VK_IMAGE_ASPECT_PLANE_0_BIT`, `VK_IMAGE_ASPECT_PLANE_1_BIT`, and `VK_IMAGE_ASPECT_PLANE_2_BIT`.
115
+
link:https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_sampler_ycbcr_conversion.html[VK_KHR_sampler_ycbcr_conversion] and link:https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_ycbcr_2plane_444_formats.html[VK_EXT_ycbcr_2plane_444_formats] add xref:{chapters}extensions/VK_KHR_sampler_ycbcr_conversion.adoc#multi-planar-formats[multi-planar formats] to Vulkan. The planes can be accessed separately with `VK_IMAGE_ASPECT_PLANE_0_BIT`, `VK_IMAGE_ASPECT_PLANE_1_BIT`, and `VK_IMAGE_ASPECT_PLANE_2_BIT`.
115
116
116
117
=== Packed
117
118
@@ -125,4 +126,4 @@ For `VK_FORMAT_R8G8B8A8_UNORM` the `attribAddress` has to be a multiple of the c
125
126
126
127
=== External
127
128
128
-
Currently only supported with the `VK_ANDROID_external_memory_android_hardware_buffer` extension. This extension allows Android applications to import implementation-defined external formats to be used with a xref:{chapters}VK_KHR_sampler_ycbcr_conversion.adoc[VkSamplerYcbcrConversion]. There are many restrictions what are allowed with these external formats which are link:https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats[documented in the spec].
129
+
Currently only supported with the `VK_ANDROID_external_memory_android_hardware_buffer` extension. This extension allows Android applications to import implementation-defined external formats to be used with a xref:{chapters}extensions/VK_KHR_sampler_ycbcr_conversion.adoc[VkSamplerYcbcrConversion]. There are many restrictions what are allowed with these external formats which are link:https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats[documented in the spec].
0 commit comments