Platform/GFX/Jargon
From MozillaWiki
The graphics team has a lot of jargon. This page attempts to list as much as possible.
If you add anything, please keep it alphabetical for easy searching.
Acceleration | Off-loading of a graphical operation to dedicated hardware. In Gecko usually refers to compositing and/or painting |
Anti-aliasing | A collection of techniques for drawing relatively high frequency objects (thin lines or text) on relatively low resolutions displays. These techniques remove jagged edges on lines and make small fonts legible |
ANGLE | Almost Native Graphics Layer - A wrapper library by Google, implementing OpenGL on top of DirectX |
APZ | Async Pan and Zooming - A component of Gecko that allows us to zoom and scroll content asynchronously with respect to the Web page |
Azure | See Moz2D |
Bezier curve | A parametric mathematical curve frequently used in graphics |
Bitmap | See raster image |
CA | CoreAnimation - A library for controlling the OS display compositor to perform animations on OSX and iOS |
Cairo | An open source 2D graphics library |
Canvas | A Web API for drawing 2D graphics |
CG | CoreGraphics - A 2D graphics library for OSX and iOS |
Checkerboarding | An event that occurs when the user scrolls faster than we can paint content, causing us to display blank areas |
Color space | A specific organization of colors, such as RGB, HSV, YUV, or HSL. It allows a set of numbers such as (0, 0.1, 0.5) to map to a physical color. The range of physical colors representable in a color space is called the 'Gamut' |
Command buffer | A buffer of encoded commands for a GPU to execute. These used to be transparently managed by OpenGL and D3D drivers, but can now be creating and used with D3D12, Vulkan, or Metal |
Composite | The process of flattening multiple images or layers into a final image |
Compositor | Performs composites. In Gecko it's the final component to render a page |
CT | CoreText - A font/text shaping library for OSX and iOS |
D2D | Direct2D - A 2D graphics library on Windows |
D3D | Direct3D - A 3D graphics library on Windows |
DirectComposite | A library for controlling the display compositor to perform animations on Windows |
Display compositor | The compositor used by an operating system for compositing the desktop and all windows/widgets |
Display list | An overloaded term. In Gecko it's a component that implements z-ordering for CSS painting and hit testing. In WebRender it's a lower level list of drawing commands |
DL | See display list |
Draw command | An abstraction commonly used by graphics API's. A draw command typically represents a specific graphics operation, such as drawing lines, glyphs, triangles, or images. See also command buffer |
DrawTarget | An interface provided by Moz2D as an abstract target for draw commands |
Driver | A software component that performs hardware vendor specific work for specification such as OpenGL or Direct2D |
DWrite | DirectWrite - A font/text shaping library on Windows |
DX | DirectX - A collection of interelated graphics libraries on Windows |
DXGI | DirectX Graphics Infrastructure - A low level graphics foundation library on Windows used by D2D, D3D, DWrite |
E10S | Electrolysis - The project to create a multiprocess Firefox |
Fission | The project to advance Firefox's multiprocess architecture |
Frame | An overloaded term, usually refers to an image an application presents or a specific image in an animation |
FrameLayerBuilder | A component in Gecko which is used to map gecko display items into layers and for creating information to help retain the layers between frames |
Frame buffer | A specific render target that will be the final outputted image |
FreeType | An open source font library |
FT | See FreeType |
Glyph | A vector image that is used to draw text for a font. The relationship between Unicode characters and glyphs is complicated and font dependent. A text shaping library can be used to compute glyphs from text |
GLSL | GL shader language - A shader language used by OpenGL |
GPU | Graphics processing unit. A dedicated or integrated chipset providing hardware acceleration for graphics and compute operations |
Harfbuzz | An open source text shaping library |
HDR | High dynamic range - A technique for rendering where image data and calculations are represented and performed in a higher range than the physical device can display. Before the frame is presented, color toning is used to compress the image into the physical device's range while retaining local contrast |
HLSL | High level shader language - A shader language used by DirectX |
Invalidation | The process of preserving previously painted content and only painting what has changed |
Jitter | Happens when frame presentation is poorly paced, causing an animation to not feel smooth |
Lag | See latency |
Latency | Time that occurs between starting an event and finishing it |
Layer | A type of content that can be composited |
Layers | An API that exposes layers that Gecko paints content into for later compositing |
Metal | A 3D graphics library on OSX and iOS |
Moz2D | An open source 2D graphics library wrapping Skia and Direct2D |
OGL | See OpenGL |
OMTA | Off main thread animation - A Gecko component that allows us to animate some content on the Compositor asynchronously of the main thread |
OMTC | Off main thread compositing - A Gecko component that allows us to composite content off of the main thread |
OMTP | Off main thread painting - A Gecko component that allows us to paint content into a layer off of the main thread |
OpenCL | Industry standard hardware accelerated computing API |
OpenGL | Industry standard 3D graphics API |
OpenType | A font format |
OTS | OpenType sanitizer - An open source library for removing unsupported tables from OpenType web fonts for security reasons |
POMTP | Parallel off main thread painting |
Paint | An overloaded term, in Gecko usually refers to the process of rasterizing Web content into a layer. Used interchangeably with rasterize and render |
Pixel | A pix(ture) el(ement) - Represents a single point in a raster image with a color value |
Rasterize | The process of converting content into a raster image (pixels). Used interchangeably with paint and render |
Raster graphics | A type of resolution dependent graphics which represents an image using pixels |
Reftest | Reference test - A type of automated test which renders a 'test' image and a 'reference' image, and compares the results. This can be used to evaluate the behavior of rendering engines |
Render | The process of creating an image. Used interchangeably with paint and rasterize |
Render target | A texture that GPU commands can be executed against |
Rotated buffer | A technique to not have to repaint a whole layer when scrolling it. See also Tiling |
SIMD | Single instruction, multiple data - A type of CPU instruction which allows for multiple numbers to be operated simultaneously. This is useful for accelerating graphics operation. x86(46) exposes AVX and SSE, ARM exposes NEON |
Shader | A specialized program designed to execute in parallel on a GPU. Each graphics API offers a different language. DirectX uses HLSL, OpenGL uses GLSL, Metal uses 'Metal shader language', and Vulkan uses 'SPIR-V'. A shader program is typically compiled by the driver into a format suitable for executing on the GPU |
Shaping | The process of converting Unicode text into glyph indices along a baseline |
Sk | See Skia |
Skia | An open source 2D graphics library developed by Google |
SPIR-V | Standard portable intermediate representation - A shader format used by Vulkan |
Sub-pixel anti-aliasing | A technique for drawing text or lines which uses the physical layout of the colors of a pixel on LCD screens to achieve higher horizontal resolution. This allows text and lines to be more legible |
Surface | See texture |
SVG | Scalable vector graphics - Industry standard vector graphics format |
Swap chain | An object which manages the frame buffers for presentation. A presentation may be single, double, triple or N buffered. At any moment one frame buffer must be display on the monitor. If this is the same buffer that drawing is happening on, then tearing will occur. If there are two buffers, then one may be drawn into while the other is presented. Higher buffer counts trade latency for better frame pacing |
Tearing | When a new frame is presented between VBlank's causing half the monitor to be the old frame and half the new frame |
Thebes | A Mozilla utility layer around Cairo |
Tiling | A technique to not have to repaint a whole layer when scrolling it, see also RotatedBuffer |
Texture | A buffer/surface that is used in many graphics operations, such as texture mapping. It can be 1, 2, or 3 dimensional. A 2 dimensional texture is most common and usually represents image data. Textures are most commonly used on the GPU or created to eventually be used on the GPU |
VBlank | An interrupt generated by a display monitor that signals it is ready for a new frame to be presented |
Vector | Usually refers to a mathematical object that represents a direction and a magnitude |
Vector graphics | A type of resolution independent graphics which represents an image using curves, lines, and shapes instead of pixels. See also SVG |
Vertex | A two or three-dimensional point used in graphics operations |
VSync | See VBlank |
Vulkan | Industry standard 3D graphics API |
WebGL | A Web standard for OpenGL within the browser |
WebRender | An open source accelerated 2D graphics library for Web content |
Widget | An operating system window |
Wr | See WebRender |
Wrench | A utility program for debugging WebRender |
Lupus | A page fault |