# US 12,223,682 B2 · Variable width interleaved coding for graphics processing

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

- Number: US 12,223,682 B2
- Document ID: US12223682B2
- Status: Granted
- Kind: B2
- Application number: 17/357,038
- Filed: 2021-06-24
- Published: 2022-09-22
- Granted: 2025-02-11
- Earliest claimed: 2021-03-19
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Stephen Junkins; Sreenivas Kothandaraman; Prasoonkumar Surti; Srihari Pratapa; William Hux; John Feit
- Web page: https://patentgrep.com/patent/US12223682B2

## CPC

- G06T 9/00: Image coding (bandwidth or redundancy reduction for static pictures H04N1/41; coding or decoding of static colour picture signals H04N1/64; methods or arrangements for coding, decoding, compressing or decompressing digital video signals H04N19/00)
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 1/60: Memory management
- G06T 9/005: {Statistical coding, e.g. Huffman, run length coding}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Variable width interleaved coding for graphics processing is described. An example of an apparatus includes one or more processors including a graphic processor; and memory for storage of data including data for graphics processing, wherein the graphics processor includes an encoder pipeline to provide variable width interleaved coding and a decoder pipeline to decode the variable width interleaved coding, and wherein the encoder pipeline is to receive a plurality of bitstreams from workgroups; perform parallel entropy encoding on the bitstreams to generate a plurality of encoded bitstreams for each of the workgroups; perform variable interleaving of the bitstreams for each workgroup based at least in part on data requirements for decoding received from the decoder pipeline; and compact outputs for each of the workgroups into a contiguous stream of interleaved data.

## Claims

### Claim 1

An apparatus comprising:
one or more processors including a graphic processor; and
memory for storage of data including data for graphics processing;
wherein the graphics processor includes an encoder pipeline to provide variable width interleaved coding and a decoder pipeline to decode the variable width interleaved coding, and wherein the encoder pipeline is to:
receive a plurality of bitstreams from a plurality of workgroups;
perform parallel entropy encoding on the bitstreams to generate a plurality of encoded bitstreams for each of the workgroups;
perform variable interleaving of the bitstreams for each workgroup of the plurality of workgroups, wherein a number of data elements that are interleaved for each workgroup in each of a plurality of iterations is based at least in part on current data requirements for decoding for each workgroup received from the decoder pipeline; and
compact interleaved bitstream outputs for each of the plurality of workgroups into a contiguous stream of interleaved data.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the entropy encoding comprises Huffman coding.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the received plurality of bitstreams include Single Instruction Multiple Data (SIMD) bitstreams.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein:
the encoder pipeline includes a plurality of parallel entropy encoders for each of the plurality of workgroups; and
the decoder pipeline includes a plurality of parallel entropy decoders for each of the plurality of workgroups.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein bitstream write patterns produced by the parallel entropy encoders for the plurality of workgroups are to be synchronized with bitstream read patterns of the parallel entropy decoders for the plurality of workgroups.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein the encoded bitstreams may be of variable lengths.

### Claim 7 (depends on 6)

The apparatus of claim 6, wherein a number of encoded bitstreams that are interleaved in the variable interleaving may vary with each iteration of the encoder pipeline.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the decoder pipeline is to:
receive the contiguous data stream;
provide the current data requirements for decoding for each workgroup to the encoder pipeline;
separate the contiguous data stream into a plurality of sets of data based at least in part on the data requirements for decoding for each workgroup provided to the encoder pipeline; and
perform parallel entropy decoding of the plurality of sets of data for each workgroup to generate a plurality of bitstreams.

### Claim 9 (depends on 8)

The apparatus of claim 8, wherein the performance of parallel entropy decoding includes use of an entropy code lookup table.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein the encoder pipeline and the decoder pipeline utilize a kernel workgroup size that is equal to a target SIMD width.

### Claim 11

One or more non-transitory computer-readable storage mediums having stored thereon executable computer program instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:
receiving a plurality of bitstreams from a plurality of workgroups at an encoder pipeline;
performing parallel entropy encoding on the bitstreams to generate a plurality of encoded bitstreams for each of the workgroups;
performing variable interleaving of the bitstreams for each workgroup of the plurality of workgroups, wherein a number of data elements that are interleaved for each workgroup in each of a plurality of iterations is based at least in part on current data requirements for decoding received from a decoder pipeline; and
compacting interleaved bitstream outputs for each of the plurality of workgroups into a contiguous stream of interleaved data.

### Claim 12 (depends on 11)

The one or more storage mediums of claim 11, wherein:
the encoder pipeline includes a plurality of parallel entropy encoders for each of the plurality of workgroups; and
the decoder pipeline includes a plurality of parallel entropy decoders for each of the plurality of workgroups.

### Claim 13 (depends on 11)

The one or more storage mediums of claim 11, wherein the encoded bitstreams may be of variable lengths, and wherein a number of encoded bitstreams that are interleaved in the variable interleaving may vary with each iteration of the encoder pipeline.

### Claim 14 (depends on 11)

The one or more storage mediums of claim 11, wherein the instructions further include instructions for:
receiving the contiguous data stream at the decoder pipeline;
providing the current data requirements for decoding for each workgroup to the encoding pipeline;
separating the contiguous data stream into a plurality of sets of data based at least in part on the data requirements for decoding for each workgroup provided to the encoding pipeline; and
performing parallel entropy decoding of the plurality of sets of data for each workgroup to generate a plurality of bitstreams.

### Claim 15 (depends on 14)

The one or more storage mediums of claim 14, wherein performing parallel entropy decoding includes use of an entropy code lookup table.

### Claim 16

A method comprising:
receiving a plurality of bitstreams from a plurality of workgroups at an encoder pipeline;
performing parallel entropy encoding on the bitstreams to generate a plurality of encoded bitstreams for each of the workgroups;
performing variable interleaving of the bitstreams for each workgroup of the plurality of workgroups, wherein a number of data elements that are interleaved for each workgroup in each of a plurality of iterations is based at least in part on current data requirements for decoding received from a decoder pipeline; and
compacting interleaved bitstream outputs for each of the workgroups into a contiguous stream of interleaved data.

### Claim 17 (depends on 16)

The method of claim 16, wherein:
the encoder pipeline includes a plurality of parallel entropy encoders for each of the plurality of workgroups; and
the decoder pipeline includes a plurality of parallel entropy decoders for each of the plurality of workgroups.

### Claim 18 (depends on 16)

The method of claim 16, wherein the encoded bitstreams may be of variable lengths, and wherein a number of encoded bitstreams that are interleaved in the variable interleaving may vary with each iteration of the encoder pipeline.

### Claim 19 (depends on 16)

The method of claim 16, further comprising:
receiving the contiguous data stream at the decoder pipeline;
providing the current data requirements for decoding for each workgroup to the encoding pipeline;
separating the contiguous data stream into a plurality of sets of data based at least in part on the data requirements for decoding for each workgroup provided to the encoding pipeline; and
performing parallel entropy decoding of the plurality of sets of data for each workgroup to generate a plurality of bitstreams.

### Claim 20 (depends on 19)

The method of claim 19, wherein performing parallel entropy decoding includes use of an entropy code lookup table.
