Image data is formed by pixels. A pixel is defined as a point that can be displayed on a display screen. Color values are assigned for pixels and are commonly stored in a memory as 1-bit monochrome, 4-bit palettized, 8-bit palettized, 16-bit highcolor, and 24-bit truecolor formats. To reconstruct an image on the display screen, a display controller obtains color values for pixels from the memory and causes the color values to be displayed on a display device. When the stored image is displayed without rotation, the display controller requests, for example, 32 byte transactions per request to retrieve pixels sequentially across rows from the memory. Each row/line of pixels is then sequentially displayed on the display screen in rows/lines (e.g. top row to bottom row). Since the retrieved data corresponds to the displayed data, there is no re-fetching of data (e.g. once the data is requested, it is used/displayed sequentially and not thrown away).
However when the stored image is displayed in a rotated form (e.g. 90 degree rotation), inefficient memory accesses are performed and some data that is retrieved gets discarded. For example, the display controller can only use and display one pixel from a horizontal line at a time since pixels are read from the memory in horizontal lines, but then are rotated to vertical lines (e.g. in 90 degree rotation). This leaves only one pixel to be displayed while the others are discarded. Depending on the image format, one pixel can be 4 bytes (RGB32/24), 3 bytes (RGB24p), 2 bytes (RGB16), or 1 byte (YCbCr). If the minimum transaction is 8 bytes, there is unused data that is discarded and that will need to be re-fetched again in subsequent memory accesses. This is especially inefficient for YCbCr image formats since the same data is fetched 8 times over the duration of one image frame. Hence, bandwidth usage is increased by 8 times. A more efficient way to process and display image data may be desirable.
In one embodiment, a display controller comprises control logic that rotates a frame image by two-dimensional blocks of pixels when the frame image is rotated from an original orientation.
In another embodiment, a method comprises retrieving data representing an image from a memory as two-dimensional blocks of pixel data. The blocks of pixel data are rotated. The pixel data from the rotated blocks is then caused to be displayed on a display screen.
In another embodiment, a display controller comprises control logic that retrieves a frame image from a memory in two-dimensional blocks. Rotation logic rotates the frame image by rotating the two-dimensional blocks of the retrieved frame image in accordance with a rotation angle, where the display controller controls a display device to display the rotated frame image by displaying the rotated two-dimensional blocks sequentially on a display screen.
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate various examples of systems, methods, and other embodiments of various aspects of the invention. It will be appreciated that the illustrated element boundaries (e.g., boxes, groups of boxes, or other shapes) in the figures represent one example of the boundaries. One of ordinary skill in the art will appreciate that in some examples, one element may be designed as multiple elements, or multiple elements may be designed as one element. In some examples, an element shown as an internal component of another element may be implemented as an external component and vice versa. Furthermore, elements may not be drawn to scale.
The disclosure describes a display controller for controlling imaging on a display device. In one example, the display device is a smart panel display that includes built-in internal frame buffers.
The following includes definitions of selected terms employed herein. The definitions include various examples and/or forms of components that fall within the scope of a term and that may be used for implementation. The examples are not intended to be limiting. Both singular and plural forms of terms may be used within the definitions.
References to “one embodiment”, “an embodiment”, “one example”, “an example”, and so on, indicate that the embodiment(s) or example(s) so described may include a particular feature, structure, characteristic, property, element, or limitation, but that not every embodiment or example necessarily includes that particular feature, structure, characteristic, property, element or limitation. Furthermore, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, though it may.
In one embodiment, the display controller 150 may be implemented as one or more integrated chips, logic (e.g. hardware and/or executable instructions stored in a storage medium), combinations of electrical components, and so on. The display controller 150 can be designed to be incorporated into an apparatus 190. The apparatus 190 can be, for example, a computer, a hand-held processing device, a communication device, and so on. The memory 175 can be internal (e.g. double-data-rate (DDR) memory) to the apparatus 190 or connected externally.
As an example of operation, suppose a request is received to rotate a displayed image by a selected angle (e.g. rotate by 90 degrees from an original orientation). Pixel data representing the image may be stored in the frame buffer 170 or memory 175. The pixel data will be referred to as a frame image. In one embodiment, the control logic 160 controls the display screen 180 to refresh the frame image in two-dimensional blocks of pixels when the frame image is rotated from the original orientation.
In one embodiment, the rotation logic 165 generates commands for retrieving or fetching image data from the memory 175. In response to a request to rotate the frame image, one or more commands are generated where the commands retrieve the data as two-dimensional blocks of pixel data (e.g. 16×16 pixels, 32×32 pixels, and so on). Thus a block of pixels spans across multiple lines of pixels in a frame. The rotation logic 165 may be programmed to define the block size. In one example, the block size can be defined based on an allowable request length according to the communication protocol used to access the memory 175. The data is then retrieved from the memory 175 in block transactions defined by the two-dimensional blocks of pixel data. One block transaction may include multiple requests to the memory 175 for portions of a block. By retrieving two-dimensional blocks of pixels, each pixel in the retrieved block is displayed on the display screen after being retrieved once.
In other words, by processing the pixel data in blocks as opposed to one-dimensional lines of pixels, pixels are not discarded during the rotation operation, only to be re-fetched again in a subsequent memory access for the next line of pixels. This is described in more detail with reference to
With reference to
Starting at pixel 1 in
The process then repeats for the next 3×3 block in the sequence based on the rotation, which in this case is block 215A vertically above block 210A in
In another embodiment, for 90 degree rotation to be obtained, data is fetched starting from the lower left corner of the map 200 (
With reference again to
In another example, when data is retrieved from the memory 175, the data is in a non-rotated form. The rotation logic 165 generates requests to retrieve the data in a rotated form and then stored the data in the frame buffer 170 in a particular format corresponding to the rotation. Rotated data is generated by rotating the data to a selected orientation. One example operation of rotating the data is described with reference to
With reference to
With reference to
Instead of storing the frame data linearly in memory,
In different embodiments, logic or other components described herein may be implemented with, but not limited to, hardware, firmware stored in memory, executable instructions stored in a memory or logic device, and/or combinations thereof. In some embodiments, the display controller 150 may include a software controlled microprocessor, a discrete logic (e.g., application specific integrated circuit (ASIC), an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions, and so on. Logic may include one or more gates, combinations of gates, or other circuit components.
While example systems and methods have been illustrated by describing examples, and while the examples have been described in considerable detail, it is not the intention of the applicants to restrict or in any way limit the scope of the appended claims to such detail. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the systems, methods, and so on described herein. Therefore, the invention is not limited to the specific details, the representative apparatus, and illustrative examples shown and described. Thus, this application is intended to embrace alterations, modifications, and variations that fall within the scope of the appended claims.
To the extent that the term “includes” or “including” is employed in the detailed description or the claims, it is intended to be inclusive in a manner similar to the term “comprising” as that term is interpreted when employed as a transitional word in a claim.
To the extent that the term “or” is employed in the detailed description or claims (e.g., A or B) it is intended to mean “A or B or both”. When the applicants intend to indicate “only A or B but not both” then the term “only A or B but not both” will be employed. Thus, use of the term “or” herein is the inclusive, and not the exclusive use. See, Bryan A. Garner, A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995).
This application claims the benefit of U.S. provisional application Ser. No. 61/161,334, filed on Mar. 18, 2009 which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
4545069 | Kermisch | Oct 1985 | A |
5091721 | Hamori | Feb 1992 | A |
6104416 | McGuinness | Aug 2000 | A |
6208767 | Chapin | Mar 2001 | B1 |
6301397 | Jankowski et al. | Oct 2001 | B1 |
6643415 | Fukai et al. | Nov 2003 | B1 |
7924296 | Guha | Apr 2011 | B2 |
20030058354 | Parulski et al. | Mar 2003 | A1 |
20040218099 | Washington | Nov 2004 | A1 |
20040223058 | Richter et al. | Nov 2004 | A1 |
20060001905 | Utsunomiya | Jan 2006 | A1 |
20060104543 | Schweng | May 2006 | A1 |
20070019005 | van Baarsen et al. | Jan 2007 | A1 |
20070195113 | Walton et al. | Aug 2007 | A1 |
20080029221 | Dangami et al. | Feb 2008 | A1 |
20080219588 | Swann | Sep 2008 | A1 |
20090096813 | Nagaraj et al. | Apr 2009 | A1 |
20090189918 | Ollmann | Jul 2009 | A1 |
20090202168 | Watarai | Aug 2009 | A1 |
20090207101 | Noguchi et al. | Aug 2009 | A1 |
20110110607 | Walton et al. | May 2011 | A1 |
Entry |
---|
US Patent and Trademark Office (USPTO), Non-Final Office Action from U.S. Appl. No. 12/511,238, filed Jul. 29, 2009 having a Notification Date of Oct. 23, 2012 (8 pgs). |
Number | Date | Country | |
---|---|---|---|
61161334 | Mar 2009 | US |