IP Library Patent Application 17940104
Patent Application
App. No. 17/940,104

OVERLAPPED GEOMETRY PROCESSING IN A MULTICORE GPU

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
17/940,104
Abstract

A multicore graphics processing unit (GPU) and a method of operating a GPU having at least a first core and a second core. A client driver writes a series of geometry commands in the command buffer, along with associated dependency data that indicates the extent to which correct execution of the geometry commands is dependent on the completion of execution of other commands. The first core reads a first geometry command from the command buffer and executes it. The second core reads a second geometry command from the command buffer. The second core determines that the second geometry command is not dependent on the results of the first geometry command, and, in response, executes the second geometry command.

Claims (54)

1 . A method of operating a multicore graphics processing unit (GPU) configured to perform tile-based rendering, to enable overlapping processing of geometry commands, the multicore GPU comprising at least a first core and a second core, the method comprising:

providing a series of geometry commands in a command buffer, the geometry commands having associated dependency data indicating which of the geometry commands are dependent on the completion of other commands;

reading a first geometry command from the command buffer;

starting to execute the first geometry command using the first core;

reading a second geometry command from the command buffer;

after reading the second geometry command from the command buffer, determining that the second geometry command is not dependent on the results of the first geometry command; and

in response, starting to execute the second geometry command using the second core.

2 . The method of claim 1 , comprising maintaining a write offset, denoting the position in the command buffer at which new commands should be written by a client driver.

3 . The method of claim 1 , comprising maintaining:

a first read offset, denoting the position at which the first core should read the next geometry command that it is to execute;

a second read offset, denoting the position at which the second core should read the next geometry command that it is to execute; and

a dependency offset, denoting the earliest dependency in the series of geometry commands that has not yet been satisfied.

4 . The method of claim 3 , wherein determining that the second geometry command is not dependent on the results of the first geometry command comprises:

advancing the second read offset until it reaches either the second geometry command or the dependency offset;

comparing the second read offset with the dependency offset;

if the second read offset is less than the dependency offset, determining that the second geometry command is not dependent on the results of the first geometry command; and

otherwise, determining that the second geometry command is dependent on the results of the first geometry command.

5 . The method of claim 3 , further comprising, when the first core finishes executing the first geometry command:

advancing the first read offset beyond the second read offset, until it reaches either a third geometry command or the dependency offset;

if the first read offset reaches the third geometry command, determining that the third geometry command is not dependent on the results of the second geometry command; and

in response, executing the third geometry command using the first core.

6 . The method of claim 1 , wherein the command buffer also includes at least one dependency indicator, indicating that a geometry command following the dependency indicator is dependent on another command.

7 . The method of claim 6 , further comprising advancing the dependency offset (Doff) to the earliest dependency indicator in the command buffer whose dependency is not yet satisfied.

8 . The method of claim 1 , wherein the command buffer also includes at least one update command; and

wherein the at least one update command is executed by the core that has just executed the earliest geometry command in the series that was, immediately prior to the completion of its execution, the earliest unexecuted geometry command in the series.

9 . The method of claim 1 , wherein

the first core is configured to write the results of geometry commands that it executes to a first parameter buffer; and

the second core is configured to write the results of geometry commands that it executes to a second parameter buffer, separate from the first parameter buffer.

10 . The method of claim 9 , wherein each parameter buffer is subdivided and used by multiple renders.

11 . The method of claim 1 , wherein both the first core and one or more other cores are configured to execute fragment processing commands based on the results of geometry commands executed by the first core.

12 . The method of claim 11 , wherein each of the one or more other cores is configured to, when it finishes processing the results of a geometry command executed by the first core, signal this to the first core; and

wherein the first core is configured to, in response to finishing the fragment processing commands and receiving the signal from each core of said at least one other core, free the memory that was used to store the respective results.

13 . The method of claim 1 , wherein:

a first affinity is set for the first geometry command such that, if the first core is interrupted while executing the first geometry command, the first geometry command will only resume processing on the first core; and

a second affinity is set for the second geometry command such that, if the second core is interrupted while executing the second geometry command, the second geometry command will only resume processing on the second core.

14 . The method of claim 1 , wherein the first and second geometry commands relate to different frames.

15 . The method of claim 1 , wherein the first and second geometry commands relate to the same frame.

16 . The method of claim 1 , wherein the command buffer is a circular command buffer.

17 . A multicore graphics processing unit (GPU) configured to enable overlapping processing of geometry commands during tile-based rendering, the multicore GPU comprising at least a first core and a second core, and a command buffer;

wherein the command buffer is configured to hold a series of geometry commands written by a client driver, the geometry commands having associated dependency data indicating which of the geometry commands are dependent on the completion of other commands;

wherein the first core is configured to:

read a first geometry command from the command buffer, and

start to execute the first geometry command; and

wherein the second core is configured to:

read a second geometry command from the command buffer,

after reading the second geometry command from the command buffer, determine that the second geometry command is not dependent on the results of the first geometry command, and

in response, start to execute the second geometry command.

18 . The multicore GPU of claim 17 , wherein:

the first core is configured to maintain a first read offset, denoting the position at which the first core should read the next geometry command that it is to execute;

the second core is configured to maintain a second read offset, denoting the position at which the second core should read the next geometry command that it is to execute; and

the GPU is configured to maintain a dependency offset, denoting the earliest dependency in the series of geometry commands that has not yet been satisfied.

19 . The multicore GPU of claim 17 , wherein the command buffer also includes at least one update command,

wherein each of the first core and the second core is configured to execute the at least one update command only if that core has just executed the earliest geometry command in the series that was, immediately prior to its execution, the earliest unexecuted geometry command in the series.

20 . A non-transitory computer readable storage medium having stored thereon computer readable code configured to cause the method of claim 1 to be performed when the code is run.

Assignments (2)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2023
From: NOTTON, CHRISTOPHER
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 065250/0344 →