WO1995024032A1 - Method and apparatus for simultaneously minimizing storage and maximizing total memory bandwidth for a repeating pattern - Google Patents

Method and apparatus for simultaneously minimizing storage and maximizing total memory bandwidth for a repeating pattern Download PDF

Info

Publication number
WO1995024032A1
WO1995024032A1 PCT/US1995/000613 US9500613W WO9524032A1 WO 1995024032 A1 WO1995024032 A1 WO 1995024032A1 US 9500613 W US9500613 W US 9500613W WO 9524032 A1 WO9524032 A1 WO 9524032A1
Authority
WO
WIPO (PCT)
Prior art keywords
pattern
repeated pattern
offset
cache
repeated
Prior art date
Application number
PCT/US1995/000613
Other languages
French (fr)
Inventor
Bradley W. Cain
Rajeev Jayavant
William Desi Rhoden
Original Assignee
Vlsi Technology, 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
Application filed by Vlsi Technology, Inc. filed Critical Vlsi Technology, Inc.
Publication of WO1995024032A1 publication Critical patent/WO1995024032A1/en

Links

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

Definitions

  • the present invention relates to a graphics controller for a computer, and more specifically, a cache for a raster operation unit (OP) which is used to store a scan line of a pattern tile.
  • OP raster operation unit
  • the graphics controller In a computer display system in which a graphics controller is used in the display of information on a video monitor, the graphics controller is typically called on to display various repeated patterns, also referred to herein as tile patterns. In some graphics controllers, no internal storage is provided for a repeated pattern. In such a case, the device driver software performs all patterning operations. This solution, however, can result in poor display performance. Additionally, a significant software development and maintenance effort may be required.
  • a minimal amount of repeated pattern support may be implemented in hardware without adding any local storage for the pattern data within the graphics controller.
  • the complete pattern is stored in the frame buffer memory.
  • Each frame buffer write from a raster operation unit to a frame buffer memory is preceded by an operation to read pattern data from non-displayed memory locations within the frame buffer memory. While such a system reduces the software driver development effort, the frequent pattern read operations from the frame buffer memory consume a significant percentage of the total memory bandwidth. The overall performance of the repeat pattern operations remains fairly low.
  • memory within the controller which stores an entire pattern. This allows for display of information integrated within a pattern at virtually the same performance as the display of information not integrated in a pattern. While this approach provides very high performance, storing the complete pattern requires a significant hardware investment within the controller. However, the solution does have the advantage of minimizing software driver support as it only requires loading a pattern from unused portions of the frame buffer whenever the pattern changes. Alternately, the pattern may be stored elsewhere in the computer system, such as system memory or in the CPU.
  • a method and circuitry are provided for writing an image to a data frame buffer for display by a monitor.
  • the image includes a repeated pattern.
  • the present invention uses a repeated pattern cache which is not large enough to simultaneously contain an entire repeated pattern.
  • a horizontal pattern offset and a vertical pattern offset for a destination location of the pixel are determined. If a scan line for the repeated pattern which corresponds to the vertical pattern offset does not reside in the repeated pattern cache, the scan line for the repeated pattern which corresponds to the vertical pattern offset is fetched into the repeated pattern cache.
  • the pixel is accessed at a location in the repeated pattern cache at a location which corresponds to the horizontal pattern offset.
  • the accessed pixel is written to the buffer.
  • the present invention offers superior performance over prior systems where no pattern support is offered or where each frame buffer write from a raster operation unit to a frame buffer memory is preceded by an operation to read pattern data from non-displayed memory locations within the frame buffer memory. However, the present invention does not have the high hardware investment required for systems in which memory within the controller is" provided which stores an entire pattern.
  • Figure 1 shows implementation of a display system in accordance with the prior art.
  • Figure 2 shows a cache which is used to store a portion of a pattern within the display system shown in Figure 1.
  • Figure 3 shows a block diagram of the cache shown in Figure 2 in accordance with the preferred embodiment of the present invention.
  • Figure 4 shows an example of a pattern tile and an image which utilizes the pattern tile.
  • Figure 5 shows a block diagram illustrating operation of the raster operation unit shown in Figure 2 in accordance with the preferred embodiment of the present invention.
  • Figure 1 shows implementation of a display system in accordance with the prior art.
  • a frame buffer memory 18 buffers information which describes a screen displayed on a monitor 19.
  • pattern information is stored in "off-screen" portions of frame buffer memory 18 not used for screen description. This information may be used by a pixel write pipeline when preparing description of the screen to be stored in frame buffer memory 18.
  • a CPU interface 11 is used to interface the display system with the central processor system (CPU).
  • CPU central processor system
  • CPU central processor system
  • software drivers running on the CPU forward new screen display information to the display system through CPU interface 11.
  • This new screen display information typically includes pixel data directly written through to frame buffer memory 18. Alternately, more sophisticated systems may provide a co- processor to accelerate drawing operations. The number of bits per pixel and number of pixels per write varies dependent upon the particular configuration. From the new screen display information, a pixel write pipeline 13 writes new screen description into frame buffer memory 18. All interaction between pixel write pipeline 13 and frame buffer memory 18 is done through a memory interface 16.
  • the information within frame buffer memory may also be accessed by a pixel read pipeline 12 through memory interface 16. The information may be forwarded to the CPU through CPU interface 11.
  • the screen display within frame buffer memory is formatted by a video display formatter 15.
  • Video display formatter 15 receives the pixels from the screen display from frame buffer memory 18 through memory interface 16 as shown in Figure 1. Alternately, video display formatter may receive the pixels from the screen display directly from frame buffer memory 18 via an optional VRAM serial port (not shown).
  • FIG. 2 shows circuitry within pixel write pipeline 13 used to modify the screen display within frame buffer memory 18 in accordance with the preferred embodiment of the present invention.
  • a raster operation unit (ROP) 21 prepares information to be loaded into the screen display memory locations within frame buffer memory 18. New data from the CPU is received along a pixel write path 23. This information includes pixel data, e.g. color, which is forwarded to ROP 21. Pattern information is sent from pattern cache 22 to ROP 21 through pattern path 26. Through a data path 24 from frame buffer memory 18 via memory interface 16, ROP 21 and a pattern cache 22 are able to access data from memory locations within frame buffer memory 18. Generally, data path 24 is used to feed the pixel read pipeline.
  • ROI raster operation unit
  • Pixel address circuitry 25 keeps track for each pixel of the x/y coordinates where the new data is to be placed in the frame buffer memory. Pixel address circuitry 25 forwards the current pixel address to pattern cache 22 and memory interface 16.
  • FIG. 5 is a block diagram which illustrates operation of ROP 21.
  • Each pixel is represented by "B" bits of data.
  • the number of bits per pixel (B) may equal, for example, 8, 16 or 24.
  • ROP 21 receives B-bits of source information through pixel write path 23, B-bits of pattern information from pattern cache 22 through pattern path 26, and B-bits of destination information through data path 24.
  • a B-bit output is produced on ROP output lines 27.
  • ROP 21 generates each bit of output using a corresponding bit from each of the source information, the pattern information and the destination information.
  • An ROP code on ROP code input lines 28 is used to determine how the corresponding bit from each of the source information, the pattern information and the destination information are combined to generate each output bit. For example, for a first ROP code, the output bit may always be zero.
  • the output may be generated by performing a logic NOR on the corresponding source information bit and the destination information bit.
  • the output may be generated by performing a logic AND on the corresponding destination information bit and the inverted source information bit. And so on.
  • raster operation unit 21 uses pattern information from pattern cache 22.
  • Figure 3 is a logic block diagram illustrating functioning of pattern cache 22.
  • a cache memory 31 stores a scan line of a pattern. For example, each pixel is described by "B" bits.
  • the pattern stored in frame buffer memory 18 is "m" pixels wide and "n" pixels high.
  • cache memory 31 in order to store a scan line of the pattern, needs to be able to store m times B bits. Pixels of the scan line within cache memory 31 are accessed from input 32 by the horizontal pattern offset "px".
  • the horizontal pattern offset px represents the horizontal offset within the pattern. For example, for a scan line of a pattern which has eight pixels, the left most pixel will have a horizontal pattern offset px equal to 0. For a scan line of a pattern which has eight pixels, the right most pixel will have a horizontal pattern offset px of 7. And so on.
  • the pixel coordinates for a current pixel to be displayed in a display screen is given by (x,y).
  • the horizontal pattern offset px for any coordinate (x,y) can be determined by the following Equation 1 below:
  • modulo the result of the operation "modulo" is equal to the remainder after a division.
  • a pattern address received from the CPU and placed on input 39 is compared by a comparator 36 with a pattern address stored in a register 34.
  • the pattern address stored in register 34 indicates the pattern address within frame buffer memory 18 from which originated the scan line currently residing in cache memory 31. If the comparison does not yield a match, a new scan line from the correct pattern must be fetched from frame buffer memory 18 to cache memory 31.
  • the cache is invalidated whenever a pattern address is written.
  • a current pattern scan line in a scan line register 35 is compared by a comparator 37 with the vertical pattern offset py of the coordinate to be displayed, which is placed on an input 40.
  • the vertical pattern offset py for any coordinate (x,y) can be determined by the following Equation 3 below:
  • Figure 4 shows an eight pixel by eight pixel repeated pattern 51 stored in frame buffer memory 18.
  • ROP 21 uses pattern 31 to draw the triangle shown in display portion 32.
  • single pattern scan line (consisting of eight pixels) is loaded into pattern cache 22 from off screen memory locations within frame buffer memory 18.
  • a horizontal screen scan line is typically 1024-1280 pixels wide.
  • Most graphics rendering algorithms are scan line oriented. This means that the graphics rendering algorithms tend to draw objects as a collection of horizontal bands, completing one band before moving on the next.
  • the triangle within display portion is drawn left to right, top to bottom.
  • the top horizontal scan line of the triangle includes only a single pixel.
  • the second horizontal scan line of the triangle includes two pixels.
  • the third horizontal scan line of the triangle includes four pixels.
  • the fourth horizontal scan line of the triangle includes five pixels.
  • the fifth horizontal scan line of the triangle includes six pixels. And so on.
  • Pattern cache 22 reads in a single pattern scan line prior to drawing one line of the triangle.
  • the "cached" pattern data can then be repeatedly used to draw pixels within that triangle line. Since the triangle is twenty- four scan lines high, pattern cache 22 has to reload a total of 24 times. If pattern cache 22 is reloaded one pixel at a time, this would result in 192 reads. If pattern cache 22 is reloaded four pixels at a time, this would result in 48 reads.
  • the cache data is purged after only a single pixel is drawn at the top of the triangle. In the second scan line, two pixels are drawn before the cache data is purged.
  • Operation of the preferred embodiment of the present invention offers superior performance over prior art methods of pattern support. Specifically, where no pattern support is offered in hardware, software running on the CPU must look up the pattern data and draw the pattern using the data. This tends to be very slow. Where there is pattern support but no pattern storage, a piece of the pattern must be read from off screen memory in the frame buffer memory before each pixel or set of pixels can be written back to the screen display in the frame buffer. In the triangle example discussed above, there are approximately 384 pixels. Thus a system that accessed pixels one at a time would perform 384 read/write pairs to draw the patterned triangle. If the system could read and write four pixels at a time, a total of 115 read/write pairs would still be required, when alignment restrictions are included.
  • the pattern For a system which stored the entire pattern, the pattern would first be written to the graphics controller. Then the triangle can be drawn, resulting in approximately 384 writes if one pixel is written at a time or about 115 writes if four pixels are written at time. This yields superior performance to the preferred embodiment of the present invention, however, as described, such a system requires a significant amount of hardware for implementation.
  • the description of the example above utilized an eight pixel by eight pixel pattern.
  • the present invention embodies systems with patterns of any size. However, it is necessary is to insure that cache memory 31 is sufficiently large to hold a scan line of the pattern. Also, the present invention includes embodiments a cache size that would include, for example, two or more (but not all) scan lines of the pattern.

Abstract

An image is written to a data frame buffer (18) for display by a monitor (19). The image includes a repeated pattern. The present invention uses a repeated pattern cache (22) which is not large enough to simultaneously contain an entire repeated pattern. When writing a pixel of the image, a horizontal pattern offset and a vertical pattern offset for a destination location of the pixel are determined. If a scan line for the repeated pattern which corresponds to the vertical pattern offset does not reside in the repeated pattern cache (22), the scan line for the repeated pattern which corresponds to the vertical pattern offset is fetched into the repeated pattern cache (22). When the scan line for the repeated pattern which corresponds to the vertical pattern offset resides in the repeated pattern cache (22), the pixel is accessed at a location in the repeated pattern cache (22) at a location which corresponds to the horizontal pattern offset. The accessed pixel is written to the buffer (18).

Description

METHOD AND APPARATUS FOR SIMULTANEOUSLY MINIMIZING STORAGE AND MAXIMIZING TOTAL MEMORY BANDWIDTH FOR A
REPEATING PATTERN
Technical Field The present invention relates to a graphics controller for a computer, and more specifically, a cache for a raster operation unit ( OP) which is used to store a scan line of a pattern tile.
In a computer display system in which a graphics controller is used in the display of information on a video monitor, the graphics controller is typically called on to display various repeated patterns, also referred to herein as tile patterns. In some graphics controllers, no internal storage is provided for a repeated pattern. In such a case, the device driver software performs all patterning operations. This solution, however, can result in poor display performance. Additionally, a significant software development and maintenance effort may be required.
In an alternate solution, a minimal amount of repeated pattern support may be implemented in hardware without adding any local storage for the pattern data within the graphics controller. The complete pattern is stored in the frame buffer memory. Each frame buffer write from a raster operation unit to a frame buffer memory is preceded by an operation to read pattern data from non-displayed memory locations within the frame buffer memory. While such a system reduces the software driver development effort, the frequent pattern read operations from the frame buffer memory consume a significant percentage of the total memory bandwidth. The overall performance of the repeat pattern operations remains fairly low.
In another alternate solution, memory within the controller is provided which stores an entire pattern. This allows for display of information integrated within a pattern at virtually the same performance as the display of information not integrated in a pattern. While this approach provides very high performance, storing the complete pattern requires a significant hardware investment within the controller. However, the solution does have the advantage of minimizing software driver support as it only requires loading a pattern from unused portions of the frame buffer whenever the pattern changes. Alternately, the pattern may be stored elsewhere in the computer system, such as system memory or in the CPU.
Summa y nf ttiP Inve tion In accordance with the preferred embodiment of the present invention, a method and circuitry are provided for writing an image to a data frame buffer for display by a monitor. The image includes a repeated pattern. The present invention uses a repeated pattern cache which is not large enough to simultaneously contain an entire repeated pattern. When writing a pixel of the image, a horizontal pattern offset and a vertical pattern offset for a destination location of the pixel are determined. If a scan line for the repeated pattern which corresponds to the vertical pattern offset does not reside in the repeated pattern cache, the scan line for the repeated pattern which corresponds to the vertical pattern offset is fetched into the repeated pattern cache. When the scan line for the repeated pattern which corresponds to the vertical pattern offset resides in the repeated pattern cache, the pixel is accessed at a location in the repeated pattern cache at a location which corresponds to the horizontal pattern offset. The accessed pixel is written to the buffer. In the preferred embodiment of the present invention, the horizontal pattern offset is determined using the following equation: px = (x + a) modulo m where px is the horizontal pattern offset, x is the x-coordinate for the destination location, a is the horizontal display offset for the repeated pattern and m is the width of the repeated pattern. Also in the preferred embodiment of the present invention, the vertical pattern offset is determined using the following equation: py = (y + b) modulo n where py is the vertical pattern offset, y is the y-coordinate for the destination location, b is the vertical display offset for the repeated pattern and n is the height of the repeated pattern. The present invention offers superior performance over prior systems where no pattern support is offered or where each frame buffer write from a raster operation unit to a frame buffer memory is preceded by an operation to read pattern data from non-displayed memory locations within the frame buffer memory. However, the present invention does not have the high hardware investment required for systems in which memory within the controller is" provided which stores an entire pattern.
Brief Description of the Drawings
Figure 1 shows implementation of a display system in accordance with the prior art.
Figure 2 shows a cache which is used to store a portion of a pattern within the display system shown in Figure 1.
Figure 3 shows a block diagram of the cache shown in Figure 2 in accordance with the preferred embodiment of the present invention. Figure 4 shows an example of a pattern tile and an image which utilizes the pattern tile. Figure 5 shows a block diagram illustrating operation of the raster operation unit shown in Figure 2 in accordance with the preferred embodiment of the present invention.
Disclosure of the Invention
Figure 1 shows implementation of a display system in accordance with the prior art. A frame buffer memory 18 buffers information which describes a screen displayed on a monitor 19. In addition, in "off-screen" portions of frame buffer memory 18 not used for screen description, pattern information is stored. This information may be used by a pixel write pipeline when preparing description of the screen to be stored in frame buffer memory 18.
A CPU interface 11 is used to interface the display system with the central processor system (CPU). When the CPU changes the screen description information within frame buffer memory 18, software drivers running on the CPU forward new screen display information to the display system through CPU interface 11. This new screen display information typically includes pixel data directly written through to frame buffer memory 18. Alternately, more sophisticated systems may provide a co- processor to accelerate drawing operations. The number of bits per pixel and number of pixels per write varies dependent upon the particular configuration. From the new screen display information, a pixel write pipeline 13 writes new screen description into frame buffer memory 18. All interaction between pixel write pipeline 13 and frame buffer memory 18 is done through a memory interface 16.
The information within frame buffer memory may also be accessed by a pixel read pipeline 12 through memory interface 16. The information may be forwarded to the CPU through CPU interface 11. The screen display within frame buffer memory is formatted by a video display formatter 15. Video display formatter 15 receives the pixels from the screen display from frame buffer memory 18 through memory interface 16 as shown in Figure 1. Alternately, video display formatter may receive the pixels from the screen display directly from frame buffer memory 18 via an optional VRAM serial port (not shown). RAMDAC circuitry 17, which includes RAM and digital to analog converters, generates RGB analog signals which are used to drive monitor 19. In generating the RGB analog signals, RAMDAC circuitry 17 uses synchronization signals generated by a monitor timing generator 14.
Figure 2 shows circuitry within pixel write pipeline 13 used to modify the screen display within frame buffer memory 18 in accordance with the preferred embodiment of the present invention. A raster operation unit (ROP) 21 prepares information to be loaded into the screen display memory locations within frame buffer memory 18. New data from the CPU is received along a pixel write path 23. This information includes pixel data, e.g. color, which is forwarded to ROP 21. Pattern information is sent from pattern cache 22 to ROP 21 through pattern path 26. Through a data path 24 from frame buffer memory 18 via memory interface 16, ROP 21 and a pattern cache 22 are able to access data from memory locations within frame buffer memory 18. Generally, data path 24 is used to feed the pixel read pipeline.
Pixel address circuitry 25 keeps track for each pixel of the x/y coordinates where the new data is to be placed in the frame buffer memory. Pixel address circuitry 25 forwards the current pixel address to pattern cache 22 and memory interface 16.
Figure 5 is a block diagram which illustrates operation of ROP 21. Each pixel is represented by "B" bits of data. The number of bits per pixel (B) may equal, for example, 8, 16 or 24. For each pixel of data, ROP 21 receives B-bits of source information through pixel write path 23, B-bits of pattern information from pattern cache 22 through pattern path 26, and B-bits of destination information through data path 24. A B-bit output is produced on ROP output lines 27.
ROP 21 generates each bit of output using a corresponding bit from each of the source information, the pattern information and the destination information. An ROP code on ROP code input lines 28 is used to determine how the corresponding bit from each of the source information, the pattern information and the destination information are combined to generate each output bit. For example, for a first ROP code, the output bit may always be zero. For a second ROP code, the output may be generated by performing a logic NOR on the corresponding source information bit and the destination information bit. For a third ROP code, the output may be generated by performing a logic AND on the corresponding destination information bit and the inverted source information bit. And so on.
When there is no repeated pattern used for the current pixel memory location destination within frame buffer memory 18, the output generated by raster operation unit 21 does not utilize pattern information to generate the output. When a repeated pattern is used to generate a pixel value for the current pixel memory location destination within frame buffer memory 18, raster operation unit 21 uses pattern information from pattern cache 22.
Figure 3 is a logic block diagram illustrating functioning of pattern cache 22. Within pattern cache 22, a cache memory 31 stores a scan line of a pattern. For example, each pixel is described by "B" bits. The pattern stored in frame buffer memory 18 is "m" pixels wide and "n" pixels high.
Using the above notation, cache memory 31, in order to store a scan line of the pattern, needs to be able to store m times B bits. Pixels of the scan line within cache memory 31 are accessed from input 32 by the horizontal pattern offset "px". The horizontal pattern offset px represents the horizontal offset within the pattern. For example, for a scan line of a pattern which has eight pixels, the left most pixel will have a horizontal pattern offset px equal to 0. For a scan line of a pattern which has eight pixels, the right most pixel will have a horizontal pattern offset px of 7. And so on.
For example, the pixel coordinates for a current pixel to be displayed in a display screen is given by (x,y). When the pattern of dimensions m by n starts at coordinate (0,0), the horizontal pattern offset px for any coordinate (x,y) can be determined by the following Equation 1 below:
Equation 1 px = x modulo m The result of the operation "modulo" is equal to the remainder after a division.
More generally, where the pixel coordinates for a pixel in a display screen is given by (x,y), and the pattern of dimensions m by n has a logical origin at coordinate (a,b), the horizontal pattern offset px for any coordinate (x,y) can be determined by the following Equation 2 below: Equation 2 px = (x + a) modulo In order to determine whether a pixel obtained from cache memory 31 is valid, two comparisons need to be made. First, a pattern address received from the CPU and placed on input 39 is compared by a comparator 36 with a pattern address stored in a register 34. The pattern address stored in register 34 indicates the pattern address within frame buffer memory 18 from which originated the scan line currently residing in cache memory 31. If the comparison does not yield a match, a new scan line from the correct pattern must be fetched from frame buffer memory 18 to cache memory 31. In an alternate embodiment, the cache is invalidated whenever a pattern address is written.
Second, a current pattern scan line in a scan line register 35 is compared by a comparator 37 with the vertical pattern offset py of the coordinate to be displayed, which is placed on an input 40. When the pattern of dimensions m by n starts at coordinate (0,0), the vertical pattern offset py for any coordinate (x,y) can be determined by the following Equation 3 below:
Equation 3 py = y modulo n
More generally, where the pixel coordinates for a pixel in a display screen is given by (x,y), and the pattern of dimensions m by n has a logical origin at coordinate (a,b), the vertical pattern offset py for any coordinate (x,y) can be determined by the following Equation 4 below: Equation 4 py = (y + b) modulo n If both comparisons of pattern address and scan lines indicate there is a cache hit, a logic AND gate 38 generates a hit signal indicating the value on output 33 is valid. Otherwise, logic AND gate 38 generates a miss signal and the correct scan line is fetched from frame buffer memory 18 into cache memory 31. Alternately, the cache may be invalidated whenever the pattern address is written, thereby reducing hardware requirements for the system.
For example, Figure 4 shows an eight pixel by eight pixel repeated pattern 51 stored in frame buffer memory 18. In response to direction from the CPU, ROP 21 uses pattern 31 to draw the triangle shown in display portion 32. In the preferred embodiment, single pattern scan line (consisting of eight pixels) is loaded into pattern cache 22 from off screen memory locations within frame buffer memory 18. By way of contrast, a horizontal screen scan line is typically 1024-1280 pixels wide. Most graphics rendering algorithms are scan line oriented. This means that the graphics rendering algorithms tend to draw objects as a collection of horizontal bands, completing one band before moving on the next. Thus the triangle within display portion is drawn left to right, top to bottom. The top horizontal scan line of the triangle includes only a single pixel. The second horizontal scan line of the triangle includes two pixels. The third horizontal scan line of the triangle includes four pixels. The fourth horizontal scan line of the triangle includes five pixels. The fifth horizontal scan line of the triangle includes six pixels. And so on.
Pattern cache 22 reads in a single pattern scan line prior to drawing one line of the triangle. The "cached" pattern data can then be repeatedly used to draw pixels within that triangle line. Since the triangle is twenty- four scan lines high, pattern cache 22 has to reload a total of 24 times. If pattern cache 22 is reloaded one pixel at a time, this would result in 192 reads. If pattern cache 22 is reloaded four pixels at a time, this would result in 48 reads. As may be understood from the above discussion, when drawing the first scan line, the cache data is purged after only a single pixel is drawn at the top of the triangle. In the second scan line, two pixels are drawn before the cache data is purged. At the bottom of the triangle, thirty- one pixels are drawn before the cache data is purged. In addition, seven of the eight pixels within the cache are used four times. The eight pixel is used three times. As is clear from this discussion, performance of the preferred embodiment of the present invention improves as the width of the patterned area increases.
Operation of the preferred embodiment of the present invention offers superior performance over prior art methods of pattern support. Specifically, where no pattern support is offered in hardware, software running on the CPU must look up the pattern data and draw the pattern using the data. This tends to be very slow. Where there is pattern support but no pattern storage, a piece of the pattern must be read from off screen memory in the frame buffer memory before each pixel or set of pixels can be written back to the screen display in the frame buffer. In the triangle example discussed above, there are approximately 384 pixels. Thus a system that accessed pixels one at a time would perform 384 read/write pairs to draw the patterned triangle. If the system could read and write four pixels at a time, a total of 115 read/write pairs would still be required, when alignment restrictions are included. For a system which stored the entire pattern, the pattern would first be written to the graphics controller. Then the triangle can be drawn, resulting in approximately 384 writes if one pixel is written at a time or about 115 writes if four pixels are written at time. This yields superior performance to the preferred embodiment of the present invention, however, as described, such a system requires a significant amount of hardware for implementation.
The description of the example above utilized an eight pixel by eight pixel pattern. As will be understood by persons of ordinary skill in the art, the present invention embodies systems with patterns of any size. However, it is necessary is to insure that cache memory 31 is sufficiently large to hold a scan line of the pattern. Also, the present invention includes embodiments a cache size that would include, for example, two or more (but not all) scan lines of the pattern.
The foregoing discussion discloses and describes merely exemplary methods and embodiments of the present invention. As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.

Claims

ClaimsWe Claim:
1. A method for writing to a buffer (18) for display by a monitor (19) an image which includes a repeated pattern, the method using a repeated pattern cache (22) which is not large enough to simultaneously contain an entire repeated pattern, the method comprising the steps of:
(a) when writing a pixel of the image, performing the following substeps:
(a.l) determining a horizontal pattern offset and a vertical pattern offset for a destination location of the pixel;
(a.2) if a scan line for the repeated pattern which corresponds to the vertical pattern offset does not reside in the repeated pattern cache (22), fetching into the repeated pattern cache (22) the scan line for the repeated pattern which corresponds to the vertical pattern offset; and, (a.3) accessing the pixel from the repeated pattern cache (22) at a location which corresponds to the horizontal pattern offset and writing the pixel to the buffer (18).
2. A method as in claim 1 wherein in step (a.l) the horizontal pattern offset is determined using the following equation: px = (x + a) modulo m where px is the horizontal pattern offset, x is an x-coordinate for the destination location, a is a horizontal display offset for the repeated pattern and m is a width of the repeated pattern.
3. A method as in claim 1 wherein in step (a.l) the vertical pattern offset is determined using the following equation: py = (y + b) modulo n where py is the vertical pattern offset, y is a y-coordinate for the destination location, b is a vertical display offset for the repeated pattern and n is a height of the repeated pattern.
4. A method as in claim 1 additionally comprising the following step performed before step (a):
(b) storing the repeated pattern in an off screen portion of the buffer
(18).
5. Circuitry for writing to a buffer (18) for display by a monitor (19) an image which includes a repeated pattern, the circuitry comprising: buffer writing circuitry (21) which writes the image into the buffer (18); and, a repeated pattern cache (22), accessed by the buffer writing circuitry (21), the repeated pattern cache (22) storing at least a scan line of the repeated pattern but the repeated pattern cache (22) not being large enough to simultaneously contain the entire repeated pattern.
6. Circuitry as in claim 5 wherein the buffer (18) contains the entire repeated pattern and the repeated pattern cache (22) accesses scan Hnes of the repeated pattern from the buffer (18) when there is a repeated pattern cache miss.
7. Circuitry as in claim 5 the repeated pattern cache (22) including: memory (31) which is accessed using a horizontal pattern offset for a destination location of a pixel; and validity checking circuitry (36,37,38) which determines whether a scan line for the repeated pattern which corresponds to the vertical pattern offset resides in the repeated pattern cache (22).
8. Circuitry as in claim 7 wherein the horizontal pattern offset is determined using the following equation: px = (x + a) modulo m where px is the horizontal pattern offset, x is an x-coordinate for the destination location, a is a horizontal display offset for the repeated pattern and m is a width of the repeated pattern.
9. Circuitry as in claim 7 wherein the vertical pattern offset is determined using the following equation: py = (y + b) modulo n where py is the vertical pattern offset, y is a y-coordinate for the destination location, b is a vertical display offset for the repeated pattern and n is a height of the repeated pattern.
10. Circuitry as in claim 5 wherein the buffer writing circuitry (21) comprises a raster operation unit.
PCT/US1995/000613 1994-03-02 1995-01-17 Method and apparatus for simultaneously minimizing storage and maximizing total memory bandwidth for a repeating pattern WO1995024032A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/204,828 1994-03-02
US08/204,828 US5454076A (en) 1994-03-02 1994-03-02 Method and apparatus for simultaneously minimizing storage and maximizing total memory bandwidth for a repeating pattern

Publications (1)

Publication Number Publication Date
WO1995024032A1 true WO1995024032A1 (en) 1995-09-08

Family

ID=22759613

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1995/000613 WO1995024032A1 (en) 1994-03-02 1995-01-17 Method and apparatus for simultaneously minimizing storage and maximizing total memory bandwidth for a repeating pattern

Country Status (2)

Country Link
US (1) US5454076A (en)
WO (1) WO1995024032A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997022950A1 (en) * 1995-12-19 1997-06-26 Dataline Technology Ltd. Apparatus for filling an image

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5668941A (en) * 1995-06-22 1997-09-16 Cirrus Logic, Inc. Optimum implementation of X-Y clipping on pixel boundary
US6321293B1 (en) * 1995-11-14 2001-11-20 Networks Associates, Inc. Method for caching virtual memory paging and disk input/output requests
US5761720A (en) * 1996-03-15 1998-06-02 Rendition, Inc. Pixel engine pipeline processor data caching mechanism
US6067068A (en) * 1996-04-16 2000-05-23 Canon Business Machines, Inc. Scrollable display window
US6483515B1 (en) * 1999-04-09 2002-11-19 Sun Microsystems, Inc. Method and apparatus for displaying data patterns in information systems
US6822655B1 (en) * 2000-07-20 2004-11-23 International Business Machines Corporation Method and apparatus for caching variable size patterns into fixed size slots
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6784893B2 (en) * 2002-01-22 2004-08-31 International Business Machines Corporation Raster operation unit
US20080165200A1 (en) * 2007-01-05 2008-07-10 Raymond Chow Hardware Background Tile Generation
US20090293346A1 (en) * 2008-05-28 2009-12-03 Birdwell Jr Joseph F Integrated reactor and centrifugal separator and uses thereof
WO2013054533A1 (en) * 2011-10-14 2013-04-18 パナソニック株式会社 Image display device
AU2012232989A1 (en) * 2012-09-28 2014-04-17 Canon Kabushiki Kaisha A method of rendering an overlapping region
US11954770B2 (en) 2021-11-12 2024-04-09 Rockwell Collins, Inc. System and method for recreating graphical image using character recognition to reduce storage space
US11915389B2 (en) 2021-11-12 2024-02-27 Rockwell Collins, Inc. System and method for recreating image with repeating patterns of graphical image file to reduce storage space
US11748923B2 (en) 2021-11-12 2023-09-05 Rockwell Collins, Inc. System and method for providing more readable font characters in size adjusting avionics charts
US11887222B2 (en) 2021-11-12 2024-01-30 Rockwell Collins, Inc. Conversion of filled areas to run length encoded vectors
US11842429B2 (en) 2021-11-12 2023-12-12 Rockwell Collins, Inc. System and method for machine code subroutine creation and execution with indeterminate addresses

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0145821A1 (en) * 1983-12-22 1985-06-26 International Business Machines Corporation Area filling hardware for a colour graphics frame buffer
US4646078A (en) * 1984-09-06 1987-02-24 Tektronix, Inc. Graphics display rapid pattern fill using undisplayed frame buffer memory
EP0354591A2 (en) * 1988-08-12 1990-02-14 Nec Corporation Painting-out pattern reference system
US5029105A (en) * 1987-08-18 1991-07-02 Hewlett-Packard Programmable pipeline for formatting RGB pixel data into fields of selected size
EP0536414A1 (en) * 1991-04-15 1993-04-14 Oki Electric Industry Company, Limited Apparatus for processing image

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5131080A (en) * 1987-08-18 1992-07-14 Hewlett-Packard Company Graphics frame buffer with RGB pixel cache

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0145821A1 (en) * 1983-12-22 1985-06-26 International Business Machines Corporation Area filling hardware for a colour graphics frame buffer
US4646078A (en) * 1984-09-06 1987-02-24 Tektronix, Inc. Graphics display rapid pattern fill using undisplayed frame buffer memory
US5029105A (en) * 1987-08-18 1991-07-02 Hewlett-Packard Programmable pipeline for formatting RGB pixel data into fields of selected size
EP0354591A2 (en) * 1988-08-12 1990-02-14 Nec Corporation Painting-out pattern reference system
EP0536414A1 (en) * 1991-04-15 1993-04-14 Oki Electric Industry Company, Limited Apparatus for processing image

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997022950A1 (en) * 1995-12-19 1997-06-26 Dataline Technology Ltd. Apparatus for filling an image

Also Published As

Publication number Publication date
US5454076A (en) 1995-09-26

Similar Documents

Publication Publication Date Title
US5454076A (en) Method and apparatus for simultaneously minimizing storage and maximizing total memory bandwidth for a repeating pattern
US7262776B1 (en) Incremental updating of animated displays using copy-on-write semantics
KR100346817B1 (en) Interface Controller for Framebuffered Random Access Memory Devices
US4491836A (en) Graphics display system and method including two-dimensional cache
US4496944A (en) Graphics display system and method including associative addressing
EP0201210B1 (en) Video display system
JPH09245179A (en) Computer graphic device
EP0704824B1 (en) Z-Buffer tag memory organization
KR100328424B1 (en) Method and apparatus for constructing a frame buffer with a fast copy means
US6741256B2 (en) Predictive optimizer for DRAM memory
JPH07104960B2 (en) Graphics display system and hidden surface erasing method
EP0525986B1 (en) Apparatus for fast copying between frame buffers in a double buffered output display system
JPS5912176B2 (en) Cursor circuit for digital television display
EP0519694B1 (en) Method for allocating off-screen display memory
US5790137A (en) System and method for using a frame buffer in cached mode to increase bus utilization during graphics operations
US20020171657A1 (en) External dirty tag bits for 3D-RAM SRAM
JPH0687189B2 (en) Display device
US5486844A (en) Method and apparatus for superimposing displayed images
JP3313527B2 (en) Graphics controller and pixel data transfer system
JPH07234773A (en) Display controller
JPH0361199B2 (en)
JPS61290486A (en) Display controller
JPS6362750B2 (en)
JPS61200580A (en) Bit map display control system
EP0201267A2 (en) Row processor for bit-map display

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP KR

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase