ORDER-PRESERVING DISTRIBUTED RASTERIZER
First Claim
1. A method for rendering primitives in parallel, the method comprising:
- receiving primitives in a first order, the primitives encoded as a list of vertex indices;
distributing the primitives for parallel processing in object-space to produce multiple streams, each stream including object-space processed primitive descriptors that represent individual primitives;
routing the multiple streams of object-space processed primitive descriptors based on screen-space positions to produce a first stream of processed primitive descriptors representing primitives that intersect a first portion of a screen and a second stream of processed primitive descriptors representing primitives that intersect a second portion of the screen;
reordering the object-space processed primitive descriptors in the first stream to match the first order, producing a reordered first stream of object-space processed primitive descriptors;
reordering the object-space processed primitive descriptors in the second stream to match the first order, producing a reordered second stream of object-space processed primitive descriptors; and
rasterizing the primitives that intersect the first portion of the screen, and are represented by the first stream of object-space processed primitive descriptors, and the primitives that intersect the second portion of the screen, and are represented by the second stream of object-space processed primitive descriptors, in parallel to produce rasterized pixels of an image.
1 Assignment
0 Petitions
Accused Products
Abstract
One embodiment of the present invention sets forth a technique for rendering graphics primitives in parallel while maintaining the API primitive ordering. Multiple, independent geometry units perform geometry processing concurrently on different graphics primitives. A primitive distribution scheme delivers primitives concurrently to multiple rasterizers at rates of multiple primitives per clock while maintaining the primitive ordering for each pixel. The multiple, independent rasterizer units perform rasterization concurrently on one or more graphics primitives, enabling the rendering of multiple primitives per system clock.
49 Citations
20 Claims
-
1. A method for rendering primitives in parallel, the method comprising:
-
receiving primitives in a first order, the primitives encoded as a list of vertex indices; distributing the primitives for parallel processing in object-space to produce multiple streams, each stream including object-space processed primitive descriptors that represent individual primitives; routing the multiple streams of object-space processed primitive descriptors based on screen-space positions to produce a first stream of processed primitive descriptors representing primitives that intersect a first portion of a screen and a second stream of processed primitive descriptors representing primitives that intersect a second portion of the screen; reordering the object-space processed primitive descriptors in the first stream to match the first order, producing a reordered first stream of object-space processed primitive descriptors; reordering the object-space processed primitive descriptors in the second stream to match the first order, producing a reordered second stream of object-space processed primitive descriptors; and rasterizing the primitives that intersect the first portion of the screen, and are represented by the first stream of object-space processed primitive descriptors, and the primitives that intersect the second portion of the screen, and are represented by the second stream of object-space processed primitive descriptors, in parallel to produce rasterized pixels of an image. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to render primitives in parallel, by performing the steps of:
-
receiving primitives in a first order, the primitives encoded as a list of vertex indices; distributing primitive descriptors that represent the primitives for parallel processing in object-space to produce multiple streams, each stream including object-space processed primitive descriptors; routing the multiple streams of object-space processed primitive descriptors based on screen-space positions to produce a first stream of processed primitive descriptors representing primitives that intersect a first portion of a screen and a second stream of processed primitive descriptors representing primitives that intersect a second portion of the screen; reordering the object-space processed primitive descriptors in the first stream to match the first order, producing a reordered first stream of object-space processed primitive descriptors; reordering the object-space processed primitive descriptors in the second stream to match the first order, producing a reordered second stream of object-space processed primitive descriptors; and rasterizing the primitives that intersect the first portion of the screen, and are represented by the first stream of object-space processed primitive descriptors, and the primitives that intersect the second portion of the screen, and are represented by the second stream of object-space processed primitive descriptors, in parallel to produce rasterized pixels of an image.
-
-
12. A system for rendering primitives in parallel, the system comprising:
a processor configured to; receive primitives in a first order, the primitives encoded as a list of vertex indices; distribute primitive descriptors that represent the primitives for parallel processing in object-space to produce multiple streams, each stream including object-space processed primitive descriptors; route the multiple streams of object-space processed primitive descriptors based on screen-space positions to produce a first stream of processed primitive descriptors representing primitives that intersect a first portion of a screen and a second stream of processed primitive descriptors representing primitives that intersect a second portion of the screen; reorder the object-space processed primitive descriptors in the first stream to match the first order, producing a reordered first stream of object-space processed primitive descriptors; reorder the object-space processed primitive descriptors in the second stream to match the first order, producing a reordered second stream of object-space processed primitive descriptors; and rasterize the primitives that intersect the first portion of the screen, and are represented by the first stream of object-space processed primitive descriptors, and the primitives that intersect the second portion of the screen, and are represented by the second stream of object-space processed primitive descriptors, in parallel to produce rasterized pixels of an image. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
Specification