Patent US6421053B1 successfully refreshed from Google Patents.
← Back to Patent Explorer
US6421053B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Block rendering method for a graphics subsystem

Assignee: International Business Machines Corp
•
Filing: 1999-05-24
•
Granted: 2002-07-16
•
Expires: 2019-05-24
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Primitives are divided into span groups of 2N spans, and then processed in M×N blocks of pixels, with the pixel blocks preferably being as close to square as possible and therefore optimized for small spans and texture mapping. Each span group is rendered block-by-block in a serpentine manner from an initial or entry block, first in a direction away from the long edge of the primitive and then in a direction towards the long edge. The interpolators include a one-deep stack onto which pixel and texel information for the initial or entry block are pushed before rendering any other blocks within the span group. Blocks or pairs of blocks within different span subgroups of the span group are then alternately rendered, such that rendering zig-zags between the span subgroups as it proceeds to the end of the span group. Once the first end of a span group is reached, the values for the initial or entry block are popped from the stack and rendering resumes from the initial or entry block in the opposite direction, but in the same serpentine or zig-zag manner, until the other end of the span group is reached. The next span group, if any, is rendered starting with a block adjacent to the last block rendered in the previous span group. Memory bandwidth utilization between the pixel and texel cache and the frame buffer is thus improved, together with texel reuse during texture mapping, to reduce the total number of pixel and texel fetches required to render the primitive.

Inventors

  • 👤 Charles Ray Johns
  • 👤 John Samuel Liberty
  • 👤 Brad William Michael
  • 👤 John Fred Spannaus

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 11:39
CPC Classifications
G; G06; G06T; G06T11/00; G06T15/00; G06T15/50; G06T15/80

Claims Analysis

Total Claims: 27
Claim 1
Independent Claim 170 words
A method of rendering a primitive, comprising: dividing a primitive into groups of spans each including at least two subgroups of spans; rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive, including alternately rendering blocks of pixels from different subgroups of spans while rendering along the spans by the steps of: (a) rendering a block of pixels within a subgroup of spans; (b) rendering a block of pixels adjacent a block of pixels last rendered and within a same subgroup of spans as the block of pixels last rendered; (c) rendering a block of pixels within a different subgroup of spans adjacent the block of pixels rendered in step (b); (d) repeating steps (b) and (c) until all blocks of pixels within a current group of spans in a current rendering direction have been rendered; and rendering each group of spans along the spans from the entry in a direction toward the long edge of the primitive.
Claim 2
Independent Claim 170 words
A method of rendering a primitive, comprising: dividing a primitive into groups of spans each including at least two subgroups of spans; rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive, including alternately rendering blocks of pixels from different subgroups of spans while rendering along the spans by the steps of: (a) rendering a block of pixels within a subgroup of spans; (b) rendering a block of pixels adjacent a block of pixels last rendered and within a same subgroup of spans as the block of pixels last rendered; (c) rendering a block of pixels within a different subgroup of spans adjacent the block of pixels rendered in step (b); (d) repeating steps (b) and (c) until all blocks of pixels within a current group of spans in a current rendering direction have been rendered; and rendering each group of spans along the spans from the entry in a direction toward the long edge of the primitive.
Claim 3
Independent Claim 59 words
A method of rendering a primitive, comprising: dividing a primitive into groups of four spans; rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive; and rendering each group of spans along the spans from the entry in a direction toward the long edge of the primitive.
Claim 4
Independent Claim 59 words
A method of rendering a primitive, comprising: dividing a primitive into groups of four spans; rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive; and rendering each group of spans along the spans from the entry in a direction toward the long edge of the primitive.
Claim 5
Dependent Claim 59 words
The method of claim 2 , wherein the step of rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive further comprises: alternately rendering one or two 4×2 blocks of pixels from different subgroups of two spans within a group of spans while rendering along the spans.
Claim 6
Dependent Claim 106 words
The method of claim 1 , wherein the step of rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive further comprises: rendering a first group of spans from a block of pixels including a vertex of the primitive in the direction away from the long edge; and after rendering the first group of spans from the block of pixels including the vertex in the direction away from the long edge, rendering the first group of spans, if necessary, from the block of pixels including the vertex in the direction towards the long edge.
Claim 7
Dependent Claim 106 words
The method of claim 4 , wherein the step of rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive further comprises: rendering each group of spans subsequent to the first group of spans: from an entry block of pixels adjacent a last block of pixels rendered in a previous group of spans in the direction away from the long edge; and after rendering from the entry block of pixels in the direction away from the long edge, rendering from the entry block of pixels in the direction towards the long edge if necessary.
Claim 8
Dependent Claim 44 words
The method of claim 1 , wherein the step of rendering each group of spans along the spans from an entry in a direction away from a long edge of the primitive further comprises: rendering each group of spans in M×N blocks of pixels.
Claim 9
Dependent Claim 32 words
The method of claim 6 , wherein the step of rendering each group of spans in M×N blocks of pixels further comprises: rendering each group of spans in 4×2 blocks of pixels.
Claim 10
Independent Claim 127 words
A system for rendering a primitive, comprising: blocking control logic dividing a primitive into span groups each including 2N spans, and further dividing the span groups into M×N blocks of pixels; and one or more interpolators rendering each span group along the spans from an entry in a direction away from a long edge of the primitive and then from the entry in a direction toward the long edge of the primitive, wherein the one or more interpolators render the span groups block-by-block in a serpentine order along the spans each span group includes two subgroups of N spans and the one or more interpolators render no more than two blocks within a given span subgroup before rendering at least one block within a different span subgroup.
Claim 11
Independent Claim 127 words
A system for rendering a primitive, comprising: blocking control logic dividing a primitive into span groups each including 2N spans, and further dividing the span groups into M×N blocks of pixels; and one or more interpolators rendering each span group along the spans from an entry in a direction away from a long edge of the primitive and then from the entry in a direction toward the long edge of the primitive, wherein the one or more interpolators render the span groups block-by-block in a serpentine order along the spans each span group includes two subgroups of N spans and the one or more interpolators render no more than two blocks within a given span subgroup before rendering at least one block within a different span subgroup.
Claim 12
Dependent Claim 22 words
The system of claim 8 , further comprising: a graphics adapter containing the blocking control logic and the one or more interpolators.
Claim 13
Dependent Claim 45 words
The system of claim 8 , further comprising: a data processing system including a display; and a graphics adapter within the data processing system and containing the blocking control logic and the one or more interpolators, the graphics adapter rendering the primitive for the display.
Claim 14
Dependent Claim 43 words
The system of claim 8 , wherein the one or more interpolators each include an at least one-deep stack onto which pixel and texel information for an entry block in a span group is pushed before rendering other blocks within the span group.
Claim 15
Dependent Claim 25 words
The system of claim 11 , wherein the entry block is an initial block within a first span group including a vertex for the primitive.
Claim 16
Dependent Claim 28 words
The system of claim 11 , wherein the entry block is an block within a span group adjacent to a last rendered block within a previous span group.
Claim 17
Dependent Claim 72 words
The system of claim 11 , wherein the pixel and texel information for the entry block is popped from the stack after rendering the span group from the entry block in the direction away from the long edge to a first end of the span group and before rendering the span group from the entry block in the direction towards the long edge to a second, opposite end of the span group.
Claim 18
Dependent Claim 101 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive instructions for logically dividing the primitive into M×N blocks of pixels and into groups of blocks, wherein each group of blocks includes two parallel rows of blocks spanning the primitive.
Claim 19
Dependent Claim 101 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive instructions for logically dividing the primitive into M×N blocks of pixels and into groups of blocks, wherein each group of blocks includes two parallel rows of blocks spanning the primitive.
Claim 20
Dependent Claim 106 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive including instructions for rendering no more than two blocks within one row of blocks in the group of blocks before rendering at least one block within another row of blocks in the group of blocks.
Claim 21
Dependent Claim 106 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive including instructions for rendering no more than two blocks within one row of blocks in the group of blocks before rendering at least one block within another row of blocks in the group of blocks.
Claim 22
Dependent Claim 91 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive including instructions for zig-zagging between two rows of blocks in the group of blocks while rendering the group of blocks.
Claim 23
Dependent Claim 91 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive including instructions for zig-zagging between two rows of blocks in the group of blocks while rendering the group of blocks.
Claim 24
Dependent Claim 142 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive wherein the instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive further comprise: instructions for rendering the entry block first in the group of blocks; and instructions for pushing pixel and texel information for the entry block onto a stack before rendering any other block within the group of blocks.
Claim 25
Dependent Claim 142 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; and instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive wherein the instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive further comprise: instructions for rendering the entry block first in the group of blocks; and instructions for pushing pixel and texel information for the entry block onto a stack before rendering any other block within the group of blocks.
Claim 26
Dependent Claim 127 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive; and instructions for popping pixel and texel information for the entry block from a stack after rendering all blocks in the group of blocks from the entry block in the direction away from the long edge and before rendering any block within the group of blocks from the entry block in the direction towards the long edge.
Claim 27
Dependent Claim 127 words
A computer program product within a computer usable medium for rendering a primitive, comprising: instructions for rendering a group of blocks within a primitive block-by-block in a serpentine order from an entry block in a direction away from a long edge of the primitive; instructions for rendering the group of blocks block-by-block in the serpentine order from the entry block in a direction towards the long edge of the primitive; and instructions for popping pixel and texel information for the entry block from a stack after rendering all blocks in the group of blocks from the entry block in the direction away from the long edge and before rendering any block within the group of blocks from the entry block in the direction towards the long edge.

References Cited (Backward Citations)

US5287442A Cited
US5446836A Cited
US6285376B1 Cited
US5598517A Cited
US6236408B1 Cited
US5701405A Cited
US6252608B1 Cited
US5870105A Cited
US5758128A Cited
US6016151A Cited
US6094201A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2005-07-15 2006-01-14 2006-07-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2009-07-15 2010-01-14 2010-07-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2013-07-15 2014-01-14 2014-07-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag