Hardware overlay
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Hardware overlay, also known as video overlay, is a method of rendering an image to a display screen with a dedicated memory buffer inside computer video hardware, to display a fast-moving video image such as a computer game, a DVD, or the signal from a TV card. Hardware overlay is supported by most video cards (since about 1998) and media players.
Contents
[hide]
Overview
The use of a hardware overlay is important for several reasons. First, in a graphical user interface (GUI) operating system such as Windows,
one display is typically used to display multiple simultaneous
applications. Second, consider how a display works without a hardware
overlay. When each application draws to the screen, the operating
system's graphical subsystem must constantly check to ensure that the
objects being drawn appear on the appropriate location on the screen,
and that they don't collide with overlapping and neighboring windows.
The graphical subsystem must clip
objects while they are being drawn when a collision occurs. This
constant checking and clipping ensures that different applications can
cooperate with one another in sharing a display, but also consumes a
significant proportion of computing power.
The way a computer draws on its display is by writing a bitmapped representation of the graphics into a special portion of its memory known as video memory.
Without any hardware overlays, there is only one chunk of video memory
which all applications must share - and the location of a given
application's video memory moves whenever the user changes the position
of the application's window. With shared video memory, an application
must constantly check that it is only writing to memory that belongs to
that application.
When running a high-bandwidth video
application such as games or movie playing, the computing power and
complexity needed to perform this constant clipping and checking
negatively impacts performance and compatibility. To escape these
limitations, the hardware overlay was invented.
An application
using a hardware overlay gets a completely separate section of video
memory that belongs only to that application. Because nothing else uses
it, the program never needs to waste time considering whether a given
piece of the memory belongs to it, nor does it need to worry about the
user moving the window and changing the location of the video memory.
To get the image from the separate video memory to display in tandem
with the remaining shared elements on the display, the graphical
subsystem associates a certain attribute (for example, a particular
color) to be a "mask" for that overlay, which the graphics card
understands to mean that it is to draw from the separate overlay buffer
onto the screen. (This technique is commonly known as "chroma key".)
As
an example, assume the color "purple" is defined as the mask color that
triggers the overlay to appear. An application that plays a DVD will
draw a solid purple rectangle on the shared screen, and then "play" the
DVD into the special region of memory dedicated to the overlay. The
graphics card will render the DVD playback only inside the purple area.
If another window moves over top of the purple area and obscures a part
of it, then the graphics hardware performs the clipping by itself. In
practice, the actual color "purple" is not used - rather, either a
nondescript near-black color is used (as the system often has thousands
of such shades to choose from), or the mask region is denoted using
some similar masking method not involving colors.
Screenshots
One consequence of hardware overlay use is that a screenshot
program (for example, the one automatically built into Windows that
activates when the PrtSc key is pressed) often does not capture the
content appearing in the hardware overlay window. Rather, a blank
region containing only the special mask color is captured. This is
because the screen capture routine doesn't consider the special video
memory regions dedicated to overlays - it simply captures the shared
main screen as rendered by the software's graphical subsystem. Some Digital Rights Management
schemes use hardware overlay to display protected content on the
screen, taking advantage of this quirk to prevent the copying of
protected documents by way of screen capture[citation needed].
Secondary displays
Many
newer graphics cards can support more than one monitor and/or a TV
screen as output device. Typically one of these output devices has to
be declared the "primary" one, and only the primary one can display
hardware overlays. There are exceptions: Intel writes in its FAQ for
their Embedded Graphics Drivers that the overlay can be attached to
either one of the displays but not both and some newer Matrox graphics
card support overlay on both displays (e.g. Parhelia Series).
It
is a combination of hardware support and driver features, some graphics
cards may support overlay on the second display, but the drivers may
not support it (yet).
A common complaint is that DVD movies
play fine on a laptop screen, but don't display on a TV connected to
the laptop; in these cases the TV has to be designated as the primary
display. In extreme cases the use of hardware overlays has to be
disabled in the media player.
Implementations in various operating systems
Starting with Windows Vista's enhanced graphics capabilities, the basic concept of hardware overlays is replaced by full hardware compositing for every application window running on the system, not just movie players or games, through the Desktop Window Manager. Mac OS X has been using hardware compositing since Quartz Extreme was introduced in Mac OS X 10.2.
To improve performance, each program draws to its own independent
memory buffer instead of to a slow graphical subsystem. (In Windows
Vista, each hardware overlay is more correctly known as a Direct3D
surface). Then, the system's GPU
assembles each of the windows into a single display screen in real
time. With enhanced GPUs on the market capable of stunning 3D graphics
as a consequence of the video game industry, impressive motion,
scaling, and lighting effects can be applied to normal 2D windows by
the operating system.
In the X Window System, the windowing system of most Unix operating systems, the XVideo extension can be used to allow applications to employ hardware overlays.
posted on 2008-02-27 09:39
Magic 阅读(789)
评论(0) 编辑 收藏 引用 所属分类:
计算机技术