# US 2021/0241415 A1 · System and method for efficient multi-gpu rendering of geometry by geometry analysis while rendering

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

- Number: US 2021/0241415 A1
- Document ID: US20210241415A1
- Status: Published application
- Kind: A1
- Application number: 16/780,776
- 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/US20210241415A1

## CPC

- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06F 9/3877: {using a secondary processor, e.g. coprocessor (peripheral processor G06F13/12)}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06T 15/005: {General purpose rendering architectures}
- G06T 15/10: Geometric effects
- G06T 15/405: {using Z-buffer}
- G06T 17/10: Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
- G06T 2210/52: Parallel processing
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for graphics processing. The method including rendering graphics for an application using a plurality of graphics processing units (GPUs). The method including using the plurality of GPUs in collaboration to render an image frame including a plurality of pieces of geometry. The method including during a pre-pass phase of rendering, generating information at the GPUs regarding the plurality of pieces of geometry and their relation to a 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 in 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);
using the plurality of GPUs in collaboration to render an image frame including a plurality of pieces of geometry;
during a pre-pass phase of rendering, generating information at the GPUs regarding the plurality of pieces of geometry and their relation to a 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 in a subsequent phase of rendering.

### Claim 2 (depends on 1)

The method of claim 1,
wherein the pre-pass phase of rendering is a Z pre-pass,
wherein the subsequent phase of rendering is a geometry pass.

### Claim 3 (depends on 2)

The method of claim 2, wherein responsibility for rendering the plurality of pieces of geometry of the image frame during the Z pre-pass phase of rendering between the plurality of GPUs is dynamically assigned.

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
rendering at a first GPU a first piece of geometry in the Z pre-pass phase to generate a first Z-buffer, wherein each GPU has a dedicated Z-buffer;
sending data in the first Z-buffer to the plurality of GPUs,
wherein each GPU is configured to merge the data from the first buffer into a corresponding Z-buffer such that each corresponding Z-buffer is similarly updated.

### Claim 5 (depends on 2)

The method of claim 2, further comprising:
sharing a single Z-buffer between the plurality of GPUs, wherein each of the plurality of GPUs updates the Z-buffer after rendering one or more corresponding pieces of geometry in the Z pre-pass phase of rendering.

### Claim 6 (depends on 2)

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

### Claim 7 (depends on 1)

The method of claim 1, wherein the information includes an approximate area that a corresponding piece of geometry overlaps a corresponding screen region.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
initially dividing responsibility for the rendering of geometry of the graphics between the plurality of GPUs based on a plurality of screen regions, each GPU having a corresponding division of the responsibility.

### Claim 9 (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 10 (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, or
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,
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 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 do not perform allocations of a position or parameter cache.

### 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 are configurable to output the information or to output vertex position and parameter information for use by the subsequent phase of rendering.

### Claim 15 (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 16 (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 17 (depends on 1)

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

### Claim 18 (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 19 (depends on 1)

The method of claim 1,
wherein a 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 20 (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 the pre-pass phase of rendering.

### Claim 21 (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 22 (depends on 1)

The method of claim 1,
wherein a scan converter generates the information.

### Claim 23 (depends on 1)

The method of claim 1,
wherein the information generated while rendering the image frame is used to assign the plurality of screen regions to the plurality of GPUs in a subsequent image frame.

### Claim 24 (depends on 1)

The method of claim 1,
wherein the plurality of pieces of geometry is assigned in the subsequent phase of rendering such that successive pieces of geometry are processed by different GPUs.

### Claim 25 (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 26

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);
using the plurality of GPUs in collaboration to render an image frame including a plurality of pieces of geometry;
during a pre-pass phase of rendering, generating information at the GPUs regarding the plurality of pieces of geometry and their relation to a 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 in a subsequent phase of rendering.

### Claim 27 (depends on 26)

The computer system of claim 26,
wherein in the method the pre-pass phase of rendering is a Z pre-pass,
wherein in the method the subsequent phase of rendering is a geometry pass.
