# US 11,908,039 B2 · Graphics rendering method and apparatus, and computer-readable storage medium

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

- Number: US 11,908,039 B2
- Document ID: US11908039B2
- Status: Granted
- Kind: B2
- Application number: 17/484,523
- Filed: 2021-09-24
- Published: 2022-01-13
- Granted: 2024-02-20
- Earliest claimed: 2019-03-26
- Assignees: Huawei Technologies Co., Ltd.
- Applicants: Huawei Technologies Co., Ltd.
- Inventors: Fan Zhang; Jiangzheng Wu; Xindong Shi; Shu Wang
- Web page: https://patentgrep.com/patent/US11908039B2

## CPC

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

## Abstract

A graphics rendering method includes obtaining, by a central processing unit (CPU), to-be-processed vertex data. The to-be-processed vertex data is vertex data used by a graphics processing unit (GPU) for graphics rendering processing. The method also includes processing, by the CPU, the to-be-processed vertex data to obtain vertex data within a field of view of a user. The method additionally includes sending, by the CPU, the vertex data within the field of view of the user to the GPU for the graphics rendering processing.

## Claims

### Claim 1

A graphics rendering method, comprising:
obtaining, by a central processing unit (CPU), to-be-processed vertex data, wherein the to-be-processed vertex data is vertex data used by a graphics processing unit (GPU) for graphics rendering processing;
determining, by the CPU, an amount of the to-be-processed vertex data is greater than or equal to a first amount threshold;
determining, by the CPU in response to determining the amount of the to-be-processed vertex data is greater than or equal to the first amount threshold, the CPU is to process the to-be-processed vertex data to obtain vertex data within a field of view of a user;
refraining, by the CPU in response to determining the CPU is to process the to-be-processed vertex data, from sending the to-be-processed vertex data to the GPU;
processing, by the CPU, the to-be-processed vertex data in response to determining the CPU is to process the to-be-processed vertex data to obtain the vertex data within the field of view of the user; and
sending, by the CPU, the vertex data within the field of view of the user to the GPU for the graphics rendering processing.

### Claim 2 (depends on 1)

The method according to claim 1, wherein
the obtaining, by the CPU, of the to-be-processed vertex data comprises:
obtaining, by the CPU, the to-be-processed vertex data from a storage module; and
the sending, by the CPU, of the vertex data within the field of view of the user to the GPU for the rendering processing comprises:
storing, by the CPU, the vertex data within the field of view of the user in the storage module, so that the GPU obtains the vertex data within the field of view of the user from the storage module and performs the image rendering processing.

### Claim 3 (depends on 1)

The method according to claim 1, wherein the to-be-processed vertex data is vertex data captured by one draw call instruction used to render one image frame.

### Claim 4 (depends on 1)

The method according to claim 1, wherein the to-be-processed vertex data is vertex data in a local coordinate system, and the processing, by the CPU, of the to-be-processed vertex data to obtain the vertex data within the field of view of the user comprises:
performing, by the CPU, coordinate conversion on the vertex data in the local coordinate system based on auxiliary data to obtain vertex data in a clip coordinate system, wherein the auxiliary data comprises a transformation matrix for performing coordinate transformation on the vertex data in the local coordinate system; and
performing, by the CPU, clipping and removal operations on the vertex data in the clip coordinate system to obtain the vertex data within the field of view of the user.

### Claim 5 (depends on 4)

The method according to claim 4, wherein the auxiliary data comprises a model view projection (MVP) matrix, and the performing, by the CPU, of the coordinate conversion on the vertex data in the local coordinate system based on the auxiliary data to obtain the vertex data in the clip coordinate system comprises:
performing, by the CPU, coordinate conversion on the vertex data in the local coordinate system based on the MVP matrix to obtain the vertex data in the clip coordinate system,
wherein the MVP matrix is a product of a model matrix, a view matrix, and a projection matrix.

### Claim 6 (depends on 1)

The method according to claim 1, wherein the CPU comprises M cores, and the processing, by the CPU, of the to-be-processed vertex data comprises:
based on a determination that the amount of the to-be-processed vertex data is less than a second amount threshold, allocating, by the CPU, the to-be-processed vertex data to a single core in the CPU for processing; or
based on a determination that the amount of the to-be-processed vertex data is greater than or equal to the second amount threshold, allocating, by the CPU, the to-be-processed vertex data to N cores in the CPU for processing,
wherein both M and N are integers greater than 1, and N is less than or equal to M.

### Claim 7 (depends on 6)

The method according to claim 6, wherein a current average load amount of the N cores is less than a current average load amount of the cores included in the M cores that are other than the N cores in the CPU.

### Claim 8 (depends on 6)

The method according to claim 6, wherein the allocating, by the CPU, of the to-be-processed vertex data to the single core in the CPU for processing comprises:
allocating, by the CPU, the to-be-processed vertex data to a core with a smallest current load amount in the CPU for processing.

### Claim 9

A graphics rendering apparatus, comprising a central processing unit (CPU) and a graphics processing unit (GPU), wherein the CPU is configured to:
obtain to-be-processed vertex data, wherein the to-be-processed vertex data is vertex data used by the GPU for graphics rendering processing;
determine an amount of the to-be-processed vertex data is greater than or equal to a first amount threshold;
determine, in response to determining the amount of the to-be-processed vertex data is greater than or equal to a first amount threshold, the CPU is to process the to-be-processed vertex data to obtain vertex data within a field of view of a user;
refrain from sending the to-be-processed vertex data to the GPU in response to determining the CPU is to process the to-be-processed vertex data;
process the to-be-processed vertex data in response to determining the CPU is to process the to-be-processed vertex data to obtain the vertex data within the field of view of the user; and
send the vertex data within the field of view of the user to the GPU for the graphics rendering processing.

### Claim 10 (depends on 9)

The apparatus according to claim 9, wherein the CPU is configured to:
obtain the to-be-processed vertex data from a storage module; and
store the vertex data within the field of view of the user in the storage module, so that the GPU obtains the vertex data within the field of view of the user from the storage module and performs the image rendering processing.

### Claim 11 (depends on 9)

The apparatus according to claim 9, wherein the to-be-processed vertex data is vertex data captured by one draw call instruction used to render image frame.

### Claim 12 (depends on 9)

The apparatus according to claim 9, wherein the to-be-processed vertex data is vertex data in a local coordinate system, and the CPU is configured to:
perform coordinate conversion on the vertex data in the local coordinate system based on auxiliary data to obtain vertex data in a clip coordinate system, wherein the auxiliary data comprises a transformation matrix for performing coordinate transformation on the vertex data in the local coordinate system; and
perform clipping and removal operations on the vertex data in the clip coordinate system to obtain the vertex data within the field of view of the user.

### Claim 13 (depends on 12)

The apparatus according to claim 12, wherein the auxiliary data comprises a model view projection (MVP) matrix, and the CPU is configured to:
perform coordinate conversion on the vertex data in the local coordinate system based on the MVP matrix to obtain the vertex data in the clip coordinate system,
wherein the MVP matrix is a product of a model matrix, a view matrix, and a projection matrix.

### Claim 14 (depends on 9)

The graphics rendering apparatus according to claim 9, wherein the CPU comprises M cores, and the processing of the to-be-processed vertex data comprises:
based on a determination that the amount of the to-be-processed vertex data is less than a second amount threshold, allocating the to-be-processed vertex data to a single core in the CPU for processing; or
based on a determination that the amount of the to-be-processed vertex data is greater than or equal to the second amount threshold, allocating the to-be-processed vertex data to N cores in the CPU for processing,
wherein both M and N are integers greater than 1, and N is less than or equal to M.

### Claim 15 (depends on 14)

The graphics rendering apparatus according to claim 14, wherein a current average load amount of the N cores is less than a current average load amount of the cores included in the M cores that are other than the N cores in the CPU.

### Claim 16

A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by a central processing unit (CPU) and a graphics processing unit (GPU), cause the CPU and the GPU to:
obtain, by the CPU, to-be-processed vertex data, wherein the to-be-processed vertex data is vertex data used by the GPU for graphics rendering processing;
determine, by the CPU, an amount of the to-be-processed vertex data is greater than or equal to a first amount threshold;
determine, by the CPU in response to determining the amount of the to-be-processed vertex data is greater than or equal to the first amount threshold, the CPU is to process the to-be-processed vertex data to obtain vertex data within a field of view of a user;
refrain, by the CPU in response to determining the CPU is to process the to-be-processed vertex data, from sending the to-be-processed vertex data to the GPU;
process, by the CPU, the to-be-processed vertex data in response to determining the CPU is to process the to-be-processed vertex data to obtain the vertex data within the field of view of the user; and
send, by the CPU, the vertex data within the field of view of the user to the GPU for the graphics rendering processing.

### Claim 17 (depends on 16)

The non-transitory computer-readable storage medium according to claim 16, wherein
the CPU is caused to obtain the to-be-processed vertex data by:
obtaining the to-be-processed vertex data from a storage module; and
the CPU is caused to send the vertex data within the field of view of the user to the GPU for the rendering processing by:
storing the vertex data within the field of view of the user in the storage module, so that the GPU obtains the vertex data within the field of view of the user from the storage module and performs the image rendering processing.

### Claim 18 (depends on 16)

The non-transitory computer-readable storage medium according to claim 16, wherein the to-be-processed vertex data is vertex data captured by one draw call instruction used to render one image frame.

### Claim 19 (depends on 16)

The non-transitory computer-readable storage medium according to claim 16, wherein the CPU comprises M cores, and the processing, by the CPU, of the to-be-processed vertex data comprises:
based on a determination that the amount of the to-be-processed vertex data is less than a second amount threshold, allocating, by the CPU, the to-be-processed vertex data to a single core in the CPU for processing; or
based on a determination that the amount of the to-be-processed vertex data is greater than or equal to the second amount threshold, allocating, by the CPU, the to-be-processed vertex data to N cores in the CPU for processing,
wherein both M and N are integers greater than 1, and N is less than or equal to M.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium according to claim 19, wherein a current average load amount of the N cores is less than a current average load amount of the cores included in the M cores that are other than the N cores in the CPU.
