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