IP Library › Granted Patent US 11,688,122
Granted Patent B2
US 11,688,122 · App. 17/591,166 · Granted Jun 27, 2023

Order independent asynchronous compute and streaming for graphics

Inventors: Devan Burke (Portland, OR); Adam T. Lake (Portland, OR); Jeffery S. Boles (Folsom, CA); John H. Feit (Folsom, CA); Karthik Vaidyanathan (Berkeley, CA); Abhishek R. Appu (El Dorado Hills, CA); Joydeep Ray (Folsom, CA); Subramaniam Maiyuran (Gold River, CA); Altug Koker (El Dorado Hills, CA); Balaji Vembu (Folsom, CA); Murali Ramadoss (Folsom, CA); Prasoonkumar Surti (Folsom, CA); Eric J. Hoekstra (Latrobe, CA); Gabor Liktor (San Francisco, CA); Jonathan Kennedy (Bristol, GB); Slawomir Grajewski (Gdansk, PL); Elmoustapha Ould-Ahmed-Vall (Chandler, AZ)
Assignee: Intel Corporation
G06T15/005G06F9/4881G06T15/04G06T15/80G06T17/10G06T17/20
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 11,688,122
App. No.
17/591,166
Granted
Jun 27, 2023
Kind
B2
Abstract

An embodiment of an electronic processing system may include an application processor, persistent storage media communicatively coupled to the application processor, and a graphics subsystem communicatively coupled to the application processor. The system may include one or more of a draw call re-orderer communicatively coupled to the application processor and the graphics subsystem to re-order two or more draw calls, a workload re-orderer communicatively coupled to the application processor and the graphics subsystem to re-order two or more work items in an order independent mode, a queue primitive included in at least one of the two or more draw calls to define a producer stage and a consumer stage, and an order-independent executor communicatively coupled to the application processor and the graphics subsystem to provide tile-based order independent execution of a compute stage. Other embodiments are disclosed and claimed.

Claims (58)

1. At least one non-transitory computer readable medium, comprising a set of instructions, which when executed by a computing device, cause the computing device to:

determine an order dependency between two or more draw calls;

re-order the two or more draw calls based on the determined order dependency; and

re-order two or more work items in an order independent mode, wherein the order independent mode is made in response to a guarantee of memory dependency, when the guarantee is made for a particular phase of rendering in a first mode of operation and for an entire application in a different second mode of operation.

2. The at least one non-transitory computer readable medium of claim 1 , wherein the set of instructions, which when executed by the computing device, cause the computing device to:

provide tile-based order independent execution after performing the re-order of the two or more draw calls; and

perform a full screen resolve pass to resolve one or more out-of-order issues caused in the order independent mode, wherein the full screen resolve pass is performed after performance of the tile-based order independent execution.

3. The at least one non-transitory computer readable medium of claim 1 , wherein the set of instructions, which when executed by the computing device, cause the computing device to:

determine a resource requirement and data address range for the two or more draw calls.

4. The at least one non-transitory computer readable medium of claim 1 , wherein the set of instructions, which when executed by the computing device, cause the computing device to:

determine that no data dependency is violated when the two or more draw calls are reordered; and

schedule draw calls that use same address ranges next to each other in response to a determination that no data dependency is violated when the two or more draw calls are reordered, wherein scheduling includes re-ordering the two or more draw calls to ensure that a draw call that uses data produced by another draw call is directly re-ordered after the another draw call.

5. The at least one non-transitory computer readable medium of claim 1 , wherein the set of instructions, which when executed by the computing device, cause the computing device to:

determine a work split for the two or more work items; and

re-order the two or more work items based on the determined work split.

6. The at least one non-transitory computer readable medium of claim 1 , wherein the set of instructions, which when executed by the computing device, cause the computing device to:

include a queue primitive in at least one of the two or more draw calls to define a producer stage and a consumer stage; and

alternate execution of the producer stage and the consumer stage in accordance with the queue primitive.

7. The at least one non-transitory computer readable medium of claim 1 , wherein the set of instructions, which when executed by the computing device, cause the computing device to:

dispatch work asynchronously on a tile basis to a render context and a compute context.

8. A method of re-ordering draw calls, comprising:

determining an order dependency between two or more draw calls;

re-ordering the two or more draw calls based on the determined order dependency; and

re-ordering two or more work items in an order independent mode, wherein the order independent mode is made in response to a guarantee of memory dependency, when the guarantee is made for a particular phase of rendering in a first mode of operation and for an entire application in a different second mode of operation.

9. The method of claim 8 , further comprising:

providing tile-based order independent execution after performing the re-order of the two or more draw calls; and

performing a full screen resolve pass to resolve one or more out-of-order issues caused in the order independent mode, wherein the full screen resolve pass is performed after performance of the tile-based order independent execution.

10. The method of claim 8 , further comprising:

determining a resource requirement and data address range for the two or more draw calls.

11. The method of claim 8 , further comprising:

determining that no data dependency is violated when the two or more draw calls are reordered; and

scheduling draw calls that use same address ranges next to each other in response to a determination that no data dependency is violated when the two or more draw calls are reordered, wherein scheduling includes re-ordering the two or more draw calls to ensure that a draw call that uses data produced by another draw call is directly re-ordered after the another draw call.

12. The method of claim 8 , further comprising:

determining a work split for the two or more work items; and

re-ordering the two or more work items based on the determined work split.

13. The method of claim 8 , further comprising:

including a queue primitive in at least one of the two or more draw calls to define a producer stage and a consumer stage; and

alternating execution of the producer stage and the consumer stage in accordance with the queue primitive.

14. The method of claim 8 , further comprising:

dispatch work asynchronously on a tile basis to a render context and a compute context.

15. An apparatus for graphics data processing, the apparatus comprising:

a memory, the memory including executable program instructions for a graphics driver, which when executed by one or more processors, cause the one or more processors to:

determine an order dependency between two or more draw calls;

re-order the two or more draw calls based on the determined order dependency; and

re-order two or more work items in an order independent mode, wherein the order independent mode is made in response to a guarantee of memory dependency, when the guarantee is made for a particular phase of rendering in a first mode of operation and for an entire application in a different second mode of operation.

16. The apparatus of claim 15 , wherein the executable program instructions, which when executed by the one or more processors, cause the one or more processors to:

determine a resource requirement and data address range for the two or more draw calls.

17. The apparatus of claim 15 , wherein the executable program instructions, which when executed by the one or more processors, cause the one or more processors to:

determine that no data dependency is violated when the two or more draw calls are reordered; and

schedule draw calls that use same address ranges next to each other in response to a determination that no data dependency is violated when the two or more draw calls are reordered, wherein scheduling includes re-ordering the two or more draw calls to ensure that a draw call that uses data produced by another draw call is directly re-ordered after the another draw call.

18. The apparatus of claim 15 , wherein the executable program instructions, which when executed by the one or more processors, cause the one or more processors to:

determine a work split for the two or more work items; and

re-order the two or more work items based on the determined work split.

19. The apparatus of claim 15 , wherein the executable program instructions, which when executed by the one or more processors, cause the one or more processors to:

include a queue primitive in at least one of the two or more draw calls to define a producer stage and a consumer stage; and

alternate execution of the producer stage and the consumer stage in accordance with the queue primitive.

20. The apparatus of claim 15 , wherein the executable program instructions, which when executed by the one or more processors, cause the one or more processors to:

dispatch work asynchronously on a tile basis to a render context and a compute context.

Continuity (3)
Continuation 16887439 · May 29, 2020
Continuation 15489177 · Apr 17, 2017
Related Publication 20220262059A1 · Aug 18, 2022