C

class: an enumerated value selecting the type of a FIFO object. They were
introduced in hardware on NV04, being managed in software on NV01:NV04. The
nvidia binary blob, aside from actual hardware objects, assigns classes to
many software-only objects. For a list of classes, see fifo/classes.txt

channel: an independent stream of commands to the GPU, handled via PFIFO, or
PDISPLAY for display channels. A PFIFO channel can send commands to any of the
PFIFO-bound engines, and has an associated context, which is switched so that
channels don't interfere with each other. A display channel is restricted
to control the PDISPLAY engine only and there's no context separation between
channels - they control the same hardware. Also called a FIFO.

component: one of the values associated with samples in a surface, or a single
element of a vector. For color values, the components are commonly called R,
G, B, A. While the conventional names for these are red, green, blue, alpha,
they're mostly interchangeable and can be used to represent any data. For zeta
surfaces, the components are Z [depth], S [stencil], and C [coverage], and
their function is hardwired.


D

DMA object: a FIFO object represeting an area of memory, used on NV01:GF100.
Can be used to represent both contiguous and paged areas of memory.
[memory/nv01-pdma.txt, memory/nv03-dmaobj.txt, memory/nv04-dmaobj.txt,
memory/g80-vm.txt]


E

element: a basic unit of a surface for memory layout purposes. Can be 1, 2,
4, 8, or 16 bytes long. Depending on surface type, can represent a single
sample, or a block of samples.

engine object: a FIFO object representing a connection to one of the PFIFO
engines, possibly including some of the engine context / configuration. Engine
objects bound to PGRAPH are known as graph objects. Graph objects come in
multiple classes to expose various parts of the functionality that PGRAPH
offers, while other engines usually have only one available object class.


F

FIFO: see channel

FIFO object: an engine object [NV01:GF100] or a DMA object [NV04:GF100] bound
to a specific FIFO channel with an entry in RAMHT, can be referenced in FIFO
commands by its RAMHT handle. On GF100+, RAMHT and physical FIFO objects no
longer exist, but the engine object classes are still passed around to select
functionality exposed via a subchannel.


G

graph object - an engine object bound to PGRAPH.


I

IGP: integrated graphics processor, a GPU integrated into the northbridge,
lacking dedicated VRAM. Nvidia IGPs include: NV0A, NV1A, NV1F, NV2A, C51,
MCP61, MCP67, MCP68, MCP73, MCP77, MCP79, MCP89.


P

PFIFO: command stream processing engine. Gathers FIFO commands from user
buffers and direct submission, sorting them out and sending them to execution
engines, which [depending on GPU] may include: PGRAPH, PMPEG, PME, PVP1,
PVP2, PBSP, PCIPHER, PVLD, PPDEC, PPPP, PSEC, PVCOMP, PCOPY, PVENC, PVDEC.


R

RAMFC: an area of RAMIN [NV01:G80] or channel structure [G80+] used to store
PFIFO context for inactive channels.

RAMHT: an area or RAMIN [NV01:G80], channel structure [G80+ PFIFO] or
display structure [G80+ PDISPLAY] used to store associations between FIFO
object handles and object addresses. On NV01:G80, there's only one RAMHT
covering all channels. On G80+, each FIFO channel has its own RAMHT. The
display channels also have a single RAMHT covering them all. However, when
a RAMHT covers multiple channels, each entry is tagged with the channel id,
thus the actual bindings are always per-channel.

RAMIN: instance memory - on NV01:G80 cards, a special area at the end of
VRAM, used to store a shadow copy of the VBIOS [NV04+ only], RAMFC, RAMHT,
RAMRO, FIFO objects, and engine context [NV20+]. Replaced by the channel
structure on G80+.

RAMRO: runout memory - on NV01:G80 cards, an area of RAMIN used to store
PIO FIFO command submissions that were rejected for some reason, for later
processing by host interrupt handler.

render target: a surface bound to the 2d or 3d engine as the destination. The
2d engine has a single color render target. The 3d engine can have, depending
on card, up to 8 color render targets and 1 zeta render target.


S

sample: a basic conceptual unit of a surface, a sample corresponds to a single
set of component values.

storage type: an enumerated value selecting the internal layout of a surface
[as seen on the high level], or pages / tiled regions [low level].

subchannel: A single binding point of a FIFO channel, accomodating one engine
object. There are 8 subchannels on each channel. Objects can be dynamically
bound and unbound to subchannels through the command stream.

surface: a 2d or 3d array of samples, elements, or bytes, depending on the
viewpoint - depending on how it's used, it can be a render target, a texture,
a framebuffer, etc. [memory/g80-surface.txt]

surface element: see element

surface format: information including the element size of a surface, layout
of the element, interpretation of element data, and components available
in a surface

surface type: the main classification of surfaces. A surface can be a color
surface, or a zeta surface. A color surface can be a simple color surface,
YUV surface, compressed texture surface, or a bitmap surface


T

texture: a surface bound to the texturing units for sampling. This includes
the 2d source surface on g80+ cards.


V

VRAM: video RAM, the main working area of the card, a big area of RAM located
on the card connected directly to the GPU. The IGPs don't have real VRAM, and
instead use a special area of system RAM as fake VRAM.


Z

zeta surface: a surface containing the depth buffer, optionally the stencil
buffer, and the special coverage component if coverage sampling is in use
[see memory/g80-surface.txt]
