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