This invention relates generally to computer graphics. More specifically, the invention relates to techniques for efficiently compressing frame buffer contents or other image data.
It is often beneficial to compress frame buffer contents or other image data. For example, in a networked environment in which frame buffer contents must be transmitted over a network from one computing device to another, compression of the frame buffer contents prior to transmission conserves network bandwidth. Compression of image data also helps to conserve the capacity of storage devices used to store the data.
As it happens, the efficiency of compression techniques varies depending on the types of image data to which they are applied. In addition, images differ with regard to the quality of compression that is required to process them in an acceptable manner. Consequently, it is known to pre-process a document prior to compressing it such that the document is decomposed into a number of regions. The contents of the image data contained within the regions are then analyzed so that the regions may be classified according to these contents. Once the regions have been so classified, different compression techniques may be applied to the different regions as appropriate. This technique enables greater efficiency to be achieved when compressing the document than could be achieved by using a single compression technique for the entire document. One decomposition and content-based classification scheme that has proved useful in this context is described in U.S. Pat. No. 6,744,919, titled “Classification of Blocks for Compression Based on Numbers of Distinct Colors” (hereinafter “the '919 patent”).
One of the significant challenges in applying any, of the decomposition and classification techniques of the prior art, however, is their computational complexity. Because the techniques of the prior art consume significant amounts of memory and a significant number of processor cycles, they impact the performance of and increase the cost of the systems that utilize them.
In one aspect, a system according to the invention conserves host system resources by compressing image data based on the type of graphics command that was used to generate or modify the image data. As an image is being rendered, a list of modified image regions is maintained. For each modified image region, metadata are associated with the region to identify the type of graphics command that was used to produce the modification. Per-region choices of compression algorithms can then be made responsive to the metadata. For a given region, if the associated metadata indicates that the graphics command type used to modify the region satisfies predetermined criteria, then an efficient compression algorithm maybe chosen for the region without analyzing the contents of the image data contained within the region.
Numerous outcomes may result from block 110. Certain image data content may be compressed most effectively using a lossy low-quality compression algorithm. If the region being processed falls within such a category, then such a low-quality algorithm may be used to compress the region as indicated in block 112. Certain other image data content may be compressed most effectively using a lossy high-quality compression algorithm. If that is the case for the region being processed, then the region may be compressed using such a high-quality algorithm as indicated in block 114. Finally, other image data content can be most effectively compressed using a lossless compression algorithm such as, for example, a run-length style encoding scheme. If the region being processed falls in the latter category, then it may be compressed using a lossless algorithm as indicated in block 116.
As was discussed previously, it is computationally expensive to choose a compression algorithm based on the content of an image. Thus, one of the benefits of the inventive technique is that step 110 may be avoided if it is determined in step 106 that the graphics command type for the region being processed satisfies at least one predetermined criterion. Such a predetermined criterion might include, for example, whether the graphics command was a “fill,” “text,” “line” or “bitmap” type command, and whether the command involved not more than two colors. Other criteria may also be included, such as whether the graphics command was an “arc,” “point” or “polygon” type command. Typically, regions rendered using these types of commands—especially those involving two or fewer colors—may be compressed using any of various run-length style compression algorithms such as classic run-length encoding, rise-run-length encoding or hextile encoding. Thus, if the determination made in step 106 is affirmative, then step 110 may be bypassed, and such a run-length-style compression algorithm maybe chosen to compress the region.
Embodiments of the invention may be constructed for a variety of computing platforms and a variety of deployment configurations.
In a first class of preferred embodiments, graphics subsystem 214 issues the graphics command stream not only to graphics driver 216, but also to an optional mirror driver 220. Mirror driver 220 does not necessarily control any graphics hardware, but may accumulate metadata about the command stream in a manner to be further detail below. It is believed that this class of embodiments will work well in a GDI environment. In such a case, the role of graphics subsystem 214 may be played by the operating system of host 204.
In a second class of preferred embodiments, graphics subsystem 214 may take the form of a modified X server or a modified OGL implementation. The modifications would include command wrappers that intercept graphics commands in the command stream. For example, if application 212 issued an XDrawLines command, an XDrawLines command wrapper would be invoked. The XDrawLines command wrapper would accumulate metadata about the command in an optional shared memory 222 in a manner to be further described below, and then would invoke the driver-level function or functions necessary to implement the originally-issued command.
While the invention has been described in detail with reference to preferred embodiments thereof, the described embodiments have been presented by way of example and not by way of limitation. It will be understood by those skilled in the art that various changes may be made in the form and details of the described embodiments without deviating from the spirit and scope of the invention as defined by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
6031939 | Gilbert et al. | Feb 2000 | A |
6122403 | Rhoads | Sep 2000 | A |
6278791 | Honsinger et al. | Aug 2001 | B1 |
6496601 | Migdal et al. | Dec 2002 | B1 |
6744919 | Said | Jun 2004 | B2 |
6897977 | Bright | May 2005 | B1 |
7427988 | Vienneau et al. | Sep 2008 | B2 |
20020154140 | Tazaki | Oct 2002 | A1 |
20020157105 | Vienneau et al. | Oct 2002 | A1 |
20030017846 | Estevez et al. | Jan 2003 | A1 |
20040001106 | Deutscher et al. | Jan 2004 | A1 |
20040044894 | Lofgren et al. | Mar 2004 | A1 |
20040091162 | Donahue et al. | May 2004 | A1 |
20040091243 | Theriault et al. | May 2004 | A1 |
20050289133 | Arrouye et al. | Dec 2005 | A1 |
20060041840 | Blair et al. | Feb 2006 | A1 |
20060044599 | Lipowitz et al. | Mar 2006 | A1 |
20060107056 | Bhatt et al. | May 2006 | A1 |
20060238547 | Spencer et al. | Oct 2006 | A1 |
20070168413 | Barletta et al. | Jul 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20060093230 A1 | May 2006 | US |