# US 2018/0025463 A1 · Vertex shaders for binning based graphics processing

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

- Number: US 2018/0025463 A1
- Document ID: US20180025463A1
- Status: Published application
- Kind: A1
- Application number: 15/218,808
- Filed: 2016-07-25
- Published: 2018-01-25
- Earliest claimed: 2016-07-25
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Maxim Kazakov; Andrew Evan Gruber
- Web page: https://patentgrep.com/patent/US20180025463A1

## CPC

- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 15/005: {General purpose rendering architectures}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

This disclosure describes examples of using two vertex shaders each one during different graphics processing passes in a binning architecture for graphics processing. A first vertex shader processes subset of attributes of a vertex in a binning pass, where the subset of attributes include those that contribute to visibility determination and attributes that may benefit from being processed with a vertex shader that provides functional flexibility. A second, different vertex shader processes another subset of attributes of the vertex in the rendering pass.

## Claims

### Claim 1

A method of processing data, the method comprising:
receiving from a vertex buffer a first subset of attributes of a vertex;
processing the first subset of attributes of the vertex with a first vertex shader of a graphics processing unit (GPU) to generate a first subset of processed attributes;
receiving from the vertex buffer a second subset of attributes of the same vertex;
processing the second subset of attributes of the same vertex with a second, different vertex shader of the GPU to generate a second subset of processed attributes; and
generating graphics data for display based on the first subset of processed attributes and the second subset of processed attributes.

### Claim 2 (depends on 1)

The method of claim 1, wherein processing the first subset of attributes comprises processing the first subset of attributes during a binning pass, the binning pass comprising determining which vertices belong to which tile, and wherein processing the second subset of attributes comprises processing the second subset of attributes during a rendering pass, the rendering pass comprising generating the graphics data for display.

### Claim 3 (depends on 1)

The method of claim 1, wherein processing the first subset of attributes comprises:
executing the first vertex shader on a shader core; and
processing the first subset of attributes based on the execution of the first vertex shader.

### Claim 4 (depends on 1)

The method of claim 1, wherein the second vertex shader comprises a fixed-function hardware vertex shader.

### Claim 5 (depends on 1)

The method of claim 1, wherein processing the second subset of attributes comprises:
executing the second vertex shader on a shader core; and
processing the second subset of attributes based on the execution of the second vertex shader.

### Claim 6 (depends on 1)

The method of claim 1, wherein the vertex comprises a first vertex, the method further comprising:
processing a first subset of attributes of a second vertex with the first vertex shader;
determining that the second vertex is not visible; and
avoiding the processing of a second subset of attributes of the second vertex in response to the determination that the second vertex is not visible.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
outputting the first subset of processed attributes to a streamout buffer external to the GPU;
receiving with a rasterizer circuit the first subset of processed attributes from the streamout buffer;
outputting the second subset of processed attributes to a local memory internal to the GPU; and
receiving with the rasterizer circuit the second subset of processed attributes from the local memory.

### Claim 8 (depends on 1)

The method of claim 1, wherein generating graphics data for display based on the first subset of processed attributes and the second subset of processed attributes comprises generating graphics data for display based on processed attributes of the first subset of processed attributes for vertices determined to be visible and the second subset of processed attributes.

### Claim 9 (depends on 1)

The method of claim 1, wherein the first subset of attributes comprises attributes used for determining visibility.

### Claim 10 (depends on 1)

The method of claim 1, wherein the second subset of attributes comprises attributes that are to be multiplied by a static matrix.

### Claim 11

A device for processing data, the device comprising:
a system memory comprising a vertex buffer configured to store a first subset of attributes of a vertex and a second subset of attributes of the same vertex;
a graphics processing unit (GPU) comprising binning pass circuitry and rendering pass circuitry,
wherein the binning pass circuitry is configured to:
receive the first subset of attributes of the vertex; and
process the first subset of attributes with a first vertex shader to generate a first subset of processed attributes, and
wherein the rendering pass circuitry is configured to:
receive the second subset of attributes of the vertex;
process the second subset of attributes with a second, different vertex shader to generate a second subset of processed attributes; and
generate graphics data for display based on the first subset of processed attributes and the second subset of processed attributes.

### Claim 12 (depends on 11)

The device of claim 11, wherein the binning pass circuitry comprises a shader core, and wherein to process the first subset of attributes, the shader core is configured to:
execute the first vertex shader; and
process the first subset of attributes based on the execution of the first vertex shader.

### Claim 13 (depends on 11)

The device of claim 11, wherein the second vertex shader comprises a fixed-function hardware vertex shader.

### Claim 14 (depends on 11)

The device of claim 11, wherein the rendering pass circuitry comprises a shader core, and wherein to process the second subset of attributes, the shader core is configured to:
execute the second vertex shader; and
process the second subset of attributes based on the execution of the second vertex shader.

### Claim 15 (depends on 11)

The device of claim 11, wherein the vertex comprises a first vertex, wherein the binning pass circuitry is configured to process a first subset of attributes of a second vertex with the first vertex shader, and determine that the second vertex is not visible, and wherein the rendering pass circuitry is configured to avoid the processing of a second subset of attributes of the second vertex in response to the determination that the second vertex is not visible.

### Claim 16 (depends on 11)

The device of claim 11, wherein the binning pass circuitry is configured to output the first subset of processed attributes to a streamout buffer, wherein the rendering pass circuitry is configured to output the second subset of processed attributes to a local memory, wherein the rendering pass circuitry comprises a rasterizer circuit configured to receive the first subset of processed attributes from the streamout buffer and receive the second subset of processed attributes from the local memory.

### Claim 17 (depends on 11)

The device of claim 11, wherein the rendering pass circuitry is configured to generate graphics data for display based on processed attributes of the first subset of processed attributes for vertices determined to be visible and the second subset of processed attributes.

### Claim 18 (depends on 11)

The device of claim 11, wherein the first subset of attributes comprises attributes used for determining visibility.

### Claim 19 (depends on 11)

The device of claim 11, wherein the second subset of attributes comprises attributes that are to be multiplied by a static matrix.

### Claim 20 (depends on 11)

The device of claim 11, wherein the device comprises one of a personal computer, a desktop computer, a laptop computer, a computer workstation, a video game platform or console, a wireless communication device, a display device, a television, or a television set-top box.

### Claim 21

A computer-readable storage medium having instructions stored thereon that when executed cause a graphics processing unit (GPU) to:
receive from a vertex buffer a first subset of attributes of a vertex;
process the first subset of attributes of the vertex with a first vertex shader of the GPU to generate a first subset of processed attributes;
receive from the vertex buffer a second subset of attributes of the same vertex;
process the second subset of attributes of the same vertex with a second, different vertex shader of the GPU to generate a second subset of processed attributes; and
generate graphics data for display based on the first subset of processed attributes and the second subset of processed attributes.

### Claim 22 (depends on 21)

The computer-readable storage medium of claim 21, wherein the vertex comprises a first vertex, the instructions further comprising instructions that cause GPU to:
process a first subset of attributes of a second vertex with the first vertex shader;
determine that the second vertex is not visible; and
avoid the processing of a second subset of attributes of the second vertex in response to the determination that the second vertex is not visible.

### Claim 23 (depends on 21)

The computer-readable storage medium of claim 21, wherein the first subset of attributes comprises attributes used for determining visibility.

### Claim 24 (depends on 21)

The computer-readable storage medium of claim 21, wherein the second subset of attributes comprises attributes that are to be multiplied by a static matrix.

### Claim 25

A device for processing data, the device comprising:
means for receiving from a vertex buffer a first subset of attributes of a vertex;
means for processing the first subset of attributes of the vertex with a first vertex shader of a graphics processing unit (GPU) to generate a first subset of processed attributes;
means for receiving from the vertex buffer a second subset of attributes of the same vertex;
means for processing the second subset of attributes of the same vertex with a second, different vertex shader of the GPU to generate a second subset of processed attributes; and
means for generating graphics data for display based on the first subset of processed attributes and the second subset of processed attributes.

### Claim 26 (depends on 25)

The device of claim 25, wherein the vertex comprises a first vertex, the device further comprising:
means for processing a first subset of attributes of a second vertex with the first vertex shader;
means for determining that the second vertex is not visible; and
means for avoiding the processing of a second subset of attributes of the second vertex in response to the determination that the second vertex is not visible.

### Claim 27 (depends on 25)

The device of claim 25, wherein the first subset of attributes comprises attributes used for determining visibility.

### Claim 28 (depends on 25)

The device of claim 25, wherein the second subset of attributes comprises attributes that are to be multiplied by a static matrix.
