# US 2021/0241515 A1 · System and method for efficient multi-gpu rendering of geometry by performing geometry analysis before rendering

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

- Number: US 2021/0241515 A1
- Document ID: US20210241515A1
- Status: Published application
- Kind: A1
- Application number: 16/780,798
- Filed: 2020-02-03
- Published: 2021-08-05
- Earliest claimed: 2020-02-03
- Assignees: Sony Interactive Entertainment Inc.
- Applicants: Sony Interactive Entertainment Inc.
- Inventors: Mark E. Cerny; Tobias Berghoff; David Simpson
- Web page: https://patentgrep.com/patent/US20210241515A1

## CPC

- G06T 15/005: {General purpose rendering architectures}
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

A method for graphics processing. The method including rendering graphics for an application using graphics processing units (GPUs). The method including dividing responsibility for processing a plurality of pieces of geometry of an image frame during an analysis pre-pass phase of rendering between the plurality of GPUs, wherein each of the plurality of pieces of geometry is assigned to a corresponding GPU. The method including determining in the analysis pre-pass phase overlap of each the plurality of pieces of geometry with each of a plurality of screen regions. The method including generating information at the plurality of GPUs regarding the plurality of pieces of geometry and their relations to the plurality of screen regions based on the overlap of each the plurality of pieces of geometry with each of the plurality of screen regions. The method including assigning the plurality of screen regions to the plurality of GPUs based on the information for purposes of rendering the plurality of pieces of geometry during a subsequent phase of rendering.

## Claims

### Claim 1

A method for graphics processing, comprising:
rendering graphics for an application using a plurality of graphics processing units (GPUs);
dividing responsibility for processing a plurality of pieces of geometry of an image frame during an analysis pre-pass phase of rendering between the plurality of GPUs, wherein each of the plurality of pieces of geometry is assigned to a corresponding GPU;
determining in the analysis pre-pass phase overlap of each the plurality of pieces of geometry with each of a plurality of screen regions;
generating information at the plurality of GPUs regarding the plurality of pieces of geometry and their relations to the plurality of screen regions based on the overlap of each the plurality of pieces of geometry with each of the plurality of screen regions; and
assigning the plurality of screen regions to the plurality of GPUs based on the information for purposes of rendering the plurality of pieces of geometry during a subsequent phase of rendering.

### Claim 2 (depends on 1)

The method of claim 1, wherein the analysis pre-pass phase is performed using a vertex shader or compute shader.

### Claim 3 (depends on 1)

The method of claim 1, wherein the determining the overlap includes:
approximating the overlap of each the plurality of pieces of geometry with each of the plurality of screen regions.

### Claim 4 (depends on 3)

The method of claim 3, wherein the approximating the overlap includes:
determining overlap of one or more bounding boxes of one or more primitives of a piece of geometry with each of the plurality of screen regions.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
excluding one or more screen regions having no overlap.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
rendering during the subsequent phase of rendering the plurality of pieces of geometry at each of the plurality of GPUs based on GPU to screen region assignments determined from the assigning the plurality of screen regions to the plurality of GPUs.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
determining GPU usage when rendering of a previous image frame; and
assigning the plurality of screen regions to the plurality of GPUs based on the information and the GPU usage when rendering the previous image frame.

### Claim 8 (depends on 1)

The method of claim 1,
wherein the piece of geometry corresponds to geometry used or generated by a draw call, or
wherein the geometry used or generated by a draw call is subdivided into smaller pieces of geometry corresponding to the plurality of pieces of geometry, such that the information is generated for the smaller pieces of geometry.

### Claim 9 (depends on 1)

The method of claim 1, wherein the information includes an accurate or approximate area that primitives of a piece of geometry occupies in a corresponding region.

### Claim 10 (depends on 1)

The method of claim 1,
wherein the information includes the number of pixels shaded per screen region, or
wherein the information includes a vertex count per screen region.

### Claim 11 (depends on 1)

The method of claim 1,
wherein corresponding information may be generated or not generated depending on one or more properties of a corresponding piece of geometry.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
determining a plurality of costs for rendering the plurality of pieces of geometry during the subsequent phase of rendering; and
considering the plurality of costs when assigning the plurality of screen regions to the plurality of GPUs.

### Claim 13 (depends on 1)

The method of claim 1,
wherein the information is generated by one or more shaders,
wherein the one or more shaders use at least one dedicated instruction to accelerate generation of the information.

### Claim 14 (depends on 1)

The method of claim 1,
wherein the information is generated by one or more shaders,
wherein the one or more shaders do not perform allocations of a position or parameter cache.

### Claim 15 (depends on 1)

The method of claim 1,
wherein the information is generated by one or more shaders,
wherein the one or more shaders are configurable to output the information or to output vertex position and parameter information for use by the subsequent phase of rendering.

### Claim 16 (depends on 1)

The method of claim 1,
wherein at least one of the plurality of GPUs is assigned to a screen region prior to commencement of or during the subsequent phase of rendering.

### Claim 17 (depends on 1)

The method of claim 1,
wherein a screen region initially assigned to a first GPU is reassigned to a second GPU during the subsequent phase of rendering.

### Claim 18 (depends on 1)

The method of claim 1,
wherein a screen region is assigned to more than one of the plurality of GPUs.

### Claim 19 (depends on 1)

The method of claim 1,
wherein a rendering order of the plurality of pieces of geometry does not match an order of corresponding draw calls in a rendering command buffer.

### Claim 20 (depends on 1)

The method of claim 1,
wherein the rendering command buffer is shared between the plurality of GPUs as a common rendering command buffer,
wherein the format of the common rendering command buffer allows a command to be executed only by a subset of the plurality of GPUs.

### Claim 21 (depends on 1)

The method of claim 1, wherein the information allows relaxation of rendering phase dependencies, resulting in a first GPU proceeding to the subsequent phase of rendering while a second GPU is still processing a prior phase of rendering.

### Claim 22 (depends on 1)

The method of claim 1,
wherein the information is used to schedule transfer of a Z-buffer or render target data for a screen region to a first GPU from a second GPU.

### Claim 23 (depends on 1)

The method of claim 1, wherein one or more of the plurality of GPUs are portions of a larger GPU that is configured as a plurality of virtual GPUs.

### Claim 24

A computer system comprising:
a processor;
memory coupled to the processor and having stored therein instructions that, if executed by the computer system, cause the computer system to execute a method for graphics processing, comprising:
rendering graphics for an application using a plurality of graphics processing units (GPUs);
dividing responsibility for processing a plurality of pieces of geometry of an image frame during an analysis pre-pass phase of rendering between the plurality of GPUs, wherein each of the plurality of pieces of geometry is assigned to a corresponding GPU;
determining in the analysis pre-pass phase overlap of each the plurality of pieces of geometry with each of a plurality of screen regions;
generating information at the plurality of GPUs regarding the plurality of pieces of geometry and their relations to the plurality of screen regions based on the overlap of each the plurality of pieces of geometry with each of the plurality of screen regions; and
assigning the plurality of screen regions to the plurality of GPUs based on the information for purposes of rendering the plurality of pieces of geometry during a subsequent phase of rendering.

### Claim 25 (depends on 24)

The computer system of claim 24, wherein in the method the analysis pre-pass phase is performed using a vertex shader or compute shader.

### Claim 26 (depends on 24)

The computer system of claim 24, wherein in the method the determining the overlap includes:
approximating the overlap of each the plurality of pieces of geometry with each of the plurality of screen regions.
