Graphics: Difference between revisions

From SprezzOSWiki
Line 74: Line 74:
[[File:Dri_logo.png|right|thumb|DRI is a combination of DRM, X.org, and Mesa.]]
[[File:Dri_logo.png|right|thumb|DRI is a combination of DRM, X.org, and Mesa.]]
[[File:X-architecture.png|200px|x200px|X architecture as of 2012]]
[[File:X-architecture.png|200px|x200px|X architecture as of 2012]]
 
Xorg's code base combines the DDX (Device-Dependent X) and the DIX (Device-Independent X).
====Damage====
An X extension providing notification that a portion of a window needs to be redrawn.
====XRender====
====XRender====
An X extension providing Porter-Duff image compositioning.
An X extension providing Porter-Duff image compositioning. It wraps the Pixmap and Window datatypes with a new type, Picture. Picture provides an alpha channel
====XShape====
====XShape====
Support for non-rectangular windows.
Support for non-rectangular windows.
Line 84: Line 86:
====GLX====
====GLX====
The OpenGL extension, providing support for use of [[Graphics#OpenGL|OpenGL]] within an X window. It is superseded by [[Graphics#EGL|EGL]].
The OpenGL extension, providing support for use of [[Graphics#OpenGL|OpenGL]] within an X window. It is superseded by [[Graphics#EGL|EGL]].
====Memory Managers====
* GEM - Graphics Execution Manager. Intel's solution for region and context management.
* TTM - Transition Table Maps.
====Accelerators====
* XAA - The XFree86 Acceleration Architecture. Added in XFree86 3.3, rewritten entirely for 4.0, and removed in X.org 1.13.
* KAA - KDrive Acceleration Architecture.
* EXA - A 3D version of XAA.
* UXA - Intel's EXA rewrite atop GEM.
* SNA - Sandy Bridge New Acceleration. Intel's new accelerator, which supports more than Sandy Bridge, but does not support non-Intel chipsets.


===Wayland===
===Wayland===

Revision as of 12:14, 18 November 2012

SprezzOS contains powerful graphics support.

Screen-based displays (primarily LEDs and CRTs) underpin most users' interactions with their desktops and mobile devices. Modern desktops regularly drive one or more large, colorful, high-resolution LEDs via one or sometimes multiple video cards. Graphics processing units commonly contain more transistors than the CPUs with which they are mated. Despite this, the basic process interface exposed by ANSI C and the UNIX kernel consists of two character streams.

To explain: Gallum, DRM, DRI, KMS, OpenGLES, OpenVG, X, Wayland, widgetsets, VESA. VBE, DDC, EDID, TMDS, DMI, HDMI, DisplayPort...

Displays

Standard Resolutions

Note that these terms are largely meaningless, and have been since SuperVGA.

Physical Connectors

Name Picture Standards body Signal Data
DE15 (High-density DE-shell, 15 pins) N/A Analog DDC (serial link) /

DDC2B (I²C link)

FPD-Link over LVDS

(Low Voltage Differential Signaling)

N/A NatSemi / Silicon Valley Analog (FPD-Link)

ANSI/TIA/EIA-644-A (LVDS)

Digital DDC/CI
DVI (Digital Visual Interface)

Digital Display Working Group (royalty-free) Digital (DVI-D) /

Analog (DVI-A) / Digital + Analog (DVI-I)

DDC2B
HDMI (High-Definiton Multimedia Interface)

HDMI Forum (royalty + registration) Digital E-DDC + HDCP DDC
DisplayPort

VESA (royalty-free) Digital DDC

Character Output

Serial consoles

GRUB on VGA

Linux system console on VGA

Graphical Output

Graphical output will require some kernel module(s) driving the video device(s). Framebuffer drivers are independent of userspace programs; they create a /dev entry, and can support the system console and the X framebuffer server. Direct Rendering Manager (DRM) drivers are used as part of X11's Direct Rendering Infrastructure (DRI), and require their own X servers. Framebuffer drivers generally accelerate only 2D operations (blitting, rectangular tiling, etc), or none at all. DRM drivers expose a much richer API, and can be used with fully hardware-accelerated X servers. In addition, closed source drivers -- usually paired with their own X servers, and not typically supporting a framebuffer device -- can be used. Use of both the DRI and framebuffer drivers with a device can lead to errors, although sometimes it works fine.

Framebuffer

An abstraction of hardware, mapping memory to displayed pixels. If a framebuffer driver is active, /dev/fbX devices will exist, and the fbset tool can be used to display their statuses. It is generally not advised to use a framebuffer driver at the same time as X-based hardware control, though this sometimes works in practice. When a framebuffer is present and supported at kernel boot time, Linux will display a Tux logo (see right) for each processor in the machine.

Framebuffer devices are typically named /dev/fbX. The fbset command can be used to access and control framebuffer devices. The framebuffer mode is generally configured via the kernel command line or arguments to modprobe(1)/init_module(2).

Xorg

X.org Server 1.13 was released 2012-09-05.
DRI is a combination of DRM, X.org, and Mesa.

X architecture as of 2012 Xorg's code base combines the DDX (Device-Dependent X) and the DIX (Device-Independent X).

Damage

An X extension providing notification that a portion of a window needs to be redrawn.

XRender

An X extension providing Porter-Duff image compositioning. It wraps the Pixmap and Window datatypes with a new type, Picture. Picture provides an alpha channel

XShape

Support for non-rectangular windows.

Pixman

An archive of low-level rasterizing code used by Xorg and Cairo.

GLX

The OpenGL extension, providing support for use of OpenGL within an X window. It is superseded by EGL.

Memory Managers

  • GEM - Graphics Execution Manager. Intel's solution for region and context management.
  • TTM - Transition Table Maps.

Accelerators

  • XAA - The XFree86 Acceleration Architecture. Added in XFree86 3.3, rewritten entirely for 4.0, and removed in X.org 1.13.
  • KAA - KDrive Acceleration Architecture.
  • EXA - A 3D version of XAA.
  • UXA - Intel's EXA rewrite atop GEM.
  • SNA - Sandy Bridge New Acceleration. Intel's new accelerator, which supports more than Sandy Bridge, but does not support non-Intel chipsets.

Wayland

Wayland is not yet ready for general use.

Wayland architecture

Wayland is an experimental new compositing X server.

APIs

Xorg

Neko, the XCB mascot.

XCB

The X protocol C language Bindings are a low-level API driving the minimalist XCB X wire protocol.

X11

The original wire protocol for X11. It is now implemented atop XCB.

Cairo

OpenGL

OpenGL 4.3 was released on 2012-08-06.
Mesa 9.0.1 was released on 2012-11-15.

OpenGL (the Open Graphics Library) is an API specification geared towards hardware-accelerated 3D primitives. On desktop Linux, there are three major implementations of OpenGL:

  • NVIDIA's proprietary implementation, which supports most NVIDIA cards
  • AMD's proprietary implementation, which supports most AMD cards
  • Mesa, an open implementation mixing hardware acceleration with software fallback. It includes:
    • Gallium, an infrastructure designed to facilitate development of hardware-accelerated drivers
    • Nouveau, an open implementation for NVIDIA cards, using Gallium
    • Radeon, an open implementation for AMD cards, using Gallium
    • An open implementation for Intel cards
    • llvmpipe, a software rasterizer

Generally, the proprietary drivers tend to support newer OpenGL features and provide better performance, while the Mesa drivers are more smoothly integrated with the rest of the graphics stack (Kernel Mode Switching, Direct Rendering Infrastructure, XRandr, etc). Standard Linux tools might fail to work with the proprietary drivers, forcing use of proprietary tools to control the device.

EGL

EGL provides window manager-specific functionality for an OpenGL stack.

OpenGL ES

OpenGL ES 3.0 was released on 2012-08-06.

OpenGL for Embedded Systems. Mesa targets this with drivers for:

  • OMAP (Texas Instruments)
  • SGX (PowerVR)

OpenVG

OpenVG 1.1 was released on 2008-12-09.

Vector graphics acceleration targeting embedded systems (ie, often used in conjunction with OpenGL ES).

Tools

Xorg

xwininfo dumps information about an X window:

xwininfo: Window id: 0x3c00080 "xorg data rtypes - Google Search - Iceweasel"

  Absolute upper-left X:  6
  Absolute upper-left Y:  21
  Relative upper-left X:  6
  Relative upper-left Y:  21
  Width: 2548
  Height: 1573
  Depth: 24
  Visual: 0x21
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x20 (installed)
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +6+21  -6+21  -6-6  +6-6
  -geometry 2548x1573+6-6

See Also