• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015-2023 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 shader call <<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[]
1332Pipeline Trace Ray Instruction::
1333    A ray tracing instruction which traces a ray into an acceleration
1334    structure when using ray tracing pipelines.
1335    One of
1336ifdef::VK_NV_ray_tracing[code:OpTraceNV,]
1337ifdef::VK_NV_ray_tracing_motion_blur[code:OpTraceRayMotionNV, code:OpTraceMotionNV,]
1338ifdef::VK_KHR_ray_tracing_pipeline[code:OpTraceRayKHR]
1339    .
1340endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1341
1342pname:pNext Chain::
1343    A set of structures <<fundamentals-validusage-pNext,chained together>>
1344    through their ptext:pNext members.
1345
1346ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1347Planar::
1348    See _multi-planar_.
1349
1350Plane::
1351    An _image plane_ is part of the representation of an image, containing a
1352    subset of the color components necessary to represent the texels in the
1353    image and with a contiguous mapping of coordinates to bound memory.
1354    Most images consist only of a single plane, but some formats spread the
1355    components across multiple image planes.
1356    The host-accessible properties of each image plane are accessible for a
1357    linear layout using flink:vkGetImageSubresourceLayout.
1358    If a multi-planar image is created with the
1359    ename:VK_IMAGE_CREATE_DISJOINT_BIT bit set, the image is described as
1360    _disjoint_, and its planes are therefore bound to memory independently.
1361endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1362
1363Point Sampling (Rasterization)::
1364    A rule that determines whether a fragment sample location is covered by
1365    a polygon primitive by testing whether the sample location is in the
1366    interior of the polygon in framebuffer-space, or on the boundary of the
1367    polygon according to the tie-breaking rules.
1368
1369Potential Format Features::
1370    The union of all elink:VkFormatFeatureFlagBits that the implementation
1371    supports for a specified elink:VkFormat, over all supported image
1372    tilings.
1373ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
1374    For <<memory-external-android-hardware-buffer-external-formats,Android
1375    external formats>> the elink:VkFormatFeatureFlagBits is provided by the
1376    implementation.
1377endif::VK_ANDROID_external_memory_android_hardware_buffer[]
1378ifdef::VK_QNX_external_memory_screen_buffer[]
1379    For <<memory-external-screen-buffer-external-formats,QNX Screen external
1380    formats>> the elink:VkFormatFeatureFlagBits is provided by the
1381    implementation.
1382endif::VK_QNX_external_memory_screen_buffer[]
1383
1384Pre-rasterization::
1385    Operations that execute before <<primsrast,rasterization>>, and any
1386    state associated with those operations.
1387
1388ifdef::VK_KHR_swapchain[]
1389Presentable image::
1390    A sname:VkImage object obtained from a sname:VkSwapchainKHR used to
1391    present to a sname:VkSurfaceKHR object.
1392endif::VK_KHR_swapchain[]
1393
1394Preserve Attachment::
1395    One of a list of attachments in a subpass description that is not read
1396    or written by the subpass, but that is read or written on earlier and
1397    later subpasses and whose contents must: be preserved through this
1398    subpass.
1399
1400Primary Command Buffer::
1401    A command buffer that can: execute secondary command buffers, and can:
1402    be submitted directly to a queue.
1403
1404ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
1405Primitive Shading Pipeline::
1406    A graphics pipeline where input primitives are assembled by fixed
1407    function processing.
1408    It is the counterpart to mesh shading.
1409endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[]
1410
1411Primitive Topology::
1412    State controlling how vertices are assembled into primitives, e.g. as
1413    lists of triangles, strips of lines, etc.
1414
1415Promoted (feature)::
1416    A feature from an older extension is considered promoted if it is made
1417    available as part of a new core version or newer extension with wider
1418    support.
1419
1420ifdef::VK_VERSION_1_1[]
1421Protected Buffer::
1422    A buffer to which protected device memory can: be bound.
1423
1424Protected-capable Device Queue::
1425    A device queue to which protected command buffers can: be submitted.
1426
1427Protected Command Buffer::
1428    A command buffer which can: be submitted to a protected-capable device
1429    queue.
1430
1431Protected Device Memory::
1432    Device memory which can: be visible to the device but must: not be
1433    visible to the host.
1434
1435Protected Image::
1436    An image to which protected device memory can: be bound.
1437endif::VK_VERSION_1_1[]
1438
1439Provisional::
1440    A feature is released provisionally in order to get wider feedback on
1441    the functionality before it is finalized.
1442    Provisional features may change in ways that break backwards
1443    compatibility, and thus are not recommended for use in production
1444    applications.
1445
1446Provoking Vertex::
1447    The vertex in a primitive from which flat shaded attribute values are
1448    taken.
1449    This is generally the "`first`" vertex in the primitive, and depends on
1450    the primitive topology.
1451
1452Push Constants::
1453    A small bank of values writable via the API and accessible in shaders.
1454    Push constants allow the application to set values used in shaders
1455    without creating buffers or modifying and binding descriptor sets for
1456    each update.
1457
1458Push Constant Interface::
1459    The set of variables with code:PushConstant storage class that are
1460    statically used by a shader entry point, and which receive values from
1461    push constant commands.
1462
1463ifdef::VK_KHR_push_descriptor[]
1464Push Descriptors::
1465    Descriptors that are written directly into a command buffer rather than
1466    into a descriptor set.
1467    Push descriptors allow the application to set descriptors used in
1468    shaders without allocating or modifying descriptor sets for each update.
1469endif::VK_KHR_push_descriptor[]
1470
1471ifdef::VK_VERSION_1_1,VK_KHR_descriptor_update_template[]
1472Descriptor Update Template::
1473    An object specifying a mapping from descriptor update information in
1474    host memory to elements in a descriptor set, which helps enable more
1475    efficient descriptor set updates.
1476
1477endif::VK_VERSION_1_1,VK_KHR_descriptor_update_template[]
1478
1479Query Pool::
1480    An object containing a number of query entries and their associated
1481    state and results.
1482    Represented by a slink:VkQueryPool object.
1483
1484Queue::
1485    An object that executes command buffers and sparse binding operations on
1486    a device.
1487    Represented by a slink:VkQueue object.
1488
1489Queue Family::
1490    A set of queues that have common properties and support the same
1491    functionality, as advertised in slink:VkQueueFamilyProperties.
1492
1493Queue Operation::
1494    A unit of work to be executed by a specific queue on a device, submitted
1495    via a <<devsandqueues-submission, queue submission command>>.
1496    Each queue submission command details the specific queue operations that
1497    occur as a result of calling that command.
1498    Queue operations typically include work that is specific to each
1499    command, and synchronization tasks.
1500
1501Queue Submission::
1502    Zero or more batches and an optional fence to be signaled, passed to a
1503    command for execution on a queue.
1504    See the <<devsandqueues-submission, Devices and Queues chapter>> for
1505    more information.
1506
1507ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1508Ray Tracing Command::
1509    Commands that provoke work using a ray tracing pipeline.
1510    Includes
1511ifdef::VK_NV_ray_tracing[flink:vkCmdTraceRaysNV,]
1512ifdef::VK_KHR_ray_tracing_pipeline[flink:vkCmdTraceRaysKHR, and flink:vkCmdTraceRaysIndirectKHR]
1513    .
1514endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1515
1516ifdef::VK_KHR_video_queue[]
1517Reconstructed Picture::
1518    A video picture resource reconstructed from a compressed bitstream using
1519    video decode or encode operations that can: be used as a reference
1520    picture by future video decode or encode operations with the same video
1521    session.
1522endif::VK_KHR_video_queue[]
1523
1524Recording State (Command Buffer)::
1525    A command buffer that is ready to record commands.
1526    See also Initial State and Executable State.
1527
1528ifdef::VK_KHR_video_queue[]
1529Reference Picture::
1530    A video picture resource used by video decode and encode operations to
1531    provide predictions of the values of samples in the subsequently decoded
1532    or encoded pictures.
1533
1534Reference Picture Metadata::
1535    Opaque state associated with a DPB slot, maintained by a video session.
1536endif::VK_KHR_video_queue[]
1537
1538Release Operation (Resource)::
1539    An operation that releases ownership of an image subresource or buffer
1540    range.
1541
1542Render Pass::
1543    An object that represents a set of framebuffer attachments and phases of
1544    rendering using those attachments.
1545    Represented by a slink:VkRenderPass object.
1546
1547Render Pass Instance::
1548    A use of a render pass in a command buffer.
1549
1550Required Extensions::
1551    Extensions that must: be enabled alongside extensions dependent on them
1552    (see <<extendingvulkan-extensions-extensiondependencies, Extension
1553    Dependencies>>).
1554
1555Reset (Command Buffer)::
1556    Resetting a command buffer discards any previously recorded commands and
1557    puts a command buffer in the initial state.
1558
1559Residency Code::
1560    An integer value returned by sparse image instructions, indicating
1561    whether any sparse unbound texels were accessed.
1562
1563Resolve Attachment::
1564    A subpass attachment point, or image view, that is the target of a
1565    multisample resolve operation from the corresponding color attachment at
1566    the end of the subpass.
1567
1568ifdef::VK_KHR_swapchain[]
1569Retired Swapchain::
1570    A swapchain that has been used as the pname:oldSwapchain parameter to
1571    flink:vkCreateSwapchainKHR.
1572    Images cannot be acquired from a retired swapchain, however images that
1573    were acquired (but not presented) before the swapchain was retired can:
1574    be presented.
1575endif::VK_KHR_swapchain[]
1576
1577Sample Index::
1578    The index of a sample within a <<primsrast-multisampling-coverage-mask,
1579    single set of samples>>.
1580
1581Sample Shading::
1582    Invoking the fragment shader multiple times per fragment, with the
1583    covered samples partitioned among the invocations.
1584
1585Sampled Image::
1586    A descriptor type that represents an image view, and supports filtered
1587    (sampled) and unfiltered read-only access in a shader.
1588
1589Sampler::
1590    An object containing state controlling how sampled image data is sampled
1591    (or filtered) when accessed in a shader.
1592    Also a descriptor type describing the object.
1593    Represented by a slink:VkSampler object.
1594
1595Secondary Command Buffer::
1596    A command buffer that can: be executed by a primary command buffer, and
1597    must: not be submitted directly to a queue.
1598
1599Self-Dependency::
1600    A subpass dependency from a subpass to itself, i.e. with
1601    pname:srcSubpass equal to pname:dstSubpass.
1602    A self-dependency is not automatically performed during a render pass
1603    instance, rather a subset of it can: be performed via
1604    flink:vkCmdPipelineBarrier during the subpass.
1605
1606Semaphore::
1607    A synchronization primitive that supports signal and wait operations,
1608    and can: be used to synchronize operations within a queue or across
1609    queues.
1610    Represented by a slink:VkSemaphore object.
1611
1612Shader::
1613    Instructions selected (via an entry point) from a shader module, which
1614    are executed in a shader stage.
1615
1616ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1617Shader Call::
1618    An <<ray-tracing-shader-call,instruction>> which may: cause execution to
1619    continue in a different shader stage.
1620endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
1621
1622Shader Code::
1623    A stream of instructions used to describe the operation of a shader.
1624
1625ifdef::VK_NV_device_generated_commands,VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]
1626Shader Group::
1627    A set of Shader Stages that are part of a slink:VkPipeline containing
1628    multiple of such sets.
1629    This allows the device to make use of all the shader groups from the
1630    bound pipeline independently.
1631endif::VK_NV_device_generated_commands,VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[]
1632
1633Shader Module::
1634    A collection of shader code, potentially including several functions and
1635    entry points, that is used to create shaders in pipelines.
1636    Represented by a slink:VkShaderModule object.
1637
1638Shader Stage::
1639    A stage of the graphics or compute pipeline that executes shader code.
1640
1641ifdef::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
1642[[glossary-shading-rate]]
1643Shading Rate::
1644    The ratio of the number of fragment shader invocations generated in a
1645    fully covered framebuffer region to the size (in pixels) of that region.
1646endif::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
1647
1648ifdef::VK_NV_shading_rate_image[]
1649[[glossary-shading-rate-image]]
1650Shading Rate Image::
1651    An image used to establish the shading rate for a framebuffer region,
1652    where each pixel controls the shading rate for a corresponding
1653    framebuffer region.
1654endif::VK_NV_shading_rate_image[]
1655
1656ifdef::VK_KHR_shared_presentable_image[]
1657Shared presentable image::
1658    A presentable image created from a swapchain with elink:VkPresentModeKHR
1659    set to either ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or
1660    ename:VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR.
1661endif::VK_KHR_shared_presentable_image[]
1662
1663Side Effect::
1664    A store to memory or atomic operation on memory from a shader
1665    invocation.
1666
1667ifdef::VKSC_VERSION_1_0[]
1668Single Event Upset::
1669    A change of physical device state, such as a register or memory bitflip,
1670    e.g. caused by ionizing radiation.
1671endif::VKSC_VERSION_1_0[]
1672
1673ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1674Single-plane format::
1675    A format that is not _multi-planar_.
1676endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1677
1678Size-Compatible Image Formats::
1679    When a compressed image format and an uncompressed image format are
1680    size-compatible, it means that the texel block size of the uncompressed
1681    format must: equal the texel block size of the compressed format.
1682
1683Sparse Block::
1684    An element of a sparse resource that can be independently bound to
1685    memory.
1686    Sparse blocks of a particular sparse resource have a corresponding size
1687    in bytes that they use in the bound memory.
1688
1689Sparse Image Block::
1690    A sparse block in a sparse partially-resident image.
1691    In addition to the sparse block size in bytes, sparse image blocks have
1692    a corresponding width, height, and depth defining the dimensions of
1693    these elements in units of texels or compressed texel blocks, the latter
1694    being used in case of sparse images having a block-compressed format.
1695
1696Sparse Unbound Texel::
1697    A texel read from a region of a sparse texture that does not have memory
1698    bound to it.
1699
1700ifdef::VK_NV_ray_tracing_motion_blur[]
1701SRT::
1702    A decomposition of a spatial transform separating out scale, rotation,
1703    and translation which has better linear interpolation properties for
1704    representing motion.
1705endif::VK_NV_ray_tracing_motion_blur[]
1706
1707Static Use::
1708    An object in a shader is statically used by a shader entry point if any
1709    function in the entry point's call tree contains an instruction using
1710    the object.
1711    A reference in the entry point's interface list does not constitute a
1712    static use.
1713    Static use is used to constrain the set of descriptors used by a shader
1714    entry point.
1715
1716Storage Buffer::
1717    A descriptor type that represents a buffer, and supports reads, writes,
1718    and atomics in a shader.
1719
1720Storage Image::
1721    A descriptor type that represents an image view, and supports unfiltered
1722    loads, stores, and atomics in a shader.
1723
1724Storage Texel Buffer::
1725    A descriptor type that represents a buffer view, and supports
1726    unfiltered, formatted reads, writes, and atomics in a shader.
1727
1728ifdef::VK_VERSION_1_1,VK_EXT_shader_subgroup_vote[]
1729Subgroup::
1730    A set of shader invocations that can: synchronize and share data with
1731    each other efficiently.
1732    In compute shaders, the _local workgroup_ is a superset of the subgroup.
1733endif::VK_VERSION_1_1,VK_EXT_shader_subgroup_vote[]
1734
1735ifdef::VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot[]
1736Subgroup Mask::
1737    A bitmask for all invocations in the current subgroup with one bit per
1738    invocation, starting with the least significant bit in the first vector
1739    component, continuing to the last bit (less than code:SubgroupSize) in
1740    the last required vector component.
1741endif::VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot[]
1742
1743Subpass::
1744    A phase of rendering within a render pass, that reads and writes a
1745    subset of the attachments.
1746
1747Subpass Dependency::
1748    An execution and/or memory dependency between two subpasses described as
1749    part of render pass creation, and automatically performed between
1750    subpasses in a render pass instance.
1751    A subpass dependency limits the overlap of execution of the pair of
1752    subpasses, and can: provide guarantees of memory coherence between
1753    accesses in the subpasses.
1754
1755Subpass Description::
1756    Lists of attachment indices for input attachments, color attachments,
1757    depth/stencil attachment, resolve attachments,
1758ifdef::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]
1759    depth/stencil resolve,
1760endif::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]
1761    and preserve attachments used by the subpass in a render pass.
1762
1763Subset (Self-Dependency)::
1764    A subset of a self-dependency is a pipeline barrier performed during the
1765    subpass of the self-dependency, and whose stage masks and access masks
1766    each contain a subset of the bits set in the identically named mask in
1767    the self-dependency.
1768
1769Texel Block::
1770    A single addressable element of an image with an uncompressed
1771    elink:VkFormat, or a single compressed block of an image with a
1772    compressed elink:VkFormat.
1773
1774Texel Block Size::
1775    The size (in bytes) used to store a texel block of a compressed or
1776    uncompressed image.
1777
1778Texel Coordinate System::
1779    One of three coordinate systems (normalized, unnormalized, integer)
1780    defining how texel coordinates are interpreted in an image or a specific
1781    mipmap level of an image.
1782
1783ifdef::VK_EXT_shader_tile_image[]
1784[[glossary-tile-image]]
1785Tile Image::
1786    A per-tile view of a framebuffer attachment.
1787    If the `apiext:VK_EXT_shader_tile_image` extension is enabled, the
1788    framebuffer is considered to be divided into tiles.
1789
1790endif::VK_EXT_shader_tile_image[]
1791
1792ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
1793Timeline Semaphore::
1794    A semaphore with a strictly increasing 64-bit unsigned integer payload
1795    indicating whether the semaphore is signaled with respect to a
1796    particular reference value.
1797    Represented by a slink:VkSemaphore object created with a semaphore type
1798    of ename:VK_SEMAPHORE_TYPE_TIMELINE.
1799endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
1800
1801Uniform Texel Buffer::
1802    A descriptor type that represents a buffer view, and supports
1803    unfiltered, formatted, read-only access in a shader.
1804
1805Uniform Buffer::
1806    A descriptor type that represents a buffer, and supports read-only
1807    access in a shader.
1808
1809Units in the Last Place (ULP)::
1810    A measure of floating-point error loosely defined as the smallest
1811    representable step in a floating-point format near a given value.
1812    For the precise definition see <<spirvenv-precision-operation, Precision
1813    and Operation of SPIR-V instructions>> or Jean-Michel Muller, "`On the
1814    definition of ulp(x)`", RR-5504, INRIA.
1815    Other sources may also use the term "`unit of least precision`".
1816
1817Unnormalized::
1818    A value that is interpreted according to its conventional
1819    interpretation, and is not normalized.
1820
1821ifdef::VK_VERSION_1_1[]
1822Unprotected Buffer::
1823    A buffer to which unprotected device memory can: be bound.
1824
1825Unprotected Command Buffer::
1826    A command buffer which can: be submitted to an unprotected device queue
1827    or a protected-capable device queue.
1828
1829Unprotected Device Memory::
1830    Device memory which can: be visible to the device and can: be visible to
1831    the host.
1832
1833Unprotected Image::
1834    An image to which unprotected device memory can: be bound.
1835endif::VK_VERSION_1_1[]
1836
1837User-Defined Variable Interface::
1838    A shader entry point's variables with code:Input or code:Output storage
1839    class that are not built-in variables.
1840
1841Vertex Input Attribute::
1842    A graphics pipeline resource that produces input values for the vertex
1843    shader by reading data from a vertex input binding and converting it to
1844    the attribute's format.
1845
1846ifdef::VK_EXT_transform_feedback[]
1847Vertex Stream::
1848    A vertex stream is where the last
1849    <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader
1850    stages>> outputs vertex data, which then goes to the rasterizer, is
1851    captured to a transform feedback buffer, or both.
1852    Geometry shaders can: emit primitives to multiple independent vertex
1853    streams.
1854    Each vertex emitted by the geometry shader is directed at one of the
1855    vertex streams.
1856endif::VK_EXT_transform_feedback[]
1857
1858ifdef::VK_EXT_validation_cache[]
1859Validation Cache::
1860    An object that can: be used to collect and retrieve validation results
1861    from the validation layers, and can: be populated with previously
1862    retrieved results in order to accelerate the validation process.
1863    Represented by a slink:VkValidationCacheEXT object.
1864endif::VK_EXT_validation_cache[]
1865
1866Variable-Sized Descriptor Binding::
1867    A descriptor binding whose size will be specified when a descriptor set
1868    is allocated using this layout.
1869
1870Vertex Input Binding::
1871    A graphics pipeline resource that is bound to a buffer and includes
1872    state that affects addressing calculations within that buffer.
1873
1874Vertex Input Interface::
1875    A vertex shader entry point's variables with code:Input storage class,
1876    which receive values from vertex input attributes.
1877
1878ifdef::VK_KHR_video_queue[]
1879Video Bitstream Buffer::
1880    A resource that represents a linear array of data in device memory
1881    storing encoded video data.
1882    Represented by a slink:VkBuffer object.
1883
1884Video Coding Scope::
1885    A series of subsequent commands recorded into a command buffer starting
1886    with a flink:vkCmdBeginVideoCodingKHR command and ending with a
1887    flink:vkCmdEndVideoCodingKHR command that encompasses a set of video
1888    decode or encode operations.
1889
1890Video Coding Operations::
1891    Any operations recorded into a command buffer within a video coding
1892    scope, including video decode and encode operations.
1893
1894Video Decode Operation::
1895    An operation consuming data from a video bitstream buffer and zero or
1896    more reference pictures, and producing data to a decode output picture
1897    and an optional reconstructed picture.
1898
1899Video Encode Operation::
1900    An operation consuming data from an encode input picture and zero or
1901    more reference pictures, and producing data to a video bitstream buffer
1902    and an optional reconstructed picture.
1903
1904Video Picture Resource::
1905    A resource that represents a multi-dimensional formatted interpretation
1906    of device memory to be used with a video session as a decode output
1907    picture, encode input picture, reconstructed picture, and/or reference
1908    picture.
1909    It may: contain metadata associated with a particular video session it
1910    is used with.
1911    Represented by a slink:VkImage object and referred to using
1912    slink:VkImageView objects created from it.
1913
1914Video Session::
1915    A resource that represents and maintains the state needed to perform
1916    video decode or encode operations.
1917    Represented by a slink:VkVideoSessionKHR object.
1918
1919Video Session Parameters::
1920    A resource that stores preprocessed codec-specific parameters used with
1921    a compatible video session in video codec operations.
1922    Represented by a slink:VkVideoSessionParametersKHR object.
1923
1924Video Transcoding::
1925    The process of using the outputs of video decoding operations as inputs
1926    in video encoding operations.
1927endif::VK_KHR_video_queue[]
1928
1929ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
1930View Mask::
1931    When multiview is enabled, a view mask is a property of a subpass
1932    controlling which views the rendering commands are broadcast to.
1933endif::VK_VERSION_1_1,VK_KHR_multiview[]
1934
1935View Volume::
1936    A subspace in homogeneous coordinates, corresponding to post-projection
1937    x and y values between -1 and +1, and z values between 0 and +1.
1938
1939Viewport Transformation::
1940    A transformation from normalized device coordinates to framebuffer
1941    coordinates, based on a viewport rectangle and depth range.
1942
1943Visibility Operation::
1944    An operation that causes available values to become visible to specified
1945    memory accesses.
1946
1947Visible::
1948    A state of values written to memory that allows them to be accessed by a
1949    set of operations.
1950
1951// To be added per issue 18:
1952// Current State <<fundamentals-queueoperation>>
1953// Barycentric Coordinates <<primsrast-polygons-basic>>
1954// Internal Allocations <<memory-host-allocation-scope>>
1955// Unavailable, Available <<queries-operation>> - NB: this clashes with available/visible in terms of memory
1956// Signaled, Unsignaled <<synchronization-semaphores>> <<synchronization-fences>>
1957// Interior Vertices <<tessellation-tessellator-spacing>>
1958// Inner Vertices <<tessellation-triangle-tessellation>> <<tessellation-quad-tessellation>>
1959// Isolines <<tessellation-isoline-tessellation>>
1960// Binding Range <<sparsemem-memory-binding>>
1961
1962
1963[[lexicon-common-abbreviations]]
1964== Common Abbreviations
1965
1966The abbreviations and acronyms defined in this section are sometimes used in
1967the Specification and the API where they are considered clear and
1968commonplace.
1969
1970Src::
1971    Source
1972
1973Dst::
1974    Destination
1975
1976Min::
1977    Minimum
1978
1979Max::
1980    Maximum
1981
1982Rect::
1983    Rectangle
1984
1985Info::
1986    Information
1987
1988LOD::
1989    Level of Detail
1990
1991Log::
1992    Logarithm
1993
1994ID::
1995    Identifier
1996
1997UUID::
1998    Universally Unique Identifier
1999
2000Op::
2001    Operation
2002
2003R::
2004    Red color component
2005
2006G::
2007    Green color component
2008
2009B::
2010    Blue color component
2011
2012A::
2013    Alpha color component
2014
2015RTZ::
2016    Round towards zero
2017
2018RTE::
2019    Round to nearest even
2020
2021
2022ifdef::VK_KHR_video_queue[]
2023[[lexicon-video-abbreviations]]
2024== Video-Specific Abbreviations
2025
2026The following abbreviations and acronyms are used in the context of video
2027decode and encode operations to refer to commonly used video compression
2028terms in their usual abbreviated form:
2029
2030AVC::
2031    Advanced Video Coding
2032
2033Bipred::
2034    Bidirectional Prediction
2035
2036CABAC::
2037    Context-Adaptive Binary Arithmetic Coding
2038
2039CAVLC::
2040    Context-Adaptive Variable-Length Coding
2041
2042CBR::
2043    Constant Bit Rate
2044
2045CTB::
2046    Coding Tree Block
2047
2048Diff::
2049    Difference
2050
2051DPB::
2052    Decoded Picture Buffer
2053
2054GOP::
2055    Group Of Pictures
2056
2057HDR::
2058    High Dynamic Range
2059
2060HEVC::
2061    High Efficiency Video Coding
2062
2063HRD::
2064    Hypothetical Reference Decoder
2065
2066IDC::
2067    Indicator
2068
2069IDR::
2070    Instantaneous Decoder Refresh
2071
2072MB::
2073    Macroblock
2074
2075MV::
2076    Motion Vector
2077
2078NALU::
2079    Network Abstraction Layer Unit
2080
2081PCM::
2082    Pulse-Code Modulation
2083
2084Pic::
2085    Picture
2086
2087Pred::
2088    Prediction
2089
2090PPS::
2091    Picture Parameter Set
2092
2093QP::
2094    Quantization Parameter
2095
2096RC::
2097    Rate Control
2098
2099SPS::
2100    Sequence Parameter Set
2101
2102Std::
2103    Standard
2104
2105VBR::
2106    Variable Bit Rate
2107
2108VCL::
2109    Video Coding Layer
2110
2111VPS::
2112    Video Parameter Set
2113endif::VK_KHR_video_queue[]
2114
2115
2116[[lexicon-prefixes]]
2117== Prefixes
2118
2119Prefixes are used in the API to denote specific semantic meaning of Vulkan
2120names, or as a label to avoid name clashes, and are explained here:
2121
2122VK/Vk/vk::
2123    Vulkan namespace +
2124    All types, commands, enumerants and defines in this specification are
2125    prefixed with these two characters.
2126
2127PFN/pfn::
2128    Function Pointer +
2129    Denotes that a type is a function pointer, or that a variable is of a
2130    pointer type.
2131
2132p::
2133    Pointer +
2134    Variable is a pointer.
2135
2136vkCmd::
2137    Commands that record commands in command buffers +
2138    These API commands do not result in immediate processing on the device.
2139    Instead, they record the requested action in a command buffer for
2140    execution when the command buffer is submitted to a queue.
2141
2142s::
2143    Structure +
2144    Used to denote the etext:VK_STRUCTURE_TYPE* member of each structure in
2145    pname:sType
2146