# US 10,319,063 B2 · System and method for compacting compressed graphics streams for transfer between GPUs

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,319,063 B2
- Document ID: US10319063B2
- Status: Granted
- Kind: B2
- Application number: 15/441,932
- Filed: 2017-02-24
- Published: 2018-08-30
- Granted: 2019-06-11
- Earliest claimed: 2017-02-24
- Assignees: ATI Technologies ULC
- Applicants: Ati Technologies Ulc
- Inventors: Guennadi Riguer
- Web page: https://patentgrep.com/patent/US10319063B2

## CPC

- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0683: {Plurality of storage devices}
- G06T 1/60: Memory management
- G09G 5/363: {Graphics controllers}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## Abstract

In a processing system including a plurality of graphics processing units (GPUs), the GPUs transfer compressed graphics streams composed of blocks of graphics data to one another. Some blocks of a compressed graphics stream, or parts thereof, may contain both compressed graphics data and meaningless data (referred to as data structure padding, or padding) that is used to align the graphics data, and some blocks may contain only padding. Before transferring a compressed graphics resource from one GPU to another GPU, the sending GPU compacts the compressed graphics resource by filtering out padding from the compressed graphics stream prepared for the transfer.

## Claims

### Claim 1

A method comprising:
compacting a first compressed stream of graphics data, wherein the first compressed stream of graphics data comprises a plurality of memory blocks, and wherein compacting comprises filtering out padding for data alignment from the plurality of memory blocks;
transferring from a first graphics processing unit (GPU) to a second GPU the first compacted compressed stream of graphics data;
transferring from the first GPU to the second GPU first metadata indicating a first method of compressing the first compacted compressed stream of graphics data; and
decompacting, at the second GPU, the first compacted compressed stream of graphics data, wherein decompacting comprises reinserting padding for data alignment into the plurality of memory blocks.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
decompressing, at the second GPU, the first compacted compressed stream of graphics data based on the first method of compressing.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
transferring from the first GPU to the second GPU a second compacted compressed stream of graphics data;
transferring from the first GPU to the second GPU second metadata indicating a second method of compressing the second compacted compressed stream of graphics data; and
decompressing, at the second GPU, the second compacted compressed stream of graphics data based on the second method of compressing.

### Claim 4 (depends on 3)

The method of claim 3, wherein the first method of compressing is different from the second method of compressing.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first method of compressing comprises a method for compressing color data.

### Claim 6 (depends on 1)

The method of claim 1, wherein the first method of compressing comprises a method for compressing depth data.

### Claim 7 (depends on 1)

The method of claim 1, wherein the first method of compressing comprises a method for compressing vertex data.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
transferring from the second GPU to the first GPU a third compacted compressed stream of graphics data;
transferring from the second GPU to the first GPU third metadata indicating a third method of decompressing the third compressed stream of graphics data; and
decompressing, at the first GPU, the third compacted compressed stream of graphics data based on the third method of decompressing.

### Claim 9

A method, comprising:
parsing first metadata associated with a first compressed graphics stream comprising a plurality of memory blocks of graphics data, wherein the first metadata indicates a first compression method for the first compressed graphics stream;
compacting the first compressed graphics stream, wherein compacting comprises removing padding for data alignment from the memory blocks;
interleaving the first metadata with the compacted first compressed graphics stream;
transmitting the compacted first compressed graphics stream and the interleaved first metadata from a first graphics processing unit (GPU) to a second GPU; and
decompacting, at the second GPU, the first compacted compressed stream of graphics data, wherein decompacting comprises reinserting padding for data alignment into the plurality of memory blocks.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
decompressing, at the second GPU, the compacted first compressed stream of graphics data based on the first compression method indicated by the first metadata.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
parsing second metadata associated with a second compressed graphics stream comprising memory blocks of graphics data, wherein the second metadata indicates a second compression method for the second compressed graphics stream;
compacting the second compressed graphics stream, wherein compacting comprises removing padding from the memory blocks;
interleaving the second metadata with the compacted first second compressed graphics stream; and
transmitting the compacted second compressed graphics stream and the interleaved second metadata from the first GPU to the second GPU.

### Claim 12 (depends on 11)

The method of claim 11, wherein the first compression method is different from the second compression method.

### Claim 13 (depends on 9)

The method of claim 9, wherein the first compression method comprises a method for compressing color data.

### Claim 14 (depends on 9)

The method of claim 9, wherein the first method of compressing comprises a method for compressing depth data.

### Claim 15 (depends on 9)

The method of claim 9, wherein the first method of compressing comprises a method for compressing vertex data.

### Claim 16

A device, comprising:
a plurality of graphics processing units (GPUs), each GPU comprising:
a compacting engine configured to:
parse first metadata from a first compressed stream of graphics data comprising a plurality of memory blocks of graphics data, wherein the first metadata indicates a first compression method for the first compressed graphics stream;
compact the first compressed graphics stream, wherein compacting comprises removing padding for data alignment from the memory blocks;
interleave the first metadata with the compacted first compressed graphics stream; and
transmit the compacted first compressed graphics stream and the interleaved first metadata from a first GPU of the plurality of GPUs to a second GPU of the plurality of GPUs; and
a decompacting engine configured to:
receive a compacted second compressed graphics stream and second metadata, wherein the second metadata indicates a second compression method for the compacted second compressed graphics stream; and
decompact the compacted second compressed graphics stream, wherein decompacting comprises reinserting padding for data alignment into the plurality of memory blocks.

### Claim 17 (depends on 16)

The device of claim 16, wherein the decompacting engine of each GPU is further configured to:
decompress the decompacted second compressed graphics stream based on the second compression method.

### Claim 18 (depends on 17)

The device of claim 17, wherein the first compression method is different from the second compression method.

### Claim 19 (depends on 16)

The device of claim 16, wherein the first compression method comprises a method for compressing color data.

### Claim 20 (depends on 16)

The device of claim 16, wherein the first compression method comprises a method for compressing depth data.
