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