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