Method and system for implementing a multi-threaded API stream replay
First Claim
1. A non-transitory computer-readable medium having computer-executable instructions for causing a computer system to perform a method for debugging, comprising:
- receiving a request for capturing a frame generated by a graphics application implementing a plurality of application threads for executing a plurality of function calls generating said frame, wherein said plurality of function calls is associated with one or more thread specific resources used at an entry point of said capturing;
for each application thread, determining a corresponding state at said entry point for each corresponding thread specific resource utilized;
for each application thread, establishing a corresponding capture stream, wherein application threads and capture streams exist in a one-to-one relationship;
for each application thread, capturing executed function calls into said corresponding capture stream;
ordering a plurality of captured function calls captured across said plurality of application threads in the order they were executed by said graphics application;
for each capture stream, establishing a corresponding replay thread, wherein capture streams and replay threads exist in a one-to-one relationship; and
replaying a plurality of captured function calls in the order they were captured, wherein a captured function call is executed in a corresponding replay thread based on which application thread executed said captured function call.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for debugging and includes receiving a request for capturing a frame generated by a graphics application implementing application threads executing function calls. The function calls are associated with one or more thread specific resources used at the beginning of the capturing process. For each application thread, a corresponding state is determined for each thread specific resource utilized, and a corresponding capture stream is established. For each application thread, executed function calls are captured into the corresponding capture stream. A plurality of captured function calls is arranged in the order they were executed by the graphics application. For each capture stream, a corresponding replay thread is established. Application threads, capture streams, and replay threads exist in a one-to-one-to-one relationship. Captured function calls are replayed in order, wherein each captured function call is executed in a corresponding replay thread based on which application thread executed the captured function call.
-
Citations
20 Claims
-
1. A non-transitory computer-readable medium having computer-executable instructions for causing a computer system to perform a method for debugging, comprising:
-
receiving a request for capturing a frame generated by a graphics application implementing a plurality of application threads for executing a plurality of function calls generating said frame, wherein said plurality of function calls is associated with one or more thread specific resources used at an entry point of said capturing; for each application thread, determining a corresponding state at said entry point for each corresponding thread specific resource utilized; for each application thread, establishing a corresponding capture stream, wherein application threads and capture streams exist in a one-to-one relationship; for each application thread, capturing executed function calls into said corresponding capture stream; ordering a plurality of captured function calls captured across said plurality of application threads in the order they were executed by said graphics application; for each capture stream, establishing a corresponding replay thread, wherein capture streams and replay threads exist in a one-to-one relationship; and replaying a plurality of captured function calls in the order they were captured, wherein a captured function call is executed in a corresponding replay thread based on which application thread executed said captured function call. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system for debugging, comprising:
-
a multi-threaded processor for executing a plurality of function calls generated by a graphics application in association with a frame; a graphics application programming interface (API) configured to execute said plurality of function calls to generate said frame suitable for display, wherein said plurality of function calls is associated with one or more thread specific resources used at an entry point of capturing said frame; an interception layer configured to intercept said plurality of function calls between said graphics application and said graphics API in response to a request for capturing said frame, wherein said interception layer is configured to capture for each thread, a corresponding state for each corresponding thread specific resource utilized at said entry point; a plurality of capture streams each configured to capture executed function calls from a corresponding application thread, wherein application threads and capture streams exist in a one-to-one relationship; and a plurality of replay threads each configured to replay corresponding captured function calls originally executed on a corresponding application thread, wherein capture streams and replay threads exist in a one-to-one relationship; and an arbiter configured for ordering a plurality of captured function calls captured across said plurality of application threads in the order they were executed by said graphics application, and wherein said arbiter replays a plurality of captured function calls in the order they were captured. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A computer system comprising:
-
a processor; and memory coupled to said processor and having stored therein instructions that, if executed by said computer system, cause said computer system to execute a method of debugging comprising; receiving a request for capturing a frame generated by a graphics application implementing a plurality of application threads for executing a plurality of function calls generating said frame, wherein said plurality of function calls is associated with one or more thread specific resources used at an entry point of said capturing; for each thread, determining a corresponding state at said entry point for each corresponding thread specific resource utilized; for each application thread, establishing a corresponding capture stream, wherein application threads and capture streams exist in a one-to-one relationship; for each thread, capturing executed function calls into said corresponding capture stream; ordering a plurality of captured function calls captured across said plurality of application threads in the order they were executed by said graphics application; for each capture stream establishing a corresponding replay thread, wherein capture streams and replay threads exist in a one-to-one relationship; and replaying a plurality of captured function calls in the order they were captured, wherein a captured function call is executed in a corresponding replay thread based on which application thread executed said captured function call. - View Dependent Claims (17, 18, 19, 20)
-
Specification