throbber
United States Patent [19J
`Griffin et al.
`
`111111111111111111111111111111111111111111111111111111111111111111111111111
`US00588073 7 A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,880,737
`Mar. 9, 1999
`
`(54) METHOD AND SYSTEM FOR ACCESSING
`TEXTURE DATA IN ENVIRONMENTS WITH
`HIGH lATENCY IN A GRAPHICS
`RENDERING SYSTEM
`
`[75]
`
`inventors: Kent E. Griffin, Bellevue; Mark L.
`Kenworthy, Duvall; James E. Veres,
`Woodinville; Joseph W. Chauvin,
`Issaquah; M ichael A. 1belle, Bellevue;
`Howard Good, Seattle, all of Wash.
`
`[73] A'lSignee: Microsoft Corporation, Redmond,
`Wash.
`
`Slater, Mel, '·Segments on Bit-mapped Graphics Displays",
`Software-Practice and Experience, vol. 16(11), pp.
`965-980, Nov. 1986.
`
`Chrysanthou, Y and Slater, M, ''Computing Dynamic
`Changes to BSP Trees", Compwer graphics Forum, vol. II,
`No. 3, Conference Issue, pp. C-32 1 to C-342, Sep. 7-11,
`1992.
`
`Slater, Mel, et al, "Liberation from Rectangle: A Tiling
`Method for Dynamic Modification of Objects on Raster
`Displays", £urographies '88, Confereoce date, Sep. 12-16,
`1988, pp. 381-392, 1988.
`
`[21) Appl. No.: 670,553
`[22] Filed:
`Jun.27, 1996
`
`Related U.S. Application Data
`
`(63] Continuation-in-part of Ser. No. 560,114, Nov. 17, 1995,
`abandoned, and a continuation of Ser. No. 511 ,553, Aug. 4,
`1995, abandoned.
`Int. C l.6
`......................................... ........... . G06T 11/40
`[51]
`[52] U.S. C l . .............................................................. 345/430
`(58] Field of Search ..................................... 345/419-420,
`345/430-431, 433-7, 501-5
`
`[56]
`
`References Citt.>d
`U.S. PATENT DOCUMENTS
`
`4,631,690 12/ 1986 Conbout ct al. ........................ 364/5 18
`4,645,459
`2/ 1987 Graf ct al.
`................................ 434/43
`5,363,475 11/1994 Baker et al. ............................ 345/422
`5,522,018
`5/1996 Takeda et al. .......................... 345/422
`5,563,989 L0/ 1996 Billyard .................................. 345/426
`5,586,234 12/1996 Sakuraba ct al. ....................... 345/430
`1/1997 Duluk, .Jr ................................ 345/ 122
`5,596,686
`1/1997 Watkins .................................. 345/441
`5,598,517
`5,630,043
`5/1997 Ublin ...................................... 345/425
`5,634,850
`6/ 1997 Kitabara ct al. .......................... 463/33
`9/1997 Volk et al. .............................. 345/327
`5,673,401
`5,684,935 11/1997 Demcsa, 111 ct al ................... 345/419
`5,729,669
`5/ 1998 Appleton ................................. 345/422
`OTilER PUBLICATIONS
`Slater, Mel, "An Algorithm to support 3D Interaction on
`Relative ly Low Performance Graphics Systems", Comput.
`& Graphics, vol. 16, No. 3, pp. 311-315, 1992.
`
`(List continued on next page.)
`
`Primary Examiner-Rudolph J. Buche!, Jr.
`Attorney, Agent, or Firm--Klarquist Sparkman Campbell
`Leigh & Wbinston LLP
`
`[57]
`
`ABSTRACT
`
`A system for accessing texture data in a graphics rendering
`system allows texture data to be stored in memories with
`high latency or in a compressed formaL 1be system utilizes
`a texture cache to temporarily store blocks of texture data
`retrieved from an external memory during rendering opera(cid:173)
`tions. ln one implementation, geometric primitives are
`stored in a queue long enough to absorb the latency of
`fetching and possibly decompressing :a texture block. The
`geometric primitives are converted into texture block
`references, and these references are used to fetch texture
`blocks from memory. A rasterizer rasterizes each geometric
`primitives as the necessary texrure data becomes available io
`the texture cache. ln another implementation, geometric
`prim itives are converted imo pixels, including a pixel
`address, color data, and a texture request. These pixels are
`stored in a queue long enough to absorb the latency of a
`texture block fetch. ll1e texture requests are read from the
`queue and used to fetch the appropriate texture blocks. As
`texture data becomes available in the texture cache, tbe
`texture data is sampled as necessary and combined with the
`pixel data read from the queue to compute output pixels.
`
`35 Claims, 26 Drawing Sheets
`
`0001
`
`Volkswagen 1004
`
`

`
`5,880,737
`Page 2
`
`OTI-TER PUBLICATIONS
`
`Slater, Mel, et al, ''Liberation from Flatland: 3D Interaction
`Based on the Desktop Bat", Eurograplzics '91, pp. 209-221,
`1991.
`Deering, "Explorations of Display Interfaces for Virtual
`Reality", IEEE Virtual Reality, 1993 lnteroational Sympo(cid:173)
`sium, pp. 141-147, l993.
`Reichlen, "Sparccbair: A One Hundred Million Pixel Dis(cid:173)
`play", IEEE Virtual Reality, 1993 International Symposium,
`pp. 300-307, May 28, 1993.
`Foley, James D., et at, "Computer Graphics: Principles and
`Practices", Addison-Wesley Publishing Co., 2nd ed. pp.
`806-813,885-921,1990.
`Collaborative work, "Pi.xel-Planes", Pixel Planes Home
`Page, url-hllp://www.cs.unc.edur pxpl/, University of
`North Carolina, pp. 1-25, update, Sep. 26, 1995.
`Oak Technology WARPS Press Releases, "Oak Technology
`Sets New Standard for 3D Realism with Breakthrough
`WARP 5 Chip Architecture", Atlanta, GA, Jun. 19, 1997.
`Bergman, et al "lmage Rendering by Aclaptiw Refinement",
`ACM Siggraph '86, vol. 20, No.4, pp. 29-37, Aug. 18-22,
`1986.
`Chen, Chein-Liang, et al, ·'A Raster Engine for Computer
`Graphics and Image Compositing", Abstract, APCCAS '94,
`IEEE, pp. 103--108, Dec. 5-8, 1994.
`Yoo, Terry S., et at, ''Direct Visualization of Volume Data",
`IEEE Computer Graphics and Applications Magazine, vol.
`12, No. 4, pp. 63--71, Jul. 92.
`Bove, Jr., V. Michael, et a!, "Real-Time Decocting and
`Display of Structured Video", IEEE Multimedia, 1994 inter(cid:173)
`national Conference, pp. 456-462, 1994.
`Heb, Andreas, et at, "Three Dimensional Reconstruction of
`Brains from 2-Deoxyglucosc Serial Section Autoradio(cid:173)
`graphs",Jmage Processing, 1994 international Conference,
`vol. 3, pp. 290-294, 1994.
`Hu, Lincoln, "Computer Graphics in Visual Effects", COM(cid:173)
`PCON Spring '92, IEEE Computer Society inlernational
`Conference, pp. 472-474, L992.
`
`Runyon, Kenneth R., "Advanced Graphics Processor",Digi(cid:173)
`tal Avionics Systems, 1993 Conference, pp. 394-399, 1993.
`Crawfis, Roger A., et at," A Scientific Visualization Synthe(cid:173)
`sizer", Visuali.ztuion, 1991 Conference, pp. 262-267, 1991.
`Haeberli, Paul, et al, ''The Accumulation Buffer: Hardware
`Support for High-Quality Rendering", ACM Computer
`Graphics, vol. 24, No.4, pp. 309-318, Aug. L990.
`Regan, Mallhew and Ronald Pose, ·'Priority Rendering witb
`a Virtual Reality Address Recalculation Pipeline", ACM
`Siggrap!t,
`'94, Computer Grpallics Proceedings, Annual
`Conference Series, pp. 155-162, 1994.
`Regan, Mauhew and Ronald Pose, ''Low Latency Virtual
`Reality Display System", Technical report No. 92/166,
`Monash University, Victoria, Australia. pp. l-13, Sep. 1992.
`Regan, Maubew and Ronald Pose, "A Interactive Graphics
`Display Architecture", IEEE Virwal Reality, 1993 interna(cid:173)
`tional Symposium, pp. 293- 299, 1993.
`Torborg, Jay, et al, "Talisman: Commodity Realtime 3D
`Graphics for the PC",ACM Siggraph, Conference Proceed(cid:173)
`ings, pp. 353-363, Aug. 4-9, 1996.
`Deering, Michael, et at, "Leo: A System for Cost Effective
`3D Shaded Graphics", ACM Siggraph, Conference Proceed(cid:173)
`ings, pp. 101- 108, Aug. l- 6, 1993.
`Akerly, Kurt, " RealityEngine Graphics", ACM Siggrnph,
`Conference Proceeding, pp. 109-116, Aug. 1-6, 1993.
`Mcmillan, Leonard, et a!, "Plenoptic Modeling: An Image(cid:173)
`-Based Rendering System", ACM Siggraph, Conference
`Proceedings, pp. 39-46, Aug. 6-11, 1995.
`Tan, Wee-Chiew, et at, ''Low-Power polygon Renderer for
`Computer Graphics", Application Specific Array Proces(cid:173)
`sors, 1993 International Conference, pp. 200-213, 1993.
`Bae, Seong-Ok, et al, "Patch Rendering: A New Parallel
`Hardware Architecture for Fast Polygon Rendering", Cir(cid:173)
`cuits and Systems, 1991/EEE International Symposium, pp.
`307Q-3073, 1.99 1.
`
`0002
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 1 of 26
`
`5,880,737
`
`100
`
`FIG.l
`
`106
`
`IMAGE
`PREPROCESSOR
`
`104
`
`IMAGE
`PROCESSOR
`
`SYSTEM INTERFACE
`
`110
`
`108
`
`0003
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 2 of 26
`
`5,880,737
`
`FIG. 2
`
`PROCESSOR
`
`132
`
`134
`
`130 I
`
`MEMORY
`CONTROL
`
`MAIN MEMORY
`
`136
`
`BUS
`
`146
`
`144
`
`INPUT DEVICE(S)
`
`IMAGE
`PROCESSING
`HARDWARE
`
`140
`
`0004
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 3 of 26
`
`5,880,737
`
`FIG. 3
`
`160
`
`(
`
`GRAPHICS SUPPORT SOFTWARE
`
`~t
`
`HARDWARE ABSTRACTION LAYER
`
`~t
`
`!'-.
`162
`
`PROCESSOR
`(DSP)
`
`'\.
`166
`
`OTHER IMAGE
`PROCESSING
`HARDWARE
`
`1\1
`64
`
`1)8
`
`0005
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 4 of 26
`
`5,880,737
`
`FIG. 4A
`
`r - - - - - - - -1
`1 SHARED MEMORY 1
`
`I §Mx8
`2Mx8
`I RDRAM RDRAM
`I
`
`._ ___ f____
`
`l---216
`I
`I
`
`:
`
`.-------1
`I
`
`,.
`
`o
`~
`>
`~
`rx:
`)_
`
`212
`)
`
`<3
`0..
`
`ALPHA ~
`1
`I J BUFFER
`I
`I
`.....__... GSPRITE ~
`DAC
`DSP 18 TILER~ ENGINE N
`~l-._..-.---1
`\__ ~ C I ~ COLOR ~ 214
`1 BUFFER
`I
`I
`I
`'---------~I
`L--~-
`
`200
`
`204
`
`176
`
`210
`
`0006
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 5 of 26
`
`5,880,737
`
`FIG. 4B
`
`462
`
`464
`I
`
`RASTERIZER
`
`/468
`
`(410
`
`_1
`
`/466 ~
`
`ANTI-ALIAS! NG
`ENGINE
`
`~~ FRAG. BUFFERS~ PIXEL ENGINE
`
`PIXEL BUFFERS
`
`I
`
`-\
`
`472
`
`0007
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 6 of 26
`
`5,880,737
`
`DETERMINE
`OBJECT AND
`VIEWPOINT
`LOCATIONS
`
`240
`
`SELECT
`POTENTIALLY
`VISIBLE
`OBJECTS
`
`242
`
`DETERMINE
`SPRITE
`CONFIGURATION
`
`FIG. 5A
`
`(.._ __ E_N_D _ __..)No
`
`DIVIDE INTO
`CHUNKS
`
`248
`
`NO
`
`250
`
`YES
`
`TRANSFORM
`CHUNK
`
`252
`
`0008
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 7 of 26
`
`5,880,737
`
`FIG. 5B
`
`RESOLVE PIXELS
`
`258
`
`YES
`
`TILE POLYGON
`
`256
`
`COMPRESS CHUNK
`
`..__ 260
`
`STORE CHUNK
`
`262
`
`0009
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 8 of 26
`
`5,880,737
`
`DETERMINE
`GSPRITE DEPTH
`ORDER
`
`FIG. 6
`
`YES
`
`CALCULATE
`SPRITE
`TRANSFORMS
`
`BUILD SPRITE
`DISPLAY LIST
`
`286
`
`>----NO----.
`
`WAIT FOR
`FRAME SYNC
`
`290
`
`NO
`
`YES
`
`TRANSFORM
`SPRITE
`
`294
`
`COMPOSITE
`PIXELS
`
`298
`
`DISPLAY PIXELS
`
`0010
`
`

`
`00 = ~ ....:a
`
`....:a
`(.N
`
`00
`01
`
`~
`
`0\
`N
`~
`Q
`\0
`
`~
`
`~ ....
`g3
`
`\0
`~
`::c
`~
`~
`
`~
`
`~ = f""f-
`""= ~
`•
`\J).
`0 •
`
`f""f(cid:173)
`
`GSPRITES
`
`TRANSFORMED
`
`DISPLAY
`
`COMPOSITE AND
`
`I
`I
`I
`I
`
`I
`I
`I
`I
`I
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`TRANSFORMS
`
`GSPRITE
`
`CALCULATE
`
`314
`
`GSPRITES
`
`TRANSFORMED
`
`DISPLAY
`
`COMPOSITE AND
`
`I
`I
`I
`I
`I
`
`I
`
`I
`I
`I
`I
`
`TRANSFORMS
`
`GSPRITE
`
`CALCULATE
`
`0011
`
`FRAME
`
`FRAME
`
`FRAME
`
`FRAME
`
`FIG. 7
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 10 of 26
`
`5,880,737
`
`FIG. 8
`
`OSP
`
`336
`
`I
`
`- - - - - - - - - - - - - - - I
`I
`I
`I
`I
`I 1-----7-- _______ I
`
`DSPCORE
`
`:
`
`r 340
`
`MEMORY
`INTERFACE I+-
`
`(342
`
`0::: w
`...J
`i=
`0
`1-
`
`PCIBUS
`•·r"T""""""""f~ CONTROLLER 1+-
`
`338
`
`{344
`
`, {346
`
`DISPLAY
`MMU
`
`DATA
`CONVERTER
`AND FORMATTER
`
`0012
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 11 of 26
`
`5,880,737
`
`382
`
`VERTEX
`CONTROL
`REGISTERS
`
`1'...384
`
`'- 386
`
`SETUP
`ENGINE
`
`L 378
`FIG. 9A
`,--- -- --- - --------------- -?t
`TILER
`· - · - · -SETUP · - · -388 · - · - · - · - · - ·I :
`r · - · - · -
`.
`I
`I
`I
`VERTEX INPUT r+
`r+
`I
`.
`~
`I
`PROCESSOR
`I
`I
`I
`I 394
`-·---· - · -· -· - ·-·-·-·-· . - · - -- - - ·-.,r
`.
`.......... ····-·sc·AN·······:
`CONVERT
`:
`.
`.
`
`TEXTURE
`ADDRESS
`GENERATOR
`
`392)
`
`1+-
`
`_M
`TEXTURE READ
`QUEUE
`~ "'- 390
`COMMAND
`
`&MEMORY h
`
`CONTROL
`
`380
`
`~
`COMPRESSED
`CACHE
`
`416
`
`I
`I
`
`") :
`
`PRIMITIVE
`REGISTERS
`3~6 ~98
`
`.
`
`.
`
`SCAN CONVERT
`ENGINE
`
`.
`.
`.
`L ......... ... ........ -.. -.... . .. . .. .. --..
`
`ENGINE \I 410
`I L\ COMPRESSION A
`....._ ____ __ _
`
`~
`I
`z
`f+--
`(/)
`I
`...J
`0
`w
`I
`z
`Ci)
`h404
`z
`rnw
`I
`<
`wz
`TEXTURE FILTER
`a:::- ~ TEXTURE CACHE ~
`:I:
`I
`Cl..(!)
`ENGINE
`()
`:::Ez
`I
`CJ)
`ow
`::J
`I
`c:c
`()
`w
`:::E
`I
`0
`~
`I ~
`w~ I
`z
`I
`C)
`z
`I
`w
`w
`I
`.....
`I
`D:
`Cl..
`I
`(/)
`(!)
`I
`a: I
`I
`I
`I
`I
`
`I
`
`~2
`
`(412
`
`/
`
`ANTI-ALIASING
`
`(/)
`0
`0
`.....
`
`~
`
`'-
`400
`
`,r
`
`PIXEL
`~
`ENGINE
`
`~6
`
`~
`
`FRAGMENT
`BUFFER($)
`\
`
`PIXEL
`BUFFERS
`\
`408
`
`I
`I
`
`ENGINE
`
`414
`
`- --
`
`0013
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 12 of 26
`
`5,880,737
`
`TILER
`
`SETUP
`
`PROCESSOR
`
`r-+
`
`SETUP
`ENGINE
`
`FIG. 9B
`378
`381
`~--·-·-·-·-·-·-·-·-·-·-·-·--~----~
`I
`l j
`388
`'
`I
`I
`VERTEX
`I
`-t VERTEX INPUT r-+
`CONTROL
`I
`I
`REGISTERS
`I
`I
`I
`~ 395
`'-- 386
`1'...384
`· - ------
`- --·-·-·-·-·-·-·-· - ·-·-· -
`'
`...... sc·AN·······.
`...........
`CONVERT
`
`393 TEXTURE READ
`...__.
`QUEUE
`
`' - -
`
`f
`
`)391
`
`'
`
`+
`COMMAND
`
`CONTROL
`
`TEXTURE CACHE
`CONTROL
`
`380
`
`:
`
`PRIMITIVE
`REGISTERS
`
`396 ~ r398
`
`~
`SCAN CONVERT
`ENGINE
`
`; .... ·•·· ........... ......
`
`TEXTURE
`REFERENCE
`DATA QUEUE
`+
`j-. TEXTURE FILTER
`ENGINE
`I"-
`(
`401
`402
`
`r+
`
`/
`416
`
`I
`
`"J:
`I
`I
`I
`I
`I
`
`(/)
`...J
`w
`z
`z
`<(
`:I:
`u
`en
`=>
`m
`::!
`~
`u.i
`z
`(.!)
`z
`w
`w
`1-
`a:
`a..
`en
`(.!)
`~
`(/)
`c
`0
`1-
`
`& MEMORY 11
`~
`~04 399
`·w
`~
`a.. :I:
`:!u ~ z
`w
`0
`0<(
`:I:
`c;;
`uu
`(..)
`<(
`(/)W
`u
`wz
`a::-
`---+ w
`a..C>
`0::
`:EZ
`=>
`ow
`1-
`u
`X
`w
`w
`c
`1-
`~
`v
`ENGINE ~
`L\ COMPRESSION A
`
`•
`
`'
`
`406
`
`~
`1-
`
`PIXEL
`FRAGMENT ~
`ENGINE
`BUFFER(S)
`
`412 "---
`
`ANTI-ALIASING
`
`'
`
`410
`
`PIXEL
`BUFFERS
`
`' 408
`
`ENGINE
`
`414
`
`~-------------------------1
`
`0014
`
`

`
`l
`l
`VERTEX INPUT
`l ~ PROCESSOR
`I
`I
`I
`I -. -
`I
`I
`I
`I
`:
`
`393 TEXTURE READ
`.._.
`QUEUE
`380
`-,
`
`1
`
`39
`\
`
`•
`}
`COMMAND
`& MEMORY
`I
`CONTROL
`., ) ~'--r-~----'
`0:!!! ~04 ............. .___,
`=eo 4
`O<t
`0()
`
`SETUP
`ENGINE AND
`PRE-
`RASTERIZER
`
`f-+
`
`.
`
`397
`
`:
`
`SCAN CONVERT
`ENGINE
`
`:.'-.. -.. r-.. """'1. • . . - . . - . -. . -. . ....., •• ' •• --' . . . .
`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 13 of 26
`
`5,880,737
`
`TILER
`
`/
`
`378
`
`383
`
`FIG. 9C
`:- r: = :-_-: = -----: =-=--~iru~-:--=---=-3;9 -_-=- :-_--: = :-_-: = -f
`
`f-+
`
`VERTEX
`CONTROL
`REGISTERS
`\.... 387
`i'-.. 384
`. - .-.-.-. -
`. -
`
`. - .-. -
`
`·l
`~ l
`jl
`·1
`II
`.. :.: .:.~.~-~:.:-=-.:.::-.V
`·.·l
`SCAN
`CONVERT
`,.......JL_..=::::::=::=:::::......., ~I
`; I
`PRIMITIVE
`; I
`REGISTERS
`TEXTURE CACHE : ...___.,.--r.....,lr-----' ; I
`396 + rJ98
`~I
`CONTROL
`:
`;1
`'
`
`..
`
`41("
`
`U)
`
`...J w
`z z
`< J:
`0
`U)
`
`:::::1 m :e
`~
`w z
`(!) z
`w
`w
`....
`~
`0..
`U)
`(!)
`
`0..
`U) c
`0 ....
`
`w
`z
`0
`:I:
`0
`U)
`~ ~
`(3
`~ (5 r--+ w _...
`;:ez
`ow
`o:::
`5
`:::::~
`frl
`"""'~ 402
`c
`
`TEXTURE FILTER
`ENGINE
`
`....
`
`(412
`
`PIXEL
`FRAGMENT ~
`ENGINE
`BUFFER(S)
`
`ANTI-ALIASING
`
`'
`
`406
`
`~
`....
`
`PIXEL
`BUFFERS
`
`v
`'
`ENGINE \I 410
`' 408
`
`\
`
`l
`COMPRESSION
`j7t14
`i
`\
`ENGINE
`~------------ - ------------1
`
`0015
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 14 of 26
`
`5,880,737
`
`FIG. 10
`
`SETUP
`PRIMITIVES
`
`H RASTERIZER ~
`417
`
`(
`416
`
`418
`
`..
`TEXTURE
`REFERENCE
`DATA QUEUE
`
`MEMORY
`
`f-+
`
`(
`419
`
`TEXTURE
`BLOCK
`FETCH
`
`(
`420
`
`422 \
`
`r---.
`
`TEXTURE
`CACHE
`
`f-+
`
`TEXTURE
`FILTER
`
`7
`421
`
`,
`
`FILTERED
`TEXTURED
`OUTPUT
`PIXELS
`(
`423
`
`0016
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 15 of 26
`
`5,880,737
`
`FIG. 11
`
`/
`
`426
`
`POST
`PRE-
`SETUP
`PRIMITIVES 1------. RASTERIZER 1---~ RASTERIZER ~
`
`TEXTURE
`BLOCK FETCH
`QUEUE
`
`FILTERED
`TEXTURED
`OUTPUT
`PIXELS
`
`TEXTURE
`MEMORY ~ BLOCK
`FETCH
`\
`429
`
`\
`430
`
`..
`
`TEXTURE
`BLOCK
`CACHE
`\
`431
`
`0017
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 16 of 26
`
`5,880,737
`
`FIG.12A
`
`GSPRITE ENGINE
`
`/442
`
`436
`
`I
`
`r- 440
`I 444
`,---+-------+-------+---,
`I
`I
`rr
`I
`-----:: ,---------------- __ _ -..-~
`I
`I
`
`I
`I
`I
`I
`I
`I
`
`DISPLAY
`CONTROL
`PROCESSOR
`
`f-+
`
`GSPRITE
`HEADER
`REGISTER
`
`f-+
`
`GSPRITE
`HEADER
`DECODER
`
`GSPRITE COMPOSITION SETUP
`
`INTERFACE
`·~ CONTROL
`
`J
`
`c::: w
`
`...J
`~
`:e
`0 c::: u.
`
`1
`
`~ 438
`z
`'/" 450
`0
`c
`w
`(/)
`(/)w
`(/)W
`(/)::I: wz
`c:::-
`wu. c..<!>
`c:::<( ~z
`ow
`~(.)
`(.)
`0
`w
`(.)
`0
`
`\sa~
`
`\
`448
`+
`
`GSPRITE
`CACHE
`
`r446
`GSPRITE
`GSPRITE
`DATA ADDRESS ~ READ QUEUE
`GENERATOR
`r _454~ __ -= ...,
`c:::
`I w
`I
`u.
`IMAGE
`I u.
`I
`PROCESSOR
`;:::)
`I
`ADDRESS
`I GENERATOR
`. I
`L
`I
`I
`I
`
`I
`
`-u.~
`
`GSPRITE
`FILTER
`ENGINE
`
`_l
`
`4~2
`
`I z
`(!)
`I 1-
`I
`(/)
`0
`I
`c..
`:::E
`I
`0
`.J._ (.)
`~0
`I
`I
`1-
`I
`456_j..-
`I IMAGE PROCESSOR!
`L _______ l
`
`_1..
`or
`
`0018
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 17 of 26
`
`5,880,737
`
`FIG. 12B
`
`GSPRITE ENGINE
`
`436
`
`/
`
`440
`
`/
`
`442
`
`/
`
`-.
`
`GSPRITE
`GSPRITE
`HEADER ~ HEADER
`REGISTER
`DECODER
`
`I 1-
`
`-. • INTERFACEf-11 READ
`14
`-
`CONTROL QUEUE
`
`444 I
`~- -- -+ - - --- - - t- - -- --- f--- -I
`I
`I
`DISPLAY
`1
`1
`CONTROL
`I
`1
`I PROCESSOR
`I
`I
`I
`I
`GSPRITE COMPOSITION SETUP
`L_ ---- --- ----- --- ---- - J
`r 447
`DATA A DDRESS
`GENERATOR +-
`(PRE-
`RASTERIZER)
`
`GSPRITE
`QUEUE
`\
`
`\
`
`453
`
`L.....--~--.::......._:---' ~5~~ - v - - - ,
`449
`I
`1
`.----
`....---~-----. I
`I
`IMAGE
`CACHE
`PROCESSOR
`I ~
`1
`451 ............
`CONTROL
`ADDRESS ~~
`1
`1 GENERATOR
`1 ~
`ffi ...J
`r---~·H (RASTERIZER)
`I
`I ~~
`I
`1- ~
`I
`I
`I
`I ~8
`+
`I
`I ~
`I
`GSPRITE
`4
`FILTER ~0
`0
`I
`I
`ENGINE
`456~
`I
`~AGE P~CESSOR:
`
`438
`
`~
`w
`...J
`t=
`::!!!
`0
`~ u.
`
`I ~
`~ 450
`z
`0
`0
`w
`wz __.
`Ci)
`cnw
`cnw
`cn::z::
`wo f---+
`~-
`~<
`a.<!>
`:!!z
`~0
`ow
`0
`0 w
`0
`0
`
`\sa ~
`
`GSPRITE
`CACHE
`
`452 )
`
`457
`
`455
`
`0019
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 18 of 26
`
`5,880,737
`
`FIG. 13
`
`COMPOSITING BUFFER
`
`480
`
`I
`
`f..--484
`
`...
`
`MEMORY
`CONTROL
`
`1 v 488
`
`SCAN LINE
`BUFFERS
`1344x32x24
`
`'-
`
`_..
`
`482 ~
`
`COMPOSITING
`LOGIC
`
`ALPHA BUFFERS
`
`1344x32x8 ~
`486
`
`(
`UJ z
`(!) z
`
`UJ
`UJ
`1-
`~
`c..
`(/)
`(!)
`==
`0
`0::
`LL.
`
`0020
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 19 of 26
`
`5,880,737
`
`514
`
`FIG. 14
`
`DAC
`
`COLOR
`LUT
`
`516
`
`COLOR
`:
`I
`I
`LUT
`___ T __ ...J
`518
`
`526
`
`524
`
`PIXEL DATA
`ROUTING
`
`FROM
`DSP
`
`CLOCK
`GENERATOR
`
`0021
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 20 of 26
`
`5,880,737
`
`FIG. 15A
`
`START
`
`VERTEX INPUT
`PROCESSOR
`PARSES THE
`INPUT STREAM
`
`STORE
`TRIANGLE INFO
`IN VERTEX
`CONTROL
`REGISTERS
`
`914
`
`916
`
`SETUP ENGINE
`CALCULATES
`EDGE
`EQUATIONS
`
`918
`
`TEXTURE
`ADDRESS
`GENERATOR
`DETERMINES
`ADDRESS OF
`TEXTURE
`CHUNKS
`
`924
`
`920
`
`SETUP ENGINE
`PASSES
`SETUP ENGINE
`TEXTURE
`PASSES EDGE
`EQUATIONS TO 1-----------+~ ADDRESSES TO
`SCAN CONVERT
`TEXTURE READ
`BLOCK
`QUEUE
`
`922
`
`0022
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 21 of 26
`
`5,880,737
`
`FIG. lSB
`
`TEXTURE READ
`REQUESTS ARE
`SENT TO THE
`COMMAND AND
`MEMORY
`CONTROL
`BLOCK
`
`926
`
`MEMORY
`CONTROL
`BLOCK FETCHES
`TEXTURE DATA
`
`928
`
`936
`
`938
`
`SCAN CONVERT
`PASSES
`TEXTURE
`ADDRESSES TO
`THE TEXTURE
`FILTER ENGINE
`
`934
`
`SCAN CONVERT
`READS EDGE
`EQUATIONS
`FROM THE
`PRIMITIVE
`REGISTERS
`
`932
`
`TEXTURE FILTER
`PASSES INFO TO
`SCAN CONVERT
`ENGINE
`
`SCAN CONVERT
`ENGINE
`CONVERTS
`TRIANGLE DATA
`
`930
`
`TEXTURE
`BLOCKS
`DECOMPRESSED
`
`DECOMPRESSED
`TEXTURE BLOCK
`CACHED IN
`TEXTURE CACHE
`
`SCAN CONVERT
`ENGINE PASSES
`INFO TO PIXEL
`ENGINE
`
`944
`
`PIXEL ENGINE
`PERFORMS
`CALCULATIONS
`
`0023
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 22 of 26
`
`5,880,737
`
`FIG.15C
`
`START
`
`1
`
`VERTEX INPUT
`PROCESSOR
`PARSES THE h
`INPUT STREAM
`
`947
`
`~
`
`STORE TRIANGLE
`INFO IN VERTEX
`CONTROL
`REGISTERS
`
`h
`
`948
`
`SETUP ENGINE
`CALCULATES h
`EDGE EQUATIONS
`
`949
`
`~
`
`SETUP ENGINE h
`
`PASSES EDGE
`EQUATIONS TO
`SCAN CONVERT
`BLOCK
`
`950
`
`0024
`
`TO
`FIG.
`15D
`~
`
`SCAN CONVERT I>
`ENGINE
`952
`CONVERTS
`TRIANGLE DATA
`
`j~
`
`SCAN
`CONVERT
`READS EDGE
`EQUATIONS FROM
`THE PRIMITIVE
`REGISTERS
`
`I>
`951
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 23 of 26
`
`5,880,737
`
`FIG.lSD
`
`FROM
`FIG.
`15C
`
`PLACE PIXEL
`DATA AND
`
`TEXTURE INFO IN --g53
`
`QUEUE
`
`/
`
`958
`
`959
`
`SCAN CONVERT
`PASSES
`DECOMPRESSED
`TEXTURE
`..
`TEXTURE BLOCK
`t---~.. ADDRESSES TO
`CACHED IN
`TEXTURE CACHE
`THE TEXTURE
`FILTER ENGINE
`
`~ --
`
`TO
`ANTI-
`ALIASING
`ENGINE
`
`)
`
`T
`
`960
`
`~,
`
`/
`
`957
`
`TEXTURE CACHE
`CONTROL
`FETCHES
`TEXTURE
`BLOCKS
`
`r----
`954
`
`TEXTURE
`BLOCKS
`DECOMPRESSED
`
`/
`
`956
`
`TEXTURE READ V 955
`MEMORY
`REQUESTS ARE
`SENT TO THE
`CONTROL
`...
`COMMAND AND t------~ .. BLOCK FETCHES
`MEMORY
`CONTROL
`BLOCK
`
`TEXTURE DATA
`
`0025
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 24 of 26
`
`5,880,737
`
`FIG. 15E
`
`START
`
`lr
`
`VERTEX INPUT
`PROCESSOR
`PARSES THE h
`INPUT STREAM
`
`961
`
`r
`QUEUE
`PRIMITIVES IN
`VERTEX
`CONTROL
`REGISTERS
`
`I>
`962
`
`h
`
`963
`
`PRE-
`RASTERIZER
`CONVERTS
`PRIMITIVES
`
`0026
`
`TO
`FIG.
`15F
`
`,j~
`
`TEXTURE CACHE h
`
`CONTROL
`FETCHES
`TEXTURE
`BLOCKS
`
`965
`
`PRE-
`RASTERIZER h
`PASSES READ
`REQUESTS TO
`THE TEXTURE
`CACHE
`CONTROL
`
`964
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 25 of 26
`
`5,880,737
`
`FIG. 15F
`
`FROM
`FIG.
`15E
`
`TEXTURE READ
`REQUESTS ARE
`SENT TO THE
`COMMAND AND r--
`MEMORY
`CONTROL
`BLOCK
`
`989
`
`/" 994
`
`_,r- 995
`
`SCAN CONVERT
`TEXTURE FILTER
`PASSES
`PASSES INFO TO
`TEXTURE
`ADDRESSES TO 1-------+~ SCAN CONVERT
`THE TEXTURE
`ENGINE
`FILTER ENGINE
`
`/" 993
`
`SCAN CONVERT
`READS EDGE
`EQUATIONS
`FROM THE
`PRIMITIVE
`REGISTERS
`
`_,r- 992
`
`MEMORY
`CONTROL
`BLOCK FETCHES r--
`990
`TEXTURE DATA
`
`v- 991
`
`SCAN CONVERT
`ENGINE
`CONVERTS
`TRIANGLE DATA
`
`DECOMPRESSED
`TEXTURE BLOCK
`TEXTURE
`1--------+~ CACHED IN
`BLOCKS
`DECOMPRESSED
`TEXTURECACHE
`
`SCAN CONVERT
`ENGINE PASSES
`INFO TO PIXEL
`ENGINE
`
`~ 999
`
`TO
`ANTI(cid:173)
`ALIASING
`ENGINE
`
`/998
`
`PIXEL ENGINE
`PERFORMS
`CALCULATIONS
`
`0027
`
`

`
`U.S. Patent
`
`Mar. 9, 1999
`
`Sheet 26 of 26
`
`5,880,737
`
`FIG. 16
`
`(
`
`660
`
`L__662
`
`~668
`
`TRANSFORMATION ~
`ENGINE
`
`TILER
`
`TILER
`COMPRESSION
`ENGINE
`
`,----- - - - -
`L
`
`664
`
`-,
`I
`I
`I
`I
`I
`I
`670 I
`I
`I
`I
`I
`I
`I
`I
`I
`L---------I
`
`TEXTURE
`MEMORY
`
`GSPRITE
`MEMORY
`
`676
`
`I
`I
`I
`
`I
`
`( 666
`
`TILER
`DECOMPRESSION
`ENGINE
`
`h
`
`672
`
`DISPLAY
`CONTROLLER
`
`GSPRITE
`DECOMPRESSION
`ENGINE
`
`674
`
`0028
`
`

`
`5,880,737
`
`1
`METHOD AND SYSTEM FOR ACCESSING
`TEXTURE DATA IN ENVIRONMENTS WITH
`HIGH LATENCY IN A GRAPHICS
`RENDERING SYSTEM
`
`REFERENCE TO PRIOR APPLICATIONS
`
`This is a continuation-in-part or application Ser. No.
`08/560,114, filed Nov. 17, 1995 now abandoned. Applica(cid:173)
`tion Ser. No. 08/ 560,114 is a continuation of application Ser.
`No. 08/511,553, filed Aug. 4, 1995, which is now aban(cid:173)
`doned.
`
`TECH NT CAL FIELD
`
`The invention generally relates to graphics rendering of t5
`graphical models, and more specifically relates to methods
`and systems for accessing texture data in high latency
`environments.
`
`BACKGROUND
`
`Graphics rendering generally refers to the process of
`converting graphical models into a d isplay image. The
`display image is typically comprised of an array of pixel
`data, sometimes referred to as a bitmap or pixmap. This
`array of pixel data maps to picture elements in tbe display
`screen of a display device. To display an image, a display
`controller transfers the pixel data to a display device, where
`it is used to illuminate the pictu re clements or '' pixels" of a
`display screen. For example in color images, the pixel data
`can include red, green and blue color intensity values used
`to illuminate the pi.'<:els of color display screen.
`Though there are a variety of display technologies, one of
`lbe most widely used is raster display technology. A raster
`display device includes an array of individual points or
`picture elements (i.e., pixels), arranged in rows and col(cid:173)
`ltmns. In a CR1~ these pixels correspond to a phosphor array
`provided on lbe glass faceplate of tbe CRT. The emission of
`light from each phosphor in lbe array is independently
`controlled by an electron beam that "scans" tbe array 40
`sequentially, one row at a ti me, in response to stored
`intensity values representative of each pixel in the image.
`In 3D graphics applications, an object in a scene is
`represented by a 30 graphical model, which ir1cludes geo(cid:173)
`metric data used to model the surface and position of tbe 45
`object, and visual attributes used to modellbe appearance of
`tbe object. There are a number of ways tbat a geometric
`model can represent a 3D object, including polygon meshes,
`parametric surfaces, or quadratic surfaces. Using a polygon
`mcsb, for example, the surface of an object is modeled with 50
`several interconnected polygons. The surface elements, in
`tbis case polygons, are referred to as geometric primitives.
`Visual attributes sucb as red, green, and blue color data, and
`possibly other model data is stored at the vertices of lbe
`polygon.
`In a process called scan converting or rasterizing, the
`geometric primitives forming the surface of the graphical
`model are converted into an array of discrete pixel data. In
`the context of 3D graphics, the visible surfaces of the objects
`in a scene are convened into an array of pixels. For surfaces 60
`represented with a mesh of polygons, for example, color
`intensity values stored at tbe vertices of each polygon are
`interpolated to compute intensity values at each of the
`discrete pixel elements covered by a polygon.
`To create more realistic and de tailed imagery, interpolated 65
`color values alone are not sufficient to create a realistic
`image. Often, additional image data stored separately from
`
`2
`the model must be used to improve image quality. For
`example, image data referred to as a texture map is often
`used to represent intricate de tail on the surface of a graphical
`model. to a process called texture mapping, a digital image
`5 called a texture map is mapped to tbe surface of a graphical
`model. In addition to texture maps, olber image data external
`to tbe graphical model is sometimes used to compute pixel
`data. For example color and opacity data is sometimes used
`to perform lighting and shading operations. As another
`10 example, a s hadow map is sometimes used to compute
`shadows cast by objects in a scene.
`Texture mapping and other fo rms of rendering operations
`that require acces.s to additional image data place tremen(cid:173)
`dous demands on a graphics rendering, system. In a typical
`texture mapping operation, the graphics rendering system
`has to retrieve at least one sample of texture data to compute
`each pixel. To generate high quality images without artifacts,
`the need to re trieve more samples of texture data increases
`because several texture samples are filte red or re-sampled to
`20 compute every pixel.
`In real time systems, a new display image must be
`generated every fraction of a second. This rigorous timing
`requirement places severe constraints on texture mapping
`because there is limited time to ret rieve texture data. The
`25 quality of lbe final image often suffers because sampling
`and/or fi ltering several texture cannot be performed due to
`the memory bandwidth limitations of the system. Support
`for high bandwidth access to texture data requires dedicated,
`fast and expensive memory systems.
`A sign ificant s ide effect of the memory bandwidth prob-
`lem outlined above is that it makes it difficult, if not
`impossible, to store texture data in compressed form. 1ex(cid:173)
`ture da ta is typically not stored in compressed form because
`35 there is not enough time to decompress texture data in a
`graphics rendering pipeline. As a result, memory require(cid:173)
`ments to store texture data can be substantial. The need for
`additional memory adds further to the expense of the system.
`
`30
`
`SUMMARY OF -n-IE INVENTION
`
`To address these and other drawbacks, the invention
`provides improved metbods and systems for accessing tex(cid:173)
`ture data. While the invention is particularly well suited for
`texture mapping, it also supports additional rendering opera(cid:173)
`tions that require access to texture memory.
`In one embodiment, geometric primitives in input data
`stream are stored in a ftrst queue long enough to absorb the
`latency of fetching a block of texture da ta from memory. The
`geometric primitives in the fi rst queue are converted into a
`texture block references, wbicb arc stored in a secood queue.
`The texture blocks referenced in this second queue are
`fetched from memory and placed in a texture cacbe. One by
`one, each primitive in the queue is rasterized. As each
`primitive is rasterizcd, texture data is retrieved from the
`55 texture cache as necessary to compute the output pixels fo r
`the current primitive. Primitives are removed from the queue
`after they are rasterized.
`In second embodiment, primitives arc rasterizcd and the
`resulting pixel data is placed in a queue long enough to
`absorb the latency of a texture block fetch. In one specific
`implementation, the entries in the queue include a pixel
`address, color data for that address, and a texture request
`comprised of the center poiot of a texture sample in tbe
`coordinates of a texture map. The texture requests are read
`from the queue and converted into texture block addresses.
`The texture blocks are [etched and placed in a texture cache.
`The entries io the queue are retrieved from the queue, aod
`
`0029
`
`

`
`5,880,737
`
`3
`associated texture data now in the texture cache is used to
`compute output pixels.
`Both approaches outlined above enable texture to be
`accessed efficiently using a texture cache. Text11re data can
`be stored in lower cost memory with higher latency. Tn
`addition, texture data can be even be stored in a compressed
`format despite the additional latency associated with decom(cid:173)
`pressing the texture data.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`5
`
`FIG. 1 is a block diagram of an image processing system.
`FIG. 2 is a block diagram of the system environment for
`an embodiment of the invcmion.
`FIG. 3 is a block diagram of system architecture for an
`embodiment.
`FIG. 4Ais a block diagram of image processing hardware
`for an embodiment.
`FIG. 4B is a block diagram illustrating portions of an
`image processor for rendering geometric primitives io an
`embodiment.
`FIGS. SA and SB are flow diagrams illustrating an over(cid:173)
`view of the rendering process in an embodiment.
`FIG. 6 is a flow diagram illustrating an overview of the
`display generation process of an embodiment.
`FIG. 7 is a diagram illustrating one aspect of display
`generation in terms of frame periods in an embodiment.
`FIG. 8 is a block diagram of a Digital Signal Processor
`(DSP) in an embodiment.
`FIGS. 9A-C are block diagrams illustrating alleroative
`embodiments of a tiler.
`FIG. lO is a block diagram illustrating a system for
`accessing texture data from memory.
`FIG. 11 is a block diagram illustrating a system for
`accessing texture data from memory.
`riGS. 12A-B are block diagrams illustrating alternative
`implementations of a gsprite engine.
`FIG. 13 is a block diagram of a compositing buffer in an 40
`embodiment.
`FIG. 14 is a block diagram of a Digital to Analog
`Converter (DAC) in an embodiment.
`FIG. 15A-F are a flow diagrams illustrating aspects of
`pixel and fragment generation in three alteroativc cmbodi- 45
`ments.
`FIG. 16 is a block diagram of a rendering architecture
`supporting compression and decompression.
`
`35
`
`4
`and a host of interactive applications. The system supports
`sophisticated user interfaces including 3-D graphics or com(cid:173)
`bined graph·ics and video. Improving upon the limited
`graphics capabilities of today's windowing environments
`for personal computers, the system can support improved
`3-D graphical user interfaces for applications ranging from
`office information processing on desktop computers to inter(cid:173)
`active television applications in a set-top box. lbe system
`makes very efficient use of memory and processor time and
`10 therefore can provide impressive image processing and
`display without unduly hindering performance of the appli(cid:173)
`cation or responsiveness of the user interface to user actions.
`FIG. 1 is a block diagram of the image processing system
`100. The image processing system comprises an image data
`15 source and store 102, an image preprocessor 104, an image
`processor 106, and a display device 108, if immediate
`display of rendered images is desired. The elements in the
`system communicate through a system interface 110. T be
`image da ta source and s tore 102 supplies image data to the
`20 system, and stores image data and commands. The image
`preprocessor 104 is responsible for manipulating the image
`data to prepare it for rendering. Examples of preprocessing
`functions include: defining objects in terms of geometric
`models, defining lighting and shadowing models, determin-
`25 ing object locations, determining the location of a viewpoint
`and light sources, and geometry processing.
`The image processor 106 renders the images, and gener(cid:173)
`ates a display image to be displayed on the display device
`108. Rendering refers to the process of creating images from
`30 models and includes such f11nctions as geometry processing
`(note tbat geometry processing can

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket