Method and apparatus for loop and branch instructions in a...

Computer graphics processing and selective visual display system – Computer graphic processing system – Graphic command processing

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C345S503000, C345S426000, C345S614000, C345S506000, C712S233000, C712S241000, C712S245000, C712S247000

Reexamination Certificate

active

06825843

ABSTRACT:

BACKGROUND
1. Field of the Invention
The invention is in the field of computer graphics, and more particularly to processing program instructions in a multi-pass graphics pipeline.
2. Description of the Related Art
Current multi-pass data processing methods are exemplified by systems and methods developed for computer graphics. This specialized field includes technology wherein data is processed through a multi-pass pipeline in which each pass typically performs a specific sequence of operations on the data and uses the output of one pass during processing of a subsequent pass. At the end of a first pass the output data is written to memory (local or host). During a subsequent pass the output data from the first pass is read from memory and processed.
Recent advances in graphics processors permit users to program graphics pipeline units using microcoded programs called pixel or shader programs to implement a variety of user defined shading algorithms. Although these graphics processors are able to execute shader programs, the program instructions that the graphics processors are capable of executing do not include loop and branch instructions. As a result, shader programs that repeat instructions, e.g., loop on different sets of data, must include instructions for each loop explicitly. For example, a loop comprised of ten instructions, where the loop is executed five times becomes fifty program instructions without a loop instruction compared with eleven instructions (ten plus the loop instruction) with a loop instruction. Longer shader programs required more storage resources (host or local memory) and require more bandwidth to download from a host memory system to a local graphics memory.
For the foregoing reasons, there is a need for a graphics system that supports the execution of loop instructions.
SUMMARY
The present invention is directed to a system and method that satisfies the need for supporting the execution of loop instructions. Providing support for the execution of loop instructions enables users to write more efficient shader programs requiring fewer lines of code to implement the same function and therefore less memory is needed to store the shader programs. The present invention also provides the ability to execute branch instructions.
Various embodiments of the invention include a graphics subsystem comprising a programmable shader including an instruction processing unit, a fragment selector, a program counter unit, and a loop count unit. The instruction processing unit converts shader program instructions and outputs a sequence of converted program instructions based upon available resources in the programmable shader. The fragment selector selects fragments, under control of the instruction processing unit, from a total number of fragments. The program counter unit computes and outputs a current program counter and the loop count unit computes and outputs a current loop count, each under control of the instruction processing unit. Additionally, the invention can include a host processor, a host memory, and a system interface configured to interface with the host processor.
The programmable shader optionally includes a program instruction buffer configured to store a portion of the program instructions comprising the shader program, under control of the instruction processing unit.
The current program counter, indicating the program instruction that is being executed, is stored in the program counter unit. A program counter computation unit calculates a computed program counter using the current program counter. A selector selects between a value output by the instruction processing unit and the computed program counter to determine a new current program counter. Likewise, the current loop count, indicating the loop iteration that is being executed, is stored in the loop count unit. A loop count computation unit calculates a computed loop count using the current loop count. A selector selects between an initial loop count and the computed loop count to determine a new current loop count.
Some embodiments of the system further comprise a read interface to read the program instructions from a graphics memory. The shader program instructions include loop and/or branch instructions and the current program counter can specify a location in local memory or in the program instruction buffer. Furthermore, the invention includes support for executing nested loop instructions. The current loop count can be used by the instruction processing unit as an index to access a storage resource or can be output by the instruction processing unit to graphics processing units within the programmable shader and used to read and/or write storage resources accessed by those graphics processing units. Still further, the current loop count can be output by the instruction processing unit for each fragment, pixel, sample, or group of fragments, pixels, or samples.
Some embodiments of the present invention include a method of executing shader program instructions in a programmable shader comprising the steps of (a) selecting a set of fragments from a total number of fragments, (b) converting a number of the program instructions and outputting a sequence of converted program instructions comprising a portion of the shader program based upon available resources in the programmable shader, (c) processing the selected fragments by executing the sequence of converted program instructions, (d) repeating steps (b) and (c) until all of the portions of the shader program are executed, and (e) repeating steps (a), (b), (c) and (d) until the total number of fragments are processed. The program instructions can include branch and/or loop instructions where a loop instruction specifies a set of instructions to be executed a number of iterations. Additionally, the method can use a computing system to execute the shader program instructions. Furthermore, the method can include receiving an initial loop count that specifies the number of iterations. Still further, a current loop count can be selected from the initial loop count and a computed loop count and stored, where the computed loop count is calculated using a previous current loop count. The current loop count is stored prior to the execution of a nested loop instruction. The method can include reading the program instructions from a local memory or a local storage resource. The method can also include outputting the current loop count for each processed fragment, pixel, sample, or group of processed fragments, pixels, or samples.


REFERENCES:
patent: 5793374 (1998-08-01), Guenter et al.
patent: 6198488 (2001-03-01), Lindholm et al.
patent: 6236413 (2001-05-01), Gossett et al.
patent: 6646653 (2003-11-01), San et al.
patent: 6657624 (2003-12-01), Olano
patent: 2002/0130874 (2002-09-01), Baldwin
patent: 2002/0174318 (2002-11-01), Stuttard et al.
patent: 2003/0020741 (2003-01-01), Boland et al.
patent: 2003/0117391 (2003-06-01), Olano
patent: 2003/0177343 (2003-09-01), Magoshi
patent: 2003/0217112 (2003-11-01), Emmot
W. Mark and K. Proudfoot. The F-Buffer: A Rasterization-Order FIFO Buffer for Multi-Pass Rendering. In SIGGRAPH/Eurographics Graphics Hardware Workshop 2001, pp. 1-7.*
E. Chan, R. Ng, P. Sen, K. Proudfoot, and P. Hanranhan. Efficient Partitioning of Fragment Shaders for Multipass Rendering on Programmable Graphics Hardware. In Graphics Hardware. 2002, pp. 1-11.*
Peercy, Mark S., Marc Alano, John Airey, and P. Jeffery Ungar, “Interactive Multi-Pass Programmable Shading”, Proceedings of SIGGRAPH 2000 (New Orleans, Louisiana, Jul. 23-28, 2000). In Computer Graphics, Annual Conference Series, ACM SIGGRAPH, 2000.
Olano, Marc and Anselmo Lastra, “A Shading Language on Graphics Hardware: The PixelFlow Shading System”, Proceedings of SIGGRAPH 98 (Orlando, Florida, Jul. 19-24, 1998). In Computer Graphics, Annual Conference Series, ACM SIGGRAPH, 1998.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Method and apparatus for loop and branch instructions in a... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Method and apparatus for loop and branch instructions in a..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Method and apparatus for loop and branch instructions in a... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-3340367

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.