# US 9,437,025 B2 · Stencil data compression system and method and graphics processing unit incorporating the same

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

- Number: US 9,437,025 B2
- Document ID: US9437025B2
- Status: Granted
- Kind: B2
- Application number: 13/547,362
- Filed: 2012-07-12
- Published: 2014-01-16
- Granted: 2016-09-06
- Earliest claimed: 2012-07-12
- Assignees: NVIDIA Corporation
- Applicants: Jeffrey A. Bolz
- Inventors: Jeffrey A. Bolz
- Web page: https://patentgrep.com/patent/US9437025B2

## CPC

- G06T 11/40: Filling planar surfaces by adding surface attributes, e.g. adding colours or textures
- 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 15/60: Shadow generation
- G09G 2340/02: Handling of images in compressed format, e.g. JPEG, MPEG
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- 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

A system and method for compressing stencil data attendant to rendering an image. In one embodiment, the method includes: (1) selecting a base stencil value for a particular group, (2) selecting a single-bit delta value for each sample in the particular group and (3) storing the stencil base value and the delta values in a frame buffer.

## Claims

### Claim 1

A stencil data compression method, comprising:
receiving a first primitive;
deriving a base stencil value for a particular group of samples partially overlapping said first primitive, said first primitive not completely overlapping said particular group of samples;
deriving a single bit delta value for each of said samples;
storing said base stencil value and said single bit delta values in a frame buffer;
receiving a second primitive, wherein said second primitive partially overlaps said first primitive and includes an input coverage mask consisting of single bit values;
applying said input coverage mask of said second primitive to said base stencil value and said single bit delta samples of said first primitive using at least one stencil operation to update said stored base stencil value and said single bit delta values stored in said frame buffer.

### Claim 2 (depends on 1)

The method as recited in claim 1 wherein a size of said particular group is eight samples and said base stencil value is an 8-bit value.

### Claim 3 (depends on 1)

The method as recited in claim 1 further comprising storing uncompressed stencil data for said particular group in said frame buffer in lieu of said base stencil value and said delta values when said particular group is incompressible.

### Claim 4 (depends on 1)

The method as recited in claim 1 further comprising setting a corresponding tag in a tag memory associated with said frame buffer.

### Claim 5 (depends on 1)

The method as recited in claim 1 wherein said at least one stencil operation is selected from the group consisting of:
a wrapping increment operation,
a wrapping decrement operation, and
a replace operation.

### Claim 6 (depends on 1)

The method as recited in claim 1 wherein said delta values function as a mask for bitwise operations.

### Claim 7

A data compression system, comprising:
a frame buffer; and
a raster processor configured to:
receive a first primitive;
derive a base stencil value for a particular group of samples partially overlapping said first primitive, said first primitive not completely overlapping said particular group of samples;
derive a single bit delta value for each of said samples;
store said base stencil value and said single bit delta values in said frame buffer;
receive a second primitive, wherein said second primitive partially overlaps said first primitive and includes an input coverage mask consisting of single bit values;
apply said input coverage mask of said second primitive to said base stencil value and said single bit delta samples of said first primitive using at least one stencil operation to update said stored base stencil value and said single bit delta values stored in said frame buffer.

### Claim 8 (depends on 7)

The system as recited in claim 7 wherein a size of said particular group is eight samples.

### Claim 9 (depends on 7)

The system as recited in claim 7 wherein said frame buffer is further configured to store uncompressed stencil data for said particular group in said frame buffer in lieu of said base stencil value and said delta values when said particular group is incompressible.

### Claim 10 (depends on 7)

The system as recited in claim 7 wherein said rasterizer is further configured to set a corresponding tag in a tag memory associated with said frame buffer.

### Claim 11 (depends on 7)

The system as recited in claim 7 wherein said at least one stencil operation is selected from the group consisting of:
a wrapping increment operation,
a wrapping decrement operation, and
a replace operation.

### Claim 12 (depends on 7)

The system as recited in claim 7 wherein said delta values function as a mask for bitwise operations.

### Claim 13

A graphics processing unit, comprising:
a geometry stage configured to transform primitives into a screen-aligned coordinate system;
a frame buffer; and
a raster processor configured to:
receive a first of said primitives;
derive a base stencil value for a particular group of samples partially overlapping said first primitive, said first primitive not completely overlapping said particular group of samples;
derive a single bit delta value for each of said samples;
store said base stencil value and said single bit delta values in said frame buffer;
receive second of said primitives, wherein said second primitive partially overlaps said first primitive and includes an input coverage mask consisting of single bit values;
apply said input coverage mask of said second primitive to said base stencil value and said single bit delta samples of said first primitive using at least one stencil operation to update said stored base stencil value and said single bit delta values stored in said frame buffer.

### Claim 14 (depends on 13)

The graphics processing unit as recited in claim 13 wherein a size of said particular group is eight samples and said base stencil value is an 8-bit value.

### Claim 15 (depends on 13)

The graphics processing unit as recited in claim 13 wherein said raster processor is further configured to set a corresponding tag in a tag memory associated with said frame buffer.

### Claim 16 (depends on 13)

The graphics processing unit as recited in claim 13 wherein said at least one stencil operation is selected from the group consisting of:
a wrapping increment operation,
a wrapping decrement operation, and
a replace operation.

### Claim 17 (depends on 13)

The graphics processing unit as recited in claim 13 wherein said delta values function as a mask for bitwise operations.
