Method and apparatus for multithreaded processing of data in a programmable graphics processor
DC CAFCFirst Claim
1. A method of rendering a scene using a graphics processor comprising:
- configuring a multithreaded processing unit within the graphics processor to enable processing of samples independent of an order in which the samples are received;
processing the samples independent of the order in which the samples are received by the multithreaded processing unit to render at least a portion of the scene; and
configuring the multithreaded processing unit to disable processing of samples independent of an order in which the samples are received to minimize visual artifacts in the rendered scene by preventing the occurrence of position hazards.
1 Assignment
Litigations
1 Petition
Accused Products
Abstract
A graphics processor and method for executing a graphics program as a plurality of threads where each sample to be processed by the program is assigned to a thread. Although threads share processing resources within the programmable graphics processor, the execution of each thread can proceed independent of any other threads. For example, instructions in a second thread are scheduled for execution while execution of instructions in a first thread are stalled waiting for source data. Consequently, a first received sample (assigned to the first thread) may be processed after a second received sample (assigned to the second thread). A benefit of independently executing each thread is improved performance because a stalled thread does not prevent the execution of other threads.
200 Citations
33 Claims
-
1. A method of rendering a scene using a graphics processor comprising:
-
configuring a multithreaded processing unit within the graphics processor to enable processing of samples independent of an order in which the samples are received; processing the samples independent of the order in which the samples are received by the multithreaded processing unit to render at least a portion of the scene; and configuring the multithreaded processing unit to disable processing of samples independent of an order in which the samples are received to minimize visual artifacts in the rendered scene by preventing the occurrence of position hazards. - View Dependent Claims (2, 3, 4, 33)
-
-
5. A graphics processor for multithreaded execution of program instructions comprising:
-
at least one multithreaded processing unit configured to receive samples in a first order to be processed by program instructions associated with at least one thread including; a scheduler configured to receive the program instructions, determine availability of source data, and schedule the program instructions for execution to process the samples in a second order independent of the first order; a resource tracking unit configured to track the availability of the source data; and a dispatcher configured to output the program instructions in the second order to be executed by the at least one multithreaded processing unit. - View Dependent Claims (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A computing system comprising:
-
a host processor; a host memory, the host memory storing programs for the host processor; a system interface configured to interface with the host processor; and a graphics processor for multithreaded execution of program instructions Including; at least one multithreaded processing unit configured to receive samples in a first order to be processed by program instructions associated with at least one thread including; a scheduler configured to receive the program instructions, determine availability of source data, and schedule the program instructions for execution in a second order independent of the first order; a resource tracking unit configured to track the availability of the source data; and a dispatcher configured to output the program instructions in the second order to be executed by the at least one multithreaded processing unit. - View Dependent Claims (18, 19)
-
-
20. A method of processing a first program instruction associated with a first thread and a second program instruction associated with a second thread comprising:
-
receiving a first sample to be processed by the first program instruction associated with the first thread before receiving a second sample to be processed by the second program instruction associated with the second thread; determining that first source data required to process the first program instruction are not available; determining that second source data required to process the second program instruction are available; and dispatching the second program instruction to process the second sample in an execution unit prior to dispatching the first program instruction to process the first sample in the execution unit. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27)
-
-
28. A method of using a function call to configure a graphics processor comprising:
-
detecting that a multithreaded processing unit within the graphics processor supports processing of samples independent of an order in which the samples are received for at least one sample type; issuing a function call to configure the multithreaded processing unit to enable processing of samples independent of an order in which the samples are received for the at least one sample type; and ending the function call during rendering of an output image to disable processing of samples independent of the order In which they are received to prevent image artifacts due to position hazards. - View Dependent Claims (29, 30, 31, 32)
-
Specification