When a computing system renders an image for display that image may typically be fetched from computer memory where it is stored as data specifying a color and intensity for each pixel of the image. A display controller typically fetches the image data from memory and renders it for display.
The displayed image may be formed by combining a background “base layer,” such as the Operating System's (OS) “desktop,” with a foreground “overlay layer,” such as a window containing streaming video imported into the computer system from an external source. Often the overlay layer occupies less than an entire display frame, thus overlapping only a portion of the base layer. Sometimes, however, the overlay layer fills the entire display frame, completely overlapping the base layer.
Typical controllers use distinct hardware “engines” to fetch the base and overlay layer data from memory as pixel streams. The controller then combines the fetched pixel streams to generate a single stream of pixels forming the displayed image. Most display controllers also support layer transparency where the overlay layer can be translucent to varying degrees. Usually, the overlay layer's pixel data specifies the degree, if any, of overlay transparency. When transparency is specified the controller combines and/or “blends” the underlying base layer data with the overlay layer for that pixel. Because the typical display controller does not know ahead of fetching the overlay layer data if transparency will be specified it typically fetches the base layer pixel data just in case transparency is specified.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more implementations consistent with the principles of the invention and, together with the description, explain such implementations. The drawings are not necessarily to scale, the emphasis instead being placed upon illustrating the principles of the invention. In the drawings,
The following detailed description refers to the accompanying drawings. The same reference numbers may be used in different drawings to identify the same or similar elements. In the following description, for purposes of explanation and not limitation, specific details are set forth such as particular structures, architectures, interfaces, techniques, etc. in order to provide a thorough understanding of the various aspects of the claimed invention. However, it will be apparent to those skilled in the art, having the benefit of the present disclosure, that the various aspects of the invention claimed may be practiced in other examples that depart from these specific details. In certain instances, descriptions of well known devices, circuits, and methods are omitted so as not to obscure the description of the present invention with unnecessary detail.
System 100 may include a processor 102, memories 104A and 104B, a bus 106, an I/O interface 108, a network interface 109, a display controller 110, and a liquid crystal display (LCD) 112. Processor 102 may be coupled to bus 106 for communicating with other system devices such as memories 104A and 104B and display controller 110. Processor 102 may comprise a general purpose processor or a specific purpose processor generally arranged to control other elements in system 100 such as display controller 110. Processor 102 may include logic to perform specific functions within system 100 such as enabling transfer of data between I/O interface 108 and memory 104A, although the invention is not limited in this regard.
In the implementation of
Display 112 may display multiple “layers” of image data including a base layer region 114 and an overlay layer region 116 overlying base layer region 114. In some implementations only a portion 115 of base layer region 114 that is not overlain by overlay region 116 appears on display 112. In some implementations the base layer data corresponding to the portion of base layer 114 overlain by overlay layer 116 may be combined and/or blended with the overlay data in region 116. As will be further described below, display controller 110 may be configured to provide the image data displayed on LCD 112. While system 100 may include an LCD 112 as shown in
Bus 106 may be a peripheral component interconnect (PCI) bus, although the invention is not limited in this respect. I/O interface 108 may permit processor 102 or display controller 110 to communicate with I/O devices (not shown) such as, for example, a Bluetooth® wireless universal asynchronous receiver/transmitter (UART) or a universal serial bus (USB) linked to a digital camera, although the invention is not limited in this regard.
While RAM memories 104A,B and display controller 110 may be physically separated from processor 102 the invention is not limited in this respect and encompasses, for example, embodiments wherein memory and/or the display controller are embedded within processor 102. Moreover, all components or portions of the components of system 100 may be incorporated within a single integrated circuit (IC) “system on a chip” or incorporated into a collection of IC's interconnected to form a “package” without departing from the scope or spirit of the claimed invention.
Both I/O interface 108 and network interface 109 may comprise any suitable interface controllers to provide for any suitable communication link to different components of the system 100. For example, I/O interface 108 may communicatively couple system 100 to one or more suitable integrated drive electronics (IDE) drives, such as a hard disk drive (HDD) or optical disc drive (e.g., CD-ROM, CD-R/W, DVD-R, DVD-R/W, etc.), to store still or video image data and/or software instructions, for example. I/O interface 108 may, in some implementations, also communicatively couple system 100 to one or more suitable universal serial bus (USB) devices through one or more USB ports, an audio coder/decoder (codec), and a modem codec. I/O interface 108 may, in some implementations, also provide an interface to a keyboard, a mouse, and one or more suitable devices, such as a printer for example, through one or more ports. Network interface 109 may provide an interface to one or more networks external to system 100, including, for example, a local area network (LAN) permitting system 100 to be communicatively coupled, for example, to external sources providing streaming video data. In other implementations network interface 109 may interface with a wireless network, for example, a wireless LAN.
In some implementations, however, engines 202 and 204 may fetch image data stored on any combination of RAM 104A or RAM 104B, including, for example, fetching both base and overlay data stored on RAM 104B, without departing from the scope or spirit of the invention. Moreover, in some implementations, engines 202 and 204 may fetch their respective layer data from memory internal to either controller 110 and/or processor 102 without departing from the scope or spirit of the invention. In some implementations, control register 208 may control how base layer engine 202 may fetch base layer data and how overlay layer engine 204 may fetch overlay layer data.
Controller 110 may combine the fetched base and overlay pixel data in combining circuit 206 and provide the resulting pixels to LCD 112 as combined image data. In some implementations when the overlay data does not specify transparency, controller 110 may control circuit 206 to pass to LCD 112 that base layer pixel data for portion 115 of base region 114 that will not be overlain by region 116. In some implementations controller 110 may control circuit 206 to pass to LCD 112 substantially only that base layer pixel data for portion 115 of base region 114 that will not be overlain by region 116. In other words, in those implementations, controller 110 may control circuit 206 to pass to LCD 112 insubstantial portions of base layer pixel data corresponding to portions of base region 114 that are overlain by region 116.
In some implementations, controller 110 may control circuit 206 to supply only overlay layer pixel data to LCD 112 when displaying region 116. In some implementations, controller 110 may control circuit 206 to supply substantially only overlay layer pixel data to LCD 112 when displaying region 116. In other words, in those implementations, controller 110 may control circuit 206 to pass to LCD 112 insubstantial portions of base layer pixel data corresponding to base region 114 in addition to controlling control circuit 206 to supply overlay layer pixel data to LCD 112 when displaying region 116.
In some implementations when the overlay data specifies transparency, controller 110 may control circuit 206 to blend the overlay data with the base data to the specified degree of transparency when supplying data for the region of LCD 112 corresponding to overlay region 116. When displaying portion 115 of region 114, controller 110 may control circuit 206 to pass only the base layer pixel data to LCD 112.
In some implementations bit B1 may control whether display controller 110 fetches or obtains base layer data for those pixels of display 112 corresponding to the area of base layer 114 overlain by overlay layer 116. For example, when the overlay data will not be transparent or translucent, processor 102 may set bit B1 to instruct controller 110 to fetch base layer data corresponding only to portion 115 of base layer 114 using engine 202. In some implementations processor 102 may set bit B1 to instruct controller 110 to fetch base layer data corresponding substantially only to portion 115 of base layer 114. In other words, processor 102 may set bit B1 to instruct controller 110 to fetch insubstantial or small portions of base layer data corresponding to portions of base layer 114 overlain by overlay layer 116 in addition to instructing controller 110 to fetch base layer data corresponding to portion 115 of base layer 114.
In some implementations bit B2 may control whether controller 110 “auto detects” that the overlay data will completely fill the frame or displayable screen area of LCD 112 (i.e., when region 116 fills LCD 112 and thus completely overlaps region 114). Thus, in those implementations, when bit B2 is set or enabled and controller 110 detects that the overlay data fills an entire frame of LCD 112 then controller 110 may fetch only overlay data using engine 204. When bit B2 is not set and/or is disabled, controller 110 may fetch both base and overlay data and provide that data to LCD 112 as described above. In some implementations when bit B2 is set or enabled and controller 110 detects that the overlay data fills an entire frame of LCD 112 then controller 110 may fetch substantially only overlay data using engine 204. In other words, in those implementations, when bit B2 is set or enabled and controller 110 detects that the overlay data fills an entire frame of LCD 112 then controller 110 may fetch insubstantial portions of base layer data using engine 202 in addition to fetching overlay data using engine 204.
In some implementations bit B3 may control whether controller 110 substitutes a constant color value for the base layer data. For example, when the overlay data is of a type that makes the base layer less important, such as when the overlay layer comprises a preview image imported from a digital camera, control bit B3 may be set, enabling and/or instructing display controller 110 to supply a constant color value for the base layer data. Thus, when bit B3 is set, controller 110 may obtain overlay data when providing data for that portion of LCD 112 corresponding to the overlay region 116 and otherwise may provide a constant color value stored in base value register 210 when providing data for that portion 115 of LCD 112 corresponding to the base region 114 not overlain by region 116. In some implementations, when transparency and/or translucency of region 116 is indicated and when bit B3 is enabled, controller 110 may combine and/or blend the constant color value with the overlay image data in region 116.
While
In response to the indication that the overlay is non-transparent at act 402, indicated, for example, by the setting of bit B1, display controller 110 may arrange for base layer engine 202 to fetch from RAM 104A the base layer data for only that portion 115 of base layer region 114 that will not be overlain by overlay layer region 116 [act 406]. Processing may continue with controller 110 combining base layer data corresponding to portion 115 of region 114 with the overlay layer data using circuit 206 [act 408] and displaying the resulting combined image data on LCD 112 [act 410].
In response to the enabling of full screen overlay auto detection in act 502, by, for example, the setting of bit B2, display controller 110 may detect whether the overlay layer data fetched in act 504 will fill the screen of LCD 112 [act 506]. If controller 110 determines that the overlay layer data fills the screen of LCD 112 (i.e., overlay layer region 116 completely overlaps base layer region 114) then controller may not fetch base layer data and may, instead, display only overlay data as the image on LCD 112 [act 508]. If, however, controller 110 determines that the overlay layer data does not fill the screen of LCD 112 (i.e., overlay layer region 116 does not completely overlap base layer region 114) then controller may arrange for base layer engine 202 to fetch base layer data from RAM 104A [act 510]. Controller 110 may then combine the base and overlay layer data using circuit 206 [act 512] and may display the resulting combined image data on LCD 112 [act 514].
In some implementations, the color value loaded in act 604 may be consistent with an 18-bit red-green-blue (RGB) color value format, although the invention is not limited in this respect and other color values may be loaded in memory that are consistent or compatible with the color format of LCD 112. Controller 110 may then arrange for overlay layer engine 204 to obtain overlay layer data from RAM 104B [act 606]. Display controller 110 may then combine the base color value with overlay layer data using circuit 206 [act 608] and may display the resulting combined image data on LCD 112 [act 610].
The acts shown in
The foregoing description of one or more implementations consistent with the principles of the invention provides illustration and description, but is not intended to be exhaustive or to limit the scope of the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of various implementations of the invention.
For example, the system, apparatus and methods for display controller bandwidth and power reduction described herein are not limited to systems or apparatus where the display controller communicates image data to the display over buses or cables. Rather, the claimed invention also contemplates display controllers that communicate with displays using wireless technologies. Also, although described in terms of a discrete display controller, in some implementations the display controller may be imbedded within a larger general purpose processor or system. For example, the display controller may be embedded along with a processor, buses, I/O interfaces, etc., within a single integrated circuit chip or a “system on a chip.” Clearly, many other implementations may be employed to provide for display controller bandwidth and power reduction consistent with the claimed invention.
No element, act, or instruction used in the description of the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Variations and modifications may be made to the above-described implementation(s) of the claimed invention without departing substantially from the spirit and principles of the invention. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.