USRE38471E1 - Method and apparatus for display image rotation - Google Patents

Method and apparatus for display image rotation Download PDF

Info

Publication number
USRE38471E1
USRE38471E1 US09/753,173 US75317300A USRE38471E US RE38471 E1 USRE38471 E1 US RE38471E1 US 75317300 A US75317300 A US 75317300A US RE38471 E USRE38471 E US RE38471E
Authority
US
United States
Prior art keywords
controller
address
frame buffer
new
address set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/753,173
Inventor
Brian D. Howard
Robert L. Bailey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/721,482 external-priority patent/US5854641A/en
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Priority to US09/753,173 priority Critical patent/USRE38471E1/en
Application granted granted Critical
Publication of USRE38471E1 publication Critical patent/USRE38471E1/en
Assigned to APPLE INC. reassignment APPLE INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: APPLE COMPUTER, INC.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0492Change of orientation of the displayed image, e.g. upside-down, mirrored

Definitions

  • This invention relates generally to a processor-controlled system such as a computer system and, more particularly, but not exclusively, to an electrical arrangement in the system for managing video information for rotating computer display images.
  • a common resolution for computer displays is 640 ⁇ 480.
  • Such resolution for a display refers to a display having an overall screen measuring 640 pixels wide by 480 lines high.
  • any displays having this horizontal format i.e., its width being greater than its height
  • any displays having this horizontal format would provide ease and convenience for certain computer operations including showing TV images, operating drawing programs and performing spreadsheet calculations.
  • displays with a vertical format i.e., its height being greater than its width
  • are better suited for certain other operations such as word processing, program coding and Internet access.
  • One known implementation discloses a computer system having a display device which can be physically rotated along its sides 90 degrees in either of two directions. Such a system can then cause the display device to display its image contents correctly adjusted for the newly-rotated display orientation.
  • typical image orientation adjustments for the rotated display monitor have significant performance penalty associated with their necessary calculation-intensive axis transformations.
  • an apparatus including a memory system containing an image frame buffer for an associated display device, this memory system being coupled to a CPU and also being coupled to the display device via its video display controller.
  • the image frame buffer can be manipulated by the CPU and retrieved by the video display controller for use by the display device.
  • One aspect of the invention discloses an implementation wherein the CPU addresses the image frame buffer in a manner advantageous for CPU manipulation and the video display controller addresses the same image frame buffer in another manner advantageous for frame buffer retrieval by the video display controller.
  • Such retrieval includes image presentations on the display device in a vertical format as well as in a horizontal format depending on user selection.
  • image rotation one preferred but not limiting aspect of the invention provides the memory system, under the control of the video display controller, physically storing the image frame buffer in memory locations which are different from the locations as addressed by the CPU.
  • typical display image rotation can be accomplished entirely in software, another aspect of the present invention provides an implementation that is operable entirely in hardware.
  • the present invention also may take advantage of the fact that the image frame buffer in the memory system is typically defined as a series of bytes storing the image information for the first horizontal line of the display device, followed by a fixed gap of unused bytes, and followed by another series of bytes for the next horizontal line of the display device, then another gap of unused bytes, and so on.
  • the image frame buffer in the memory system is typically defined as a series of bytes storing the image information for the first horizontal line of the display device, followed by a fixed gap of unused bytes, and followed by another series of bytes for the next horizontal line of the display device, then another gap of unused bytes, and so on.
  • the image frame buffer in the memory system is typically defined as a series of bytes storing the image information for the first horizontal line of the display device, followed by a fixed gap of unused bytes, and followed by another series of bytes for the next horizontal line of the display device, then another gap of unused bytes, and so on.
  • a “defined frame buffer” (which contains the portion of the frame buffer used for the actual display data) starts at a page boundary address where all the address bits needed to describe offsets within the defined frame buffer are 0 (for a 1 megabyte buffer, for example, this means the least significant 20 bits of the lowest defined buffer address should be 0, a condition met by an hexadecimal address ending in 00000); and 2.
  • FIG. 1 is a schematic diagram illustrating a partial computer system including a preferred embodiment of the present invention for rotating display images on a display device;
  • FIG. 2 illustrates how a “defined frame buffer” containing an alphabet “F” in the vertical format is “viewed” or addressable by the CPU;
  • FIG. 3A illustrates an addressing scheme used by the CPU of the partial computer system of FIG. 1 for accessing frame buffer information
  • FIG. 3B provides a table illustrating a number of the frame buffer addressing parameters for several typical display resolutions currently available
  • FIG. 4 illustrates an embodiment of the present invention for CPU address transformation either in hardware or in software for providing a rotated image having a different orientation on a display device than that of the original image;
  • FIG. 5 illustrates a resulting image after the row and column addresses for the image shown in FIG. 2 have been exchanged in accordance with the present invention
  • FIG. 6 illustrates a counter-clockwise 90° rotation of the image as shown in FIG. 2 implemented by an embodiment of the present invention
  • FIG. 7 illustrates a clockwise 90° rotation of the image as shown in FIG. 2 implemented by an embodiment of the present invention
  • FIG. 8A illustrates a CPU address transformation embodiment either in hardware or in software for providing a 90° counter-clockwise image rotation for images on a display device
  • FIG. 8B illustrates a CPU address transformation embodiment either in hardware or in software for providing a 90° clockwise image rotation for images on a display device
  • FIG. 9A illustrates a rotated image as stored in the frame buffer memory in the embodiment illustrated in FIG. 8A;
  • FIG. 9B illustrates an image appearance on the display device after counter-clockwise image rotation operation for the embodiment illustrated in FIG. 8A;
  • FIG. 10A illustrates a rotated image as sorted in the frame buffer memory in the embodiment illustrated in FIG. 8B.
  • FIG. 10B illustrates an image appearance on the display device after a clockwise rotation image operation for the embodiment illustrated in FIG. 8 B.
  • FIG. 1 is a block diagram illustrating a partial computer system 100 in accordance with the present invention.
  • This computer system 100 for transferring information from one subsystem to another comprises a system bus 110 , an I/O bus 120 , a memory bus 130 , a frame buffer bus 140 and a display bus 150 .
  • the computer system 100 further includes a microprocessor (CPU) 155 being coupled to the system bus 110 for processing information and instructions, a system memory 165 being coupled to the memory bus 130 for storing information for system use, a memory controller/bridge 160 being coupled to the CPU 155 via the system bus 110 and to the system memory 165 via the memory bus 130 , a frame buffer memory 170 being coupled to the frame buffer bus 140 , a display device 180 coupled to the display bus 150 and a graphics video display controller 175 for processing image information and for directing the processed image information to the associated display device 180 , the display controller 175 being coupled to the frame buffer memory 170 and the display device 180 .
  • CPU microprocessor
  • system memory 165 being coupled to the memory bus 130 for storing information for system use
  • a memory controller/bridge 160 being coupled to the CPU 155 via the system bus 110 and to the system memory 165 via the memory bus 130
  • a frame buffer memory 170 being coupled to the frame buffer bus 140
  • a display device 180 coupled to the display bus 150 and a
  • the display device 180 may be a flat panel display, a liquid crystal device, even a cathode ray tube device, or other display devices suitable for creating graphics images and alphanumeric characters recognizable to users. In fact, the display device 180 is generic in that it could represent more than one display. Lastly, the computer system 100 includes other system I/O 185 such as hard disk, floppy disk and CD ROM subsystems.
  • an image frame buffer (not shown) to be displayed on the display device 180 is stored into the frame buffer memory 170 by the CPU 155 .
  • the graphics video display controller 175 may or may not interfere with the CPU 155 addressing of the image frame buffer inside the frame buffer memory 170 . Presumably, such CPU addressing is advantageous for its operations.
  • the graphics controller 175 When the image shown on the display device 180 is to be rotated, however, the graphics controller 175 , at that time, will interfere and manipulate the CPU 155 addressing of the image frame buffer without requiring the CPU 155 to spend its cycles on address transformation operations.
  • FIG. 2 illustrates how a defined frame buffer containing an alphabet “F” in the vertical format is “viewed” or addressable by the CPU 155 .
  • the defined frame buffer parameters H, V, x, and y and other related parameters h, v, and b are briefly defined in FIG. 2 .
  • w is the width of the data bus to the frame buffer memory 170 (i.e., the width of the frame buffer memory bus 140 ), and not necessarily the width of the I/O bus 120 .
  • the horizontal width H of the defined frame buffer is a power of 2 that equals or exceeds the width h*b/8 of the display portion (also in bytes).
  • the vertical height V of the defined frame buffer is a power of 2 that equals or exceeds the number of vertical pixels v.
  • the value for H can preferably be changed to a minimum value for each change in the value of b, alternatively, H can be set permanently to a maximum value corresponding to the maximum value of b.
  • FIG. 3 A A frame buffer addressing scheme used by the CPU 155 in accordance with the defined frame buffer concept is illustrated in FIG. 3 A.
  • the term “CPU address” refers to an address issued by the microprocessor (CPU) 155 or another device when the executing software accesses the frame buffer.
  • the graphics controller 175 accesses the frame buffer for image display and refresh using its own addresses (which may or may not be the same as the CPU addresses).
  • FIG. 3A shows a 32-bit address issued by the CPU 155 having row, column and byte address fields for accessing an image stored in the frame buffer memory 170 .
  • the various field and defined frame buffer parameters for a number of display resolutions, bits per pixel rates and frame buffer memory bus widths have been provided in FIG. 3 B.
  • the graphics video display controller 175 can alter any CPU 155 addresses received before actually writing or reading any images physically stored in the frame buffer memory 170 . As long as the same alteration is applied to both reading and writing operations, the software will never know that the images are actually physically stored in a different format.
  • the graphics video display controller 175 creates a new, rotated frame buffer memory address by exchanging the CPU Column address bits with the CPU Row address bits as shown in FIG. 4 .
  • the CPU Byte address bits retain their original position as the least-significant bits.
  • this address transformation is used on both reads and writes by the CPU 155 , then to the software, it will continue to “see” (address) any re-oriented image frame buffer stored in the frame buffer memory 170 as in its original, and in this case, in its vertical, format.
  • the graphics controller 175 can read the image frame buffer as it is actually stored in its rotated format in the frame buffer memory 170 .
  • one preferred aspect of the invention physically stores the image frame buffer as shown in FIG. 5 into the frame buffer memory 170 .
  • What is actually stored into the frame buffer memory 170 depends on how and how much of the present invention is implemented in hardware.
  • the defined frame buffer shown in FIG. 2 as addressed by the CPU 155 is actually stored in the frame buffer memory 170 as shown in FIG. 5 .
  • the CPU address transformation as illustrated in FIG. 4 is summarized in the following:
  • Rotated Row address bits CPU Column address bits
  • Rotated Byte address bits CPU Byte address bits
  • This basic transformation has rotated software's vertical format to a horizontal format, by simply exchanging the CPU columns for the CPU rows (lines).
  • a closer look at the rotation reveals that it has been rotated 90° counter-clockwise, but it is reversed vertically; in other words, it looks like a mirror image of the original vertical frame buffer, and rotated counter-clockwise. It does not provide the corresponding 90° image rotation desired when a display device or a hand-held computer is physically rotated either clockwise or counter-clockwise. Nevertheless, such desired rotated images could still be obtained in a number of ways.
  • a correct, counter-clockwise 90° image rotation for the image as shown in FIG. 2 can be derived from the image as shown in FIG. 5 if the graphics controller 175 merely accesses the rotated rows in the frame buffer memory 170 in reverse or decremental order when retrieving data for refresh, starting with the maximum rotated row (h*b/w) ⁇ 1 and ending with row 0 .
  • the resulting rotated image as displayed on the display device 180 is shown in FIG. 6 .
  • a clockwise 90° image rotation is obtained if the graphics controller 175 access the “rotated” columns in the frame buffer memory 170 as shown in FIGS. 4 & 6 in the reverse or decremental order when refreshing the display, starting with the maximum rotated column v- 1 and ending with column 0 .
  • the resulting image as displayed on the display device 180 for a clockwise rotation is shown in FIG. 7 .
  • the graphics controller's DMA engine may be designed only for incremental display refresh operations.
  • an implementation for a 90° counter-clockwise rotation requires subtracting each rotated row address from the maximum rotated row address (H*8/w) ⁇ 1 in the defined frame buffer as shown in FIG. 5 . This subtraction operation is simply accomplished by merely inverting each bit of the rotated row address.
  • the entire sequence of operations for this 90° counter-clockwise image rotation i.e., an exchange of CPU row and column addresses. Therefore, in this preferred embodiment, the CPU address transformation implementation is illustrated in FIG. 8 A and the transformed image and stored in the frame buffer memory 170 is shown in FIG.
  • FIG. 9B illustrates the image appearance on the display device 180 after a counter-clockwise rotation has been achieved by refreshing rotated rows H*8w-h*b/w to (H*8/w) ⁇ 1 in an incremental order.
  • FIG. 8B illustrates a CPU address transformation implementation for a 90° clockwise image rotation; briefly, it is an exchange of CPU column and bitwise-inverted row addresses.
  • the transformed image stored in the frame buffer memory 170 for this implementation is shown in 10 A.
  • FIG. 10B illustrates the image appearance on the display device 180 after a clockwise rotation has been achieved by refreshing rotated columns V-v to V-1 in an incremental order.
  • appropriate rotated images will be displayed when the graphics controller 175 retrieves data from the frame buffer memory 170 and refreshes the displayed images in a normal or incremental manner.
  • This implementation is computationally more intensive than earlier embodiments; but it is perhaps conceptually more straightforward than the earlier embodiments. And it does allow the rotated row be sequentially accessed from the frame buffer memory 170 in the same order (starting with rotated row and column address 0) for both clockwise and counter-clockwise rotation.

Abstract

A method and an apparatus for rotating images on a computer system is disclosed. The system includes a processor for accessing an image frame buffer using a set of CPU addresses, a memory for storing the frame buffer, a controller for directing the pixel data of the frame buffer to a display device using a set of controller addresses. The two sets of addresses are not necessarily the same. In fact, numerous advantages could be had from manipulating those two sets of addresses resulting in image rotation operations for the display device.

Description

FIELD OF THE INVENTION
This invention relates generally to a processor-controlled system such as a computer system and, more particularly, but not exclusively, to an electrical arrangement in the system for managing video information for rotating computer display images.
BACKGROUND INFORMATION
Among the many image resolutions for computer displays in the market today, a common resolution for computer displays is 640×480. Such resolution for a display refers to a display having an overall screen measuring 640 pixels wide by 480 lines high. In fact, any displays having this horizontal format (i.e., its width being greater than its height) would provide ease and convenience for certain computer operations including showing TV images, operating drawing programs and performing spreadsheet calculations. Nevertheless, displays with a vertical format (i.e., its height being greater than its width) are better suited for certain other operations such as word processing, program coding and Internet access. One may suggest a computer display having a square viewing area (i.e., equal height and width) for satisfying both requirements, but practically speaking, the most common computer displays today are rectangular, and that forces an user to choose either a horizontally or a vertically formatted display at the time of purchase.
It would be ideal if a display device could rotate between the horizontal format and the vertical format depending on user needs and preference. While this rotation feature is useful for operating numerous computer applications, it is especially advantageous for pen-based and hand-held computers where the user's ability to comfortably operate the computer is greatly affected by the orientation and position in which the computer is held.
One known implementation discloses a computer system having a display device which can be physically rotated along its sides 90 degrees in either of two directions. Such a system can then cause the display device to display its image contents correctly adjusted for the newly-rotated display orientation. Unfortunately, typical image orientation adjustments for the rotated display monitor have significant performance penalty associated with their necessary calculation-intensive axis transformations.
SUMMARY OF THE INVENTION
It would be desirable and therefore an object for the present invention to provide a method and apparatus for rotating computer display images 90 degrees on a display device with little or no transformation calculations. It is another object for the present invention to provide the image rotation for the display device in both clockwise and counter-clockwise directions to support both left-handed and right-handed users. Yet another object for the present invention is to implement such rotation feature without significant system performance penalty.
Additional objects and advantages of the present invention will be set forth in the description which follows, and in part, will be obvious from the description or may be learned by practice of the invention. To achieve the foregoing objects, and in accordance with the purpose of the invention as embodied and broadly described herein, briefly, there is provided an apparatus including a memory system containing an image frame buffer for an associated display device, this memory system being coupled to a CPU and also being coupled to the display device via its video display controller. The image frame buffer can be manipulated by the CPU and retrieved by the video display controller for use by the display device. One aspect of the invention discloses an implementation wherein the CPU addresses the image frame buffer in a manner advantageous for CPU manipulation and the video display controller addresses the same image frame buffer in another manner advantageous for frame buffer retrieval by the video display controller. Such retrieval includes image presentations on the display device in a vertical format as well as in a horizontal format depending on user selection. During image rotation, one preferred but not limiting aspect of the invention provides the memory system, under the control of the video display controller, physically storing the image frame buffer in memory locations which are different from the locations as addressed by the CPU. Although typical display image rotation can be accomplished entirely in software, another aspect of the present invention provides an implementation that is operable entirely in hardware.
The present invention also may take advantage of the fact that the image frame buffer in the memory system is typically defined as a series of bytes storing the image information for the first horizontal line of the display device, followed by a fixed gap of unused bytes, and followed by another series of bytes for the next horizontal line of the display device, then another gap of unused bytes, and so on. For a display device measuring h pixels wide, by v pixels high, this makes an image frame buffer of v lines, each line containing the number of bytes needed to store the image data for h pixels plus a fixed number of unused gap bytes. The image frame buffer implemented as described provides further advantages for image rotation, if two other conditions are met: 1. A “defined frame buffer” (which contains the portion of the frame buffer used for the actual display data) starts at a page boundary address where all the address bits needed to describe offsets within the defined frame buffer are 0 (for a 1 megabyte buffer, for example, this means the least significant 20 bits of the lowest defined buffer address should be 0, a condition met by an hexadecimal address ending in 00000); and 2. The sum of the number of image data bytes per display line plus the number of gap bytes per line is a power of 2 (such as 210=1024 bytes).
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
FIG. 1 is a schematic diagram illustrating a partial computer system including a preferred embodiment of the present invention for rotating display images on a display device;
FIG. 2 illustrates how a “defined frame buffer” containing an alphabet “F” in the vertical format is “viewed” or addressable by the CPU;
FIG. 3A illustrates an addressing scheme used by the CPU of the partial computer system of FIG. 1 for accessing frame buffer information;
FIG. 3B provides a table illustrating a number of the frame buffer addressing parameters for several typical display resolutions currently available;
FIG. 4 illustrates an embodiment of the present invention for CPU address transformation either in hardware or in software for providing a rotated image having a different orientation on a display device than that of the original image;
FIG. 5 illustrates a resulting image after the row and column addresses for the image shown in FIG. 2 have been exchanged in accordance with the present invention;
FIG. 6 illustrates a counter-clockwise 90° rotation of the image as shown in FIG. 2 implemented by an embodiment of the present invention;
FIG. 7 illustrates a clockwise 90° rotation of the image as shown in FIG. 2 implemented by an embodiment of the present invention;
FIG. 8A illustrates a CPU address transformation embodiment either in hardware or in software for providing a 90° counter-clockwise image rotation for images on a display device;
FIG. 8B illustrates a CPU address transformation embodiment either in hardware or in software for providing a 90° clockwise image rotation for images on a display device;
FIG. 9A illustrates a rotated image as stored in the frame buffer memory in the embodiment illustrated in FIG. 8A;
FIG. 9B illustrates an image appearance on the display device after counter-clockwise image rotation operation for the embodiment illustrated in FIG. 8A;
FIG. 10A illustrates a rotated image as sorted in the frame buffer memory in the embodiment illustrated in FIG. 8B; and
FIG. 10B illustrates an image appearance on the display device after a clockwise rotation image operation for the embodiment illustrated in FIG. 8B.
DESCRIPTION OF EMBODIMENTS
Reference will now be made in detail to preferred embodiments of the invention. While the invention will be described in conjunction with the preferred embodiments, it should be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications, and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims.
Throughout this detailed description numerous details are set forth in order to provide a thorough understanding of the present invention, for example, multiple references are made to specific computer display resolutions and data word bit-widths of communication lines. These specific values are exemplary only. To one skilled in the art, however, it will be appreciated that the present invention may be practiced without such specific details and that a wide range of display resolutions and data-word-bit-width values can be used within the scope of the present invention. In other instances, well-known methods, procedures, control structures and gate level circuits have not been shown in detail in order not to obscure the present invention.
With today's device technology, the development of specialized integrated circuits and programmable logic generally do not require the rendering of fully detailed circuit diagrams. The definition of logic functionality allows computer design techniques to design the desired logic and circuits. Additionally, microcontrollers are known to operate based on a desired flow diagram rendered into software that is compatible with a selected microcontroller. Accordingly, portions of the present invention will be described primarily in terms of functionality to be implemented by a microcontroller and other associated electronic components. This functionality will be described and those of ordinary skill in the art, once given the following descriptions of the various functions to be carried out by the present invention will be able to implement the necessary microcontroller structure and logic for various logic devices or custom designed integrated circuits in suitable technologies without undue experimentation.
FIG. 1 is a block diagram illustrating a partial computer system 100 in accordance with the present invention. This computer system 100 for transferring information from one subsystem to another comprises a system bus 110, an I/O bus 120, a memory bus 130, a frame buffer bus 140 and a display bus 150. The computer system 100 further includes a microprocessor (CPU) 155 being coupled to the system bus 110 for processing information and instructions, a system memory 165 being coupled to the memory bus 130 for storing information for system use, a memory controller/bridge 160 being coupled to the CPU 155 via the system bus 110 and to the system memory 165 via the memory bus 130, a frame buffer memory 170 being coupled to the frame buffer bus 140, a display device 180 coupled to the display bus 150 and a graphics video display controller 175 for processing image information and for directing the processed image information to the associated display device 180, the display controller 175 being coupled to the frame buffer memory 170 and the display device 180. The display device 180 may be a flat panel display, a liquid crystal device, even a cathode ray tube device, or other display devices suitable for creating graphics images and alphanumeric characters recognizable to users. In fact, the display device 180 is generic in that it could represent more than one display. Lastly, the computer system 100 includes other system I/O 185 such as hard disk, floppy disk and CD ROM subsystems.
In operation, an image frame buffer (not shown) to be displayed on the display device 180 is stored into the frame buffer memory 170 by the CPU 155. The graphics video display controller 175 may or may not interfere with the CPU 155 addressing of the image frame buffer inside the frame buffer memory 170. Presumably, such CPU addressing is advantageous for its operations. When the image shown on the display device 180 is to be rotated, however, the graphics controller 175, at that time, will interfere and manipulate the CPU 155 addressing of the image frame buffer without requiring the CPU 155 to spend its cycles on address transformation operations. Furthermore, the configuration of the frame buffer memory 170, graphics controller 175, and CPU 155 as shown in FIG. 1 should not be construed as limiting in the sense that other configurations can also be operable and be embodied within the scope of the present invention, for example, a configuration having a two-ported VRAM-like frame buffer memory where one port is coupled to a CPU and the other port is coupled to a graphics controller.
As discussed earlier in the Summary of the Invention that the concept of a “defined frame buffer” would provide certain efficiency advantages for image rotation. FIG. 2 illustrates how a defined frame buffer containing an alphabet “F” in the vertical format is “viewed” or addressable by the CPU 155. The defined frame buffer parameters H, V, x, and y and other related parameters h, v, and b are briefly defined in FIG. 2. In addition, w is the width of the data bus to the frame buffer memory 170 (i.e., the width of the frame buffer memory bus 140), and not necessarily the width of the I/O bus 120. The horizontal width H of the defined frame buffer (in bytes) is a power of 2 that equals or exceeds the width h*b/8 of the display portion (also in bytes). Similarly, the vertical height V of the defined frame buffer (in lines) is a power of 2 that equals or exceeds the number of vertical pixels v. For example, if a vertical-format buffer is 600 pixels wide by 800 pixels high, at 16 bits/pixel, the smallest value for H would be 2048 (i.e., the smallest power of 2 larger than h*b/8=1200) and the smallest V would be 1024 (i.e., smallest power of 2 larger than v=800). In general, to minimize the amount of frame buffer memory 170 used, the value for H can preferably be changed to a minimum value for each change in the value of b, alternatively, H can be set permanently to a maximum value corresponding to the maximum value of b.
A frame buffer addressing scheme used by the CPU 155 in accordance with the defined frame buffer concept is illustrated in FIG. 3A. The term “CPU address” refers to an address issued by the microprocessor (CPU) 155 or another device when the executing software accesses the frame buffer. The graphics controller 175 accesses the frame buffer for image display and refresh using its own addresses (which may or may not be the same as the CPU addresses). FIG. 3A shows a 32-bit address issued by the CPU 155 having row, column and byte address fields for accessing an image stored in the frame buffer memory 170. For implementation purposes, the various field and defined frame buffer parameters for a number of display resolutions, bits per pixel rates and frame buffer memory bus widths have been provided in FIG. 3B.
The graphics video display controller 175 can alter any CPU 155 addresses received before actually writing or reading any images physically stored in the frame buffer memory 170. As long as the same alteration is applied to both reading and writing operations, the software will never know that the images are actually physically stored in a different format. In one preferred embodiment for image rotation, the graphics video display controller 175 creates a new, rotated frame buffer memory address by exchanging the CPU Column address bits with the CPU Row address bits as shown in FIG. 4. The CPU Byte address bits retain their original position as the least-significant bits. If this address transformation is used on both reads and writes by the CPU 155, then to the software, it will continue to “see” (address) any re-oriented image frame buffer stored in the frame buffer memory 170 as in its original, and in this case, in its vertical, format. For refreshing the display images, however, the graphics controller 175 can read the image frame buffer as it is actually stored in its rotated format in the frame buffer memory 170. For example, one preferred aspect of the invention physically stores the image frame buffer as shown in FIG. 5 into the frame buffer memory 170. One does need to note that what is actually stored into the frame buffer memory 170 depends on how and how much of the present invention is implemented in hardware.
Applying the above transformations to one embodiment, the defined frame buffer shown in FIG. 2 as addressed by the CPU 155 is actually stored in the frame buffer memory 170 as shown in FIG. 5. The CPU address transformation as illustrated in FIG. 4 is summarized in the following:
Rotated Row address bits=CPU Column address bits
Rotated Column address bits=CPU Row address bits
Rotated Byte address bits=CPU Byte address bits
This basic transformation has rotated software's vertical format to a horizontal format, by simply exchanging the CPU columns for the CPU rows (lines). A closer look at the rotation reveals that it has been rotated 90° counter-clockwise, but it is reversed vertically; in other words, it looks like a mirror image of the original vertical frame buffer, and rotated counter-clockwise. It does not provide the corresponding 90° image rotation desired when a display device or a hand-held computer is physically rotated either clockwise or counter-clockwise. Nevertheless, such desired rotated images could still be obtained in a number of ways.
In another preferred embodiment, a correct, counter-clockwise 90° image rotation for the image as shown in FIG. 2 can be derived from the image as shown in FIG. 5 if the graphics controller 175 merely accesses the rotated rows in the frame buffer memory 170 in reverse or decremental order when retrieving data for refresh, starting with the maximum rotated row (h*b/w)−1 and ending with row 0. The resulting rotated image as displayed on the display device 180 is shown in FIG. 6.
Similarly, a clockwise 90° image rotation is obtained if the graphics controller 175 access the “rotated” columns in the frame buffer memory 170 as shown in FIGS. 4 & 6 in the reverse or decremental order when refreshing the display, starting with the maximum rotated column v-1 and ending with column 0. And the resulting image as displayed on the display device 180 for a clockwise rotation is shown in FIG. 7.
It is not always convenient or possible to sequentially access the rows or columns of a frame buffer in reverse order. For example, the graphics controller's DMA engine may be designed only for incremental display refresh operations. In response to this limitation, an implementation for a 90° counter-clockwise rotation requires subtracting each rotated row address from the maximum rotated row address (H*8/w)−1 in the defined frame buffer as shown in FIG. 5. This subtraction operation is simply accomplished by merely inverting each bit of the rotated row address. The entire sequence of operations for this 90° counter-clockwise image rotation, i.e., an exchange of CPU row and column addresses. Therefore, in this preferred embodiment, the CPU address transformation implementation is illustrated in FIG. 8A and the transformed image and stored in the frame buffer memory 170 is shown in FIG. 9A. FIG. 9B illustrates the image appearance on the display device 180 after a counter-clockwise rotation has been achieved by refreshing rotated rows H*8w-h*b/w to (H*8/w)−1 in an incremental order. Correspondingly, FIG. 8B illustrates a CPU address transformation implementation for a 90° clockwise image rotation; briefly, it is an exchange of CPU column and bitwise-inverted row addresses. The transformed image stored in the frame buffer memory 170 for this implementation is shown in 10A. And FIG. 10B illustrates the image appearance on the display device 180 after a clockwise rotation has been achieved by refreshing rotated columns V-v to V-1 in an incremental order.
In either implementation, appropriate rotated images will be displayed when the graphics controller 175 retrieves data from the frame buffer memory 170 and refreshes the displayed images in a normal or incremental manner.
A variation to the above embodiment in which each row or column address is subtracted from the maximum rotated row or column address in the display portion of the defined frame buffer can be described as follows:
For 90° Counter-clockwise Image Rotation:
Rotated Row Address=Highest Display Column Address−CPU Column Address (note: Highest Display Column Address=[h*b/w]−1)
Rotated Column Address=CPU Row Address
Rotated Byte Address=CPU Byte Address
For 90° Clockwise Image Rotation:
Rotated Row Address=CPU Column Address
Rotated Column Address=Highest Display Row Address−CPU Row Address (note: Highest Display Row Address=v−1)
Rotated Byte=CPU Byte
This implementation is computationally more intensive than earlier embodiments; but it is perhaps conceptually more straightforward than the earlier embodiments. And it does allow the rotated row be sequentially accessed from the frame buffer memory 170 in the same order (starting with rotated row and column address 0) for both clockwise and counter-clockwise rotation.
The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.

Claims (17)

We claim:
1. A computer display system including a processor and a display system, the display system having a memory, said display system comprising:
a display means for displaying image information to be arranged in a plurality of horizontal lines of pixel data;
a frame buffer containing the for storing pixel data of an image information, the frame buffer being stored in the memory in a manner that data of each of the plurality of horizontal lines including pixel data for the display means being stored in the memory resulting in the frame buffer occupying in a contiguous block in the a memory, and , the frame buffer further being accessible by the a processor using a processor address set of row and column addresses;
a controller means for establishingfor determining new row addresses of a controller address set as the column addresses of the processor address set, and establishing new column address of the controller address set as the row addresses of the processor address set;
the controller means being coupled to the display means for transferring adapted to transfer the pixel data of the frame buffer to the a display means using the new controller address set, the controller means setting each of the new row addresses of the controller address set as the difference between its current value and a maximum value of the new row addresses of the controller address set and providing the pixel data of the frame buffer to the display means while referencing both the new row addresses and the new column addresses of the controller address set in an ascending order.
2. The computer display system of claim 1 wherein the maximum value of the new row addresses of the controller address set refers to the maximum row address where the pixel data displayable on the display means are stored in the memory.
3. The computer system of claim 1 wherein A display system comprising:
a frame buffer for storing pixel data of an image in a contiguous block in a memory, the frame buffer being accessible by a processor using a processor address set of row and column addresses;
a controller for determining new row addresses of a controller address set as the column addresses of the processor address set, and new column addresses of the controller address set as the row addresses of the processor address set;
the controller adapted to transfer the pixel data of the frame buffer to a display using the new controller address set, the controller means setssetting each of the new column addresses of the controller address set as the difference between its current value and a maximum value of the new column addresses of the controller address set and provides the pixel data of the frame buffer to the display means while referencing both the new row addresses and the new column addresses of the controller address set in an ascending order.
4. The computer display system of claim 3 wherein the maximum value of the new column address of the controller address set refers to the maximum column address where the pixel data displayable on the display means are stored in the memory.
5. A method for rotating images for a computer system, the computer system including a processor, and a display system, the display system having and a memory, said method comprising the steps of:
displaying image information on display means arranged in a plurality of horizontal lines of pixel data;
storing pixel data of an image in a frame buffer in the memory, the frame buffer containing the image information , the frame buffer being stored in the memory in a manner such that data of each of the plurality of horizontal lines including pixel data for the display means are stored in the memory resulting in the frame buffer occupying a contiguous block in the memory and the frame buffer further being accessible by the processor using a processor address set of row and column addresses;
establishingdetermining new row addresses of a controller address set as the column addresses of the processor address set, and establishing new column addresses of the controller address set as the row addresses of the processor address set;
transferring the pixel data of from the frame buffer to the display means using the new controller address set, the transferring step setting each of the new row addresses of the controller address set as the difference between its current value and a maximum value of the new row addresses of the controller address set and providing the pixel data of from the frame buffer to the display means while referencing both the subtracted-from-maximum new row addresses and the new column addresses of the controller address set in an ascending order.
6. The method of claim 5 wherein the maximum value of the new row addresses of the controller address set refers to the maximum row address where the pixel data displayable on the display means are stored in the memory.
7. The method of claim 5 wherein the transferring step further includes A method for rotating images for a computer system, the computer system including a processor, a display and a memory, said method comprising the steps of:
storing pixel data of an image in a frame buffer, the frame buffer being stored in a contiguous block in the memory and the frame buffer being accessible by the processor using a processor address set of row and column addresses;
determining new row addresses of a controller address set as the column addresses of the processor address set, and new column addresses of the controller address set as the row addresses of the processor address set;
transferring the pixel data from the frame buffer to the display using the new controller address set, the transferring step setting each of the new column addresses of the controller address set as the difference between its current value and a maximum value of the new column addresses of the controller address set and providing the pixel data offrom the frame buffer to the display means while referencing both the new row addresses and the subtracted-from-maximum new column addresses of the control address set in an ascending order.
8. The method of claim 7 wherein the maximum value of the new column addresses of the controller address set refers to the maximum column address where the pixel data displayable on the display means are stored in the memory.
9. A graphics controller for rotating an image comprising:
an interface to receive a request for a pixel of the image from a processor, the pixel having a row address R and a column address C;
an interface to retrieve a new pixel instead of the requested pixel from a frame buffer, the new pixel having a row address X and a column address Y, wherein:
a) in response to the image being rotated clockwise, X is column address C of the requested pixel, and Y is the difference between row address R of the requested pixel and a maximum row address;
b) in response to the image being rotated counterclockwise, X is the difference between column address C of the requested pixel and a maximum column address, and Y is row address R of the requested pixel; and
an interface to output the new pixel to a display for display at row address X and column address Y.
10. An apparatus for manipulating a processor's addressing of an image from a frame buffer so that the image is rotated 90 degrees counter clockwise without requiring the processor to spend its cycles on address transformation operations, the apparatus comprising:
a display interface;
a frame buffer interface;
a controller to establish new row addresses of a controller address set as the column addresses of a processor address set, and to establish new column addresses of the controller address set as the row addresses of the processor address set;
the controller being coupled to the display interface and the frame buffer interface to transfer the pixel data of a frame buffer to a display using the new controller address set, the controller to set each of the new row addresses of the controller address set as the difference between its current value and the maximum value of the new row addresses of the controller address set and to provide pixel data of the frame buffer to the display while referencing both the new row addresses and the new column addresses of the controller address set in ascending order.
11. The frame buffer interface of claim 10 wherein the frame buffer for which the frame buffer interface is transferring pixel data is stored in a memory in a manner such that data of each of the plurality of horizontal lines including pixel data to be displayed on the display is stored in the memory resulting in the frame buffer occupying a contiguous block in the memory and the frame buffer is further accessible by a processor using a processor address set and row and column addresses.
12. An apparatus for manipulating a processor's addressing of an image from a frame buffer so that the image is rotated 90 degrees clockwise without requiring the processor to spend its cycles on address transformation operations, the apparatus comprising:
a display interface;
a frame buffer interface;
a controller to establish new row addresses of a controller address set as the column addresses of a processor address set, and to establish new column addresses of the controller address set as the row addresses of the processor address set;
the controller being coupled to the display interface and the frame buffer interface to transfer the pixel data of a frame buffer to a display using the new controller address set, the controller to set each of the new column addresses of the controller address set as the difference between its current value and the maximum value of the new column addresses of the controller address set and to provide pixel data of the frame buffer to the display while referencing both the new row addresses and the new column addresses of the controller address set in ascending order.
13. The frame buffer interface of claim 12 wherein the frame buffer for which the frame buffer interface is transferring pixel data is stored in a memory in a manner such that data of each of the plurality of horizontal lines including pixel data to be displayed on the display is stored in the memory resulting in the frame buffer occupying a contiguous block in the memory and the frame buffer is further accessible by a processor using a processor address set and row and column addresses.
14. A system for rotating an image comprising:
a processor to request a pixel of the image, the pixel having a row address R and a column address C;
a graphics controller to retrieve a new pixel instead of the requested pixel from a frame buffer, the new pixel having a row address X and a column address Y, wherein:
a) in response to the image being rotated clockwise, X is column address C of the requested pixel, and Y is the difference between row address R of the requested pixel and a maximum row address;
b) in response to the image being rotated counterclockwise, X is the difference between column address C of the requested pixel and a maximum column address, and Y is row address R of the requested pixel; and
wherein the graphics controller instructs a display to display the new pixel at row address X and column address Y.
15. A method of rotating an image, the image comprising a plurality of pixels, each pixel having a row address R and a column address C, the method comprising:
receiving a request for a pixel of the image, the pixel having a row address R and a column address C;
providing a new pixel having a new row address X and a new column address Y wherein:
a) in response to the image being rotated clockwise, X is column address C of the requested pixel, and Y is the difference between row address R of the requested pixel and a maximum row address;
b) in response to the image being rotated counterclockwise, X is the difference between column address C of the requested pixel and a maximum column address, and Y is row address R of the requested pixel; and
repeating the receiving and providing steps for each pixel of the image.
16. A method for rotating images 90 degrees counter clockwise comprising the steps of:
establishing new row addresses of a controller address set as the column addresses for a processor address set, and establishing new column addresses of the controller address set as the row addresses for the processor address set; and
setting each of the new row addresses of the controller address set as the difference between its current value and the maximum value of the new row addresses of the controller address set.
17. A method for rotating images 90 degrees clockwise comprising the steps of:
establishing new row addresses of a controller address set as the column addresses for a processor address set, and establishing new column addresses of the controller address set as the row addresses for the processor address set; and
setting each of the new column addresses of the controller address set as the difference between its current value and the maximum value of the new column addresses of the controller address set.
US09/753,173 1996-09-27 2000-12-29 Method and apparatus for display image rotation Expired - Lifetime USRE38471E1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/753,173 USRE38471E1 (en) 1996-09-27 2000-12-29 Method and apparatus for display image rotation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/721,482 US5854641A (en) 1996-09-27 1996-09-27 Method and apparatus for display image rotation
US09/753,173 USRE38471E1 (en) 1996-09-27 2000-12-29 Method and apparatus for display image rotation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US08/721,482 Reissue US5854641A (en) 1996-09-27 1996-09-27 Method and apparatus for display image rotation

Publications (1)

Publication Number Publication Date
USRE38471E1 true USRE38471E1 (en) 2004-03-23

Family

ID=31981676

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/753,173 Expired - Lifetime USRE38471E1 (en) 1996-09-27 2000-12-29 Method and apparatus for display image rotation

Country Status (1)

Country Link
US (1) USRE38471E1 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050052441A1 (en) * 2003-08-12 2005-03-10 Arm Limited Display controller
US20060038834A1 (en) * 2004-08-18 2006-02-23 Baek Joung-Hum Method of rotating image, computer, and recording media
US20070098394A1 (en) * 2005-10-28 2007-05-03 Baggs Scott C Image capture device output settings module
US20070195113A1 (en) * 2006-02-15 2007-08-23 Sigmatel, Inc. Image processor and method of image rotation
US20100088591A1 (en) * 2008-10-03 2010-04-08 Google Inc. Vertical Content on Small Display Devices
US20110234636A1 (en) * 2010-03-24 2011-09-29 Dsp Group Ltd. Method and integrated circuit for image manipulation
USRE44855E1 (en) 1997-10-28 2014-04-22 Apple Inc. Multi-functional cellular telephone

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4952920A (en) * 1987-01-20 1990-08-28 Kabushiki Kaisha Toshiba Display apparatus having horizontal/vertical conversion display functions
US4995089A (en) * 1990-01-08 1991-02-19 Eastman Kodak Company Method and apparatus for providing font rotation
US5533185A (en) * 1991-11-27 1996-07-02 Seiko Epson Corporation Pixel modification unit for use as a functional unit in a superscalar microprocessor
US5598181A (en) * 1994-09-26 1997-01-28 Xerox Corporation Method and apparatus for rotating a digital image ninety degrees using a small auxiliary buffer
US5634088A (en) * 1995-11-01 1997-05-27 Xerox Corporation Method and apparatus for rotation of high addressability bitmap images
US5734875A (en) * 1996-02-05 1998-03-31 Seiko Epson Corporation Hardware that rotates an image for portrait-oriented display
US5966116A (en) * 1995-04-07 1999-10-12 Advanced Micro Devices, Inc. Method and logic system for the rotation of raster-scan display images

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4952920A (en) * 1987-01-20 1990-08-28 Kabushiki Kaisha Toshiba Display apparatus having horizontal/vertical conversion display functions
US4995089A (en) * 1990-01-08 1991-02-19 Eastman Kodak Company Method and apparatus for providing font rotation
US5533185A (en) * 1991-11-27 1996-07-02 Seiko Epson Corporation Pixel modification unit for use as a functional unit in a superscalar microprocessor
US5598181A (en) * 1994-09-26 1997-01-28 Xerox Corporation Method and apparatus for rotating a digital image ninety degrees using a small auxiliary buffer
US5966116A (en) * 1995-04-07 1999-10-12 Advanced Micro Devices, Inc. Method and logic system for the rotation of raster-scan display images
US5634088A (en) * 1995-11-01 1997-05-27 Xerox Corporation Method and apparatus for rotation of high addressability bitmap images
US5734875A (en) * 1996-02-05 1998-03-31 Seiko Epson Corporation Hardware that rotates an image for portrait-oriented display

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE46548E1 (en) 1997-10-28 2017-09-12 Apple Inc. Portable computers
USRE45559E1 (en) 1997-10-28 2015-06-09 Apple Inc. Portable computers
USRE44855E1 (en) 1997-10-28 2014-04-22 Apple Inc. Multi-functional cellular telephone
US20050052441A1 (en) * 2003-08-12 2005-03-10 Arm Limited Display controller
US20060038834A1 (en) * 2004-08-18 2006-02-23 Baek Joung-Hum Method of rotating image, computer, and recording media
US7800634B2 (en) * 2004-08-18 2010-09-21 Samsung Electronics Co., Ltd Method of rotating image, computer, and recording media
US8619313B2 (en) 2005-10-28 2013-12-31 Hewlett-Packard Development Company, L.P. Scanning device with plural image capture zones on a platen
US20070098394A1 (en) * 2005-10-28 2007-05-03 Baggs Scott C Image capture device output settings module
US7876977B2 (en) 2006-02-15 2011-01-25 Conexant Systems, Inc. Image processor and method of image rotation
US7995867B2 (en) 2006-02-15 2011-08-09 Conexant Systems, Inc. Image processor and method of image rotation
US20110110607A1 (en) * 2006-02-15 2011-05-12 Conexant Systems, Inc. Image processor and method of image rotation
US20070195113A1 (en) * 2006-02-15 2007-08-23 Sigmatel, Inc. Image processor and method of image rotation
US20100088591A1 (en) * 2008-10-03 2010-04-08 Google Inc. Vertical Content on Small Display Devices
US9087337B2 (en) * 2008-10-03 2015-07-21 Google Inc. Displaying vertical content on small display devices
US20110234636A1 (en) * 2010-03-24 2011-09-29 Dsp Group Ltd. Method and integrated circuit for image manipulation

Similar Documents

Publication Publication Date Title
EP0840914B1 (en) Hardware that rotates an image
US7333097B2 (en) Display apparatus and method capable of rotating an image
US7262776B1 (en) Incremental updating of animated displays using copy-on-write semantics
US5854641A (en) Method and apparatus for display image rotation
US5815168A (en) Tiled memory addressing with programmable tile dimensions
JP2538029B2 (en) Computer display device
JPH0469794B2 (en)
JP3350043B2 (en) Graphic processing apparatus and graphic processing method
US5768491A (en) Display controller with enhanced video window clipping
US6760035B2 (en) Back-end image transformation
USRE38471E1 (en) Method and apparatus for display image rotation
US6215507B1 (en) Display system with interleaved pixel address
JP2889149B2 (en) Image display control method and image display control device
US6639603B1 (en) Hardware portrait mode support
JP2006003892A (en) System and method for efficiently supporting image rotation mode by utilizing display controller
JPS6329291B2 (en)
JPH0731489B2 (en) Memory array access method
US6031550A (en) Pixel data X striping in a graphics processor
GB2180729A (en) Direct memory access window display
JPS6327727B2 (en)
KR0171845B1 (en) Address changing method and circuit of memory device
JPS58136093A (en) Display controller
JPH0631927B2 (en) Display data transfer method and display system
JP3699496B2 (en) Image supply method and graphic controller using spatial redundancy to improve bandwidth
JPS60150089A (en) Memory

Legal Events

Date Code Title Description
CC Certificate of correction
FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: APPLE INC.,CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:APPLE COMPUTER, INC.;REEL/FRAME:020638/0127

Effective date: 20070109

Owner name: APPLE INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:APPLE COMPUTER, INC.;REEL/FRAME:020638/0127

Effective date: 20070109

FPAY Fee payment

Year of fee payment: 12