Abstract:
Graphics display systems include a graphics data compression circuit having a data encoder therein. The data encoder is configured to compress second color graphics data to be rendered as a second pixel of a display into a data string containing a data field and a header field. The header field contains at least one repetition flag that identifies a degree to which components of the second color graphics data match corresponding components of first color graphics data to be rendered as a first pixel of the display.

Description:
REFERENCE TO PRIORITY APPLICATION 
   This application claims priority to Korean Patent Application No. 2004-38711, filed May 29, 2004, the disclosure of which is hereby incorporated herein by reference. 
   FIELD OF THE INVENTION 
   The present invention relates to display systems and display methods and, more particularly, to systems that utilize data compression/decompression techniques when rendering objects on a display. 
   BACKGROUND OF THE INVENTION 
   The processing and display of large quantities of graphics data in real time typically requires the use of high bandwidth processors, buses and storage elements (e.g., memories). For example, the rendering of graphics data on conventional displays often requires 32 bits of data per pixel to achieve high fidelity images with accurate color. As the sizes of displays and the number of pixels rendered on displays increases, there is a corresponding increase in the bandwidth requirements of components within display systems that perform graphics rendering operations. To reduce these bandwidth requirements, techniques have been developed to reduce the amount of data required to render images on a display for those instances where pixel color and/or pixel intensity values of adjacent pixels is equivalent. Some of the techniques for compressing data are described in U.S. Pat. No. 6,825,847 to Molnar et al., U.S. Pat. No. 6,750,875 to Keely et al. and U.S. Pat. No. 6,366,289 to Johns. 
   SUMMARY OF THE INVENTION 
   Graphics display systems with data compression include graphics data compression circuits. These circuits include a data encoder. This data encoder is configured to compress second color graphics data to be rendered as a second pixel of a display into a data string containing a data field and a header field. The header field contains at least one repetition flag. This repetition flag identifies a degree to which components of the second color graphics data match corresponding components of first color graphics data to be rendered as a first pixel of the display. The data encoder is further configured to concatenate compressed data strings having different length header and data fields into a fixed-length data string. The data encoder may also be configured to compress third color graphics data to be rendered as a third pixel of the display into a data string containing an M-bit header field and a zero-length data field. The compression technique applies for those cases where the third pixel and the second pixel are immediately adjacent pixels and the third color graphics data matches the second color graphics data exactly. 
   The graphics data compression circuit may also include an image component comparator. This comparator is configured to generate at least one color-coded repetition flag. This flag indicates a degree to which a color component of the second color graphics data matches a corresponding color component of the first color graphics data. A decoder may also be provided. The decoder is configured to decode the fixed-length data string into at least first multi-colored graphics data associated with one pixel of the display and second multi-colored graphics data associated with another pixel of the display. 
   According to additional embodiments of the invention, a data encoder may be provided within a graphics data compression circuit. This encoder is configured to compress second color graphics data to be rendered as a second pixel of a display into a data string containing a data field and a header field. The header field contains a repetition flag that identifies whether or not all components of the second color graphics data match corresponding components of first color graphics data to be rendered as a first pixel of the display. 
   Still further embodiments of the invention include methods of generating graphics data to be rendered on a display. These methods include encoding second multi-colored graphics data associated with a second pixel of the display into a compressed data string containing a data field and a header field. The header field contains at least one repetition flag that identifies a degree to which components of the second multi-colored graphics data match corresponding components of first multi-colored graphics data associated with a first pixel of the display that is immediately adjacent the second pixel. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a block diagram of a graphics display system according to embodiments of the present invention. 
       FIG. 2  is a flow diagram that illustrates operations to compress graphics display data according to embodiments of the present invention. 
       FIG. 3  is a block diagram that illustrates components of the graphics display system of  FIG. 1  that relate to data compression. 
       FIG. 4  is a diagram that illustrates placement of a plurality of compressed graphics data strings of various lengths within a fixed length data vector, according to embodiments of the present invention. 
       FIG. 5  illustrates an allocation of compressed graphics data strings within the compressed image storage device of  FIG. 1 . 
       FIG. 6  is a flow diagram that illustrates operations to decompress graphics display data according to embodiments of the present invention. 
       FIG. 7  is a block diagram that illustrates components of the graphics display system of  FIG. 1  that relate to data decompression. 
   

   DESCRIPTION OF THE PREFERRED EMBODIMENTS 
   The present invention now will be described more fully herein with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as being limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like reference numerals refer to like elements throughout. 
   Referring now to  FIG. 1 , a graphics display system according to some embodiments of the present invention includes a data storage device  100 , a data bus  110 , a data compression/decompression device  120 , and a display  130 . The data storage device  100  is illustrated as including an original image storage device  102  and a compressed image storage device  104 . This original image storage device  102  is configured to store graphics data (e.g., pixel display data) in an uncompressed format and the compressed image storage device  104  is configured to store graphics data in a compressed format. The data compression/decompression device  120  is illustrated as including a data compression device  122  and a data decompression device  124 . This data compression device  122  may operate as part of a graphics accelerator and the data decompression device  124  may operate as part of a graphics data mixer. 
   As illustrated, the data bus  110  is configured to communicate original graphics data GD_O from the original image storage device  102  to an input of the data compression device  122  and return compressed graphics data GD_C from the data compression device  122  to the compressed image storage device  104 . The data bus  110  is also configured to pass compressed graphics data GD_C from the compressed image storage device  104  to the data decompression device  124  during operations to display the graphics data on the display  130 . The data decompression device  124  generates a version of the original graphics data GD_O from the compressed graphics data GD_C. This version of the original graphics data GD_O is then passed to the display  130  for reproduction on a screen of the display. 
   Referring now to  FIGS. 2–3  and TABLE 1, operations and devices for compressing graphics data according to some embodiments of the present invention will be described. These operations exploit certain characteristics of graphics display data that derive from the similarities in color and transparency (or opaqueness) intensity of adjacent pixels on a display screen. In particular,  FIGS. 2–3  illustrate operations to transfer original graphics data GD_O (e.g., 32 bpp (bits/pixel)) from the original image storage device  102  to an image component divider  302  within the data compression device  122 , Block S 202 . The image component divider  302  separates the data associated with each pixel into red (R), green (G), blue (B) and alpha (α) components, which are shown as 8-bit pixel data components, Block S 204 . As will be understood by those skilled in the art, the alpha components relate to a degree of transparency (or opaqueness) associated with a pixel. The separated components are passed to an image component comparator  304 , Block S 206 , which compares the separate red, green, blue and alpha components for a current pixel (i.e., current 8-bit R, G, B and α values generated by divider  302 ) with the red, green, blue and alpha components of a prior pixel (i.e., immediately preceded 8-bit R, G, B and α values generated by the divider  302 ), which will ultimately be displayed on a display screen in a location adjacent the current pixel. 
   As illustrated, the image component comparator  304  generates four 9-bit vectors in response to each grouping of divided pixel data generated by the divider  302 . The four 9-bit vectors include: (R, R_r), (G, G_r), (B, B_r) and (α, α_r). The single bit repetition flags R_r, G_r, B_r and α_r within these 9-bit vectors identify whether a component of the current pixel data matches a corresponding component in the prior pixel data and the 8-bit values R, G, B and α represent the current pixel data components. Thus, if the repetition flag values R_r, G_r, B_r and α_r equal 1,0,0 and 1, respectively, where “1” indicates a match, then the R and α pixel data values for the current pixel match the corresponding values of the prior pixel. 
   The four 9-bit vectors (R, R_r), (G, G_r), (B, B_r) and (α, α_r) are provided to a bitwise encoder  306 , which is configured to perform the encoding operations illustrated by Blocks S 208 –S 220  of  FIG. 2  and TABLE 1. In particular, at Block S 208 , a check is made to determine whether all the color components for the current pixel match the corresponding color components of the prior pixel. This check involves determining whether all repetition flags have been set (i.e., (R_r,G_r,B_r,α_r)=(1,1,1,1)). If the answer to this check is “yes”, then control is passed to Block S 210  and the bitwise encoder generates a highly compressed 3-bit vector as {S=0, α=0, R=1}, where the values S, α and R each represent a repetition flag. If the answer to this check is “no”, then control is passed to Block S 212 , where another check is performed to determine whether any of the color components for the current pixel match corresponding color components of the prior pixel. This check involves determining whether any of the repetition flags have been set (i.e., whether any of R_r, G_r, B_r or α_r equals 1). If the answer to this check is “no”, then control is passed to Block S 220  and the bitwise encoder  306  generates a 33-bit vector as {S=1, R_x8, G_x8, B_x8, α_x8} where “x8” designates an 8-bit data string. If the answer to the check at Block S 212  is “yes”, then control is passed to Block S 214 . At Block S 214 , a check is made to determine whether only the α data component of the current pixel is equivalent to the α data component of the prior pixel (i.e., R_r, G_r and B_r equal 0 and α_r equals 1). If the answer to this check is “yes”, then control is passed to Block S 216  and the bitwise encoder  306  generates a somewhat compressed 26-bit vector as {S=0, α=1, R_x8, G_x8, B_x8}. If the answer to this check at Block S 214  is “no”, then control is passed to Block S 218  and the bitwise encoder  306  generates either a 15-bit, 23-bit or 31-bit vector depending on a degree of similarity in color components. As illustrated by Block S 218  and TABLE 1, each of these vectors includes a 4-bit designator γ(x,x,x,x), which uniquely specifies the degree of match between the color components of a current pixel and the color components of the prior pixel. Although not shown in  FIGS. 2–3 , a 7-bit line finished code (LFF) may also be generated by the bitwise encoder  306 . As illustrated by TABLE 1, this 7-bit code, which is represented as {S=0, α=0, R=0, γ(1,1,1,1)}, indicates that the last pixel associated with a line on the display  130  has just been processed and a new line with new data is to follow. 
   
     
       
             
           
             
             
             
           
             
             
             
           
         
             
               TABLE 1 
             
           
           
             
                 
             
             
               ENCODED GRAPHICS DATA 
             
           
        
         
             
               STRING LENGTH 
               COMPRESSED DATA STRING 
                 
             
             
               (BITS) 
               (HEADER &amp; DATA FIELDS) 
               DESCRIPTION 
             
             
                 
             
           
        
         
             
               3 
               {S(0), α(0), R(1)} 
               CURRENT PIXEL = PRIOR PIXEL 
             
             
               15 
               {S(0), α(0), R(0), γ (0111), R_x8} 
               RED COLOR CHANGE 
             
             
               15 
               {S(0), α(0), R(0), γ (1011), G_x8} 
               GREEN COLOR CHANGE 
             
             
               15 
               {S(0), α(0), R(0), γ (1101), B_x8} 
               BLUE COLOR CHANGE 
             
             
               15 
               {S(0), α(0), R(0), γ (1110), α_x8} 
               ALPHA CHANGE 
             
             
               23 
               {S(0), α(0), R(0), γ (0011), R_x8, G_x8} 
               RED &amp; GREEN CHANGE 
             
             
               23 
               {S(0), α(0), R(0), γ (0101), R_x8, B_x8} 
               RED &amp; BLUE CHANGE 
             
             
               23 
               {S(0), α(0), R(0), γ (0110), R_x8, α_x8} 
               RED &amp; ALPHA CHANGE 
             
             
               23 
               {S(0), α(0), R(0), γ (1001), G_x8, B_x8} 
               GREEN &amp; BLUE CHANGE 
             
             
               23 
               {S(0), α(0), R(0), γ (1010), G_x8, α_x8} 
               GREEN &amp; ALPHA CHANGE 
             
             
               23 
               {S(0), α(0), R(0), γ (1100), B_x8, α_x8} 
               BLUE &amp; ALPHA CHANGE 
             
             
               26 
               {S(0), α(1), R_x8, G_x8, B_x8} 
               RED, GREEN &amp; BLUE CHANGE 
             
             
               31 
               {S(0), α(0), R(0), γ (1000), G_x8, B_x8, α_x8} 
               GREEN, BLUE &amp; ALPHA CHANGE 
             
             
               31 
               {S(0), α(0), R(0), γ (0100), R_x8, B_x8, α_x8} 
               RED, BLUE &amp; ALPHA CHANGE 
             
             
               31 
               {S(0), α(0), R(0), γ (0010), R_x8, G_x8, α_x8} 
               RED, GREEN &amp; ALPHA CHANGE 
             
             
               7 
               {S(0), α(0), R(0), γ (1111)} 
               LINE FINISHED (LFF) 
             
             
               33 
               {S(1), R_x8, G_x8, B_x8, α_x8} 
               RED, GREEN, BLUE &amp; ALPHA CHANGE 
             
             
                 
             
           
        
       
     
   
   As illustrated by  FIGS. 3–4 , a consecutive sequence of the encoded display data vectors generated by the bitwise encoder  306  may be combined within 64-bit data strings and passed via the data bus  110  to the compressed image storage device  104 . As illustrated by TABLE 1, these encoded vectors may have bit lengths equal to 3, 15, 23, 26, 31, 33 or 7 (to indicate a line finished condition). A plurality of these encoded vectors are identified by the labels “a”, “b”, “c” and “d” in  FIG. 4 . In particular, vectors “a”, “b” and a first portion of vector “c” may be concatenated within a single 64-bit data string and a second portion of the vector “c” and a vector “d” may be concatenated within another 64-bit data string. Moreover, if vector “d” represents a compressed display data vector for the last pixel within a line (e.g., rightmost pixel on line in a display), then a 7-bit line finished code (LFF) may be concatentated after the vector “d”, with the remaining portion of the 64-bit data string being a null set of data (i.e., data that is ignored by the data decompression device  124  when the compressed graphics data (CG_D) is read from the compressed image storage device  104 ). 
     FIG. 5  schematically illustrates how uncompressed graphics data within an original image storage device  102  may be converted into a smaller quantity of compressed graphics data within a compressed image storage device  104 . A flag register  502  associated with the compressed image storage device  104  may also be provided to indicate whether data within a storage line is compressed or not compressed (e.g, flag=1 (compressed), flag=0 (not compressed)). 
   Referring now to  FIGS. 6–7 , operations to display graphics data on the display device  130  include reading compressed data from the compressed image storage device  104  to a bitwise decoder  702  within the decompression device  124 , Block S 602 . This bitwise decoder  702  evaluates each of the headers within a 64-bit data string to identify whether any of the header values S, R or α equal 1. If the header value S equals 1, Block S 604 , then the next 32 bits of data following this header value within the data string represent new red (R), green (G), blue (B) and alpha (α) values for a corresponding pixel, Block S 612 . These 32 bits of data are passed from the bitwise decoder  702  to an image information decompressor  704  as four 8-bit vectors. In addition, a 4-bit designator γ(x) is ignored by the image information decompressor  704 . Alternatively, if the header value R=1, Block S 606 , then the bitwise decoder  702  will pass a copy of the pixel data for the prior pixel as the pixel data for the current pixel to the image information decompressor  704 , Block S 608 . In contrast, if the header value α=1, Block S 616 , then the bitwise decoder  702  will pass new red, green and blue data for the current pixel and a copy of the alpha data for the prior pixel, which equals the alpha data for the current pixel, to the decompressor  704 , Block S 614 . Finally, if none of the header values S, R or α have been set, then the bitwise decoder  702  evaluates the 4-bit designator γ(x) to determine which data values for the current pixel represent new values and which represent copies from the prior pixel, Block S 610 . Alternatively, if none of the header values S, R or α have been set and the 4-bit designator γ(x)=(1,1,1,1), then the decompressor  704  recognizes a line finished condition and the beginning of a new line on the display device  130 . 
   In the drawings and specification, there have been disclosed typical preferred embodiments of the invention and, although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation, the scope of the invention being set forth in the following claims.