# US 9,436,971 B2 · System, method, and computer program product for accessing multi-sample surfaces

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

- Number: US 9,436,971 B2
- Document ID: US9436971B2
- Status: Granted
- Kind: B2
- Application number: 13/970,542
- Filed: 2013-08-19
- Published: 2014-09-18
- Granted: 2016-09-06
- Earliest claimed: 2013-03-15
- Assignees: NVIDIA Corporation
- Applicants: NVIDIA Corporation
- Inventors: Jeffrey Alan Bolz; Patrick R. Brown; Tyson Bergland; Alexander Lev Minkin
- Web page: https://patentgrep.com/patent/US9436971B2

## CPC

- G06T 1/60: Memory management
- G06T 5/70: Denoising; Smoothing
- G06T 11/40: Filling planar surfaces by adding surface attributes, e.g. adding colours or textures
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

A system, method, and computer program product are provided for accessing multi-sample surfaces. A multi-sample store instruction that specifies data for a single sample of a multi-sample pixel and a sample mask is received and the data for the single sample is stored to each sample of the multi-sample pixel that is enabled according to the sample mask. A multi-sample load instruction that specifies a multi-sample pixel is received, and, in response to executing the multi-sample load instruction, data for one sample of the multi-sample pixel is received. A determination is made that the data for the one sample of the multi-sample pixel represents multi-sample pixel data for at least one additional sample of the multi-sample pixel.

## Claims

### Claim 1

A method, comprising:
processing, by two or more threads, a first primitive covering two or more samples of a multi-sample pixel that comprises multiple samples to generate data for the two or more samples of the multi-sample pixel;
processing, by a single thread, a second primitive covering a subset of the multiple samples to generate data for a single sample of the multi-sample pixel;
receiving, by a load/store unit, a multi-sample store instruction that specifies the data for the single sample of the multi-sample pixel samples and a sample mask, wherein a pixel coverage mask indicates the sample coverage of the second primitive and the sample mask indicates the subset of the multiple samples that are covered by the second primitive and are associated with the data for the single sample; and
in response to executing the multi-sample store instruction, storing the data for the single sample to at least two samples of the multi-sample pixel that are enabled according to the sample mask.

### Claim 2 (depends on 1)

The method of claim 1, further comprising associating the multi-sample pixel with an encoding state that indicates the data for the single sample represents data for less than all samples of the multi-sample pixel.

### Claim 3 (depends on 2)

The method of claim 2, wherein the encoding state is associated with a tile including the multi-sample pixel and one or more additional multi-sample pixels.

### Claim 4 (depends on 3)

The method of claim 3, further comprising determining the single sample represents the entire multi-sample pixel and one or more additional multi-sample pixels in a tile including the multi-sample pixel and the one or more additional multi-sample pixels.

### Claim 5 (depends on 1)

The method of claim 1, further comprising transmitting the sample mask and data for the single sample to a cache or processing unit that expands the data for the single sample based on the sample mask.

### Claim 6

A system comprising:
a memory storing multi-sample pixel data;
a processing unit configured to:
process, by two or more threads, a first primitive covering two or more samples of a multi-sample pixel that comprises multiple samples to generate data for the two or more samples of the multi-sample pixel;
process, by a single thread, a second primitive covering a subset of the multiple samples to generate data for a single sample of the multi-sample pixel; and
a load/store unit that is coupled between the processing unit and the memory, and
configured to:
receive a multi-sample store instruction that specifies data for a single sample of the multi-sample pixel and a sample mask, wherein a pixel coverage mask indicates the sample coverage of the second primitive and the sample mask indicates the subset of the multiple samples that are covered by the second primitive and are associated with the data for the single sample; and
store the data for the single sample to at least two samples of the multi-sample pixel that are enabled according to the sample mask in response to executing the multi-sample store instruction.

### Claim 7 (depends on 6)

The system of claim 6, where the load/store unit is further configured to determine the single sample represents the entire multi-sample pixel and one or more additional multi-sample pixels in a tile including the multi-sample pixel and the one or more additional multi-sample pixels.

### Claim 8

A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform steps comprising:
processing, by two or more threads, a first primitive covering two or more samples of a multi-sample pixel that comprises multiple samples to generate data for the two or more samples of the multi-sample pixel;
processing, by a single thread, a second primitive covering a subset of the multiple samples to generate data for a single sample of the multi-sample pixel;
receiving a multi-sample store instruction that specifies data for a single sample of the multi-sample pixel and a sample mask, wherein a pixel coverage mask indicates the sample coverage of the second primitive and the sample mask indicates the subset of the multiple samples that are covered by the second primitive and are associated with the data for the single sample; and
in response to executing the multi-sample store instruction, storing the data for the single sample to at least two samples of the multi-sample pixel that are enabled according to the sample mask.

### Claim 9

A method, comprising:
receiving a multi-sample load instruction that specifies one sample of a multi-sample pixel that comprises multiple samples, wherein the multiple samples includes a first subset of samples associated with a first encoding state and a second subset of samples associated with a second encoding state;
in response to executing the multi-sample load instruction, receiving data for one sample of the multi-sample pixel, wherein the one sample and at least one additional sample of the multiple samples is included in the first subset; and
determining the first encoding state indicating that the data for the one sample of the multi-sample pixel represents multi-sample pixel data for the first subset, wherein the first subset is stored in a first cache line and the second subset is stored in a second cache line.

### Claim 10 (depends on 9)

The method of claim 9, wherein the determining comprises receiving a predicate indicating the first encoding state in response to executing the multi-sample load instruction.

### Claim 11 (depends on 9)

The method of claim 9, wherein the first encoding state is read from a memory.

### Claim 12 (depends on 9)

The method of claim 9, wherein the first encoding state comprises a sample mask indicating which other samples in the first subset are represented by the data for the one sample.

### Claim 13 (depends on 9)

The method of claim 9, wherein the first encoding state is associated with a tile including the multi-sample pixel and one or more additional multi-sample pixels.

### Claim 14 (depends on 9)

The method of claim 9, wherein the determining comprises analyzing the multi-sample pixel data to identify that the data for the one sample represents multi-sample pixel data for all samples in the first subset.

### Claim 15 (depends on 9)

The method of claim 9, wherein the determining comprises computing a component-wise minimum or maximum of four samples within the first subset.

### Claim 16

A system comprising:
a memory storing multi-sample pixel data; and
an analysis unit that is coupled to the memory and configured to:
receive a multi-sample load instruction that specifies one sample of a multi-sample pixel that comprises multiple samples, wherein the multiple samples includes a first subset of samples associated with a first encoding state and a second subset of samples associated with a second encoding state;
in response to executing the multi-sample load instruction, receive data for one sample of the multi-sample pixel, wherein the one sample and at least one additional sample of the multiple samples is included in the first subset; and
determine the first encoding state indicating that the data for the one sample of the multi-sample pixel represents multi-sample pixel data for the first subset, wherein the first subset is stored in a first cache line and the second subset is stored in a second cache line.

### Claim 17 (depends on 16)

The system of claim 16, wherein the analysis unit resides within one or more of a load/store unit, a cache, and a processing unit.

### Claim 18 (depends on 16)

The system of claim 16, wherein the first encoding state is received by the analysis unit.

### Claim 19 (depends on 16)

The system of claim 16, wherein the analysis unit is further configured to compute a component-wise minimum or maximum of four samples within the first subset to determine the first encoding state.

### Claim 20

A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform steps comprising:
receiving a multi-sample load instruction that specifies one sample of a multi-sample pixel that comprises multiple samples, wherein the multiple samples includes a first subset of samples associated with a first encoding state and a second subset of samples associated with a second encoding state;
in response to executing the multi-sample load instruction, receiving data for one sample of the multi-sample pixel, wherein the one sample and at least one additional sample of the multiple samples is included in the first subset; and
determining the first encoding state indicating that the data for the one sample of the multi-sample pixel represents multi-sample pixel data for the first subset, wherein the first subset is stored in a first cache line and the second subset is stored in a second cache line.
