Vulkan-Docs/doc/specs/vulkan/appendices/glossary.txt

832 lines
30 KiB
Plaintext

// Copyright (c) 2015-2016 The Khronos Group Inc.
// Copyright notice at https://www.khronos.org/registry/speccopyright.html
// The asciidoc [glossary] template cannot contain subsections.
// The abbreviations and prefixes probably belong in the upcoming
// API/extension-writing-guidelines appendix, anyway.
[glossary]
= Glossary
The terms defined in this section are used consistently throughout this
Specification and may be used with or without capitalization.
Accessible (Descriptor Binding)::
A descriptor binding is accessible to a shader stage if that stage is
included in the pname:stageFlags of the descriptor binding. Descriptors
using that binding can: only be used by stages in which they are
accessible.
Adjacent Vertex::
A vertex in an adjacency primitive topology that is not part of a given
primitive, but is accessible in geometry shaders.
Aliased Range (Memory)::
A range of a device memory allocation that is bound to multiple
resources simultaneously.
API Order::
A set of ordering rules that govern how primitives in draw commands
affect the framebuffer.
Attachment (Render Pass)::
A zero-based integer index name used in render pass creation to refer to
a framebuffer attachment that is accessed by one or more subpasses. The
index also refers to an attachment description which includes
information about the properties of the image view that will later be
attached.
Available::
See Memory Dependency.
Back-Facing::
See Facingness.
Batch::
A collection of command buffers that are submitted to a queue, and
corresponding semaphores to wait and signal. Corresponds to an instance
of the slink:VkSubmitInfo structure.
Backwards Compatibility::
A given version of the API is backwards compatible with an earlier
version if an application, relying only on valid behavior and
functionality defined by the earlier specification, is able to correctly
run against each version without any modification. This assumes no
active attempt by that application to not run when it detects a
different version.
Full Compatibility::
A given version of the API is fully compatible with another version if
an application, relying only on valid behavior and functionality defined
by either of those specifications, is able to correctly run against each
version without any modification. This assumes no active attempt by that
application to not run when it detects a different version.
Binding (Memory)::
An association established between a range of a resource object and a
range of a memory object. These associations determine the memory
locations affected by operations performed on elements of a resource
object. Memory bindings are established using the
flink:vkBindBufferMemory command for non-sparse buffer objects, using
the flink:vkBindImageMemory command for non-sparse image objects, and
using the flink:vkQueueBindSparse command for sparse resources.
Blend Constant::
Four floating point (RGBA) values used as an input to blending.
Blending::
Arithmetic operations between a fragment color value and a value in a
color attachment that produce a final color value to be written to the
attachment.
Buffer::
A resource that represents a linear array of data in device memory.
Represented by a sname:VkBuffer object.
Buffer View::
An object that represents a range of a specific buffer, and state that
controls how the contents are interpreted. Represented by a
sname:VkBufferView object.
Built-In Variable::
A variable decorated in a shader, where the decoration makes the
variable take values provided by the execution environment or values
that are generated by fixed-function pipeline stages.
Built-In Interface Block::
A block defined in a shader that contains only variables decorated with
built-in decorations, and is used to match against other shader
stages.
Clip Coordinates::
The homogeneous coordinate space that vertex positions
(code:Position decoration) are written in by vertex processing stages.
Clip Distance::
A built-in output from vertex processing stages that defines a clip
half-space against which the primitive is clipped.
Clip Volume::
The intersection of the view volume with all clip half-spaces.
Color Attachment::
A subpass attachment point, or image view, that is the target of
fragment color outputs and blending.
Combined Image Sampler::
A descriptor type that includes both a sampled image and a sampler.
Command Buffer::
An object that records commands to be submitted to a queue. Represented
by a sname:VkCommandBuffer object.
Command Pool::
An object that command buffer memory is allocated from, and that owns
that memory. Command pools aid multithreaded performance by enabling
different threads to use different allocators, without internal
synchronization on each use. Represented by a sname:VkCommandPool
object.
Compatible Allocator::
When allocators are compatible, allocations from each allocator can: be
freed by the other allocator.
Compatible Image Formats::
When formats are compatible, images created with one of the formats can:
have image views created from it using any of the compatible formats.
Compatible Queues::
Queues within a queue family. Compatible queues have identical
properties.
Compressed Texel Block::
An element of an image having a block-compressed format, comprising a
rectangular block of texel values that are encoded as a single value in
memory. Compressed texel blocks of a particular block-compressed format
have a corresponding width, height, and depth that define the dimensions
of these elements in units of texels, and a size in bytes of the encoding
in memory.
Cull Distance::
A built-in output from vertex processing stages that defines a cull
half-space where the primitive is rejected if all vertices have a
negative value for the same cull distance.
Cull Volume::
The intersection of the view volume with all cull half-spaces.
Decoration (SPIR-V)::
Auxiliary information such as built-in variables, stream numbers,
invariance, interpolation type, relaxed precision, etc., added to
variables or structure-type members through decorations.
Depth/Stencil Attachment::
A subpass attachment point, or image view, that is the target of depth
and/or stencil test operations and writes.
Depth/Stencil Format::
A elink:VkFormat that includes depth and/or stencil components.
Depth/Stencil Image (or ImageView)::
A sname:VkImage (or sname:VkImageView) with a depth/stencil format.
Derivative Group::
A set of fragment shader invocations that cooperate to compute derivatives,
including implicit derivatives for sampled image operations.
Descriptor::
Information about a resource or resource view written into a descriptor
set that is used to access the resource or view from a shader.
Descriptor Binding::
An entry in a descriptor set layout corresponding to zero or more
descriptors of a single descriptor type in a set. Defined by a
slink:VkDescriptorSetLayoutBinding structure.
Descriptor Pool::
An object that descriptor sets are allocated from, and that owns the
storage of those descriptor sets. Descriptor pools aid multithreaded
performance by enabling different threads to use different allocators,
without internal synchronization on each use. Represented by a
sname:VkDescriptorPool object.
Descriptor Set::
An object that resource descriptors are written into via the API, and
that can: be bound to a command buffer such that the descriptors
contained within it can: be accessed from shaders. Represented by a
sname:VkDescriptorSet object.
Descriptor Set Layout::
An object that defines the set of resources (types and counts) and their
relative arrangement (in the binding namespace) within a descriptor set.
Used when allocating descriptor sets and when creating pipeline layouts.
Represented by a sname:VkDescriptorSetLayout object.
Device::
The processor(s) and execution environment that perform tasks requested
by the application via the Vulkan API.
Device Memory::
Memory accessible to the device. Represented by a sname:VkDeviceMemory
object.
Device-Local Memory::
Memory that is connected to the device, and may: be more performant for
device access than host-local memory.
Dispatchable Handle::
A handle of a pointer handle type which may: be used by layers as part
of intercepting API commands. The first argument to each Vulkan
command is a dispatchable handle type.
Dispatching Commands::
Commands that provoke work using a compute pipeline. Includes
flink:vkCmdDispatch and flink:vkCmdDispatchIndirect.
Drawing Commands::
Commands that provoke work using a graphics pipeline. Includes
flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndirect, and
flink:vkCmdDrawIndexedIndirect.
Duration (Command)::
The _duration_ of a Vulkan command refers to the interval between
calling the command and its return to the caller.
Dynamic Storage Buffer::
A storage buffer whose offset is specified each time the storage buffer
is bound to a command buffer via a descriptor set.
Dynamic Uniform Buffer::
A uniform buffer whose offset is specified each time the uniform buffer
is bound to a command buffer via a descriptor set.
Explicitly-Enabled Layer::
A layer enabled by the application by adding it to the enabled layer
list in flink:vkCreateInstance or flink:vkCreateDevice.
Event::
A synchronization primitive that is signaled when execution of previous
commands complete through a specified set of pipeline stages. Events can
be waited on by the device and polled by the host. Represented by a
sname:VkEvent object.
Executable State (Command Buffer)::
A command buffer that has ended recording commands and can: be executed.
See also Initial State and Recording State.
Execution Dependency::
A dependency that guarantees that certain pipeline stages' work for a
first set of commands has completed execution before certain pipeline
stages' work for a second set of commands begins execution. This is
accomplished via pipeline barriers, subpass dependencies, events, or
implicit ordering operations.
Execution Dependency Chain::
A sequence of execution dependencies that transitively act as an
execution dependency.
External synchronization::
A type of synchronization required of the application, where parameters
defined to be externally synchronized mustnot: be used simultaneously in
multiple threads.
Facingness (Polygon)::
A classification of a polygon as either front-facing or back-facing,
depending on the orientation (winding order) of its vertices.
Fence::
A synchronization primitive that is signaled when a set of batches or
sparse binding operations complete execution on a queue. Fences can: be
waited on by the host. Represented by a sname:VkFence object.
Flatshading::
A property of a vertex attribute that causes the value from a single
vertex (the provoking vertex) to be used for all vertices in a
primitive, and for interpolation of that attribute to return that single
value unaltered.
Fragment Input Attachment Interface::
A fragment shader entry point's variables with code:Input storage class
and a decoration of code:InputAttachmentIndex, which receive values from
input attachments.
Fragment Output Interface::
A fragment shader entry point's variables with code:Output storage
class, which output to color and/or depth/stencil attachments.
Framebuffer::
A collection of image views and a set of dimensions that, in conjunction
with a render pass, define the inputs and outputs used by drawing
commands. Represented by a sname:VkFramebuffer object.
Framebuffer Attachment::
One of the image views used in a framebuffer.
Framebuffer Coordinates::
A coordinate system in which adjacent pixels' coordinates differ by 1 in
x and/or y, with latexmath:[$(0,0)$] in the upper left corner and pixel
centers at half-integers.
Front-Facing::
See Facingness.
Global Workgroup::
A collection of local workgroups dispatched by a single dispatch command.
Handle::
An opaque integer or pointer value used to refer to a Vulkan object.
Each object type has a unique handle type.
Happen-after::
A command happens-after a dependency if they are separated by an execution
dependency chain, with the command included in the destination of the last
dependency of the chain. A memory barrier makes visible memory writes to
commands that happen-after it.
Happen-before::
A command happens-before a dependency if they are separated by an execution
dependency chain, with the command included in the source of the first
dependency of the chain. A memory barrier makes available memory writes of
commands that happen-before it.
Helper Invocation::
A fragment shader invocation that is created solely for the purposes of
evaluating derivatives for use in non-helper fragment shader
invocations, and which does not have side effects.
Host::
The processor(s) and execution environment that the application runs on,
and that the Vulkan API is exposed on.
Host Memory::
Memory not accessible to the device, used to store implementation data
structures.
Host-Accessible Subresource::
A buffer, or a linear image subresource in either the
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
layout. Host-accessible subresources have a well-defined addressing
scheme which can be used by the host.
Host-Local Memory::
Memory that is not local to the device, and may: be less performant for
device access than device-local memory.
Host-Visible Memory::
Device memory that can: be mapped on the host and can: be read and
written by the host.
Image::
A resource that represents a multi-dimensional formatted interpretation
of device memory. Represented by a sname:VkImage object.
Image Subresource::
A specific mipmap level and layer of an image.
Image Subresource Range::
A set of image subresources that are contiguous mipmap levels and
layers.
Image View::
An object that represents an image subresource range of a specific
image, and state that controls how the contents are interpreted.
Represented by a sname:VkImageView object.
Immutable Sampler::
A sampler descriptor provided at descriptor set layout creation time,
and that is used for that binding in all descriptor sets created from
the layout, and cannot be changed.
Implicitly-Enabled Layer::
A layer enabled by a loader-defined mechanism outside the Vulkan API,
rather than explicitly by the application during instance or device
creation.
Index Buffer::
A buffer bound via flink:vkCmdBindIndexBuffer which is the source of
index values used to fetch vertex attributes for a
flink:vkCmdDrawIndexed or flink:vkCmdDrawIndexedIndirect command.
Indirect Commands::
Drawing or dispatching commands that source some of their parameters
from structures in buffer memory. Includes flink:vkCmdDrawIndirect,
flink:vkCmdDrawIndexedIndirect, and flink:vkCmdDispatchIndirect.
Initial State (Command Buffer)::
A command buffer that has not begun recording commands. See also
Recorded State and Executable State.
Input Attachment::
A descriptor type that represents an image view, and supports unfiltered
read-only access in a shader, only at the fragment's location in the
view.
Instance::
The top-level Vulkan object, which represents the application's
connection to the implementation. Represented by a sname:VkInstance
object.
Internal Synchronization::
A type of synchronization required of the implementation, where
parameters not defined to be externally synchronized may: require
internal mutexing to avoid multithreaded race conditions.
Invocation (Shader)::
A single execution of an entry point in a SPIR-V module. For example, a
single vertex's execution of a vertex shader or a single fragment's
execution of a fragment shader.
Invocation Group::
A set of shader invocations that are executed in parallel and that must:
execute the same control flow path in order for control flow to be
considered dynamically uniform.
Local Workgroup::
A collection of compute shader invocations invoked by a single dispatch
command, which share shared memory and can synchronize with each other.
Logical Device::
An object that represents the application's interface to the physical
device. The logical device is the parent of most Vulkan objects.
Represented by a sname:VkDevice object.
Logical Operation::
Bitwise operations between a fragment color value and a value in a color
attachment, that produce a final color value to be written to the
attachment.
Lost Device::
A state that a logical device may: be in as a result of hardware errors
or other exceptional conditions.
Mappable::
See Host-Visible Memory.
Memory Dependency::
A sequence of operations that makes writes available, performs an
execution dependency between the writes and subsequent accesses, and
makes available writes visible to later accesses. In order for the
effects of a write to be coherent with later accesses, it must be made
available from the old access type and then made visible to the new
access type.
Memory Heap::
A region of memory from which device memory allocations can: be made.
Memory Type::
An index used to select a set of memory properties (e.g. mappable,
cached) for a device memory allocation.
Mip Tail Region::
The set of mipmap levels of a sparse residency texture that are too
small to fill a sparse block, and that must all be bound to memory
collectively and opaquely.
Non-Dispatchable Handle::
A handle of an integer handle type. Handle values may: not be unique,
even for two objects of the same type.
Normalized::
A value that is interpreted as being in the range latexmath:[$[0,1\]$]
as a result of being implicitly divided by some other value.
Normalized Device Coordinates::
A coordinate space after perspective division is applied to clip
coordinates, and before the viewport transformation converts to
framebuffer coordinates.
Overlapped Range (Aliased Range)::
The aliased range of a device memory allocation that intersects a given
image subresource of an image or range of a buffer.
Packed Format::
A format whose components are stored as a single data element in memory,
with their relative locations defined within that element.
Physical Device::
An object that represents a single device in the system. Represented by
a sname:VkPhysicalDevice object.
Pipeline::
An object that controls how graphics or compute work is executed on the
device. A pipeline includes one or more shaders, as well as state
controlling any non-programmable stages of the pipeline. Represented by
a sname:VkPipeline object.
Pipeline Barrier::
An execution and/or memory dependency recorded as an explicit command in
a command buffer, that forms a dependency between the previous and
subsequent commands.
Pipeline Cache::
An object that can: be used to collect and retrieve information from
pipelines as they are created, and can: be populated with previously
retrieved information in order to accelerate pipeline creation.
Represented by a sname:VkPipelineCache object.
Pipeline Layout::
An object that defines the set of resources (via a collection of
descriptor set layouts) and push constants used by pipelines that are
created using the layout. Used when creating a pipeline and when binding
descriptor sets and setting push constant values. Represented by a
sname:VkPipelineLayout object.
Point Sampling (Rasterization)::
A rule that determines whether a fragment sample location is covered by
a polygon primitive by testing whether the sample location is in the
interior of the polygon in framebuffer-space, or on the boundary of the
polygon according to the tie-breaking rules.
Preserve Attachment::
One of a list of attachments in a subpass description that is not read
or written by the subpass, but that is read or written on earlier and
later subpasses and whose contents must be preserved through this
subpass.
Primary Command Buffer::
A command buffer that can: execute secondary command buffers, and can:
be submitted directly to a queue.
Primitive Topology::
State that controls how vertices are assembled into primitives, e.g. as
lists of triangles, strips of lines, etc..
Provoking Vertex::
The vertex in a primitive from which flatshaded attribute values are
taken. This is generally the ``first'' vertex in the primitive, and
depends on the primitive topology.
Push Constants::
A small bank of values writable via the API and accessible in shaders.
Push constants allow the application to set values used in shaders
without creating buffers or modifying and binding descriptor sets for
each update.
Push Constant Interface::
The set of variables with code:PushConstant storage class that are
statically used by a shader entry point, and which receive values
from push constant commands.
Query Pool::
An object that contains a number of query entries and their associated
state and results. Represented by a sname:VkQueryPool object.
Queue::
An object that executes command buffers and sparse binding operations on
a device. Represented by a sname:VkQueue object.
Queue Family::
A set of queues that have common properties and support the same
functionality, as advertised in slink:VkQueueFamilyProperties.
Queue Submission::
An operation that is enqueued for execution on a queue typically as a
result of the issue of commands of the form ftext:vkQueue*.
Recording State (Command Buffer)::
A command buffer that is ready to record commands. See also Initial
State and Executable State.
Render Pass::
An object that represents a set of framebuffer attachments and phases of
rendering using those attachments. Represented by a sname:VkRenderPass
object.
Render Pass Instance::
A use of a render pass in a command buffer.
Reset (Command Buffer)::
Resetting a command buffer discards any previously recorded commands
and puts a command buffer in the initial state.
Residency Code::
An integer value returned by sparse image instructions, indicating
whether any sparse unbound texels were accessed.
Resolve Attachment::
A subpass attachment point, or image view, that is the target of a
multisample resolve operation from the corresponding color attachment at
the end of the subpass.
Sampled Image::
A descriptor type that represents an image view, and supports filtered
(sampled) and unfiltered read-only acccess in a shader.
Sampler::
An object that contains state that controls how sampled image data is
sampled (or filtered) when accessed in a shader. Also a descriptor type
describing the object. Represented by a sname:VkSampler object.
Secondary Command Buffer::
A command buffer that can: be executed by a primary command buffer, and
mustnot: be submitted directly to a queue.
Self-Dependency::
A subpass dependency from a subpass to itself, i.e. with
pname:srcSubpass equal to pname:dstSubpass. A self-dependency is not
automatically performed during a render pass instance, rather a subset
of it can: be performed via flink:vkCmdPipelineBarrier during the
subpass.
Semaphore::
A synchronization primitive that supports signal and wait operations,
and can: be used to synchronize operations within a queue or across
queues. Represented by a sname:VkSemaphore object.
Shader::
Instructions selected (via an entry point) from a shader module, which
are executed in a shader stage.
Shader Code::
A stream of instructions used to describe the operation of a shader.
Shader Module::
A collection of shader code, potentially including several functions and
entry points, that is used to create shaders in pipelines. Represented
by a sname:VkShaderModule object.
Shader Stage::
A stage of the graphics or compute pipeline that executes shader code.
Side Effect::
A store to memory or atomic operation on memory from a shader invocation.
Sparse Block::
An element of a sparse resource that can be independently bound to memory.
Sparse blocks of a particular sparse resource have a corresponding size
in bytes that they use in the bound memory.
Sparse Image Block::
A sparse block in a sparse partially-resident image. In addition to the
sparse block size in bytes, sparse image blocks have a corresponding
width, height, and depth that define the dimensions of these elements
in units of texels or compressed texel blocks, the latter being used in
case of sparse images having a block-compressed format.
Sparse Unbound Texel::
A texel read from a region of a sparse texture that does not have
memory bound to it.
Static Use::
An object in a shader is statically used by a shader entry point if any
function in the entry point's call tree contains an instruction using
the object. Static use is used to constrain the set of descriptors used
by a shader entry point.
Storage Buffer::
A descriptor type that represents a buffer, and supports reads, writes,
and atomics in a shader.
Storage Image::
A descriptor type that represents an image view, and supports unfiltered
loads, stores, and atomics in a shader.
Storage Texel Buffer::
A descriptor type that represents a buffer view, and supports
unfiltered, formatted reads, writes, and atomics in a shader.
Subpass::
A phase of rendering within a render pass, that reads and writes a
subset of the attachments.
Subpass Dependency::
An execution and/or memory dependency between two subpasses described as
part of render pass creation, and automatically performed between
subpasses in a render pass instance. A subpass dependency limits the
overlap of execution of the pair of subpasses, and can: provide
guarantees of memory coherence between accesses in the subpasses.
Subpass Description::
Lists of attachment indices for input attachments, color attachments,
depth/stencil attachment, resolve attachments, and preserve attachments
used by the subpass in a render pass.
Subset (Self-Dependency)::
A subset of a self-dependency is a pipeline barrier performed during the
subpass of the self-dependency, and whose stage masks and access masks
each contain a subset of the bits set in the identically named mask in
the self-dependency.
Texel Coordinate System::
One of three coordinate systems (normalized, unnormalized, integer) that
define how texel coordinates are interpreted in an image or a specific
mipmap level of an image.
Uniform Texel Buffer::
A descriptor type that represents a buffer view, and supports
unfiltered, formatted, read-only access in a shader.
Uniform Buffer::
A descriptor type that represents a buffer, and supports read-only
access in a shader.
Unnormalized::
A value that is interpreted according to its conventional
interpretation, and is not normalized.
User-Defined Variable Interface::
A shader entry point's variables with code:Input or code:Output storage
class that are not built-in variables.
Vertex Input Attribute::
A graphics pipeline resource that produces input values for the vertex
shader by reading data from a vertex input binding and converting it to
the attribute's format.
Vertex Input Binding::
A graphics pipeline resource that is bound to a buffer and includes
state that affects addressing calculations within that buffer.
Vertex Input Interface::
A vertex shader entry point's variables with code:Input storage class,
which receive values from vertex input attributes.
Vertex Processing Stages::
A set of shader stages that comprises the vertex shader, tessellation
control shader, tessellation evaluation shader, and geometry shader
stages.
View Volume::
A subspace in homogeneous coordinates, corresponding to post-projection
x and y values between -1 and +1, and z values between 0 and +1.
Viewport Transformation::
A transformation from normalized device coordinates to framebuffer
coordinates, based on a viewport rectangle and depth range.
Visible::
See Memory Dependency.
// To be added per issue 18:
// Current State <<fundamentals-queueoperation>>
// Barycentric Coordinates <<primsrast-polygons-basic>>
// Internal Allocations <<memory-host-allocation-scope>>
// Unavailable, Available <<queries-operation>>
// Signaled, Unsignaled <<synchronization-semaphores>> <<synchronization-fences>>
// Interior Vertices <<tessellation-tessellator-spacing>>
// Inner Vertices <<tessellation-triangle-tessellation>> <<tessellation-quad-tessellation>>
// Isolines <<tessellation-isoline-tessellation>>
// Binding Range <<sparsemem-memory-binding>>
[glossary]
= Common Abbreviations
Abbreviations and acronyms are sometimes used in the Specification and the
API where they are considered clear and commonplace, and are defined here:
Src::
Source
Dst::
Destination
Min::
Minimum
Max::
Maximum
Rect::
Rectangle
Info::
Information
LOD::
Level of Detail
ID::
Identifier
UUID::
Universally Unique Identifier
Op::
Operation
R::
Red color component
G::
Green color component
B::
Blue color component
A::
Alpha color component
[glossary]
= Prefixes
Prefixes are used in the API to denote specific semantic meaning of
Vulkan names, or as a label to avoid name clashes, and are explained
here:
VK/Vk/vk::
Vulkan namespace +
All types, commands, enumerants and defines in this specification are
prefixed with these two characters.
PFN/pfn::
Function Pointer +
Denotes that a type is a function pointer, or that a variable is of a
pointer type.
p::
Pointer +
Variable is a pointer.
vkCmd::
Commands that record commands in command buffers +
These API commands do not result in immediate processing on the device.
Instead, they record the requested action in a command buffer for
execution when the command buffer is submitted to a queue.
s::
Structure +
Used to denote the etext:VK_STRUCTURE_TYPE* member of each structure in
pname:sType