IP Library Patent Application 17721700
Patent Application
App. No. 17/721,700

Block-Based Random Access Capable Lossless Graphics Asset Compression

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 None
App. No.
17/721,700
Abstract

A method includes determining a sequence for compressing blocks of pixels in an image; compressing the blocks sequentially according to the sequence, wherein a first component of a first block is compressed by: selecting a variable-length mode from supported compression modes to compress the first component of the first block based on: determining that the first block is different from previously-compressed blocks compressed according to the sequence; determining that pixels within the first component are different; and determining that a bit length needed for compressing the first component using the variable-length mode is less than a bit length needed for representing the first component uncompressed; and generating a first compression of the first component of the first block using a symbol width selected based on magnitudes of delta values used for encoding the pixels within the first component of the first block.

Claims (74)

1 . A method comprising, by a computing system:

determining a sequence for compressing blocks of pixels in an image;

compressing the blocks sequentially according to the sequence, wherein a first component of a first block is compressed by:

selecting a variable-length mode from a plurality of supported compression modes to compress the first component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence;

determining that pixels within the first component are different; and

determining that a bit length needed for compressing the first component using the variable-length mode is less than a bit length needed for representing the first component uncompressed; and

generating a first compression of the first component of the first block using a symbol width selected based on magnitudes of delta values used for encoding the pixels within the first component of the first block.

2 . The method of claim 1 , wherein the first block comprises a plurality of components, one of which being the first component.

3 . The method of claim 2 , wherein compressing the blocks sequentially according to the sequence further includes compressing a second component of the plurality of components of the first block by:

selecting a flat mode from the plurality of supported compression modes to compress the second component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence; and

determining that pixels within the second component correspond to a single value; and

generating a second compression of the second component of the first block based on the single value corresponding to the pixels within the second component.

4 . The method of claim 2 , wherein compressing the blocks sequentially according to the sequence further includes compressing a third component of the plurality of components of the first block by:

selecting an uncompressed mode from the plurality of supported compression modes to compress the third component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence;

determining that pixels within the third component are different; and

determining that a bit length needed for compressing the third component using the variable-length mode is more than a bit length needed for representing the third component uncompressed; and

generating a third compression of the third component of the first block based on the third component uncompressed.

5 . The method of claim 2 , further comprising generating a block compression of the first block by collating the first compression of the first component and compressions corresponding to other components of the plurality of components.

6 . The method of claim 1 , wherein compressing the blocks sequentially according to the sequence further includes (a) compressing a plurality of components of a second block based on the variable-length mode, a flat mode, or an uncompressed mode, and (b) generating a block compression of the second block by collating the plurality of compressed components of the second block.

7 . The method of claim 1 , wherein determining that the first block is different from previously-compressed blocks compressed according to the sequence comprises:

generating a hash representation of the pixel values of the first block; and

comparing the hash representation of the first block with hash representations of the previously-compressed blocks.

8 . One or more computer-readable non-transitory storage media including instructions that, when executed by a graphics processing unit, are configured to cause the one or more processors to:

determine a sequence for compressing blocks of pixels in an image;

compress the blocks sequentially according to the sequence, wherein a first component of a first block is compressed by:

selecting a variable-length mode from a plurality of supported compression modes to compress the first component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence;

determining that pixels within the first component are different; and

determining that a bit length needed for compressing the first component using the variable-length mode is less than a bit length needed for representing the first component uncompressed; and

generating a first compression of the first component of the first block using a symbol width selected based on magnitudes of delta values used for encoding the pixels within the first component of the first block.

9 . The one or more computer-readable non-transitory storage media of claim 8 , wherein the first block comprises a plurality of components, one of which being the first component.

10 . The one or more computer-readable non-transitory storage media of claim 9 , wherein compressing the blocks sequentially according to the sequence further includes compressing a second component of the plurality of components of the first block by:

selecting a flat mode from the plurality of supported compression modes to compress the second component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence; and

determining that pixels within the second component correspond to a single value; and

generating a second compression of the second component of the first block based on the single value corresponding to the pixels within the second component.

11 . The one or more computer-readable non-transitory storage media of claim 9 , wherein compressing the blocks sequentially according to the sequence further includes compressing a third component of the plurality of components of the first block by:

selecting an uncompressed mode from the plurality of supported compression modes to compress the third component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence;

determining that pixels within the third component are different; and

determining that a bit length needed for compressing the third component using the variable-length mode is more than a bit length needed for representing the third component uncompressed;

generating a third compression of the third component of the first block based on the third component uncompressed.

12 . The one or more computer-readable non-transitory storage media of claim 9 , wherein the instructions are configured to further cause the one or more processors to:

generate a block compression of the first block by collating the first compression of the first component and compressions corresponding to other components of the plurality of components.

13 . The one or more computer-readable non-transitory storage media of claim 8 , wherein compressing the blocks sequentially according to the sequence further includes (a) compressing a plurality of components of a second block based on the variable-length mode, a flat mode, or an uncompressed mode, and (b) generating a block compression of the second block by collating the plurality of compressed components of the second block.

14 . The one or more computer-readable non-transitory storage media of claim 8 , wherein determining that the first block is different from previously-compressed blocks compressed according to the sequence comprises:

generating a hash representation of the pixel values of the first block; and

comparing the hash representation of the first block with hash representations of the previously-compressed blocks.

15 . A system comprising: one or more processors; and one or more computer-readable non-transitory storage media in communication with the one or more processors, the one or more computer-readable non-transitory storage media comprising instructions that when executed by the one or more processors, cause the system to:

determine a sequence for compressing blocks of pixels in an image;

compress the blocks sequentially according to the sequence, wherein a first component of a first block is compressed by:

selecting a variable-length mode from a plurality of supported compression modes to compress the first component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence;

determining that pixels within the first component are different; and

determining that a bit length needed for compressing the first component using the variable-length mode is less than a bit length needed for representing the first component uncompressed; and

generating a first compression of the first component of the first block using a symbol width selected based on magnitudes of delta values used for encoding the pixels within the first component of the first block.

16 . The system of claim 15 , wherein the first block comprises a plurality of components, one of which being the first component.

17 . The system of claim 16 , wherein compressing the blocks sequentially according to the sequence further includes compressing a second component of the plurality of components of the first block by:

selecting a flat mode from the plurality of supported compression modes to compress the second component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence; and

determining that pixels within the second component correspond to a single value; and

generating a second compression of the second component of the first block based on the single value corresponding to the pixels within the second component.

18 . The system of claim 16 , wherein compressing the blocks sequentially according to the sequence further includes compressing a third component of the plurality of components of the first block by:

selecting an uncompressed mode from the plurality of supported compression modes to compress the third component of the first block based on:

determining that the first block is different from previously-compressed blocks compressed according to the sequence;

determining that pixels within the third component are different; and

determining that a bit length needed for compressing the third component using the variable-length mode is more than a bit length needed for representing the third component uncompressed;

generating a third compression of the third component of the first block based on the third component uncompressed.

19 . The system of claim 16 , wherein the instructions are configured to further cause the one or more processors to:

generate a block compression of the first block by collating the first compression of the first component and compressions corresponding to other components of the plurality of components.

20 . The system of claim 15 , wherein compressing the blocks sequentially according to the sequence further includes (a) compressing a plurality of components of a second block based on the variable-length mode, a flat mode, or an uncompressed mode, and (b) generating a block compression of the second block by collating the plurality of compressed components of the second block.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2022
From: GOSWAMI, NILANJAN; DURFEE, KYLE; PINTO, SONAL
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 060732/0048 →
CHANGE OF NAME Recorded Jul 6, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060591/0848 →