# US 2021/0241413 A1 · System and method for efficient multi-gpu rendering of geometry by pretesting against screen regions using prior frame information

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

- Number: US 2021/0241413 A1
- Document ID: US20210241413A1
- Status: Published application
- Kind: A1
- Application number: 16/780,722
- 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; Florian Strauss; Tobias Berghoff
- Web page: https://patentgrep.com/patent/US20210241413A1

## 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/5061: {Partitioning or combining of resources}
- G06F 17/18: for evaluating statistical data {, e.g. average values, frequency distributions, probability functions, regression analysis (forecasting specially adapted for a specific administrative, business or logistic context G06Q10/04)}
- G06T 7/60: Analysis of geometric attributes
- G06T 15/005: {General purpose rendering architectures}
- G06T 15/10: Geometric effects
- G06T 17/10: Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
- G06V 10/72: Data preparation, e.g. statistical preprocessing of image or video features
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06V: IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING

## Abstract

A method including rendering graphics for an application using graphics processing units (GPUs). Responsibility for rendering of geometry is divided between GPUs based on screen regions, each GPU having a corresponding division of the responsibility which is known. First pieces of geometry are rendered at the GPUs during a rendering phase of a previous image frame. Statistics are generated for the rendering of the previous image frame. Second pieces of geometry of a current image frame are assigned based on the statistics to the GPUs for geometry testing. Geometry testing at a current image frame on the second pieces of geometry is performed to generate information regarding each piece of geometry and its relation to each screen region, the geometry testing performed at each of the GPUs based on the assigning. The information generated for the second pieces of geometry is used when rendering the geometry at the GPUs.

## 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 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 which is known to the plurality of GPUs;
rendering a first plurality of pieces of geometry at the plurality of GPUs during a rendering phase of a previous image frame generated by an application;
generating statistics for the rendering of the previous image frame;
assigning based on the statistics a second plurality of pieces of geometry of a current image frame generated by the application to the plurality of GPUs for geometry testing;
performing geometry testing at a current image frame on the second plurality of pieces of geometry to generate information regarding each piece of the second plurality of pieces of geometry and its relation to each of the plurality of screen regions, the geometry testing performed at each of the plurality of GPUs based on the assigning; and
using the information generated for each of the second plurality of pieces of geometry when rendering the geometry at the plurality of GPUs.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
providing the information as a hint to a rendering GPU, wherein the rendering GPU is one of the plurality of GPUs,
wherein the information is considered by the rendering GPU if received before rendering of a piece of geometry in the second plurality of pieces of geometry,
wherein the piece of geometry in the second plurality of pieces of geometry is fully rendered at the rendering GPU when the information is received after rendering of the piece of geometry in the second plurality of pieces of geometry begins.

### Claim 3 (depends on 1)

The method of claim 1, wherein pieces of geometry in the second plurality of pieces of geometry are assigned evenly or unevenly to the plurality of GPUs.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
determining that a first GPU finished rendering the first plurality of pieces of geometry before a second GPU finished rendering the first plurality of pieces of geometry, wherein the first GPU renders one or more pieces of the first plurality of pieces of geometry that overlap any screen region assigned to the first GPU for object rendering, and the second GPU renders one or more pieces of the first plurality of pieces of geometry that overlap any screen region assigned to the second GPU for object rendering;
assigning a first number of the second plurality of pieces of geometry to the first GPU for geometry testing; and
assigning a second number of the second plurality of pieces of geometry to the second GPU for geometry testing,
wherein the first number is higher than the second number.

### Claim 5 (depends on 4)

The method of claim 4, wherein the second number is zero.

### Claim 6 (depends on 1)

The method of claim 1, wherein the using the information includes:
skipping rendering a piece of geometry in the second plurality of pieces of geometry at a rendering GPU when the information indicates that the piece of geometry does not overlap any screen region assigned to the rendering GPU for object rendering, wherein the rendering GPU is one of the plurality of GPUs.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
dividing the second plurality of pieces of geometry between the plurality of GPUs for geometry pretesting,
wherein successive pieces of geometry are processed by different GPUs.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
dynamically adjusting the division of the second plurality of pieces of geometry based on performance of each the plurality of GPUs during geometry pretesting.

### Claim 9 (depends on 7)

The method of claim 7,
wherein a first GPU processes more pieces of geometry during geometry pretesting than a second GPU.

### Claim 10 (depends on 1)

The method of claim 1, wherein a piece of geometry in the second plurality of pieces of geometry corresponds to geometry used by or generated by a draw call.

### Claim 11 (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 12

A non-transitory computer-readable medium for performing a method, the computer-readable medium comprising:
program instructions for rendering graphics for an application using a plurality of graphics processing units (GPUs);
program instructions for 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 which is known to the plurality of GPUs;
program instructions for rendering a first plurality of pieces of geometry at the plurality of GPUs during a rendering phase of a previous image frame generated by an application;
program instructions for generating statistics for the rendering of the previous image frame;
program instructions for assigning based on the statistics a second plurality of pieces of geometry of a current image frame generated by the application to the plurality of GPUs for geometry testing;
program instructions for performing geometry testing at a current image frame on the second plurality of pieces of geometry to generate information regarding each piece of the second plurality of pieces of geometry and its relation to each of the plurality of screen regions, the geometry testing performed at each of the plurality of GPUs based on the assigning; and
program instructions for using the information generated for each of the second plurality of pieces of geometry when rendering the geometry at the plurality of GPUs.

### Claim 13 (depends on 12)

The non-transitory computer-readable medium of claim 12, further comprising:
program instructions for providing the information as a hint to a rendering GPU, wherein the rendering GPU is one of the plurality of GPUs,
wherein the information is considered by the rendering GPU if received before rendering of a piece of geometry in the second plurality of pieces of geometry,
wherein the piece of geometry in the second plurality of pieces of geometry is fully rendered at the rendering GPU when the information is received after rendering of the piece of geometry in the second plurality of pieces of geometry begins.

### Claim 14 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein in the method pieces of geometry in the second plurality of pieces of geometry are assigned evenly or unevenly to the plurality of GPUs.

### Claim 15 (depends on 12)

The non-transitory computer-readable medium of claim 12, further comprising:
program instructions for determining that a first GPU finished rendering the first plurality of pieces of geometry before a second GPU finished rendering the first plurality of pieces of geometry, wherein the first GPU renders one or more pieces of the first plurality of pieces of geometry that overlap any screen region assigned to the first GPU for object rendering, and the second GPU renders one or more pieces of the first plurality of pieces of geometry that overlap any screen region assigned to the second GPU for object rendering;
program instructions for assigning a first number of the second plurality of pieces of geometry to the first GPU for geometry testing; and
program instructions for assigning a second number of the second plurality of pieces of geometry to the second GPU for geometry testing,
wherein the first number is higher than the second number.

### Claim 16 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein the program instructions for using the information includes:
program instructions for skipping rendering a piece of geometry in the second plurality of pieces of geometry at a rendering GPU when the information indicates that the piece of geometry does not overlap any screen region assigned to the rendering GPU for object rendering, wherein the rendering GPU is one of the plurality of GPUs.

### Claim 17 (depends on 12)

The non-transitory computer-readable medium of claim 12, further comprising:
program instructions for dividing the second plurality of pieces of geometry between the plurality of GPUs for geometry pretesting,
wherein successive pieces of geometry are processed by different GPUs.

### Claim 18 (depends on 17)

The non-transitory computer-readable medium of claim 17, further comprising:
program instructions for dynamically adjusting the division of the second plurality of pieces of geometry based on performance of each the plurality of GPUs during geometry pretesting.

### Claim 19

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 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 which is known to the plurality of GPUs;
rendering a first plurality of pieces of geometry at the plurality of GPUs during a rendering phase of a previous image frame generated by an application;
generating statistics for the rendering of the previous image frame;
assigning based on the statistics a second plurality of pieces of geometry of a current image frame generated by the application to the plurality of GPUs for geometry testing;
performing geometry testing at a current image frame on the second plurality of pieces of geometry to generate information regarding each piece of the second plurality of pieces of geometry and its relation to each of the plurality of screen regions, the geometry testing performed at each of the plurality of GPUs based on the assigning; and
using the information generated for each of the second plurality of pieces of geometry when rendering the geometry at the plurality of GPUs.

### Claim 20 (depends on 19)

The computer system of claim 19, the method further comprising:
providing the information as a hint to a rendering GPU, wherein the rendering GPU is one of the plurality of GPUs,
wherein the information is considered by the rendering GPU if received before rendering of a piece of geometry in the second plurality of pieces of geometry,
wherein the piece of geometry in the second plurality of pieces of geometry is fully rendered at the rendering GPU when the information is received after rendering of the piece of geometry in the second plurality of pieces of geometry begins.

### Claim 21 (depends on 19)

The computer system of claim 19, wherein in the method pieces of geometry in the second plurality of pieces of geometry are assigned evenly or unevenly to the plurality of GPUs.

### Claim 22 (depends on 19)

The computer system of claim 19, the method further comprising:
determining that a first GPU finished rendering the first plurality of pieces of geometry before a second GPU finished rendering the first plurality of pieces of geometry, wherein the first GPU renders one or more pieces of the first plurality of pieces of geometry that overlap any screen region assigned to the first GPU for object rendering, and the second GPU renders one or more pieces of the first plurality of pieces of geometry that overlap any screen region assigned to the second GPU for object rendering;
assigning a first number of the second plurality of pieces of geometry to the first GPU for geometry testing; and
assigning a second number of the second plurality of pieces of geometry to the second GPU for geometry testing,
wherein the first number is higher than the second number.

### Claim 23 (depends on 19)

The computer system of claim 19, wherein in the method the using the information includes:
skipping rendering a piece of geometry in the second plurality of pieces of geometry at a rendering GPU when the information indicates that the piece of geometry does not overlap any screen region assigned to the rendering GPU for object rendering, wherein the rendering GPU is one of the plurality of GPUs.

### Claim 24 (depends on 19)

The computer system of claim 19, the method further comprising:
dividing the second plurality of pieces of geometry between the plurality of GPUs for geometry pretesting,
wherein successive pieces of geometry are processed by different GPUs.

### Claim 25 (depends on 24)

The computer system of claim 24, the method further comprising:
dynamically adjusting the division of the second plurality of pieces of geometry based on performance of each the plurality of GPUs during geometry pretesting.
