1// Copyright 2015-2024 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5// The asciidoc [glossary] template cannot contain subsections.
6// The abbreviations and prefixes probably belong in the upcoming
7// API/extension-writing-guidelines appendix, anyway.
8
9[appendix]
10[[lexicon]]
11= Lexicon
12
13This appendix defines terms, abbreviations, and API prefixes used in the
14Specification.
15
16
17[[glossary]]
18== Glossary
19
20The terms defined in this section are used consistently throughout the
21Specification and may be used with or without capitalization.
22
23Accessible (Descriptor Binding)::
24    A descriptor binding is accessible to a shader stage if that stage is
25    included in the pname:stageFlags of the descriptor binding.
26    Descriptors using that binding can: only be used by stages in which they
27    are accessible.
28
29Acquire Operation (Resource)::
30    An operation that acquires ownership of an image subresource or buffer
31    range.
32
33ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
34Active (Descriptor Type)::
35    When a descriptor with _mutable_ type is updated with
36    flink:vkUpdateDescriptorSets, the active descriptor type changes.
37    When the descriptor is consumed by shaders, it is the active descriptor
38    type which determines validity, i.e.
39    sname:VkDescriptorSetLayoutBinding::pname:descriptorType is replaced
40    with the active descriptor type.
41    A mismatch in active descriptor type and consumption by shader is
42    considered an undefined: descriptor.
43endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
44
45ifdef::VK_EXT_transform_feedback[]
46Active (Transform Feedback)::
47    Transform feedback is made active after
48    flink:vkCmdBeginTransformFeedbackEXT executes and remains active until
49    flink:vkCmdEndTransformFeedbackEXT executes.
50    While transform feedback is active, data written to variables in the
51    output interface of the last
52    <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader
53    stage>> of the graphics pipeline are captured to the bound transform
54    feedback buffers if those variables are decorated for transform
55    feedback.
56endif::VK_EXT_transform_feedback[]
57
58Adjacent Vertex::
59    A vertex in an adjacency primitive topology that is not part of a given
60    primitive, but is accessible in geometry shaders.
61
62ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
63Active Object (Ray Tracing)::
64    A primitive or instance in a ray tracing acceleration structure which
65    has a corresponding ID, and is not _inactive_ (meaning that it is
66    visible to rays).
67endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
68
69ifdef::VK_EXT_blend_operation_advanced[]
70Advanced Blend Operation::
71    Blending performed using one of the blend operation enums introduced by
72    the `apiext:VK_EXT_blend_operation_advanced` extension.
73    See <<framebuffer-blend-advanced, Advanced Blending Operations>>.
74endif::VK_EXT_blend_operation_advanced[]
75
76Alias (API type/command)::
77    An identical definition of another API type/command with the same
78    behavior but a different name.
79
80Aliased Range (Memory)::
81    A range of a device memory allocation that is bound to multiple
82    resources simultaneously.
83
84Allocation Scope::
85    An association of a host memory allocation to a parent object or
86    command, where the allocation's lifetime ends before or at the same time
87    as the parent object is freed or destroyed, or during the parent
88    command.
89
90Aspect (Image)::
91    Some image types contain multiple kinds (called "`aspects`") of data for
92    each pixel, where each aspect is used in a particular way by the
93    pipeline and may: be stored differently or separately from other
94    aspects.
95    For example, the color components of an image format make up the color
96    aspect of the image, and can: be used as a framebuffer color attachment.
97    Some operations, like depth testing, operate only on specific aspects of
98    an image.
99
100Attachment (Render Pass)::
101    A zero-based integer index name used in render pass creation to refer to
102    a framebuffer attachment that is accessed by one or more subpasses.
103    The index also refers to an attachment description which includes
104    information about the properties of the image view that will later be
105    attached.
106
107Availability Operation::
108    An operation that causes the values generated by specified memory write
109    accesses to become available for future access.
110
111Available::
112    A state of values written to memory that allows them to be made visible.
113
114ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
115Axis-aligned Bounding Box::
116    A box bounding a region in space defined by extents along each axis and
117    thus representing a box where each edge is aligned to one of the major
118    axes.
119endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
120
121Back-Facing::
122    See Facingness.
123
124Batch::
125    A single structure submitted to a queue as part of a
126    <<devsandqueues-submission, queue submission command>>, describing a set
127    of queue operations to execute.
128
129Backwards Compatibility::
130    A given version of the API is backwards compatible with an earlier
131    version if an application, relying only on valid behavior and
132    functionality defined by the earlier specification, is able to correctly
133    run against each version without any modification.
134    This assumes no active attempt by that application to not run when it
135    detects a different version.
136
137Binary Semaphore::
138    A semaphore with a boolean payload indicating whether the semaphore is
139    signaled or unsignaled.
140    Represented by a slink:VkSemaphore object
141ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
142    created with a semaphore type of ename:VK_SEMAPHORE_TYPE_BINARY
143endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
144    .
145
146Binding (Memory)::
147    An association established between a range of a resource object and a
148    range of a memory object.
149    These associations determine the memory locations affected by operations
150    performed on elements of a resource object.
151    Memory bindings are established using the flink:vkBindBufferMemory
152    command for non-sparse buffer objects,
153ifdef::VKSC_VERSION_1_0[and]
154    using the flink:vkBindImageMemory command for non-sparse image objects
155ifndef::VKSC_VERSION_1_0[, and using the flink:vkQueueBindSparse command for sparse resources]
156    .
157
158Blend Constant::
159    Four floating point (RGBA) values used as an input to blending.
160
161Blending::
162    Arithmetic operations between a fragment color value and a value in a
163    color attachment that produce a final color value to be written to the
164    attachment.
165
166Buffer::
167    A resource that represents a linear array of data in device memory.
168    Represented by a slink:VkBuffer object.
169
170ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
171Buffer Device Address::
172    A 64-bit value used in a shader to access buffer memory through the
173    code:PhysicalStorageBuffer storage class.
174endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
175
176Buffer View::
177    An object that represents a range of a specific buffer, and state
178    controlling how the contents are interpreted.
179    Represented by a slink:VkBufferView object.
180
181Built-In Variable::
182    A variable decorated in a shader, where the decoration makes the
183    variable take values provided by the execution environment or values
184    that are generated by fixed-function pipeline stages.
185
186Built-In Interface Block::
187    A block defined in a shader containing only variables decorated with
188    built-in decorations, and is used to match against other shader stages.
189
190Clip Coordinates::
191    The homogeneous coordinate space in which vertex positions
192    (code:Position decoration) are written by
193    <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader
194    stages>>.
195
196Clip Distance::
197    A built-in output from
198    <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader
199    stages>> defining a clip half-space against which the primitive is
200    clipped.
201
202Clip Volume::
203    The intersection of the view volume with all clip half-spaces.
204
205Color Attachment::
206    A subpass attachment point, or image view, that is the target of
207    fragment color outputs and blending.
208
209ifdef::VK_AMD_shader_fragment_mask[]
210Color Fragment::
211    A unique color value within a pixel of a multisampled color image.
212    The _fragment mask_ will contain indices to the _color fragment_.
213endif::VK_AMD_shader_fragment_mask[]
214
215Color Renderable Format::
216    A elink:VkFormat where ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT is
217    set in one of the following, depending on the image's tiling:
218  * slink:VkFormatProperties::pname:linearTilingFeatures
219  * slink:VkFormatProperties::pname:optimalTilingFeatures
220ifdef::VK_NV_linear_color_attachment[]
221    or a elink:VkFormat where
222    ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV is set in
223    slink:VkFormatProperties::pname:linearTilingFeatures
224endif::VK_NV_linear_color_attachment[]
225ifdef::VK_EXT_image_drm_format_modifier[]
226  * slink:VkDrmFormatModifierPropertiesEXT::pname:drmFormatModifierTilingFeatures
227endif::VK_EXT_image_drm_format_modifier[]
228
229Combined Image Sampler::
230    A descriptor type that includes both a sampled image and a sampler.
231
232Command Buffer::
233    An object that records commands to be submitted to a queue.
234    Represented by a slink:VkCommandBuffer object.
235
236ifdef::VK_EXT_nested_command_buffer[]
237Command Buffer Nesting Level::
238    The Command Buffer Nesting Level of a secondary command buffer is equal
239    to the maximum nesting level of all secondary command buffers executed
240    by that command buffer plus one, where a secondary command buffer that
241    executes no other secondary command buffers has a nesting level of zero.
242endif::VK_EXT_nested_command_buffer[]
243
244Command Pool::
245    An object that command buffer memory is allocated from, and that owns
246    that memory.
247    Command pools aid multithreaded performance by enabling different
248    threads to use different allocators, without internal synchronization on
249    each use.
250    Represented by a slink:VkCommandPool object.
251
252Compatible Allocator::
253    When allocators are compatible, allocations from each allocator can: be
254    freed by the other allocator.
255
256Compatible Image Formats::
257    When formats are compatible, images created with one of the formats can:
258    have image views created from it using any of the compatible formats.
259    Also see _Size-Compatible Image Formats_.
260
261Compatible Queues::
262    Queues within a queue family.
263    Compatible queues have identical properties.
264
265Complete Mipmap Chain::
266    The entire set of mip levels that can be provided for an image, from the
267    largest application specified mip level size down to the _minimum mip
268    level size_.
269    See <<resources-image-mip-level-sizing, Image Mip Level Sizing>>.
270
271ifdef::VK_KHR_deferred_host_operations[]
272Completed Operation::
273    A deferred operation whose corresponding command has been executed to
274    completion.
275    See <<deferred-host-operations, Deferred Host Operations>>
276endif::VK_KHR_deferred_host_operations[]
277
278Component (Format)::
279    A distinct part of a format.
280    Color components are represented with `R`, `G`, `B`, and `A`.
281    Depth and stencil components are represented with `D` and `S`.
282    Formats can: have multiple instances of the same component.
283    Some formats have other notations such as `E` or `X` which are not
284    considered a component of the format.
285
286Compressed Texel Block::
287    An element of an image having a block-compressed format, comprising a
288    rectangular block of texel values that are encoded as a single value in
289    memory.
290    Compressed texel blocks of a particular block-compressed format have a
291    corresponding width, height, and depth defining the dimensions of these
292    elements in units of texels, and a size in bytes of the encoding in
293    memory.
294
295Constant Integral Expressions::
296    A SPIR-V constant instruction whose type is code:OpTypeInt.
297    See _Constant Instruction_ in section 2.2.1 "`Instructions`" of the
298    <<spirv-spec,Khronos SPIR-V Specification>>.
299
300ifdef::VK_NV_cooperative_matrix,VK_KHR_cooperative_matrix[]
301Cooperative Matrix::
302    A SPIR-V type where the storage for and computations performed on the
303    matrix are spread across a set of invocations such as a subgroup.
304endif::VK_NV_cooperative_matrix,VK_KHR_cooperative_matrix[]
305
306ifdef::VK_NV_corner_sampled_image[]
307Corner-Sampled Image::
308    A slink:VkImage where unnormalized texel coordinates are centered on
309    integer values instead of half-integer values.
310    Specified by setting the ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV bit
311    on slink:VkImageCreateInfo::pname:flags at image creation.
312endif::VK_NV_corner_sampled_image[]
313
314Coverage Index::
315    The index of a sample in the coverage mask.
316
317Coverage Mask::
318    A bitfield associated with a fragment representing the samples that were
319    determined to be covered based on the result of rasterization, and then
320    subsequently modified by fragment operations or the fragment shader.
321
322Cull Distance::
323    A built-in output from
324    <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader
325    stages>> defining a cull half-space where the primitive is rejected if
326    all vertices have a negative value for the same cull distance.
327
328Cull Volume::
329    The intersection of the view volume with all cull half-spaces.
330
331ifdef::VK_KHR_video_queue[]
332Decode Output Picture::
333    A video picture resource used to store the result of a video decode
334    operation.
335
336Decoded Picture Buffer::
337    An indexed set of reference pictures used by a video session.
338    Abbreviated as DPB.
339
340Decoded Picture Buffer Slot::
341    An entry within a DPB that can: be associated with a particular
342    reference picture.
343
344Decoded Picture Buffer Slot Index::
345    The index of a DPB slot within its encompassing DPB.
346endif::VK_KHR_video_queue[]
347
348Decoration (SPIR-V)::
349    Auxiliary information such as built-in variables, stream numbers,
350    invariance, interpolation type, relaxed precision, etc., added to
351    variables or structure-type members through decorations.
352
353ifdef::VK_KHR_deferred_host_operations[]
354Deferrable Command::
355    A command which allows deferred execution of host-side work.
356    See <<deferred-host-operations,Deferred Host Operations>>.
357
358Deferrable Operation::
359    A single logical item of host-side work which can be deferred.
360    Represented by the slink:VkDeferredOperationKHR object.
361    See <<deferred-host-operations,Deferred Host Operations>>.
362endif::VK_KHR_deferred_host_operations[]
363
364Deprecated (feature)::
365    A feature is deprecated if it is no longer recommended as the correct or
366    best way to achieve its intended purpose.
367
368Depth/Stencil Attachment::
369    A subpass attachment point, or image view, that is the target of depth
370    and/or stencil test operations and writes.
371
372Depth/Stencil Format::
373    A elink:VkFormat that includes depth and/or stencil components.
374
375Depth/Stencil Image (or ImageView)::
376    A slink:VkImage (or slink:VkImageView) with a depth/stencil format.
377
378ifdef::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]
379Depth/Stencil Resolve Attachment::
380    A subpass attachment point, or image view, that is the target of a
381    multisample resolve operation from the corresponding depth/stencil
382    attachment at the end of the subpass.
383endif::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]
384
385Derivative Group::
386    A set of fragment
387ifdef::VK_NV_compute_shader_derivatives[]
388    or compute
389endif::VK_NV_compute_shader_derivatives[]
390    shader invocations that cooperate to compute derivatives, including
391    implicit derivatives for sampled image operations.
392
393Descriptor::
394    Information about a resource or resource view written into a descriptor
395    set that is used to access the resource or view from a shader.
396
397Descriptor Binding::
398    An entry in a descriptor set layout corresponding to zero or more
399    descriptors of a single descriptor type in a set.
400    Defined by a slink:VkDescriptorSetLayoutBinding structure.
401
402Descriptor Pool::
403    An object that descriptor sets are allocated from, and that owns the
404    storage of those descriptor sets.
405    Descriptor pools aid multithreaded performance by enabling different
406    threads to use different allocators, without internal synchronization on
407    each use.
408    Represented by a slink:VkDescriptorPool object.
409
410Descriptor Set::
411    An object that resource descriptors are written into via the API, and
412    that can: be bound to a command buffer such that the descriptors
413    contained within it can: be accessed from shaders.
414    Represented by a slink:VkDescriptorSet object.
415
416Descriptor Set Layout::
417    An object defining the set of resources (types and counts) and their
418    relative arrangement (in the binding namespace) within a descriptor set.
419    Used when allocating descriptor sets and when creating pipeline layouts.
420    Represented by a slink:VkDescriptorSetLayout object.
421
422Device::
423    The processor(s) and execution environment that perform tasks requested
424    by the application via the Vulkan API.
425
426ifdef::VK_VERSION_1_1,VK_KHR_device_group_creation[]
427Device Group::
428    A set of physical devices that support accessing each other's memory and
429    recording a single command buffer that can: be executed on all the
430    physical devices.
431
432Device Index::
433    A zero-based integer that identifies one physical device from a logical
434    device.
435    A device index is valid if it is less than the number of physical
436    devices in the logical device.
437
438Device Mask::
439    A bitmask where each bit represents one device index.
440    A device mask value is valid if every bit that is set in the mask is at
441    a bit position that is less than the number of physical devices in the
442    logical device.
443endif::VK_VERSION_1_1,VK_KHR_device_group_creation[]
444
445Device Memory::
446    Memory accessible to the device.
447    Represented by a slink:VkDeviceMemory object.
448
449Device-Level Command::
450    Any command that is dispatched from a logical device, or from a child
451    object of a logical device.
452
453Device-Level Functionality::
454    All device-level commands and objects, and their structures, enumerated
455    types, and enumerants.
456    Additionally, physical-device-level functionality defined by a
457    <<extendingvulkan-device-extensions,device extension>> is also
458    considered device-level functionality.
459
460Device-Level Object::
461    Logical device objects and their child objects.
462    For example, slink:VkDevice, slink:VkQueue, and slink:VkCommandBuffer
463    objects are device-level objects.
464
465Device-Local Memory::
466    Memory that is connected to the device, and may: be more performant for
467    device access than host-local memory.
468
469Direct Drawing Commands::
470    _Drawing commands_ that take all their parameters as direct arguments to
471    the command (and not sourced via structures in buffer memory as the
472    _indirect drawing commands_).
473    Includes
474ifdef::VK_EXT_multi_draw[]
475    flink:vkCmdDrawMultiIndexedEXT, flink:vkCmdDrawMultiEXT,
476endif::VK_EXT_multi_draw[]
477ifdef::VK_NV_mesh_shader[]
478    flink:vkCmdDrawMeshTasksNV,
479endif::VK_NV_mesh_shader[]
480ifdef::VK_EXT_mesh_shader[]
481    flink:vkCmdDrawMeshTasksEXT,
482endif::VK_EXT_mesh_shader[]
483    flink:vkCmdDraw, and flink:vkCmdDrawIndexed.
484
485ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
486Disjoint::
487    _Disjoint planes_ are _image planes_ to which memory is bound
488    independently. +
489    A _disjoint image_ consists of multiple _disjoint planes_, and is
490    created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT bit set.
491endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
492
493Dispatchable Command::
494    A non-global command.
495    The first argument to each dispatchable command is a dispatchable handle
496    type.
497
498Dispatchable Handle::
499    A handle of a pointer handle type which may: be used by layers as part
500    of intercepting API commands.
501
502Dispatching Commands::
503    Commands that provoke work using a compute pipeline.
504    Includes flink:vkCmdDispatch and flink:vkCmdDispatchIndirect.
505
506Drawing Commands::
507    Commands that provoke work using a graphics pipeline.
508    Includes flink:vkCmdDraw, flink:vkCmdDrawIndexed,
509ifdef::VK_VERSION_1_2[]
510    flink:vkCmdDrawIndirectCount, flink:vkCmdDrawIndexedIndirectCount,
511endif::VK_VERSION_1_2[]
512ifdef::VK_KHR_draw_indirect_count[]
513    flink:vkCmdDrawIndirectCountKHR, flink:vkCmdDrawIndexedIndirectCountKHR,
514endif::VK_KHR_draw_indirect_count[]
515ifdef::VK_AMD_draw_indirect_count[]
516    flink:vkCmdDrawIndirectCountAMD, flink:vkCmdDrawIndexedIndirectCountAMD,
517endif::VK_AMD_draw_indirect_count[]
518ifdef::VK_EXT_multi_draw[]
519    flink:vkCmdDrawMultiIndexedEXT, flink:vkCmdDrawMultiEXT,
520endif::VK_EXT_multi_draw[]
521ifdef::VK_NV_mesh_shader[]
522    flink:vkCmdDrawMeshTasksNV, flink:vkCmdDrawMeshTasksIndirectNV,
523    flink:vkCmdDrawMeshTasksIndirectCountNV,
524endif::VK_NV_mesh_shader[]
525ifdef::VK_EXT_mesh_shader[]
526    flink:vkCmdDrawMeshTasksEXT, flink:vkCmdDrawMeshTasksIndirectEXT,
527    flink:vkCmdDrawMeshTasksIndirectCountEXT,
528endif::VK_EXT_mesh_shader[]
529    flink:vkCmdDrawIndirect, and flink:vkCmdDrawIndexedIndirect.
530
531Duration (Command)::
532    The _duration_ of a Vulkan command refers to the interval between
533    calling the command and its return to the caller.
534
535Dynamic Storage Buffer::
536    A storage buffer whose offset is specified each time the storage buffer
537    is bound to a command buffer via a descriptor set.
538
539Dynamic Uniform Buffer::
540    A uniform buffer whose offset is specified each time the uniform buffer
541    is bound to a command buffer via a descriptor set.
542
543Dynamically Uniform::
544    See _Dynamically Uniform_ in section 2.2 "`Terms`" of the
545    <<spirv-spec,Khronos SPIR-V Specification>>.
546
547ifdef::VK_KHR_video_queue[]
548Encode Input Picture::
549    A video picture resource used as the input of a video encode operation.
550endif::VK_KHR_video_queue[]
551
552Element::
553    Arrays are composed of multiple elements, where each element exists at a
554    unique index within that array.
555    Used primarily to describe data passed to or returned from the Vulkan
556    API.
557
558Explicitly-Enabled Layer::
559    A layer enabled by the application by adding it to the enabled layer
560    list in flink:vkCreateInstance or flink:vkCreateDevice.
561
562Event::
563    A synchronization primitive that is signaled when execution of previous
564    commands completes through a specified set of pipeline stages.
565    Events can be waited on by the device and polled by the host.
566    Represented by a slink:VkEvent object.
567
568Executable State (Command Buffer)::
569    A command buffer that has ended recording commands and can: be executed.
570    See also Initial State and Recording State.
571
572Execution Dependency::
573    A dependency that guarantees that certain pipeline stages`' work for a
574    first set of commands has completed execution before certain pipeline
575    stages`' work for a second set of commands begins execution.
576    This is accomplished via pipeline barriers, subpass dependencies,
577    events, or implicit ordering operations.
578
579Execution Dependency Chain::
580    A sequence of execution dependencies that transitively act as a single
581    execution dependency.
582
583ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
584Explicit chroma reconstruction::
585    An implementation of sampler {YCbCr} conversion which reconstructs
586    reduced-resolution chroma samples to luma resolution and then separately
587    performs texture sample interpolation.
588    This is distinct from an implicit implementation, which incorporates
589    chroma sample reconstruction into texture sample interpolation.
590endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
591
592Extension Scope::
593    The set of objects and commands that can: be affected by an extension.
594    Extensions are either device scope or instance scope.
595
596Extending Structure::
597    A structure type which may appear in the _pname:pNext chain_ of another
598    structure, extending the functionality of the other structure.
599    Extending structures may be defined by either core API versions or
600    extensions.
601
602ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[]
603External Handle::
604    A resource handle which has meaning outside of a specific Vulkan device
605    or its parent instance.
606    External handles may: be used to share resources between multiple Vulkan
607    devices in different instances, or between Vulkan and other APIs.
608    Some external handle types correspond to platform-defined handles, in
609    which case the resource may: outlive any particular Vulkan device or
610    instance and may: be transferred between processes, or otherwise
611    manipulated via functionality defined by the platform for that handle
612    type.
613endif::VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[]
614
615External synchronization::
616    A type of synchronization required: of the application, where parameters
617    defined to be externally synchronized must: not be used simultaneously
618    in multiple threads.
619
620Facingness (Polygon)::
621    A classification of a polygon as either front-facing or back-facing,
622    depending on the orientation (winding order) of its vertices.
623
624Facingness (Fragment)::
625    A fragment is either front-facing or back-facing, depending on the
626    primitive it was generated from.
627    If the primitive was a polygon (regardless of polygon mode), the
628    fragment inherits the facingness of the polygon.
629    All other fragments are front-facing.
630
631Fence::
632    A synchronization primitive that is signaled when a set of batches or
633    sparse binding operations complete execution on a queue.
634    Fences can: be waited on by the host.
635    Represented by a slink:VkFence object.
636
637ifdef::VK_KHR_video_coding[]
638Field (Video)::
639    Possibly discontinuous subregions of a frame.
640    Frames may: consist of two fields, a top field and a bottom field.
641endif::VK_KHR_video_coding[]
642
643Flat Shading::
644    A property of a vertex attribute that causes the value from a single
645    vertex (the provoking vertex) to be used for all vertices in a
646    primitive, and for interpolation of that attribute to return that single
647    value unaltered.
648
649Format Features::
650    A set of features from elink:VkFormatFeatureFlagBits that a
651    elink:VkFormat is capable of using for various commands.
652    The list is determined by factors such as elink:VkImageTiling.
653
654Fragment::
655    A rectangular framebuffer region with associated data produced by
656    <<primsrast,rasterization>> and processed by <<fragops,fragment
657    operations>> including the fragment shader.
658
659[[glossary-fragment-area]]
660Fragment Area::
661    The width and height, in pixels, of a fragment.
662
663ifdef::VK_EXT_fragment_density_map[]
664[[glossary-fragment-density]]
665Fragment Density::
666    The ratio of fragments per framebuffer area in the x and y direction.
667
668[[glossary-fragment-density-texel-size]]
669Fragment Density Texel Size::
670    The [eq]#(w,h)# framebuffer region in pixels that each texel in a
671    fragment density map applies to.
672endif::VK_EXT_fragment_density_map[]
673
674Fragment Input Attachment Interface::
675    Variables with code:UniformConstant storage class and a decoration of
676    code:InputAttachmentIndex that are statically used by a fragment
677    shader's entry point, which receive values from input attachments.
678
679ifdef::VK_AMD_shader_fragment_mask[]
680Fragment Mask::
681    A lookup table that associates color samples with color fragment values.
682endif::VK_AMD_shader_fragment_mask[]
683
684Fragment Output Interface::
685    A fragment shader entry point's variables with code:Output storage
686    class, which output to color and/or depth/stencil attachments.
687
688ifdef::VK_KHR_video_queue[]
689Frame (Video)::
690    A multi-dimensional array of luma samples and an optional
691    multi-dimensional array of chroma samples.
692endif::VK_KHR_video_queue[]
693
694ifdef::VK_EXT_shader_tile_image[]
695[[glossary-fragment-tile-image-interface]]
696Fragment Tile Image Interface::
697    A fragment shader entry point's variables with code:TileImageEXT storage
698    class and a decoration of code:Location, which are used to read values
699    from color attachments.
700endif::VK_EXT_shader_tile_image[]
701
702Framebuffer::
703    A collection of image views and a set of dimensions that, in conjunction
704    with a render pass, define the inputs and outputs used by drawing
705    commands.
706    Represented by a slink:VkFramebuffer object.
707
708Framebuffer Attachment::
709    One of the image views used in a framebuffer.
710
711Framebuffer Coordinates::
712    A coordinate system in which adjacent pixels`' coordinates differ by 1
713    in x and/or y, with [eq]#(0,0)# in the upper left corner and pixel
714    centers at half-integers.
715
716Framebuffer-Space::
717    Operating with respect to framebuffer coordinates.
718
719Framebuffer-Local::
720    A framebuffer-local dependency guarantees that only for a single
721    framebuffer region, the first set of operations happens-before the
722    second set of operations.
723
724Framebuffer-Global::
725    A framebuffer-global dependency guarantees that for all framebuffer
726    regions, the first set of operations happens-before the second set of
727    operations.
728
729Framebuffer Region::
730    A framebuffer region is a set of sample (x, y, layer, sample)
731    coordinates that is a subset of the entire framebuffer.
732
733Front-Facing::
734    See Facingness.
735
736Full Compatibility::
737    A given version of the API is fully compatible with another version if
738    an application, relying only on valid behavior and functionality defined
739    by either of those specifications, is able to correctly run against each
740    version without any modification.
741    This assumes no active attempt by that application to not run when it
742    detects a different version.
743
744Global Command::
745    A Vulkan command for which the first argument is not a dispatchable
746    handle type.
747
748Global Workgroup::
749    A collection of local workgroups dispatched by a single dispatching
750ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[or single mesh task drawing]
751    command.
752
753Handle::
754    An opaque integer or pointer value used to refer to a Vulkan object.
755    Each object type has a unique handle type.
756
757Happen-after, happens-after::
758    A transitive, irreflexive and antisymmetric ordering relation between
759    operations.
760    An execution dependency with a source of *A* and a destination of *B*
761    enforces that *B* happens-after *A*.
762    The inverse relation of happens-before.
763
764Happen-before, happens-before::
765    A transitive, irreflexive and antisymmetric ordering relation between
766    operations.
767    An execution dependency with a source of *A* and a destination of *B*
768    enforces that *A* happens-before *B*.
769    The inverse relation of happens-after.
770
771Helper Invocation::
772    A fragment shader invocation that is created solely for the purposes of
773    evaluating derivatives for use in non-helper fragment shader
774    invocations, and which does not have side effects.
775
776Host::
777    The processor(s) and execution environment that the application runs on,
778    and that the Vulkan API is exposed on.
779
780Host Mapped Device Memory::
781    Device memory that is mapped for host access using flink:vkMapMemory.
782
783ifdef::VK_EXT_external_memory_host[]
784Host Mapped Foreign Memory::
785    Memory owned by a foreign device that is mapped for host access.
786endif::VK_EXT_external_memory_host[]
787
788Host Memory::
789    Memory not accessible to the device, used to store implementation data
790    structures.
791
792Host-Accessible Subresource::
793    A buffer, or a linear image subresource in either the
794    ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
795    layout.
796    Host-accessible subresources have a well-defined addressing scheme which
797    can be used by the host.
798
799Host-Local Memory::
800    Memory that is not local to the device, and may: be less performant for
801    device access than device-local memory.
802
803Host-Visible Memory::
804    Device memory that can: be mapped on the host and can: be read and
805    written by the host.
806
807ICD::
808    Installable Client Driver.
809    An ICD is represented as a slink:VkPhysicalDevice.
810
811[[glossary-identically-defined]]
812Identically Defined Objects::
813    Objects of the same type where all arguments to their creation or
814    allocation functions, with the exception of pname:pAllocator, are +
815    . Vulkan handles which refer to the same object or
816    . identical scalar or enumeration values or
817    . Host pointers which point to an array of values or structures which
818      also satisfy these three constraints.
819
820Image::
821    A resource that represents a multi-dimensional formatted interpretation
822    of device memory.
823    Represented by a slink:VkImage object.
824
825Image Subresource::
826    A specific mipmap level, layer, and set of aspects of an image.
827
828Image Subresource Range::
829    A set of image subresources that are contiguous mipmap levels and
830    layers.
831
832Image View::
833    An object that represents an image subresource range of a specific
834    image, and state controlling how the contents are interpreted.
835    Represented by a slink:VkImageView object.
836
837Immutable Sampler::
838    A sampler descriptor provided at descriptor set layout creation time for
839    a specific binding.
840    This sampler is then used for that binding in all descriptor sets
841    allocated with the layout, and it cannot: be changed.
842
843ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
844Implicit chroma reconstruction::
845    An implementation of sampler {YCbCr} conversion which reconstructs the
846    reduced-resolution chroma samples directly at the sample point, as part
847    of the normal texture sampling operation.
848    This is distinct from an _explicit chroma reconstruction_
849    implementation, which reconstructs the reduced-resolution chroma samples
850    to the resolution of the luma samples, then filters the result as part
851    of texture sample interpolation.
852endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
853
854Implicitly-Enabled Layer::
855    A layer enabled by a loader-defined mechanism outside the Vulkan API,
856    rather than explicitly by the application during instance or device
857    creation.
858
859ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
860Inactive Object (Ray Tracing)::
861    A primitive or instance in a ray tracing acceleration structure which
862    has a corresponding ID, but which will never report an intersection with
863    any ray.
864endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[]
865
866Index Buffer::
867    A buffer bound via flink:vkCmdBindIndexBuffer which is the source of
868    index values used to fetch vertex attributes for a
869    flink:vkCmdDrawIndexed or flink:vkCmdDrawIndexedIndirect command.
870
871Indexed Drawing Commands::
872    _Drawing commands_ which use an _index buffer_ as the source of index
873    values used to fetch vertex attributes for a drawing command.
874    Includes flink:vkCmdDrawIndexed,
875ifdef::VK_VERSION_1_2[]
876    flink:vkCmdDrawIndexedIndirectCount,
877endif::VK_VERSION_1_2[]
878ifdef::VK_KHR_draw_indirect_count[]
879    flink:vkCmdDrawIndexedIndirectCountKHR,
880endif::VK_KHR_draw_indirect_count[]
881ifdef::VK_AMD_draw_indirect_count[]
882    flink:vkCmdDrawIndexedIndirectCountAMD,
883endif::VK_AMD_draw_indirect_count[]
884ifdef::VK_EXT_multi_draw[]
885    flink:vkCmdDrawMultiIndexedEXT,
886endif::VK_EXT_multi_draw[]
887    and flink:vkCmdDrawIndexedIndirect.
888
889Indirect Commands::
890    Drawing or dispatching commands that source some of their parameters
891    from structures in buffer memory.
892    Includes flink:vkCmdDrawIndirect, flink:vkCmdDrawIndexedIndirect,
893ifdef::VK_VERSION_1_2[]
894    flink:vkCmdDrawIndirectCount, flink:vkCmdDrawIndexedIndirectCount,
895endif::VK_VERSION_1_2[]
896ifdef::VK_KHR_draw_indirect_count[]
897    flink:vkCmdDrawIndirectCountKHR, flink:vkCmdDrawIndexedIndirectCountKHR,
898endif::VK_KHR_draw_indirect_count[]
899ifdef::VK_AMD_draw_indirect_count[]
900    flink:vkCmdDrawIndirectCountAMD, flink:vkCmdDrawIndexedIndirectCountAMD,
901endif::VK_AMD_draw_indirect_count[]
902ifdef::VK_NV_mesh_shader[]
903    flink:vkCmdDrawMeshTasksIndirectNV,
904    flink:vkCmdDrawMeshTasksIndirectCountNV,
905endif::VK_NV_mesh_shader[]
906ifdef::VK_EXT_mesh_shader[]
907    flink:vkCmdDrawMeshTasksIndirectEXT,
908    flink:vkCmdDrawMeshTasksIndirectCountEXT,
909endif::VK_EXT_mesh_shader[]
910    and flink:vkCmdDispatchIndirect.
911
912ifdef::VK_NV_device_generated_commands[]
913Indirect Commands Layout::
914    A definition of a sequence of commands, that are generated on the device
915    via flink:vkCmdPreprocessGeneratedCommandsNV and
916    flink:vkCmdExecuteGeneratedCommandsNV.
917    Each sequence is comprised of multiple
918    elink:VkIndirectCommandsTokenTypeNV, which represent a subset of
919    traditional command buffer commands.
920    Represented as slink:VkIndirectCommandsLayoutNV.
921endif::VK_NV_device_generated_commands[]
922
923Indirect Drawing Commands::
924    _Drawing commands_ that source some of their parameters from structures
925    in buffer memory.
926    Includes flink:vkCmdDrawIndirect,
927ifdef::VK_VERSION_1_2[]
928    flink:vkCmdDrawIndirectCount, flink:vkCmdDrawIndexedIndirectCount,
929endif::VK_VERSION_1_2[]
930ifdef::VK_KHR_draw_indirect_count[]
931    flink:vkCmdDrawIndirectCountKHR, flink:vkCmdDrawIndexedIndirectCountKHR,
932endif::VK_KHR_draw_indirect_count[]
933ifdef::VK_AMD_draw_indirect_count[]
934    flink:vkCmdDrawIndirectCountAMD, flink:vkCmdDrawIndexedIndirectCountAMD,
935endif::VK_AMD_draw_indirect_count[]
936ifdef::VK_NV_mesh_shader[]
937    flink:vkCmdDrawMeshTasksIndirectNV,
938    flink:vkCmdDrawMeshTasksIndirectCountNV,
939endif::VK_NV_mesh_shader[]
940ifdef::VK_EXT_mesh_shader[]
941    flink:vkCmdDrawMeshTasksIndirectEXT,
942    flink:vkCmdDrawMeshTasksIndirectCountEXT,
943endif::VK_EXT_mesh_shader[]
944    and flink:vkCmdDrawIndexedIndirect.
945
946Initial State (Command Buffer)::
947    A command buffer that has not begun recording commands.
948    See also Recording State and Executable State.
949
950ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
951Inline Uniform Block::
952    A descriptor type that represents uniform data stored directly in
953    descriptor sets, and supports read-only access in a shader.
954endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
955
956Input Attachment::
957    A descriptor type that represents an image view, and supports unfiltered
958    read-only access in a shader, only at the fragment's location in the
959    view.
960
961Instance::
962    The top-level Vulkan object, which represents the application's
963    connection to the implementation.
964    Represented by a slink:VkInstance object.
965
966Instance-Level Command::
967    Any command that is dispatched from an instance, or from a child object
968    of an instance, except for physical devices and their children.
969
970Instance-Level Functionality::
971    All instance-level commands and objects, and their structures,
972    enumerated types, and enumerants.
973
974Instance-Level Object::
975    High-level Vulkan objects, which are not physical devices, nor children
976    of physical devices.
977    For example, slink:VkInstance is an instance-level object.
978
979ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
980Instance (Memory)::
981    In a logical device representing more than one physical device, some
982    device memory allocations have the requested amount of memory allocated
983    multiple times, once for each physical device in a device mask.
984    Each such replicated allocation is an instance of the device memory.
985
986Instance (Resource)::
987    In a logical device representing more than one physical device, buffer
988    and image resources exist on all physical devices but can: be bound to
989    memory differently on each.
990    Each such replicated resource is an instance of the resource.
991endif::VK_VERSION_1_1,VK_KHR_device_group[]
992
993Internal Synchronization::
994    A type of synchronization required: of the implementation, where
995    parameters not defined to be externally synchronized may: require
996    internal mutexing to avoid multithreaded race conditions.
997
998Invocation (Shader)::
999    A single execution of an entry point in a SPIR-V module.
1000    For example, a single vertex's execution of a vertex shader or a single
1001    fragment's execution of a fragment shader.
1002
1003Invocation Group::
1004    A set of shader invocations that are executed in parallel and that must:
1005    execute the same control flow path in order for control flow to be
1006    considered dynamically uniform.
1007
1008ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1009Invocation Repack Instruction::
1010    A ray tracing <<ray-tracing-repack,instruction>> where the
1011    implementation may: change the set of invocations that are executing.
1012endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1013
1014ifdef::VK_KHR_deferred_host_operations[]
1015Join (Deferred Host Operations)::
1016    The act of instructing a thread to participate in the execution of a
1017    deferred operation.
1018    See <<deferred-host-operations, Deferred Host Operations>>.
1019endif::VK_KHR_deferred_host_operations[]
1020
1021ifdef::VK_NV_linear_color_attachment[]
1022[[glossary-linear-color-attachment]]
1023Linear Color Attachment::
1024    A color attachment with linear tiling
1025endif::VK_NV_linear_color_attachment[]
1026
1027[[glossary-linear-resource]]
1028Linear Resource::
1029+
1030--
1031A resource is _linear_ if it is one of the following:
1032
1033  * a slink:VkBuffer
1034  * a slink:VkImage created with ename:VK_IMAGE_TILING_LINEAR
1035ifdef::VK_EXT_image_drm_format_modifier[]
1036  * a slink:VkImage created with
1037    ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and whose
1038    <<glossary-drm-format-modifier,Linux DRM format modifier>> is
1039    code:DRM_FORMAT_MOD_LINEAR
1040endif::VK_EXT_image_drm_format_modifier[]
1041ifdef::VK_NV_ray_tracing[]
1042  * a slink:VkAccelerationStructureNV
1043endif::VK_NV_ray_tracing[]
1044ifdef::VK_KHR_acceleration_structure[]
1045
1046Because a slink:VkAccelerationStructureKHR resource does not have memory
1047bound to it directly, it is considered neither linear nor non-linear.
1048However, the slink:VkBuffer on which a slink:VkAccelerationStructureKHR
1049resource is placed is a linear resource.
1050endif::VK_KHR_acceleration_structure[]
1051
1052A resource is _non-linear_ if it is one of the following:
1053
1054  * a slink:VkImage created with ename:VK_IMAGE_TILING_OPTIMAL
1055ifdef::VK_EXT_image_drm_format_modifier[]
1056  * a slink:VkImage created with
1057    ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT and whose
1058    <<glossary-drm-format-modifier,Linux DRM format modifier>> is not
1059    code:DRM_FORMAT_MOD_LINEAR
1060endif::VK_EXT_image_drm_format_modifier[]
1061--
1062
1063ifdef::VK_EXT_image_drm_format_modifier[]
1064[[glossary-drm-format-modifier,Linux DRM format modifier]]
1065Linux DRM Format Modifier::
1066    A 64-bit, vendor-prefixed, semi-opaque unsigned integer describing
1067    vendor-specific details of an image's memory layout.
1068    In Linux graphics APIs, _modifiers_ are commonly used to specify the
1069    memory layout of externally shared images.
1070    An image has a _modifier_ if and only if it is created with pname:tiling
1071    equal to ename:VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT.
1072    For more details, refer to the appendix for extension
1073    `apiext:VK_EXT_image_drm_format_modifier`.
1074endif::VK_EXT_image_drm_format_modifier[]
1075
1076Local Workgroup::
1077    A collection of compute shader invocations invoked by a single
1078    dispatching command, which share data via code:WorkgroupLocal variables
1079    and can synchronize with each other.
1080
1081Logical Device::
1082    An object that represents the application's interface to the physical
1083    device.
1084    The logical device is the parent of most Vulkan objects.
1085    Represented by a slink:VkDevice object.
1086
1087Logical Operation::
1088    Bitwise operations between a fragment color value and a value in a color
1089    attachment, that produce a final color value to be written to the
1090    attachment.
1091
1092Lost Device::
1093    A state that a logical device may: be in as a result of unrecoverable
1094    implementation errors, or other exceptional conditions.
1095
1096Mappable::
1097    See Host-Visible Memory.
1098
1099Memory Dependency::
1100    A memory dependency is an execution dependency which includes
1101    availability and visibility operations such that:
1102
1103  * The first set of operations happens-before the availability operation
1104  * The availability operation happens-before the visibility operation
1105  * The visibility operation happens-before the second set of operations
1106
1107Memory Domain::
1108    A memory domain is an abstract place to which memory writes are made
1109    available by availability operations and memory domain operations.
1110    The memory domains correspond to the set of agents that the write can:
1111    then be made visible to.
1112    The memory domains are _host_, _device_, _shader_, _workgroup instance_
1113    (for workgroup instance there is a unique domain for each compute
1114    workgroup) and _subgroup instance_ (for subgroup instance there is a
1115    unique domain for each subgroup).
1116
1117Memory Domain Operation::
1118    An operation that makes the writes that are available to one memory
1119    domain available to another memory domain.
1120
1121Memory Heap::
1122    A region of memory from which device memory allocations can: be made.
1123
1124Memory Type::
1125    An index used to select a set of memory properties (e.g. mappable,
1126    cached) for a device memory allocation.
1127
1128ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
1129Mesh Shading Pipeline::
1130    A graphics pipeline where the primitives are assembled explicitly in the
1131    shader stages.
1132    In contrast to the primitive shading pipeline where input primitives are
1133    assembled by fixed function processing.
1134
1135Mesh Tasks Drawing Commands::
1136    _Drawing commands_ which create shader invocations organized in
1137    workgroups for drawing mesh tasks.
1138    Includes
1139ifdef::VK_NV_mesh_shader[]
1140    flink:vkCmdDrawMeshTasksNV, flink:vkCmdDrawMeshTasksIndirectNV, and
1141    flink:vkCmdDrawMeshTasksIndirectCountNV,
1142endif::VK_NV_mesh_shader[]
1143ifdef::VK_EXT_mesh_shader[]
1144    flink:vkCmdDrawMeshTasksEXT, flink:vkCmdDrawMeshTasksIndirectEXT, and
1145    flink:vkCmdDrawMeshTasksIndirectCountEXT
1146endif::VK_EXT_mesh_shader[]
1147    .
1148endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
1149
1150Minimum Mip Level Size::
1151    The smallest size that is permitted for a mip level.
1152    For conventional images this is 1x1x1.
1153ifdef::VK_NV_corner_sampled_image[]
1154    For corner-sampled images, this is 2x2x2.
1155endif::VK_NV_corner_sampled_image[]
1156    See <<resources-image-mip-level-sizing, Image Mip Level Sizing>>.
1157
1158Mip Tail Region::
1159    The set of mipmap levels of a sparse residency texture that are too
1160    small to fill a sparse block, and that must: all be bound to memory
1161    collectively and opaquely.
1162
1163ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1164Multi-planar::
1165    A _multi-planar format_ (or "`planar format`") is an image format
1166    consisting of more than one _plane_, identifiable with a etext:_2PLANE
1167    or etext:_3PLANE component to the format name and listed in
1168    <<formats-requiring-sampler-ycbcr-conversion>>.
1169    A _multi-planar image_ (or "`planar image`") is an image of a
1170    multi-planar format.
1171endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1172
1173ifdef::VK_EXT_nested_command_buffer[]
1174Nested Command Buffers::
1175    A nested command buffer is a secondary command buffer that is executed
1176    by another secondary command buffer, which may itself execute other
1177    secondary command buffers.
1178endif::VK_EXT_nested_command_buffer[]
1179
1180Non-Dispatchable Handle::
1181    A handle of an integer handle type.
1182    Handle values may: not be unique, even for two objects of the same type.
1183
1184Non-Indexed Drawing Commands::
1185    _Drawing commands_ for which the vertex attributes are sourced in linear
1186    order from the vertex input attributes for a drawing command (i.e. they
1187    do not use an _index buffer_).
1188    Includes flink:vkCmdDraw,
1189ifdef::VK_VERSION_1_2[]
1190    flink:vkCmdDrawIndirectCount,
1191endif::VK_VERSION_1_2[]
1192ifdef::VK_KHR_draw_indirect_count[]
1193    flink:vkCmdDrawIndirectCountKHR,
1194endif::VK_KHR_draw_indirect_count[]
1195ifdef::VK_AMD_draw_indirect_count[]
1196    flink:vkCmdDrawIndirectCountAMD,
1197endif::VK_AMD_draw_indirect_count[]
1198ifdef::VK_EXT_multi_draw[]
1199    flink:vkCmdDrawMultiEXT,
1200endif::VK_EXT_multi_draw[]
1201    and flink:vkCmdDrawIndirect.
1202
1203Normalized::
1204    A value that is interpreted as being in the range [eq]#[0,1]# as a
1205    result of being implicitly divided by some other value.
1206
1207Normalized Device Coordinates::
1208    A coordinate space after perspective division is applied to clip
1209    coordinates, and before the viewport transformation converts them to
1210    framebuffer coordinates.
1211
1212Obsoleted (feature)::
1213    A feature is obsolete if it can no longer be used.
1214
1215ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
1216Opaque Capture Address::
1217    A 64-bit value representing the device address of a buffer or memory
1218    object that is expected to be used by trace capture/replay tools in
1219    combination with the <<features-bufferDeviceAddress,
1220    pname:bufferDeviceAddress>> feature.
1221endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
1222
1223Overlapped Range (Aliased Range)::
1224    The aliased range of a device memory allocation that intersects a given
1225    image subresource of an image or range of a buffer.
1226
1227Ownership (Resource)::
1228    If an entity (e.g. a queue family) has ownership of a resource, access
1229    to that resource is well-defined for access by that entity.
1230
1231Packed Format::
1232    A format whose components are stored as a single texel block in memory,
1233    with their relative locations defined within that element.
1234
1235ifdef::VK_NV_geometry_shader_passthrough[]
1236Passthrough Geometry Shader::
1237    A geometry shader which uses the code:PassthroughNV decoration on a
1238    variable in its input interface.
1239    Output primitives in a passthrough geometry shader always have the same
1240    topology as the input primitive and are not produced by emitting
1241    vertices.
1242endif::VK_NV_geometry_shader_passthrough[]
1243
1244ifdef::VK_VERSION_1_1,VK_KHR_external_semaphore,VK_KHR_external_fence[]
1245Payload::
1246    Importable or exportable reference to the internal data of an object in
1247    Vulkan.
1248endif::VK_VERSION_1_1,VK_KHR_external_semaphore,VK_KHR_external_fence[]
1249
1250ifdef::VK_NV_mesh_shader[]
1251Per-View::
1252    A variable that has an array of values which are output, one for each
1253    view that is being generated.
1254    A mesh shader which uses the code:PerViewNV decoration on a variable in
1255    its output interface.
1256endif::VK_NV_mesh_shader[]
1257
1258ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
1259Peer Memory::
1260    An instance of memory corresponding to a different physical device than
1261    the physical device performing the memory access, in a logical device
1262    that represents multiple physical devices.
1263endif::VK_VERSION_1_1,VK_KHR_device_group[]
1264
1265Physical Device::
1266    An object that represents a single device in the system.
1267    Represented by a slink:VkPhysicalDevice object.
1268
1269Physical-Device-Level Command::
1270    Any command that is dispatched from a physical device.
1271
1272Physical-Device-Level Functionality::
1273    All physical-device-level commands and objects, and their structures,
1274    enumerated types, and enumerants.
1275
1276Physical-Device-Level Object::
1277    Physical device objects.
1278    For example, slink:VkPhysicalDevice is a physical-device-level object.
1279
1280Pipeline::
1281    An object controlling how graphics or compute work is executed on the
1282    device.
1283    A pipeline includes one or more shaders, as well as state controlling
1284    any non-programmable stages of the pipeline.
1285    Represented by a slink:VkPipeline object.
1286
1287Pipeline Barrier::
1288    An execution and/or memory dependency recorded as an explicit command in
1289    a command buffer, that forms a dependency between the previous and
1290    subsequent commands.
1291
1292Pipeline Cache::
1293    An object that can: be used to collect and retrieve information from
1294    pipelines as they are created, and can: be populated with previously
1295    retrieved information in order to accelerate pipeline creation.
1296    Represented by a slink:VkPipelineCache object.
1297
1298ifdef::VKSC_VERSION_1_0[]
1299Pipeline JSON Schema::
1300    A JSON-based representation for encapsulating all pipeline state which
1301    is necessary for the offline pipeline cache compiler.
1302    This includes the SPIR-V shader module, pipeline layout, render pass
1303    information and pipeline state creation information.
1304endif::VKSC_VERSION_1_0[]
1305
1306Pipeline Layout::
1307    An object defining the set of resources (via a collection of descriptor
1308    set layouts) and push constants used by pipelines that are created using
1309    the layout.
1310    Used when creating a pipeline and when binding descriptor sets and
1311    setting push constant values.
1312    Represented by a slink:VkPipelineLayout object.
1313
1314ifdef::VK_KHR_pipeline_library[]
1315Pipeline Library::
1316    A pipeline that cannot be directly used, instead defining a set of
1317    shaders and shader groups which will be <<pipelines-library,linked into
1318    other pipelines>>.
1319endif::VK_KHR_pipeline_library[]
1320
1321Pipeline Stage::
1322    A logically independent execution unit that performs some of the
1323    operations defined by an action command.
1324
1325ifdef::VKSC_VERSION_1_0[]
1326Pipeline Identifier::
1327    An identifier that can be used to identify a specific pipeline
1328    independently from the pipeline description.
1329endif::VKSC_VERSION_1_0[]
1330
1331ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1332[[glossary-pipeline-trace-ray]]
1333Pipeline Trace Ray Instruction::
1334    A ray tracing instruction which traces a ray into an acceleration
1335    structure when using ray tracing pipelines.
1336    One of:
1337
1338ifdef::VK_NV_ray_tracing[]
1339  * code:OpTraceNV
1340endif::VK_NV_ray_tracing[]
1341ifdef::VK_KHR_ray_tracing_pipeline[]
1342  * code:OpTraceRayKHR
1343endif::VK_KHR_ray_tracing_pipeline[]
1344ifdef::VK_NV_ray_tracing_motion_blur[]
1345  * code:OpTraceRayMotionNV
1346ifdef::VK_NV_ray_tracing[]
1347  * code:OpTraceMotionNV
1348endif::VK_NV_ray_tracing[]
1349endif::VK_NV_ray_tracing_motion_blur[]
1350ifdef::VK_NV_ray_tracing_invocation_reorder[]
1351  * code:OpHitObjectTraceRayNV
1352ifdef::VK_NV_ray_tracing_motion_blur[]
1353  * code:OpHitObjectTraceRayMotionNV
1354endif::VK_NV_ray_tracing_motion_blur[]
1355endif::VK_NV_ray_tracing_invocation_reorder[]
1356
1357endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1358
1359pname:pNext Chain::
1360    A set of structures <<fundamentals-validusage-pNext,chained together>>
1361    through their ptext:pNext members.
1362
1363ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1364Planar::
1365    See _multi-planar_.
1366
1367Plane::
1368    An _image plane_ is part of the representation of an image, containing a
1369    subset of the color components necessary to represent the texels in the
1370    image and with a contiguous mapping of coordinates to bound memory.
1371    Most images consist only of a single plane, but some formats spread the
1372    components across multiple image planes.
1373    The host-accessible properties of each image plane are accessible for a
1374    linear layout using flink:vkGetImageSubresourceLayout.
1375    If a multi-planar image is created with the
1376    ename:VK_IMAGE_CREATE_DISJOINT_BIT bit set, the image is described as
1377    _disjoint_, and its planes are therefore bound to memory independently.
1378endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1379
1380Point Sampling (Rasterization)::
1381    A rule that determines whether a fragment sample location is covered by
1382    a polygon primitive by testing whether the sample location is in the
1383    interior of the polygon in framebuffer-space, or on the boundary of the
1384    polygon according to the tie-breaking rules.
1385
1386Potential Format Features::
1387    The union of all elink:VkFormatFeatureFlagBits that the implementation
1388    supports for a specified elink:VkFormat, over all supported image
1389    tilings.
1390ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
1391    For <<memory-external-android-hardware-buffer-external-formats,Android
1392    external formats>> the elink:VkFormatFeatureFlagBits is provided by the
1393    implementation.
1394endif::VK_ANDROID_external_memory_android_hardware_buffer[]
1395ifdef::VK_QNX_external_memory_screen_buffer[]
1396    For <<memory-external-screen-buffer-external-formats,QNX Screen external
1397    formats>> the elink:VkFormatFeatureFlagBits is provided by the
1398    implementation.
1399endif::VK_QNX_external_memory_screen_buffer[]
1400
1401Pre-rasterization::
1402    Operations that execute before <<primsrast,rasterization>>, and any
1403    state associated with those operations.
1404
1405ifdef::VK_KHR_swapchain[]
1406Presentable image::
1407    A sname:VkImage object obtained from a sname:VkSwapchainKHR used to
1408    present to a sname:VkSurfaceKHR object.
1409endif::VK_KHR_swapchain[]
1410
1411Preserve Attachment::
1412    One of a list of attachments in a subpass description that is not read
1413    or written by the subpass, but that is read or written on earlier and
1414    later subpasses and whose contents must: be preserved through this
1415    subpass.
1416
1417Primary Command Buffer::
1418    A command buffer that can: execute secondary command buffers, and can:
1419    be submitted directly to a queue.
1420
1421ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
1422Primitive Shading Pipeline::
1423    A graphics pipeline where input primitives are assembled by fixed
1424    function processing.
1425    It is the counterpart to mesh shading.
1426endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
1427
1428Primitive Topology::
1429    State controlling how vertices are assembled into primitives, e.g. as
1430    lists of triangles, strips of lines, etc.
1431
1432Promoted (feature)::
1433    A feature from an older extension is considered promoted if it is made
1434    available as part of a new core version or newer extension with wider
1435    support.
1436
1437ifdef::VK_VERSION_1_1[]
1438Protected Buffer::
1439    A buffer to which protected device memory can: be bound.
1440
1441Protected-capable Device Queue::
1442    A device queue to which protected command buffers can: be submitted.
1443
1444Protected Command Buffer::
1445    A command buffer which can: be submitted to a protected-capable device
1446    queue.
1447
1448Protected Device Memory::
1449    Device memory which can: be visible to the device but must: not be
1450    visible to the host.
1451
1452Protected Image::
1453    An image to which protected device memory can: be bound.
1454endif::VK_VERSION_1_1[]
1455
1456Provisional::
1457    A feature is released provisionally in order to get wider feedback on
1458    the functionality before it is finalized.
1459    Provisional features may change in ways that break backwards
1460    compatibility, and thus are not recommended for use in production
1461    applications.
1462
1463Provoking Vertex::
1464    The vertex in a primitive from which flat shaded attribute values are
1465    taken.
1466    This is generally the "`first`" vertex in the primitive, and depends on
1467    the primitive topology.
1468
1469Push Constants::
1470    A small bank of values writable via the API and accessible in shaders.
1471    Push constants allow the application to set values used in shaders
1472    without creating buffers or modifying and binding descriptor sets for
1473    each update.
1474
1475Push Constant Interface::
1476    The set of variables with code:PushConstant storage class that are
1477    statically used by a shader entry point, and which receive values from
1478    push constant commands.
1479
1480ifdef::VK_KHR_push_descriptor[]
1481Push Descriptors::
1482    Descriptors that are written directly into a command buffer rather than
1483    into a descriptor set.
1484    Push descriptors allow the application to set descriptors used in
1485    shaders without allocating or modifying descriptor sets for each update.
1486endif::VK_KHR_push_descriptor[]
1487
1488ifdef::VK_VERSION_1_1,VK_KHR_descriptor_update_template[]
1489Descriptor Update Template::
1490    An object specifying a mapping from descriptor update information in
1491    host memory to elements in a descriptor set, which helps enable more
1492    efficient descriptor set updates.
1493
1494endif::VK_VERSION_1_1,VK_KHR_descriptor_update_template[]
1495
1496Query Pool::
1497    An object containing a number of query entries and their associated
1498    state and results.
1499    Represented by a slink:VkQueryPool object.
1500
1501Queue::
1502    An object that executes command buffers and sparse binding operations on
1503    a device.
1504    Represented by a slink:VkQueue object.
1505
1506Queue Family::
1507    A set of queues that have common properties and support the same
1508    functionality, as advertised in slink:VkQueueFamilyProperties.
1509
1510Queue Operation::
1511    A unit of work to be executed by a specific queue on a device, submitted
1512    via a <<devsandqueues-submission, queue submission command>>.
1513    Each queue submission command details the specific queue operations that
1514    occur as a result of calling that command.
1515    Queue operations typically include work that is specific to each
1516    command, and synchronization tasks.
1517
1518Queue Submission::
1519    Zero or more batches and an optional fence to be signaled, passed to a
1520    command for execution on a queue.
1521    See the <<devsandqueues-submission, Devices and Queues chapter>> for
1522    more information.
1523
1524ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1525Ray Tracing Command::
1526    Commands that provoke work using a ray tracing pipeline.
1527    Includes
1528ifdef::VK_NV_ray_tracing[flink:vkCmdTraceRaysNV,]
1529ifdef::VK_KHR_ray_tracing_pipeline[flink:vkCmdTraceRaysKHR, and flink:vkCmdTraceRaysIndirectKHR]
1530    .
1531endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1532
1533ifdef::VK_KHR_video_queue[]
1534Reconstructed Picture::
1535    A video picture resource reconstructed from a compressed bitstream using
1536    video decode or encode operations that can: be used as a reference
1537    picture by future video decode or encode operations with the same video
1538    session.
1539endif::VK_KHR_video_queue[]
1540
1541Recording State (Command Buffer)::
1542    A command buffer that is ready to record commands.
1543    See also Initial State and Executable State.
1544
1545ifdef::VK_KHR_video_queue[]
1546Reference Picture::
1547    A video picture resource used by video decode and encode operations to
1548    provide predictions of the values of samples in the subsequently decoded
1549    or encoded pictures.
1550
1551Reference Picture Metadata::
1552    Opaque state associated with a DPB slot, maintained by a video session.
1553endif::VK_KHR_video_queue[]
1554
1555Release Operation (Resource)::
1556    An operation that releases ownership of an image subresource or buffer
1557    range.
1558
1559Render Pass::
1560    An object that represents a set of framebuffer attachments and phases of
1561    rendering using those attachments.
1562    Represented by a slink:VkRenderPass object.
1563
1564Render Pass Instance::
1565    A use of a render pass in a command buffer.
1566
1567Required Extensions::
1568    Extensions that must: be enabled alongside extensions dependent on them
1569    (see <<extendingvulkan-extensions-extensiondependencies, Extension
1570    Dependencies>>).
1571
1572Reset (Command Buffer)::
1573    Resetting a command buffer discards any previously recorded commands and
1574    puts a command buffer in the initial state.
1575
1576Residency Code::
1577    An integer value returned by sparse image instructions, indicating
1578    whether any sparse unbound texels were accessed.
1579
1580Resolve Attachment::
1581    A subpass attachment point, or image view, that is the target of a
1582    multisample resolve operation from the corresponding color attachment at
1583    the end of the subpass.
1584
1585ifdef::VK_KHR_swapchain[]
1586Retired Swapchain::
1587    A swapchain that has been used as the pname:oldSwapchain parameter to
1588    flink:vkCreateSwapchainKHR.
1589    Images cannot be acquired from a retired swapchain, however images that
1590    were acquired (but not presented) before the swapchain was retired can:
1591    be presented.
1592endif::VK_KHR_swapchain[]
1593
1594Sample Index::
1595    The index of a sample within a <<primsrast-multisampling-coverage-mask,
1596    single set of samples>>.
1597
1598Sample Shading::
1599    Invoking the fragment shader multiple times per fragment, with the
1600    covered samples partitioned among the invocations.
1601
1602Sampled Image::
1603    A descriptor type that represents an image view, and supports filtered
1604    (sampled) and unfiltered read-only access in a shader.
1605
1606Sampler::
1607    An object containing state controlling how sampled image data is sampled
1608    (or filtered) when accessed in a shader.
1609    Also a descriptor type describing the object.
1610    Represented by a slink:VkSampler object.
1611
1612Secondary Command Buffer::
1613    A command buffer that can: be executed by a primary command buffer, and
1614    must: not be submitted directly to a queue.
1615
1616Self-Dependency::
1617    A subpass dependency from a subpass to itself, i.e. with
1618    pname:srcSubpass equal to pname:dstSubpass.
1619    A self-dependency is not automatically performed during a render pass
1620    instance, rather a subset of it can: be performed via
1621    flink:vkCmdPipelineBarrier during the subpass.
1622
1623Semaphore::
1624    A synchronization primitive that supports signal and wait operations,
1625    and can: be used to synchronize operations within a queue or across
1626    queues.
1627    Represented by a slink:VkSemaphore object.
1628
1629Shader::
1630    Instructions selected (via an entry point) from a shader module, which
1631    are executed in a shader stage.
1632
1633ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1634Shader Call::
1635    An <<ray-tracing-shader-call,instruction>> which may: cause execution to
1636    continue in a different shader stage.
1637endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1638
1639Shader Code::
1640    A stream of instructions used to describe the operation of a shader.
1641
1642ifdef::VK_NV_device_generated_commands,VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]
1643Shader Group::
1644    A set of Shader Stages that are part of a slink:VkPipeline containing
1645    multiple of such sets.
1646    This allows the device to make use of all the shader groups from the
1647    bound pipeline independently.
1648endif::VK_NV_device_generated_commands,VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]
1649
1650Shader Module::
1651    A collection of shader code, potentially including several functions and
1652    entry points, that is used to create shaders in pipelines.
1653    Represented by a slink:VkShaderModule object.
1654
1655Shader Stage::
1656    A stage of the graphics or compute pipeline that executes shader code.
1657
1658ifdef::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
1659[[glossary-shading-rate]]
1660Shading Rate::
1661    The ratio of the number of fragment shader invocations generated in a
1662    fully covered framebuffer region to the size (in pixels) of that region.
1663endif::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
1664
1665ifdef::VK_NV_shading_rate_image[]
1666[[glossary-shading-rate-image]]
1667Shading Rate Image::
1668    An image used to establish the shading rate for a framebuffer region,
1669    where each pixel controls the shading rate for a corresponding
1670    framebuffer region.
1671endif::VK_NV_shading_rate_image[]
1672
1673ifdef::VK_KHR_shared_presentable_image[]
1674Shared presentable image::
1675    A presentable image created from a swapchain with elink:VkPresentModeKHR
1676    set to either ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or
1677    ename:VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR.
1678endif::VK_KHR_shared_presentable_image[]
1679
1680Side Effect::
1681    A store to memory or atomic operation on memory from a shader
1682    invocation.
1683
1684ifdef::VKSC_VERSION_1_0[]
1685Single Event Upset::
1686    A change of physical device state, such as a register or memory bitflip,
1687    e.g. caused by ionizing radiation.
1688endif::VKSC_VERSION_1_0[]
1689
1690ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1691Single-plane format::
1692    A format that is not _multi-planar_.
1693endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1694
1695Size-Compatible Image Formats::
1696    When a compressed image format and an uncompressed image format are
1697    size-compatible, it means that the texel block size of the uncompressed
1698    format must: equal the texel block size of the compressed format.
1699
1700Sparse Block::
1701    An element of a sparse resource that can be independently bound to
1702    memory.
1703    Sparse blocks of a particular sparse resource have a corresponding size
1704    in bytes that they use in the bound memory.
1705
1706Sparse Image Block::
1707    A sparse block in a sparse partially-resident image.
1708    In addition to the sparse block size in bytes, sparse image blocks have
1709    a corresponding width, height, and depth defining the dimensions of
1710    these elements in units of texels or compressed texel blocks, the latter
1711    being used in case of sparse images having a block-compressed format.
1712
1713Sparse Unbound Texel::
1714    A texel read from a region of a sparse texture that does not have memory
1715    bound to it.
1716
1717ifdef::VK_NV_ray_tracing_motion_blur[]
1718SRT::
1719    A decomposition of a spatial transform separating out scale, rotation,
1720    and translation which has better linear interpolation properties for
1721    representing motion.
1722endif::VK_NV_ray_tracing_motion_blur[]
1723
1724Static Use::
1725    An object in a shader is statically used by a shader entry point if any
1726    function in the entry point's call tree contains an instruction using
1727    the object.
1728    A reference in the entry point's interface list does not constitute a
1729    static use.
1730    Static use is used to constrain the set of descriptors used by a shader
1731    entry point.
1732
1733Storage Buffer::
1734    A descriptor type that represents a buffer, and supports reads, writes,
1735    and atomics in a shader.
1736
1737Storage Image::
1738    A descriptor type that represents an image view, and supports unfiltered
1739    loads, stores, and atomics in a shader.
1740
1741Storage Texel Buffer::
1742    A descriptor type that represents a buffer view, and supports
1743    unfiltered, formatted reads, writes, and atomics in a shader.
1744
1745ifdef::VK_VERSION_1_1,VK_EXT_shader_subgroup_vote[]
1746Subgroup::
1747    A set of shader invocations that can: synchronize and share data with
1748    each other efficiently.
1749    In compute shaders, the _local workgroup_ is a superset of the subgroup.
1750endif::VK_VERSION_1_1,VK_EXT_shader_subgroup_vote[]
1751
1752ifdef::VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot[]
1753Subgroup Mask::
1754    A bitmask for all invocations in the current subgroup with one bit per
1755    invocation, starting with the least significant bit in the first vector
1756    component, continuing to the last bit (less than code:SubgroupSize) in
1757    the last required vector component.
1758endif::VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot[]
1759
1760Subpass::
1761    A phase of rendering within a render pass, that reads and writes a
1762    subset of the attachments.
1763
1764Subpass Dependency::
1765    An execution and/or memory dependency between two subpasses described as
1766    part of render pass creation, and automatically performed between
1767    subpasses in a render pass instance.
1768    A subpass dependency limits the overlap of execution of the pair of
1769    subpasses, and can: provide guarantees of memory coherence between
1770    accesses in the subpasses.
1771
1772Subpass Description::
1773    Lists of attachment indices for input attachments, color attachments,
1774    depth/stencil attachment, resolve attachments,
1775ifdef::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]
1776    depth/stencil resolve,
1777endif::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]
1778    and preserve attachments used by the subpass in a render pass.
1779
1780Subset (Self-Dependency)::
1781    A subset of a self-dependency is a pipeline barrier performed during the
1782    subpass of the self-dependency, and whose stage masks and access masks
1783    each contain a subset of the bits set in the identically named mask in
1784    the self-dependency.
1785
1786Texel Block::
1787    A single addressable element of an image with an uncompressed
1788    elink:VkFormat, or a single compressed block of an image with a
1789    compressed elink:VkFormat.
1790
1791Texel Block Size::
1792    The size (in bytes) used to store a texel block of a compressed or
1793    uncompressed image.
1794
1795Texel Coordinate System::
1796    One of three coordinate systems (normalized, unnormalized, integer)
1797    defining how texel coordinates are interpreted in an image or a specific
1798    mipmap level of an image.
1799
1800ifdef::VK_EXT_shader_tile_image[]
1801[[glossary-tile-image]]
1802Tile Image::
1803    A per-tile view of a framebuffer attachment.
1804    If the `apiext:VK_EXT_shader_tile_image` extension is enabled, the
1805    framebuffer is considered to be divided into tiles.
1806
1807endif::VK_EXT_shader_tile_image[]
1808
1809ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
1810Timeline Semaphore::
1811    A semaphore with a strictly increasing 64-bit unsigned integer payload
1812    indicating whether the semaphore is signaled with respect to a
1813    particular reference value.
1814    Represented by a slink:VkSemaphore object created with a semaphore type
1815    of ename:VK_SEMAPHORE_TYPE_TIMELINE.
1816endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
1817
1818Uniform Texel Buffer::
1819    A descriptor type that represents a buffer view, and supports
1820    unfiltered, formatted, read-only access in a shader.
1821
1822Uniform Buffer::
1823    A descriptor type that represents a buffer, and supports read-only
1824    access in a shader.
1825
1826Units in the Last Place (ULP)::
1827    A measure of floating-point error loosely defined as the smallest
1828    representable step in a floating-point format near a given value.
1829    For the precise definition see <<spirvenv-precision-operation, Precision
1830    and Operation of SPIR-V instructions>> or Jean-Michel Muller, "`On the
1831    definition of ulp(x)`", RR-5504, INRIA.
1832    Other sources may also use the term "`unit of least precision`".
1833
1834Unnormalized::
1835    A value that is interpreted according to its conventional
1836    interpretation, and is not normalized.
1837
1838ifdef::VK_VERSION_1_1[]
1839Unprotected Buffer::
1840    A buffer to which unprotected device memory can: be bound.
1841
1842Unprotected Command Buffer::
1843    A command buffer which can: be submitted to an unprotected device queue
1844    or a protected-capable device queue.
1845
1846Unprotected Device Memory::
1847    Device memory which can: be visible to the device and can: be visible to
1848    the host.
1849
1850Unprotected Image::
1851    An image to which unprotected device memory can: be bound.
1852endif::VK_VERSION_1_1[]
1853
1854User-Defined Variable Interface::
1855    A shader entry point's variables with code:Input or code:Output storage
1856    class that are not built-in variables.
1857
1858Vertex Input Attribute::
1859    A graphics pipeline resource that produces input values for the vertex
1860    shader by reading data from a vertex input binding and converting it to
1861    the attribute's format.
1862
1863ifdef::VK_EXT_transform_feedback[]
1864Vertex Stream::
1865    A vertex stream is where the last
1866    <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader
1867    stages>> outputs vertex data, which then goes to the rasterizer, is
1868    captured to a transform feedback buffer, or both.
1869    Geometry shaders can: emit primitives to multiple independent vertex
1870    streams.
1871    Each vertex emitted by the geometry shader is directed at one of the
1872    vertex streams.
1873endif::VK_EXT_transform_feedback[]
1874
1875ifdef::VK_EXT_validation_cache[]
1876Validation Cache::
1877    An object that can: be used to collect and retrieve validation results
1878    from the validation layers, and can: be populated with previously
1879    retrieved results in order to accelerate the validation process.
1880    Represented by a slink:VkValidationCacheEXT object.
1881endif::VK_EXT_validation_cache[]
1882
1883Variable-Sized Descriptor Binding::
1884    A descriptor binding whose size will be specified when a descriptor set
1885    is allocated using this layout.
1886
1887Vertex Input Binding::
1888    A graphics pipeline resource that is bound to a buffer and includes
1889    state that affects addressing calculations within that buffer.
1890
1891Vertex Input Interface::
1892    A vertex shader entry point's variables with code:Input storage class,
1893    which receive values from vertex input attributes.
1894
1895ifdef::VK_KHR_video_queue[]
1896Video Bitstream Buffer::
1897    A resource that represents a linear array of data in device memory
1898    storing encoded video data.
1899    Represented by a slink:VkBuffer object.
1900
1901Video Coding Scope::
1902    A series of subsequent commands recorded into a command buffer starting
1903    with a flink:vkCmdBeginVideoCodingKHR command and ending with a
1904    flink:vkCmdEndVideoCodingKHR command that encompasses a set of video
1905    decode or encode operations.
1906
1907Video Coding Operations::
1908    Any operations recorded into a command buffer within a video coding
1909    scope, including video decode and encode operations.
1910
1911Video Decode Operation::
1912    An operation consuming data from a video bitstream buffer and zero or
1913    more reference pictures, and producing data to a decode output picture
1914    and an optional reconstructed picture.
1915
1916Video Encode Operation::
1917    An operation consuming data from an encode input picture and zero or
1918    more reference pictures, and producing data to a video bitstream buffer
1919    and an optional reconstructed picture.
1920
1921Video Picture Resource::
1922    A resource that represents a multi-dimensional formatted interpretation
1923    of device memory to be used with a video session as a decode output
1924    picture, encode input picture, reconstructed picture, and/or reference
1925    picture.
1926    It may: contain metadata associated with a particular video session it
1927    is used with.
1928    Represented by a slink:VkImage object and referred to using
1929    slink:VkImageView objects created from it.
1930
1931Video Session::
1932    A resource that represents and maintains the state needed to perform
1933    video decode or encode operations.
1934    Represented by a slink:VkVideoSessionKHR object.
1935
1936Video Session Parameters::
1937    A resource that stores preprocessed codec-specific parameters used with
1938    a compatible video session in video codec operations.
1939    Represented by a slink:VkVideoSessionParametersKHR object.
1940
1941Video Transcoding::
1942    The process of using the outputs of video decoding operations as inputs
1943    in video encoding operations.
1944endif::VK_KHR_video_queue[]
1945
1946ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
1947View Mask::
1948    When multiview is enabled, a view mask is a property of a subpass
1949    controlling which views the rendering commands are broadcast to.
1950endif::VK_VERSION_1_1,VK_KHR_multiview[]
1951
1952View Volume::
1953    A subspace in homogeneous coordinates, corresponding to post-projection
1954    x and y values between -1 and +1, and z values between 0 and +1.
1955
1956Viewport Transformation::
1957    A transformation from normalized device coordinates to framebuffer
1958    coordinates, based on a viewport rectangle and depth range.
1959
1960Visibility Operation::
1961    An operation that causes available values to become visible to specified
1962    memory accesses.
1963
1964Visible::
1965    A state of values written to memory that allows them to be accessed by a
1966    set of operations.
1967
1968// To be added per issue 18:
1969// Current State <<fundamentals-queueoperation>>
1970// Barycentric Coordinates <<primsrast-polygons-basic>>
1971// Internal Allocations <<memory-host-allocation-scope>>
1972// Unavailable, Available <<queries-operation>> - NB: this clashes with available/visible in terms of memory
1973// Signaled, Unsignaled <<synchronization-semaphores>> <<synchronization-fences>>
1974// Interior Vertices <<tessellation-tessellator-spacing>>
1975// Inner Vertices <<tessellation-triangle-tessellation>> <<tessellation-quad-tessellation>>
1976// Isolines <<tessellation-isoline-tessellation>>
1977// Binding Range <<sparsemem-memory-binding>>
1978
1979
1980[[lexicon-common-abbreviations]]
1981== Common Abbreviations
1982
1983The abbreviations and acronyms defined in this section are sometimes used in
1984the Specification and the API where they are considered clear and
1985commonplace.
1986
1987Src::
1988    Source
1989
1990Dst::
1991    Destination
1992
1993Min::
1994    Minimum
1995
1996Max::
1997    Maximum
1998
1999Rect::
2000    Rectangle
2001
2002Info::
2003    Information
2004
2005LOD::
2006    Level of Detail
2007
2008Log::
2009    Logarithm
2010
2011ID::
2012    Identifier
2013
2014UUID::
2015    Universally Unique Identifier
2016
2017Op::
2018    Operation
2019
2020R::
2021    Red color component
2022
2023G::
2024    Green color component
2025
2026B::
2027    Blue color component
2028
2029A::
2030    Alpha color component
2031
2032RTZ::
2033    Round towards zero
2034
2035RTE::
2036    Round to nearest even
2037
2038
2039ifdef::VK_KHR_video_queue[]
2040[[lexicon-video-abbreviations]]
2041== Video-Specific Abbreviations
2042
2043The following abbreviations and acronyms are used in the context of video
2044decode and encode operations to refer to commonly used video compression
2045terms in their usual abbreviated form:
2046
2047AVC::
2048    Advanced Video Coding
2049
2050Bipred::
2051    Bidirectional Prediction
2052
2053CABAC::
2054    Context-Adaptive Binary Arithmetic Coding
2055
2056CAVLC::
2057    Context-Adaptive Variable-Length Coding
2058
2059CBR::
2060    Constant Bit Rate
2061
2062CTB::
2063    Coding Tree Block
2064
2065Diff::
2066    Difference
2067
2068DPB::
2069    Decoded Picture Buffer
2070
2071GOP::
2072    Group Of Pictures
2073
2074HDR::
2075    High Dynamic Range
2076
2077HEVC::
2078    High Efficiency Video Coding
2079
2080HRD::
2081    Hypothetical Reference Decoder
2082
2083IDC::
2084    Indicator
2085
2086IDR::
2087    Instantaneous Decoder Refresh
2088
2089MB::
2090    Macroblock
2091
2092MV::
2093    Motion Vector
2094
2095NALU::
2096    Network Abstraction Layer Unit
2097
2098PCM::
2099    Pulse-Code Modulation
2100
2101Pic::
2102    Picture
2103
2104Pred::
2105    Prediction
2106
2107PPS::
2108    Picture Parameter Set
2109
2110QP::
2111    Quantization Parameter
2112
2113RC::
2114    Rate Control
2115
2116SPS::
2117    Sequence Parameter Set
2118
2119Std::
2120    Standard
2121
2122VBR::
2123    Variable Bit Rate
2124
2125VCL::
2126    Video Coding Layer
2127
2128VPS::
2129    Video Parameter Set
2130endif::VK_KHR_video_queue[]
2131
2132
2133[[lexicon-prefixes]]
2134== Prefixes
2135
2136Prefixes are used in the API to denote specific semantic meaning of Vulkan
2137names, or as a label to avoid name clashes, and are explained here:
2138
2139VK/Vk/vk::
2140    Vulkan namespace +
2141    All types, commands, enumerants and defines in this specification are
2142    prefixed with these two characters.
2143
2144PFN/pfn::
2145    Function Pointer +
2146    Denotes that a type is a function pointer, or that a variable is of a
2147    pointer type.
2148
2149p::
2150    Pointer +
2151    Variable is a pointer.
2152
2153vkCmd::
2154    Commands that record commands in command buffers +
2155    These API commands do not result in immediate processing on the device.
2156    Instead, they record the requested action in a command buffer for
2157    execution when the command buffer is submitted to a queue.
2158
2159s::
2160    Structure +
2161    Used to denote the etext:VK_STRUCTURE_TYPE* member of each structure in
2162    pname:sType
2163