IP Library Granted Patent US 12,710,979
Granted Patent B2
US 12,710,979 · App. 17/851,519 · Granted Aug 18, 2026

Scheduling processing in a ray tracing system

Inventors: Alistair Goudie (Hertfordshire, GB); Panagiotis Velentzas (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06F9/4881G06T15/005G06T15/06
View Patent ↗
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 12,710,979
App. No.
17/851,519
Granted
Aug 18, 2026
Kind
B2
Abstract

A method of scheduling processing in a ray tracing system gathers child rays into a child task, assigns priority to the child task on the basis that one or more child rays of the child task are derived from a task to which priority has been assigned, and schedules the child task for processing in preference to one or more other tasks to be scheduled to which priority has not been assigned.

Claims (51)

1 . A method of scheduling processing in a ray tracing system, the method comprising:

assigning primary priority to a first parent task;

processing the first parent task so as to emit at least one child ray;

processing a second parent task to which primary priority has not been assigned so as to emit at least one child ray;

gathering child rays into a child task, wherein said gathering comprises gathering, into the child task:

one or more child rays emitted by the first parent task to which primary priority has been assigned; and

one or more child rays emitted by the second parent task to which primary priority has not been assigned;

assigning primary priority to the child task on the basis that one or more child rays of the child task are derived from the first parent task to which primary priority has been assigned;

determining whether to allocate a flag to any of the child rays of the child task, wherein flag is allocated to each of one or more child rays of the child task on the basis that they are derived from the second parent task to which primary priority has not been assigned, wherein the flag allocated to each of said one or more child rays of the child task is for subsequent use in determining whether to assign a secondary priority to one or more grandchild tasks into which one or more grandchild rays derived from the child task are gathered; and

scheduling the child task for processing in preference to one or more other tasks to be scheduled to which primary priority has not been assigned.

2 . The method of claim 1 , further comprising scheduling the first parent task for processing in preference to one or more other tasks to be scheduled to which primary priority has not been assigned.

3 . The method of claim 1 , wherein the first parent task is a primary task.

4 . The method of claim 1 , wherein one or more parent rays of the first parent task are derived from a primary task to which primary priority has been assigned.

5 . The method of claim 3 , wherein a plurality of primary tasks are active in the ray tracing system at a particular time.

6 . The method of claim 5 , further comprising assigning primary priority to one or more primary tasks of the plurality of primary tasks in dependence on the relative age of each of the primary tasks.

7 . The method of claim 5 , further comprising assigning primary priority to multiple primary tasks of the plurality of primary tasks, wherein the number of primary tasks that, at the particular time, are active in the ray tracing system to which primary priority can be assigned is limited to a predefined number.

8 . The method of claim 3 , wherein a primary task is a task that does not itself have a parent task.

9 . The method of claim 3 , wherein a primary task is a task implementing a ray generation shader so as to launch one or more primary rays.

10 . The method of claim 1 , further comprising:

processing the child task so as to emit one or more grandchild rays;

gathering one or more grandchild rays emitted by the child task in respect of said one or more child rays to which the flag has been allocated into a grandchild task, none of the rays gathered into the grandchild task being derived from a primary task to which primary priority has been assigned;

assigning a secondary priority to the grandchild task; and

scheduling the grandchild task for processing in preference to one or more other tasks to be scheduled to which neither primary priority, nor secondary priority, has been assigned.

11 . The method of claim 10 , wherein scheduling the grandchild task for processing comprises scheduling one or more other tasks to which primary priority has been assigned in advance of the grandchild task to which secondary priority has been assigned.

12 . The method of claim 1 , further comprising, prior to scheduling a task to which primary priority has not been assigned, delaying for a period of time without scheduling said task.

13 . The method of claim 12 , further comprising, if a task to which primary priority has been assigned becomes available for scheduling during the period of time, scheduling the task to which primary priority has been assigned in preference to the task to which primary priority has not been assigned.

14 . The method of claim 12 , wherein the period of time is adaptive in dependence on the amount of memory available to the ray tracing system for storage of intermediate data relating to tasks present in the ray tracing system.

15 . The method of claim 1 , further comprising:

providing a first queue for tasks to which primary priority has been assigned and a second queue for tasks to which primary priority has not been assigned; and

scheduling tasks for processing from the second queue only when no tasks are present in the first queue.

16 . The method of claim 1 , wherein each task comprises a plurality of instances of a shader program corresponding to a respective plurality of rays for which the shader program is to be executed.

17 . A ray tracing system configured to process rays, wherein:

the ray tracing system comprises task scheduling logic and processing logic, the ray tracing system being configured to: assign primary priority to a first parent task;

process the first parent task so as to emit a child ray;

process a second parent task to which primary priority has not been assigned so as to emit at least one child ray;

gather child rays into a child task, wherein gathering child rays into the child task comprises gathering, into the child task:

one or more child rays emitted by the first parent task to which primary priority has been assigned; and

one or more child rays emitted by the second parent task to which primary priority has not been assigned;

assign primary priority to the child task on the basis that one or more child rays of the child task are derived from the first parent task to which primary priority has been assigned;

determine whether to allocate a flag to any of the child rays of the child task, wherein a flag is allocated to each of one or more child rays of the child task on the basis that they are derived from the second parent task to which primary priority has not been assigned, and wherein the flag allocated to each of said one or more child rays of the child task is for subsequent use in determining whether to assign a secondary priority to one or more grandchild tasks into which one or more grandchild rays derived from the child task are gathered; and

schedule the child task for processing in preference to one or more other tasks to be scheduled to which primary priority has not been assigned.

18 . A non-transitory computer readable storage medium having stored thereon computer readable instructions that, when executed at a computer system, cause the computer system to perform a method of scheduling processing in a ray tracing system, the method comprising:

assigning primary priority to a first parent task;

processing the first parent task so as to emit at least one child ray;

processing a second parent task to which primary priority has not been assigned so as to emit at least one child ray;

gathering child rays into a child task, wherein said gathering comprises gathering, into the child task:

one or more child rays emitted by the first parent task to which primary priority has been assigned; and

one or more child rays emitted by the second parent task to which primary priority has not been assigned;

assigning primary priority to the child task on the basis that one or more child rays of the child task are derived from the first parent task to which primary priority has been assigned;

determining whether to allocate a flag to any of the child rays of the child task, wherein a flag is allocated to each of one or more child rays of the child task on the basis that they are derived from the second parent task to which primary priority has not been assigned, wherein the flag allocated to each of said one or more child rays of the child task is for subsequent use in determining whether to assign a secondary priority to one or more grandchild tasks into which one or more grandchild rays derived from the child task are gathered; and

scheduling the child task for processing in preference to one or more other tasks to be scheduled to which primary priority has not been assigned.

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 Nov 4, 2022
From: GOUDIE, ALISTAIR; VELENTZAS, PANAGIOTIS
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 061663/0191 →
Priority Claims (1)
EP 21386040 · Jun 29, 2021 · regional
Continuity (1)
Related Publication 20230016927A1 · Jan 19, 2023
References Cited (9)
US 9607426B1 · Peterson · 2017 [cited by examiner]
US 20130222402A1 · Peterson · 2013 [cited by examiner]
US 20140101278A1 · Raman · 2014 [cited by examiner]
US 20160071312A1 · Laine · 2016 [cited by examiner]
US 20200043218A1 · Vaidyanathan et al. · 2020 [cited by applicant]
US 20200089528A1 · Gutierrez et al. · 2020 [cited by applicant]
US 20210216368A1 · Gutierrez · 2021 [cited by examiner]
Davis et al., “A review of priority assignment in real-time systems,” Journal of Systems Architecture, vol. 65, Apr. 14, 2016, pp. 64-82, XP029526977. [cited by applicant]
Yagel et al., “Priority-driven ray tracing,” Journal of Visualization and Computer Animation, vol. 8, No. 1, Jan. 1, 1997, pp. 17-32, XP002467277. [cited by applicant]