IP Library › Granted Patent US 8,670,613
Granted Patent B2
US 8,670,613 · App. 12/872,998 · Granted Mar 11, 2014

Lossless frame buffer color compression

Inventors: David K. McAllister (Holladay, UT); Alexandre Joly (Sunnyvale, CA); Peter Tong (Cupertino, CA)
Assignee: NVIDIA Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,670,613
App. No.
12/872,998
Granted
Mar 11, 2014
Kind
B2
Abstract

One embodiment of the present invention sets forth a technique for lossless compression of color data. Color data for a packet including multiple sub-pixel samples is compressed using a predictor map that is selected based on the sampling format specified for the graphics surface storing the color data. The predictor map defines one of the samples as an anchor that is represented exactly and a transform indicating which neighboring samples are used to compute difference samples for the other samples in the packet. The difference samples are truncated and tested to determine if the difference samples can fit into one or more compressed data formats, i.e., if the color data can be compressed without loss. When compression can be performed without loss, the transformed packet is output. Otherwise, the original packet is output.

Claims (56)

1. A method for compressing color data, the method comprising:

receiving the color data for a packet including multiple samples;

selecting a predictor map based on a sampling mode of a graphics surface, wherein the predictor map identifies one of the multiple samples in the packet as an anchor that is represented exactly and a neighboring sample for each one of the other samples in the packet;

calculating per-channel differences between each neighboring sample and the other samples in the packet to produce difference samples;

truncating the difference samples to produce truncated difference samples;

encoding the truncated difference samples and the anchor in a compressed color data format to produce output color data for the packet; and

storing the output color data in a portion of memory allocated to the graphics surface.

2. The method of claim 1 , wherein the step of encoding comprises:

selecting the compressed color data format as the output color data when the truncated difference samples fit within the compressed color data format; and

selecting the color data as the output color data when the truncated difference samples do not fit within the compressed color data format.

3. The method of claim 1 , wherein the step of encoding comprises:

determining that the truncated difference samples fit within a first compressed color data format of multiple compressed color data formats; and

selecting the first compressed color data format as the compressed color data format.

4. The method of claim 1 , wherein the color data includes alpha values, and further comprising selecting the compressed color data format based on a number of bits needed to encode the alpha values.

5. The method of claim 1 , wherein the color data includes alpha values and the output color data format includes only a single bit that encodes the alpha values when all of the alpha values are either zero or one.

6. The method of claim 1 , wherein the color data includes alpha values and the output color data format includes only a single output alpha value that encodes the alpha values when all of the alpha values are equal.

7. The method of claim 1 , wherein the anchor is a sample that is not positioned along a perimeter of a footprint of the packet in screen space.

8. The method of claim 1 , wherein the neighbor of each sample of the other samples in the packet is closer to the anchor than the sample.

9. The method of claim 1 , further comprising, prior to the calculating, decorrelating the color channels for each sample in the packet.

10. The method of claim 1 , wherein channels of the multiple samples are represented in a signed 16 bit floating point format.

11. The method of claim 1 , wherein channels of the multiple samples are represented in an unsigned 16 bit floating point format that includes a bias.

12. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to compress color data, by performing the steps of:

receiving the color data for a packet including multiple samples;

selecting a predictor map based on a sampling mode of a graphics surface, wherein the predictor map identifies one of the multiple samples in the packet as an anchor that is represented exactly and a neighboring sample for each one of the other samples in the packet;

calculating per-channel differences between each neighboring sample and the other samples in the packet to produce difference samples;

truncating the difference samples to produce truncated difference samples;

encoding the truncated difference samples and the anchor in a compressed color data format to produce output color data for the packet; and

storing the output color data in a portion of memory allocated to the graphics surface.

13. A system for compressing color data, the system comprising:

a processor configured to:

receive the color data for a packet including multiple samples;

select a predictor map based on a sampling mode of a graphics surface,

wherein the predictor map identifies one of the multiple samples in the packet as an anchor that is represented exactly and a neighboring sample for each one of the other samples in the packet;

calculate per-channel differences between each neighboring sample and the other samples in the packet to produce difference samples;

truncate the difference samples to produce truncated difference samples;

encode the truncated difference samples and the anchor in a compressed color data format to produce output color data for the packet; and

store the output color data in a portion of a frame buffer allocated to the graphics surface.

14. The system of claim 13 , further comprising a non-transitory memory storing instructions that, when executed by the processor, configures the processor to:

receive the color data;

select the predictor map;

calculate the per-channel differences;

truncate the difference samples;

encode the truncated difference samples; and

store the output color data.

15. The system of claim 13 , wherein the processor is further configured to:

select the compressed color data format as the output color data when the truncated difference samples fit within the compressed color data format; and

select the color data as the output color data when the truncated difference samples do not fit within the compressed color data format.

16. The system of claim 13 , wherein the processor is further configured to:

determine that the truncated difference samples fit within a first compressed color data format of multiple compressed color data formats; and

select the first compressed color data format as the compressed color data format.

17. The system of claim 13 , wherein the color data includes alpha values, and the processor is further configured to select the compressed color data format based on a number of bits needed to encode the alpha values.

18. The system of claim 13 , wherein the anchor is a sample that is not positioned along a perimeter of a footprint of the packet in screen space.

19. The system of claim 13 , wherein the neighbor of each sample of the other samples in the packet is closer to the anchor than the sample.

20. The system of claim 14 , wherein the processor is further configured to:

split the packet into two sub-packets along a boundary and serially perform the calculation of the per-channel differences, the truncation of the difference samples, and the encoding of the truncated difference samples and the anchor for each sub-packet.

21. The system of claim 20 , wherein the processor is further configured to select the predictor map that defines only one sample in a first sub-packet as the neighbor of only one sample in a second sub-packet.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2010
From: MCALLISTER, DAVID K.; JOLY, ALEXANDRE; TONG, PETER
To: NVIDIA CORPORATION
Reel/Frame 024920/0135 →
Continuity (1)
Related Publication 20120050303A1 · Mar 1, 2012