# US 2014/0152675 A1 · Load Balancing for Optimal Tessellation Performance

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

- Number: US 2014/0152675 A1
- Document ID: US20140152675A1
- Status: Published application
- Kind: A1
- Application number: 13/705,479
- Filed: 2012-12-05
- Published: 2014-06-05
- Earliest claimed: 2012-12-05
- Assignees: Advanced Micro Devices, Inc.
- Applicants: Advanced Micro Devices, Inc.
- Inventors: Todd E. MARTIN; Mangesh Nijasure; Jason Carroll; Randy W. Ramsey; Brian A. Buchner
- Web page: https://patentgrep.com/patent/US20140152675A1

## CPC

- G06T 15/005: {General purpose rendering architectures}
- G06T 17/20: Finite element generation, e.g. wire-frame surface description, {tesselation}
- G09G 5/363: {Graphics controllers}
- G06T 2210/52: Parallel processing
- G09G 2360/06: Use of more than one graphics processor to process data before displaying to one or more screens
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G09G: ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION (arrangements for transferring data between digital computers and displays G06F3/14; static indicating arrangements comprising an association of a number of separate sources or light control cells G09F9/00; static indicating arrangements comprising integral associations of a number of light sources H01J, H01K, H10H, H05B33/12; scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission, details thereof H04N1/00)

## Abstract

A system, method and a computer-readable medium for load balancing patch processing pre-tessellation are provided. The patches for drawing objects on a display screen are distributed to shader engines for parallel processing. Each shader engine generates tessellation factors for a patch, wherein a value of generated tessellation factors for the patch is unknown prior to distribution. The patches are redistributed to the shader engines pre-tessellation to load balance the shader engines for processing the patches based on the value of tessellation factors in each patch.

## Claims

### Claim 1

A system comprising:
a work distributor configured to:
redistribute patches to shader engines pre-tessellation to load balance the shader engines for processing the patches based on a value of tessellation factors in the patch.

### Claim 2 (depends on 1)

The system of claim 1, wherein the work distributor is further configured to:
distribute the patches configured to draw objects on a display screen to the shader engines configured to parallel process, each of the shader engines configured to generate the tessellation factors for a patch, wherein the value of the generated tessellation factors for the patch is unknown prior to distribution.

### Claim 3 (depends on 1)

The system of claim 1, wherein each of the shader engines is further configured to:
redistribute the patches into one or more thread groups;
generate the tessellation factors for the patches in the one or more thread groups; and
store the tessellation factors in a memory accessible to the work distributor for redistribution of the patches in the one or more thread groups based on the generated tessellation factors in the patch.

### Claim 4 (depends on 3)

The system of claim 3, wherein to perform the redistributing of the patches the work distributor is further configured to:
retrieve thread group information for each thread group in the one or more thread groups processed on the shader engine, the thread group information including tessellation information for the patches in each thread group;
determine the value of tessellation factors associated with the patch based on the thread group information;
combine the patches for processing on the shader engines based on the value of tessellation factors in the patch; and
distribute the combined patches to the shader engines.

### Claim 5 (depends on 4)

The system of claim 4, wherein the work distributor is further configured to combine the patches until the value of tessellation factors in the combined patches reaches a tessellation factor threshold.

### Claim 6 (depends on 4)

The system of claim 4, wherein to combine the patches the work distributor is further configured to estimate a number of primitives generated by the tessellation factors for the patch based on at least a tessellation type and the value of tessellation factors.

### Claim 7 (depends on 4)

The system of claim 4, wherein the shader engine is further configured to:
receive the combined patches from the work distributor subsequent to the redistribution; and
process the combined patches, wherein the shader engine that generated tessellation factors for the combined patches is different from the shader engine that processes the combined patches subsequent to the redistribution.

### Claim 8 (depends on 3)

The system of claim 3, wherein the redistributing of the patches the work distributor is further configured to:
retrieve a thread group information for a thread group in the one or more thread groups processed on the shader engines, the thread group information including tessellation information for the patches in the thread group; and
for each patch:
determine if the value of tessellation factors associated with the patch based on the thread group information is higher than the tessellation factor threshold;
dividing the patch into a plurality of sub-patches based on a tessellation type associated with the patch based on the determining; and
distribute the plurality of sub-patches to the shader engines for parallel processing.

### Claim 9 (depends on 1)

The system of claim 1, wherein the work distributor is configured to maintain the patch processing order of the patches on the shader engines before and after distributing and redistributing the patches to the shader engines.

### Claim 10

A method comprising:
redistributing the patches to the shader engines pre-tessellation to load balance the shader engines for processing the patches based on the value of tessellation factors in the patch.

### Claim 11 (depends on 10)

The method of claim 10, further comprising:
distributing the patches for drawing objects on a display screen to the shader engines for parallel processing, each of the shader engines generating the tessellation factors for a patch, wherein the value of the generated tessellation factors for the patch is unknown prior to distribution.

### Claim 12 (depends on 10)

The method of claim 10, further comprising:
redistribute the patches into one or more thread groups;
generating the tessellation factors for the patches in the one or more thread groups; and
storing the tessellation factors in a memory accessible to a work distributor for redistribution of the patches in the one or more thread groups based on the generated tessellation factors in the patch.

### Claim 13 (depends on 12)

The method of claim 12, wherein the redistributing patches further comprises:
retrieving a thread group information for each thread group in the one or more thread groups processed on a shader engine, the thread group information including tessellation information for the patches in each thread group;
determining a value of tessellation factors associated with the patch based on the thread group information;
combining the patches for processing on the shader engines based on the value of tessellation factors in the patch; and
distributing the combined patches to the shader engines.

### Claim 14 (depends on 13)

The method of claim 13, wherein the combining further comprises combining patches until the value of tessellation factors in the combined patches reaches a tessellation factor threshold.

### Claim 15 (depends on 13)

The method of claim 13, wherein the combining further comprises estimating a number of primitives generated by the tessellation factors for the patch based on at least a tessellation type and the value of tessellation factors.

### Claim 16 (depends on 13)

The method of claim 13, further comprising:
receiving the combined patches from a work distributor subsequent to the redistribution; and
processing the combined patches, wherein the shader engine that generated tessellation factors for the combined patches is different from the shader engine that processes the combined patches subsequent to the redistribution.

### Claim 17 (depends on 13)

The method of claim 13, wherein the redistributing further comprises:
retrieving a thread group information for a thread group in the one or more thread groups processed on the shader engines, the thread group information including tessellation information for the patches in the thread group; and
for each patch:
determining if the value of tessellation factors associated with the patch based on the thread group information is higher than the tessellation factor threshold;
dividing the patch into a plurality of sub-patches based on a tessellation type associated with the patch based on the determination; and
distributing the plurality of sub-patches to the shader engines for parallel processing.

### Claim 18 (depends on 10)

The method of claim 10, further comprising:
maintaining the patch processing order of the patches on the shader engines before and after distributing and redistributing the patches to the shader engines.

### Claim 19

A computer-readable storage medium having instructions stored thereon, execution of which by a processor cause the processor to perform the operations comprising:
redistributing the patches to the shader engines pre-tessellation to load balance the shader engines for processing the patches based on the value of tessellation factors in the patch.

### Claim 20 (depends on 19)

The computer-readable storage medium of claim 19, further comprising instructions that cause the processor to perform the operations comprising:
distributing the patches for drawing objects on a display screen to the shader engines for parallel processing, each of the shader engines generating the tessellation factors for a patch, wherein the value of the generated tessellation factors for the patch is unknown prior to distribution.

### Claim 21 (depends on 19)

The computer-readable storage medium of claim 19, further comprising instructions that cause the processor to perform the operations comprising:
redistributing the patches into one or more thread groups;
generating the tessellation factors for the patches in the one or more thread groups; and
storing the tessellation factors in a memory accessible to a work distributor for redistribution of the patches in the one or more thread groups based on the generated tessellation factors in the patch.

### Claim 22 (depends on 21)

The computer-readable storage medium of claim 21, further comprising instructions that cause the processor to perform the operations for redistributing patches, the operations comprising:
retrieving a thread group information for each thread group in the one or more thread groups processed on a shader engine, the thread group information including tessellation information for the patches in each thread group;
determining a value of tessellation factors associated with the patch based on the thread group information;
combining the patches for processing on the shader engines based on the value of tessellation factors in the patch; and
distributing the combined patches to the shader engines.

### Claim 23 (depends on 19)

The computer-readable storage medium of claim 19, further comprising instructions configured to perform the operations comprising:
maintaining the patch processing order of the patches on the shader engines before and after distributing and redistributing the patches to the shader engines.
