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