Techniques for passing dependencies in an application programming interface API includes identifying a plurality of passes of execution commands. For each set of passes, wherein one pass is a destination pass and the other pass is a source pass to each other, one or more dependencies, of one or more dependency types, are determined between the execution commands of the destination pass and the source pass. Pass objects are then created for each identified pass, wherein each pass object records the execution commands and dependencies between the corresponding destination and source passes.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A computer system method comprising: receiving descriptions of a plurality of passes comprising sets of passes; for each set of passes, wherein a first pass of the set is a destination pass and a second pass of the set is a source pass respectively; determining one or more dependencies of one or more dependency types between commands of the destination pass and the source pass; creating pass objects that record the commands and the determined dependencies between the corresponding destination and source passes; and submitting the commands for execution according to the corresponding pass objects.
A computer system method organizes graphics/compute commands into passes and manages dependencies between them. It receives descriptions of multiple passes, grouped into sets where one pass is a destination and another is a source. For each set, it determines dependencies (of types like execution order or data consistency) between the destination and source pass commands. It then creates "pass objects," each recording commands and dependencies for a pass. Finally, it submits the commands for execution, using the pass objects to enforce proper ordering and data handling.
2. The method according to claim 1 , wherein the one or more dependency types comprise execution dependencies, cache dependencies, and tiling dependencies.
The method for managing graphics/compute command dependencies (as described in claim 1) uses dependency types that include: execution dependencies (ensuring correct command order), cache dependencies (managing data consistency in caches), and tiling dependencies (related to pixel correspondence between passes). This allows the system to optimize performance by handling data sharing and synchronization efficiently between rendering or compute stages.
3. The method according to claim 2 , wherein a tiling dependency is a Boolean value indicating whether there is a one-to-one pixel correspondence between source and destination passes.
The method for managing graphics/compute command dependencies (as described in claim 2) uses a tiling dependency to indicate whether there is a direct, pixel-to-pixel relationship between the source and destination passes. This tiling dependency is represented as a Boolean value. A "true" value signifies a one-to-one pixel mapping, enabling optimizations that leverage spatial coherence between passes.
4. The method according to claim 2 , wherein a tiling dependency includes a Boolean value indicating whether there is an approximate one-to-one pixel correspondence between the source pass and the destination pass, and wherein there are a plurality of filter values indicating the size of a neighborhood of when there is not an approximate one-to-one pixel correspondence.
The method for managing graphics/compute command dependencies (as described in claim 2) uses a tiling dependency which includes a boolean to indicate an *approximate* one-to-one pixel correspondence between the source and destination passes. Additionally, it uses filter values to specify the size of the neighborhood considered when the pixel correspondence isn't exact, accounting for effects like blurring or sampling. This allows for looser tiling dependencies that can still be optimized for performance.
5. The method according to claim 2 , wherein the one or more dependencies are specified by one or more of a source mask, a destination mask, a flush mask and an invalidation mask.
In the method for managing graphics/compute command dependencies (as described in claim 2), dependencies between passes are specified using masks. These masks include a source mask (specifying which parts of the source pass are relevant to the dependency), a destination mask (specifying the affected parts of the destination pass), a flush mask (forcing memory writes to a coherent memory region), and an invalidation mask (invalidating cache lines). These masks provide fine-grained control over dependency management.
6. The method according to claim 5 , wherein the source mask and destination mask indicate sets of stages of execution of a graphics pipeline or compute pipeline.
In the method (as described in claim 5), the source and destination masks used to specify dependencies indicate sets of stages within a graphics pipeline (e.g., vertex shader, fragment shader) or a compute pipeline. This allows dependencies to be defined at the level of individual pipeline stages, enabling precise control over data flow and synchronization during rendering or computation.
7. The method according to claim 5 , wherein the flush mask indicates a memory access type to be flushed to a coherent memory.
In the method for managing graphics/compute command dependencies (as described in claim 5), the flush mask specifies a memory access type (e.g., read, write) that needs to be flushed to coherent memory. This ensures that data written by one pass is visible to subsequent passes, resolving potential data consistency issues caused by caching.
8. The method according to claim 5 , wherein the invalidate mask indicates a memory access type to have its cache lines invalidated.
In the method for managing graphics/compute command dependencies (as described in claim 5), the invalidate mask indicates a specific memory access type for which cache lines should be invalidated. This forces the system to fetch the most recent data from memory, preventing stale data from being used in subsequent passes.
9. The method according to claim 1 , wherein each pass object includes information about inputs including one or more of dependencies, barriers and preserved buffers.
In the method for managing graphics/compute command dependencies (as described in claim 1), each pass object stores information about the pass's inputs. This input information includes dependencies on other passes, memory barriers (ensuring proper synchronization), and buffers that need to be preserved between passes.
10. The method according to claim 1 , wherein each pass object includes information about outputs including one or more of render targets, discarded buffers and resolved buffers.
In the method for managing graphics/compute command dependencies (as described in claim 1), each pass object contains information about the pass's outputs. This output information includes render targets (where the rendered output is stored), buffers that are no longer needed and can be discarded, and buffers that need to be resolved (e.g., multisampled buffers).
11. The method according to claim 1 , wherein one or more pass objects includes information about a tiling state, including 1:1 pixel mapping, filter width and memory footprint.
In the method for managing graphics/compute command dependencies (as described in claim 1), one or more pass objects include information about a tiling state. This tiling state information can include whether there is a 1:1 pixel mapping between the source and destination, a filter width used for approximate mapping, and an estimate of the memory footprint. This allows the system to optimize memory access and improve performance when tiling is used.
12. One or more non-transient computing device readable media storing computing device executable instructions that when executed by one or more processing units perform a method comprising: receiving descriptions of passes comprising sets of passes; for each set of passes, wherein a first pass of the set is a destination pass and a second pass of the set is a source pass respectively; determining one or more dependencies of one or more dependency types between commands of the destination pass and the source pass; creating pass objects that record the rendering commands and the determined dependencies between the corresponding destination and source passes; and submitting the rendering commands for execution according to the corresponding pass objects.
A computer-readable medium stores instructions that, when executed, manage dependencies between graphics/compute commands organized into passes. The instructions receive descriptions of multiple passes, grouped into sets where one pass is a destination and another is a source. For each set, they determine dependencies (of types like execution order or data consistency) between the destination and source pass commands. They then create "pass objects," each recording commands and dependencies for a pass. Finally, they submit the commands for execution, using the pass objects to enforce proper ordering and data handling.
13. The method according to claim 12 , wherein the one or more dependency types comprise execution dependencies, cache dependencies, and tiling dependencies.
The computer-readable medium (as described in claim 12) uses dependency types that include: execution dependencies (ensuring correct command order), cache dependencies (managing data consistency in caches), and tiling dependencies (related to pixel correspondence between passes). This allows the system to optimize performance by handling data sharing and synchronization efficiently between rendering or compute stages.
14. The method according to claim 13 , wherein a tiling dependency is a Boolean value indicating whether there is a one-to-one pixel correspondence between source and destination passes.
The computer-readable medium (as described in claim 13) uses a tiling dependency to indicate whether there is a direct, pixel-to-pixel relationship between the source and destination passes. This tiling dependency is represented as a Boolean value. A "true" value signifies a one-to-one pixel mapping, enabling optimizations that leverage spatial coherence between passes.
15. The method according to claim 13 , a tiling dependency includes a Boolean value indicating whether there is an approximate one-to-one pixel correspondence between the source pass and the destination pass, and wherein there are a plurality of filter values indicating the size of a neighborhood of when there is not an approximate one-to-one pixel correspondence.
The computer-readable medium (as described in claim 13) uses a tiling dependency which includes a boolean to indicate an *approximate* one-to-one pixel correspondence between the source and destination passes. Additionally, it uses filter values to specify the size of the neighborhood considered when the pixel correspondence isn't exact, accounting for effects like blurring or sampling. This allows for looser tiling dependencies that can still be optimized for performance.
16. The method according to claim 12 , wherein the one or more dependencies are specified by one or more of a source mask, a destination mask, a flush mask and an invalidation mask.
In the computer-readable medium (as described in claim 12), dependencies between passes are specified using masks. These masks include a source mask (specifying which parts of the source pass are relevant to the dependency), a destination mask (specifying the affected parts of the destination pass), a flush mask (forcing memory writes to a coherent memory region), and an invalidation mask (invalidating cache lines). These masks provide fine-grained control over dependency management.
17. The method according to claim 16 , wherein the flush mask indicates a memory access type to be flushed to a coherent memory.
In the computer-readable medium (as described in claim 16), the flush mask specifies a memory access type (e.g., read, write) that needs to be flushed to coherent memory. This ensures that data written by one pass is visible to subsequent passes, resolving potential data consistency issues caused by caching.
18. The method according to claim 16 , wherein the invalidate mask indicates a memory access type to have its cache lines invalidated.
In the computer-readable medium (as described in claim 16), the invalidate mask indicates a specific memory access type for which cache lines should be invalidated. This forces the system to fetch the most recent data from memory, preventing stale data from being used in subsequent passes.
19. The method according to claim 12 , wherein each pass object includes information about inputs including one or more of dependencies, barriers and preserved buffers.
In the computer-readable medium (as described in claim 12), each pass object stores information about the pass's inputs. This input information includes dependencies on other passes, memory barriers (ensuring proper synchronization), and buffers that need to be preserved between passes.
20. The method according to claim 12 , wherein each pass object includes information about outputs including one or more of render targets, discarded buffers and resolved buffers.
In the computer-readable medium (as described in claim 12), each pass object contains information about the pass's outputs. This output information includes render targets (where the rendered output is stored), buffers that are no longer needed and can be discarded, and buffers that need to be resolved (e.g., multisampled buffers).
21. The method according to claim 12 , wherein one or more pass objects includes information about a tiling state, including 1:1 pixel mapping, filter width and memory footprint.
In the computer-readable medium (as described in claim 12), one or more pass objects include information about a tiling state. This tiling state information can include whether there is a 1:1 pixel mapping between the source and destination, a filter width used for approximate mapping, and an estimate of the memory footprint. This allows the system to optimize memory access and improve performance when tiling is used.
22. A method comprising: receiving commands; identifying a plurality of passes comprising set of passes for the received commands; for each set of-passes, wherein a first pass of the set is a destination pass and a second pass of the set is a source pass respectively; determining one or more dependencies of one or more dependency types between commands of the destination pass and the source pass; creating pass objects for each identified pass, wherein each pass object records the commands and dependencies between the corresponding destination and source passes; and submitting the commands of the plurality of pass objects for execution according to the corresponding pass objects.
A method to manage graphics/compute command execution involves first receiving a sequence of commands. It then identifies multiple execution passes within those commands, arranging them into sets where one pass acts as a destination, and another as the source for dependencies. For each destination/source pass pair, the method determines dependencies between their respective commands, considering dependency types like execution order or data coherency. Pass objects are then created for each identified pass, recording the commands and their dependencies. Finally, the method submits commands for execution according to these pass objects to enforce dependency ordering and optimize resource management.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 16, 2015
August 8, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.