%!PS-Adobe-2.0 %%Creator: dvipsk 5.55a Copyright 1986, 1994 Radical Eye Software %%Title: glxspec.dvi %%Pages: 27 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: whaeberli %%EndComments %DVIPSCommandLine: dvips glxspec %DVIPSParameters: dpi=300, compressed, comments removed %DVIPSSource: TeX output 1997.07.09:1335 %%BeginProcSet: texc.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginFont: whaeberli /F_whaeberli 10 dict def F_whaeberli begin /FontType 3 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [0 -319 777 703] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for Encoding 32 /space put Encoding 33 /exclam put Encoding 34 /quotedbl put Encoding 35 /numbersign put Encoding 36 /dollar put Encoding 37 /percent put Encoding 38 /ampersand put Encoding 39 /quoteright put Encoding 40 /parenleft put Encoding 41 /parenright put Encoding 42 /asterisk put Encoding 43 /plus put Encoding 44 /comma put Encoding 45 /hyphen put Encoding 46 /period put Encoding 47 /slash put Encoding 48 /zero put Encoding 49 /one put Encoding 50 /two put Encoding 51 /three put Encoding 52 /four put Encoding 53 /five put Encoding 54 /six put Encoding 55 /seven put Encoding 56 /eight put Encoding 57 /nine put Encoding 58 /colon put Encoding 59 /semicolon put Encoding 60 /less put Encoding 61 /equal put Encoding 62 /greater put Encoding 63 /question put Encoding 64 /at put Encoding 65 /A put Encoding 66 /B put Encoding 67 /C put Encoding 68 /D put Encoding 69 /E put Encoding 70 /F put Encoding 71 /G put Encoding 72 /H put Encoding 73 /I put Encoding 74 /J put Encoding 75 /K put Encoding 76 /L put Encoding 77 /M put Encoding 78 /N put Encoding 79 /O put Encoding 80 /P put Encoding 81 /Q put Encoding 82 /R put Encoding 83 /S put Encoding 84 /T put Encoding 85 /U put Encoding 86 /V put Encoding 87 /W put Encoding 88 /X put Encoding 89 /Y put Encoding 90 /Z put Encoding 91 /bracketleft put Encoding 92 /backslash put Encoding 93 /bracketright put Encoding 94 /asciicircum put Encoding 95 /underscore put Encoding 96 /quoteleft put Encoding 97 /a put Encoding 98 /b put Encoding 99 /c put Encoding 100 /d put Encoding 101 /e put Encoding 102 /f put Encoding 103 /g put Encoding 104 /h put Encoding 105 /i put Encoding 106 /j put Encoding 107 /k put Encoding 108 /l put Encoding 109 /m put Encoding 110 /n put Encoding 111 /o put Encoding 112 /p put Encoding 113 /q put Encoding 114 /r put Encoding 115 /s put Encoding 116 /t put Encoding 117 /u put Encoding 118 /v put Encoding 119 /w put Encoding 120 /x put Encoding 121 /y put Encoding 122 /z put Encoding 123 /braceleft put Encoding 124 /bar put Encoding 125 /braceright put Encoding 126 /asciitilde put /CharProcs 96 dict def CharProcs begin /.notdef {} def /space { 600 0 0 0 600 800 setcachedevice } def /exclam { 259 0 69 -14 321 624 setcachedevice newpath 111 -14 moveto 156 13 lineto 157 79 lineto 105 101 lineto 69 48 lineto 75 12 lineto closepath 147 143 moveto 180 170 lineto 321 611 lineto 287 624 lineto 251 570 lineto 124 158 lineto closepath fill } def /quotedbl { 304 0 161 483 377 681 setcachedevice newpath 189 483 moveto 221 512 lineto 245 666 lineto 222 681 lineto 190 653 lineto 161 507 lineto closepath 280 493 moveto 319 546 lineto 377 665 lineto 355 681 lineto 320 657 lineto 250 509 lineto closepath fill } def /numbersign { 515 0 103 70 533 587 setcachedevice newpath 263 70 moveto 300 92 lineto 376 215 lineto 382 224 lineto 465 239 lineto 474 277 lineto 427 286 lineto 419 289 lineto 425 300 lineto 451 349 lineto 458 356 lineto 468 358 lineto 529 370 lineto 533 407 lineto 495 414 lineto 488 416 lineto 491 425 lineto 533 536 lineto 514 554 lineto 479 532 lineto 425 412 lineto 416 407 lineto 385 404 lineto 375 402 lineto 370 409 lineto 428 570 lineto 397 587 lineto 366 544 lineto 310 404 lineto 304 395 lineto 169 368 lineto 162 338 lineto 207 326 lineto 259 333 lineto 270 335 lineto 273 326 lineto 248 277 lineto 241 268 lineto 232 266 lineto 118 246 lineto 103 218 lineto 131 196 lineto 203 208 lineto 209 202 lineto 168 96 lineto 185 76 lineto 220 98 lineto 268 207 lineto 275 216 lineto 284 217 lineto 306 221 lineto 316 219 lineto 316 211 lineto 246 98 lineto closepath 311 287 moveto 337 338 lineto 347 342 lineto 380 347 lineto 389 345 lineto 383 335 lineto 356 286 lineto 347 277 lineto 315 275 lineto 305 277 lineto closepath fill } def /dollar { 552 0 103 -28 562 625 setcachedevice newpath 181 -28 moveto 219 -16 lineto 270 90 lineto 276 100 lineto 286 101 lineto 328 104 lineto 337 101 lineto 333 90 lineto 312 -8 lineto 336 -19 lineto 370 19 lineto 397 112 lineto 405 119 lineto 503 172 lineto 541 250 lineto 522 333 lineto 475 379 lineto 470 386 lineto 493 500 lineto 496 510 lineto 506 513 lineto 555 523 lineto 562 560 lineto 513 569 lineto 503 566 lineto 502 575 lineto 500 625 lineto 462 625 lineto 443 565 lineto 440 555 lineto 431 550 lineto 421 546 lineto 410 541 lineto 405 547 lineto 394 583 lineto 356 573 lineto 346 522 lineto 343 512 lineto 287 456 lineto 290 409 lineto 313 393 lineto 319 386 lineto 246 171 lineto 237 165 lineto 159 218 lineto 128 237 lineto 103 216 lineto 111 181 lineto 193 119 lineto 210 112 lineto 218 107 lineto 214 97 lineto 171 -13 lineto closepath 298 158 moveto 301 168 lineto 364 351 lineto 367 361 lineto 377 365 lineto 402 352 lineto 403 344 lineto 355 167 lineto 349 160 lineto 307 156 lineto closepath 418 184 moveto 421 194 lineto 446 298 lineto 448 308 lineto 456 312 lineto 464 308 lineto 484 245 lineto 457 199 lineto 426 184 lineto closepath 405 418 moveto 396 421 lineto 387 425 lineto 386 435 lineto 392 469 lineto 394 479 lineto 405 485 lineto 426 493 lineto 432 490 lineto 430 479 lineto 420 425 lineto 414 414 lineto closepath fill } def /percent { 549 0 51 -96 613 643 setcachedevice newpath 60 -96 moveto 97 -81 lineto 613 623 lineto 585 643 lineto 523 578 lineto 51 -61 lineto closepath 378 63 moveto 461 86 lineto 517 142 lineto 516 192 lineto 512 200 lineto 504 204 lineto 512 214 lineto 512 250 lineto 462 244 lineto 372 173 lineto 338 107 lineto 360 68 lineto closepath 398 122 moveto 404 131 lineto 435 165 lineto 444 172 lineto 453 171 lineto 459 164 lineto 462 156 lineto 455 145 lineto 406 119 lineto closepath 208 333 moveto 292 351 lineto 346 407 lineto 340 465 lineto 336 472 lineto 343 479 lineto 359 515 lineto 307 537 lineto 215 509 lineto 149 446 lineto 137 386 lineto 180 340 lineto closepath 215 393 moveto 194 409 lineto 224 455 lineto 254 472 lineto 265 474 lineto 268 469 lineto 281 435 lineto 289 430 lineto 292 421 lineto 287 412 lineto 225 389 lineto closepath fill } def /ampersand { 521 0 75 2 465 570 setcachedevice newpath 444 2 moveto 454 4 lineto 463 13 lineto 465 50 lineto 365 150 lineto 364 158 lineto 391 203 lineto 372 223 lineto 342 209 lineto 335 201 lineto 327 203 lineto 295 284 lineto 294 293 lineto 408 433 lineto 433 526 lineto 402 570 lineto 343 565 lineto 270 495 lineto 228 384 lineto 224 296 lineto 105 158 lineto 75 78 lineto 92 34 lineto 157 17 lineto 259 61 lineto 305 96 lineto 312 104 lineto 321 101 lineto 434 2 lineto closepath 134 90 moveto 182 178 lineto 238 237 lineto 248 240 lineto 251 231 lineto 283 160 lineto 288 152 lineto 281 143 lineto 186 81 lineto 143 75 lineto 134 79 lineto closepath 286 377 moveto 316 469 lineto 363 518 lineto 372 518 lineto 375 508 lineto 344 428 lineto 300 374 lineto 294 365 lineto 285 367 lineto closepath fill } def /quoteright { 219 0 146 418 276 614 setcachedevice newpath 158 418 moveto 195 435 lineto 276 589 lineto 253 614 lineto 221 587 lineto 146 432 lineto closepath fill } def /parenleft { 293 0 99 -59 366 689 setcachedevice newpath 179 -59 moveto 209 -54 lineto 220 -17 lineto 164 79 lineto 161 229 lineto 222 444 lineto 309 597 lineto 366 666 lineto 353 689 lineto 314 675 lineto 215 552 lineto 126 333 lineto 99 136 lineto 127 4 lineto closepath fill } def /parenright { 321 0 117 -105 317 685 setcachedevice newpath 140 -105 moveto 180 -71 lineto 272 93 lineto 314 268 lineto 317 460 lineto 270 626 lineto 225 685 lineto 195 679 lineto 189 642 lineto 247 513 lineto 264 316 lineto 221 109 lineto 138 -45 lineto 117 -93 lineto closepath fill } def /asterisk { 416 0 117 208 436 513 setcachedevice newpath 173 208 moveto 217 238 lineto 239 264 lineto 246 266 lineto 249 256 lineto 279 209 lineto 316 224 lineto 315 261 lineto 296 305 lineto 292 314 lineto 302 319 lineto 426 361 lineto 436 400 lineto 398 404 lineto 346 386 lineto 334 384 lineto 337 393 lineto 395 499 lineto 363 513 lineto 276 397 lineto 270 388 lineto 262 386 lineto 258 395 lineto 228 465 lineto 189 455 lineto 193 398 lineto 207 361 lineto 211 354 lineto 206 347 lineto 123 317 lineto 117 289 lineto 151 275 lineto 172 282 lineto 183 286 lineto 187 280 lineto 179 273 lineto 154 225 lineto closepath fill } def /plus { 530 0 117 79 533 476 setcachedevice newpath 286 79 moveto 313 112 lineto 347 259 lineto 354 266 lineto 364 268 lineto 510 282 lineto 533 317 lineto 503 335 lineto 377 324 lineto 366 324 lineto 365 333 lineto 379 476 lineto 342 476 lineto 318 397 lineto 307 335 lineto 303 324 lineto 293 324 lineto 136 321 lineto 117 287 lineto 147 268 lineto 281 268 lineto 289 263 lineto 289 254 lineto 259 90 lineto closepath fill } def /comma { 247 0 43 -111 201 107 setcachedevice newpath 74 -108 moveto 140 -46 lineto 201 71 lineto 194 107 lineto 163 103 lineto 79 -41 lineto 43 -82 lineto 63 -111 lineto closepath fill } def /hyphen { 500 0 111 231 494 289 setcachedevice newpath 389 231 moveto 481 233 lineto 494 270 lineto 429 286 lineto 129 289 lineto 111 254 lineto 141 238 lineto closepath fill } def /period { 210 0 68 20 164 108 setcachedevice newpath 98 20 moveto 150 32 lineto 164 71 lineto 124 108 lineto 76 82 lineto 68 41 lineto closepath fill } def /slash { 512 0 51 -71 569 625 setcachedevice newpath 70 -71 moveto 115 -43 lineto 303 185 lineto 569 588 lineto 564 625 lineto 525 614 lineto 210 145 lineto 51 -43 lineto closepath fill } def /zero { 524 0 107 43 545 603 setcachedevice newpath 211 43 moveto 305 71 lineto 440 175 lineto 525 307 lineto 545 430 lineto 510 508 lineto 449 550 lineto 442 556 lineto 447 565 lineto 449 596 lineto 401 603 lineto 285 536 lineto 180 416 lineto 117 287 lineto 107 165 lineto 143 78 lineto 200 43 lineto closepath 213 104 moveto 169 160 lineto 173 282 lineto 237 411 lineto 351 522 lineto 380 540 lineto 388 537 lineto 403 505 lineto 465 463 lineto 488 381 lineto 447 270 lineto 349 162 lineto 253 104 lineto closepath fill } def /one { 194 0 62 -7 238 584 setcachedevice newpath 90 -4 moveto 118 25 lineto 223 448 lineto 238 572 lineto 214 584 lineto 184 558 lineto 93 133 lineto 62 10 lineto 71 -4 lineto 80 -7 lineto closepath fill } def /two { 505 0 142 -17 453 579 setcachedevice newpath 183 -17 moveto 442 8 lineto 453 45 lineto 397 54 lineto 231 43 lineto 222 45 lineto 223 54 lineto 418 391 lineto 453 513 lineto 424 569 lineto 337 579 lineto 213 541 lineto 157 486 lineto 165 460 lineto 203 469 lineto 301 518 lineto 392 518 lineto 383 449 lineto 255 203 lineto 142 14 lineto 164 -14 lineto closepath fill } def /three { 460 0 81 2 475 582 setcachedevice newpath 103 2 moveto 312 70 lineto 401 137 lineto 444 224 lineto 430 321 lineto 411 384 lineto 475 488 lineto 465 544 lineto 379 582 lineto 234 572 lineto 166 532 lineto 158 495 lineto 195 493 lineto 276 526 lineto 396 515 lineto 413 508 lineto 420 501 lineto 420 490 lineto 352 377 lineto 368 312 lineto 387 228 lineto 344 152 lineto 247 97 lineto 91 48 lineto 81 18 lineto closepath fill } def /four { 523 0 113 7 575 587 setcachedevice newpath 363 7 moveto 398 25 lineto 575 564 lineto 550 584 lineto 519 555 lineto 440 312 lineto 430 305 lineto 181 277 lineto 173 282 lineto 179 291 lineto 321 566 lineto 305 587 lineto 268 569 lineto 113 266 lineto 124 231 lineto 234 224 lineto 402 246 lineto 412 246 lineto 416 239 lineto 346 28 lineto 347 17 lineto 354 10 lineto closepath fill } def /five { 544 0 67 -12 602 606 setcachedevice newpath 152 -12 moveto 266 -4 lineto 375 48 lineto 442 136 lineto 452 228 lineto 406 298 lineto 276 356 lineto 216 363 lineto 206 363 lineto 206 372 lineto 263 544 lineto 273 549 lineto 583 555 lineto 602 592 lineto 597 600 lineto 497 606 lineto 209 601 lineto 197 564 lineto 203 527 lineto 140 324 lineto 180 303 lineto 271 296 lineto 373 246 lineto 398 185 lineto 362 107 lineto 288 57 lineto 173 41 lineto 93 71 lineto 67 39 lineto 115 -2 lineto closepath fill } def /six { 406 0 100 39 396 620 setcachedevice newpath 184 39 moveto 256 59 lineto 355 153 lineto 396 252 lineto 382 340 lineto 315 375 lineto 234 363 lineto 224 361 lineto 214 356 lineto 210 361 lineto 214 370 lineto 312 521 lineto 396 593 lineto 391 620 lineto 341 611 lineto 243 517 lineto 142 344 lineto 100 201 lineto 113 93 lineto 165 41 lineto closepath 186 98 moveto 155 167 lineto 173 270 lineto 261 317 lineto 321 310 lineto 340 248 lineto 295 162 lineto 216 97 lineto closepath fill } def /seven { 554 0 176 32 610 620 setcachedevice newpath 235 32 moveto 273 46 lineto 444 310 lineto 454 314 lineto 513 308 lineto 532 335 lineto 498 363 lineto 489 367 lineto 483 370 lineto 489 381 lineto 610 579 lineto 589 620 lineto 413 611 lineto 184 591 lineto 176 583 lineto 178 546 lineto 437 556 lineto 541 569 lineto 546 564 lineto 541 555 lineto 430 384 lineto 421 379 lineto 339 375 lineto 322 340 lineto 366 324 lineto 377 324 lineto 387 324 lineto 384 314 lineto 224 57 lineto closepath fill } def /eight { 541 0 86 2 571 629 setcachedevice newpath 210 2 moveto 335 21 lineto 450 93 lineto 517 181 lineto 524 252 lineto 449 342 lineto 445 347 lineto 453 354 lineto 542 425 lineto 571 493 lineto 537 578 lineto 500 559 lineto 513 474 lineto 458 418 lineto 347 368 lineto 267 368 lineto 241 393 lineto 260 453 lineto 351 537 lineto 453 574 lineto 490 597 lineto 477 629 lineto 374 609 lineto 255 524 lineto 188 423 lineto 190 354 lineto 250 312 lineto 256 305 lineto 247 300 lineto 141 217 lineto 86 135 lineto 92 57 lineto 160 8 lineto closepath 216 59 moveto 145 86 lineto 149 145 lineto 218 221 lineto 350 284 lineto 402 293 lineto 409 289 lineto 470 223 lineto 448 164 lineto 361 90 lineto 226 57 lineto closepath fill } def /nine { 484 0 140 -54 477 634 setcachedevice newpath 387 -54 moveto 418 -27 lineto 460 382 lineto 421 405 lineto 245 344 lineto 195 367 lineto 205 426 lineto 278 513 lineto 385 574 lineto 468 583 lineto 477 592 lineto 475 629 lineto 407 634 lineto 295 587 lineto 191 499 lineto 140 402 lineto 144 333 lineto 194 291 lineto 286 298 lineto 389 338 lineto 400 344 lineto 405 340 lineto 407 330 lineto 363 -18 lineto 377 -52 lineto closepath fill } def /colon { 208 0 66 7 220 379 setcachedevice newpath 79 7 moveto 140 14 lineto 160 63 lineto 170 122 lineto 132 126 lineto 74 70 lineto 66 20 lineto closepath 148 275 moveto 208 301 lineto 220 363 lineto 175 379 lineto 128 333 lineto 130 282 lineto closepath fill } def /semicolon { 254 0 85 -61 227 360 setcachedevice newpath 119 -61 moveto 175 -6 lineto 212 92 lineto 165 135 lineto 116 115 lineto 85 57 lineto 120 30 lineto 131 32 lineto 135 26 lineto 131 16 lineto 93 -37 lineto closepath 150 246 moveto 202 261 lineto 227 307 lineto 214 354 lineto 167 360 lineto 125 324 lineto 120 266 lineto closepath fill } def /less { 474 0 114 -46 530 603 setcachedevice newpath 377 -46 moveto 407 -35 lineto 410 3 lineto 265 209 lineto 203 268 lineto 197 275 lineto 201 284 lineto 528 570 lineto 530 600 lineto 492 603 lineto 174 326 lineto 114 273 lineto 130 244 lineto 244 144 lineto closepath fill } def /equal { 451 0 133 225 467 418 setcachedevice newpath 162 225 moveto 410 252 lineto 416 289 lineto 286 291 lineto 161 273 lineto 147 237 lineto 152 229 lineto closepath 396 351 moveto 456 358 lineto 464 367 lineto 467 388 lineto 462 395 lineto 209 418 lineto 146 405 lineto 133 368 lineto 178 358 lineto closepath fill } def /greater { 508 0 54 -50 508 621 setcachedevice newpath 76 -50 moveto 294 108 lineto 508 300 lineto 501 335 lineto 243 621 lineto 204 614 lineto 201 575 lineto 439 314 lineto 443 305 lineto 435 298 lineto 91 14 lineto 54 -25 lineto closepath fill } def /question { 426 0 156 19 467 587 setcachedevice newpath 225 19 moveto 263 41 lineto 273 46 lineto 301 59 lineto 304 97 lineto 257 127 lineto 196 107 lineto 188 68 lineto 207 26 lineto closepath 272 197 moveto 304 223 lineto 339 324 lineto 456 449 lineto 467 529 lineto 414 582 lineto 271 587 lineto 192 546 lineto 156 481 lineto 179 455 lineto 208 469 lineto 234 515 lineto 306 532 lineto 395 521 lineto 414 490 lineto 356 411 lineto 273 317 lineto 252 215 lineto closepath fill } def /at { 624 0 117 17 603 600 setcachedevice newpath 353 17 moveto 468 46 lineto 551 103 lineto 603 199 lineto 589 231 lineto 553 211 lineto 503 126 lineto 403 78 lineto 302 83 lineto 219 143 lineto 175 246 lineto 189 370 lineto 256 483 lineto 343 533 lineto 445 537 lineto 505 495 lineto 523 400 lineto 487 287 lineto 464 263 lineto 454 259 lineto 450 268 lineto 448 368 lineto 456 375 lineto 474 411 lineto 431 428 lineto 329 402 lineto 241 330 lineto 207 273 lineto 224 222 lineto 279 208 lineto 370 246 lineto 379 254 lineto 389 261 lineto 393 254 lineto 412 210 lineto 470 209 lineto 536 270 lineto 575 368 lineto 571 488 lineto 528 560 lineto 430 600 lineto 317 580 lineto 215 512 lineto 153 419 lineto 117 287 lineto 137 163 lineto 201 72 lineto 304 24 lineto closepath 265 277 moveto 337 347 lineto 389 368 lineto 397 365 lineto 392 356 lineto 326 279 lineto 275 264 lineto 265 268 lineto closepath fill } def /A { 790 0 59 -48 723 625 setcachedevice newpath 693 -48 moveto 713 -46 lineto 722 -39 lineto 723 29 lineto 583 524 lineto 554 625 lineto 515 620 lineto 308 337 lineto 300 330 lineto 195 319 lineto 186 282 lineto 244 273 lineto 254 270 lineto 252 261 lineto 59 -1 lineto 79 -28 lineto 122 4 lineto 320 268 lineto 328 275 lineto 597 272 lineto 601 264 lineto 684 -43 lineto closepath 555 330 moveto 376 333 lineto 373 337 lineto 380 347 lineto 506 523 lineto 514 532 lineto 519 527 lineto 579 342 lineto 582 331 lineto 575 328 lineto closepath fill } def /B { 606 0 76 -28 590 629 setcachedevice newpath 193 -28 moveto 349 -14 lineto 480 41 lineto 566 130 lineto 590 222 lineto 557 300 lineto 474 344 lineto 406 356 lineto 396 356 lineto 396 363 lineto 406 370 lineto 485 451 lineto 502 531 lineto 457 588 lineto 317 626 lineto 204 629 lineto 181 607 lineto 186 451 lineto 154 216 lineto 84 35 lineto 76 0 lineto 105 -19 lineto closepath 194 28 moveto 156 35 lineto 150 41 lineto 219 256 lineto 221 266 lineto 226 275 lineto 308 301 lineto 469 284 lineto 524 238 lineto 529 179 lineto 479 104 lineto 372 46 lineto 215 26 lineto closepath 236 351 moveto 246 564 lineto 250 572 lineto 259 574 lineto 404 547 lineto 446 512 lineto 424 453 lineto 313 372 lineto 242 340 lineto 234 340 lineto closepath fill } def /C { 609 0 107 -23 580 593 setcachedevice newpath 299 -23 moveto 434 8 lineto 552 93 lineto 575 129 lineto 548 150 lineto 409 54 lineto 316 32 lineto 228 68 lineto 171 165 lineto 171 284 lineto 218 393 lineto 310 495 lineto 409 540 lineto 500 535 lineto 552 497 lineto 580 512 lineto 572 559 lineto 517 592 lineto 405 593 lineto 304 551 lineto 195 451 lineto 123 316 lineto 107 172 lineto 155 59 lineto 243 -9 lineto closepath fill } def /D { 736 0 53 -43 741 625 setcachedevice newpath 79 -43 moveto 265 -35 lineto 442 14 lineto 587 98 lineto 689 206 lineto 741 326 lineto 738 425 lineto 671 517 lineto 536 586 lineto 363 625 lineto 206 619 lineto 180 584 lineto 207 564 lineto 249 569 lineto 258 568 lineto 258 558 lineto 205 237 lineto 136 23 lineto 133 13 lineto 123 9 lineto 62 4 lineto 53 -32 lineto closepath 193 23 moveto 275 289 lineto 316 558 lineto 319 568 lineto 328 569 lineto 511 532 lineto 644 460 lineto 689 377 lineto 665 266 lineto 581 158 lineto 448 74 lineto 272 19 lineto 197 9 lineto 189 13 lineto closepath fill } def /E { 653 0 61 -43 699 624 setcachedevice newpath 77 -43 moveto 460 -35 lineto 573 -37 lineto 592 -1 lineto 551 17 lineto 177 14 lineto 135 13 lineto 127 16 lineto 128 25 lineto 206 358 lineto 211 367 lineto 222 367 lineto 510 363 lineto 530 388 lineto 510 416 lineto 219 423 lineto 216 430 lineto 231 564 lineto 236 572 lineto 246 572 lineto 680 569 lineto 699 596 lineto 676 621 lineto 198 624 lineto 175 575 lineto 128 246 lineto 61 -20 lineto closepath fill } def /F { 636 0 49 -64 694 634 setcachedevice newpath 75 -64 moveto 105 -35 lineto 201 358 lineto 208 363 lineto 509 368 lineto 534 400 lineto 504 421 lineto 224 421 lineto 214 423 lineto 216 435 lineto 235 569 lineto 240 578 lineto 251 578 lineto 653 572 lineto 692 583 lineto 694 620 lineto 565 634 lineto 214 625 lineto 180 601 lineto 155 407 lineto 49 -54 lineto 55 -61 lineto closepath fill } def /G { 627 0 113 -111 686 609 setcachedevice newpath 435 -111 moveto 474 -103 lineto 528 123 lineto 545 275 lineto 509 282 lineto 491 233 lineto 459 57 lineto 455 48 lineto 445 46 lineto 291 46 lineto 208 92 lineto 164 186 lineto 179 298 lineto 245 400 lineto 375 490 lineto 530 546 lineto 675 560 lineto 686 597 lineto 609 609 lineto 442 577 lineto 273 490 lineto 167 386 lineto 113 268 lineto 114 137 lineto 171 41 lineto 273 -8 lineto 425 -12 lineto 435 -10 lineto 444 -12 lineto 443 -23 lineto 430 -104 lineto closepath fill } def /H { 631 0 107 -43 694 629 setcachedevice newpath 128 -43 moveto 162 -17 lineto 238 314 lineto 241 324 lineto 252 328 lineto 576 337 lineto 583 333 lineto 581 324 lineto 513 -6 lineto 549 -12 lineto 582 76 lineto 694 616 lineto 687 624 lineto 657 624 lineto 649 615 lineto 598 409 lineto 596 398 lineto 587 395 lineto 264 381 lineto 254 384 lineto 254 393 lineto 273 619 lineto 239 629 lineto 217 584 lineto 196 389 lineto 193 379 lineto 182 379 lineto 133 365 lineto 134 328 lineto 173 324 lineto 183 323 lineto 184 312 lineto 107 -26 lineto closepath fill } def /I { 190 0 83 13 224 588 setcachedevice newpath 108 13 moveto 138 43 lineto 218 469 lineto 224 582 lineto 188 588 lineto 168 541 lineto 119 209 lineto 83 23 lineto 89 16 lineto closepath fill } def /J { 587 0 84 28 650 634 setcachedevice newpath 183 28 moveto 287 46 lineto 353 105 lineto 421 266 lineto 469 524 lineto 474 555 lineto 479 564 lineto 489 566 lineto 634 579 lineto 650 616 lineto 597 634 lineto 241 597 lineto 225 560 lineto 230 552 lineto 405 559 lineto 415 558 lineto 416 547 lineto 364 268 lineto 305 128 lineto 252 87 lineto 172 93 lineto 118 143 lineto 84 123 lineto 99 71 lineto closepath fill } def /K { 554 0 78 -32 583 621 setcachedevice newpath 94 -32 moveto 128 -8 lineto 175 187 lineto 182 194 lineto 242 246 lineto 250 254 lineto 259 252 lineto 448 -26 lineto 478 -25 lineto 494 1 lineto 307 293 lineto 306 301 lineto 548 544 lineto 583 600 lineto 557 621 lineto 224 296 lineto 198 275 lineto 191 266 lineto 190 275 lineto 232 614 lineto 197 620 lineto 174 574 lineto 99 97 lineto 78 -24 lineto closepath fill } def /L { 534 0 93 -25 484 578 setcachedevice newpath 120 -25 moveto 381 7 lineto 475 21 lineto 484 50 lineto 452 67 lineto 160 39 lineto 150 35 lineto 147 43 lineto 213 435 lineto 217 577 lineto 180 578 lineto 163 519 lineto 100 76 lineto 93 -3 lineto closepath fill } def /M { 589 0 78 -43 623 620 setcachedevice newpath 488 -43 moveto 517 -32 lineto 613 421 lineto 623 603 lineto 592 620 lineto 543 574 lineto 364 266 lineto 356 261 lineto 354 270 lineto 280 572 lineto 253 609 lineto 209 580 lineto 93 170 lineto 78 7 lineto 110 -6 lineto 132 28 lineto 176 286 lineto 238 490 lineto 242 499 lineto 245 488 lineto 314 196 lineto 358 182 lineto 411 240 lineto 554 493 lineto 559 503 lineto 565 503 lineto 565 493 lineto 473 -32 lineto closepath fill } def /N { 492 0 81 -23 548 597 setcachedevice newpath 102 -23 moveto 112 -19 lineto 137 13 lineto 206 405 lineto 209 446 lineto 213 456 lineto 216 449 lineto 323 150 lineto 369 -4 lineto 417 4 lineto 475 218 lineto 548 580 lineto 517 596 lineto 490 563 lineto 397 128 lineto 390 123 lineto 389 133 lineto 280 460 lineto 217 597 lineto 177 588 lineto 154 467 lineto 100 97 lineto 81 -4 lineto closepath fill } def /O { 590 0 111 2 592 583 setcachedevice newpath 276 2 moveto 369 9 lineto 465 64 lineto 555 180 lineto 592 312 lineto 588 462 lineto 536 550 lineto 456 583 lineto 365 565 lineto 254 490 lineto 167 386 lineto 111 256 lineto 121 128 lineto 194 30 lineto closepath 283 61 moveto 197 118 lineto 165 218 lineto 187 310 lineto 257 423 lineto 354 504 lineto 437 527 lineto 504 495 lineto 540 395 lineto 522 241 lineto 465 135 lineto 386 71 lineto 292 59 lineto closepath fill } def /P { 683 0 124 -54 715 632 setcachedevice newpath 146 -54 moveto 179 -27 lineto 293 425 lineto 316 570 lineto 318 580 lineto 327 583 lineto 537 559 lineto 654 495 lineto 655 456 lineto 584 402 lineto 275 282 lineto 273 245 lineto 282 241 lineto 511 312 lineto 661 389 lineto 715 460 lineto 705 527 lineto 614 593 lineto 453 632 lineto 226 632 lineto 181 606 lineto 187 572 lineto 249 578 lineto 258 578 lineto 259 569 lineto 190 216 lineto 124 -37 lineto closepath fill } def /Q { 695 0 107 -64 646 566 setcachedevice newpath 251 -64 moveto 376 -52 lineto 491 14 lineto 518 37 lineto 526 39 lineto 611 -2 lineto 640 26 lineto 593 68 lineto 569 85 lineto 563 90 lineto 569 100 lineto 630 239 lineto 646 382 lineto 583 550 lineto 498 566 lineto 362 538 lineto 248 469 lineto 165 377 lineto 107 237 lineto 108 98 lineto 158 -2 lineto closepath 271 -7 moveto 192 57 lineto 159 156 lineto 170 268 lineto 234 384 lineto 319 460 lineto 453 509 lineto 536 483 lineto 585 393 lineto 580 261 lineto 527 130 lineto 520 122 lineto 513 125 lineto 414 196 lineto 384 184 lineto 385 145 lineto 474 75 lineto 478 68 lineto 470 61 lineto 363 -2 lineto closepath fill } def /R { 676 0 140 -59 645 625 setcachedevice newpath 152 -59 moveto 182 -54 lineto 242 149 lineto 299 521 lineto 302 551 lineto 302 561 lineto 310 566 lineto 495 536 lineto 583 467 lineto 583 418 lineto 518 356 lineto 354 291 lineto 273 264 lineto 276 229 lineto 353 162 lineto 521 0 lineto 579 -57 lineto 607 -41 lineto 597 3 lineto 428 179 lineto 368 224 lineto 361 230 lineto 364 238 lineto 374 241 lineto 557 321 lineto 627 393 lineto 645 453 lineto 613 531 lineto 506 592 lineto 300 625 lineto 196 616 lineto 178 591 lineto 200 566 lineto 231 569 lineto 241 569 lineto 246 563 lineto 192 180 lineto 140 -45 lineto closepath fill } def /S { 559 0 101 -7 526 614 setcachedevice newpath 253 -7 moveto 388 -2 lineto 482 59 lineto 526 135 lineto 522 233 lineto 450 319 lineto 216 462 lineto 214 500 lineto 278 542 lineto 393 555 lineto 489 536 lineto 514 569 lineto 479 597 lineto 350 614 lineto 225 577 lineto 162 513 lineto 155 453 lineto 206 388 lineto 421 264 lineto 470 196 lineto 462 116 lineto 395 56 lineto 280 46 lineto 172 86 lineto 138 152 lineto 101 134 lineto 122 50 lineto closepath fill } def /T { 705 0 160 -30 755 578 setcachedevice newpath 398 -30 moveto 432 -4 lineto 497 356 lineto 505 488 lineto 509 500 lineto 518 501 lineto 737 527 lineto 755 554 lineto 732 578 lineto 506 564 lineto 469 560 lineto 314 546 lineto 177 537 lineto 160 501 lineto 203 486 lineto 444 497 lineto 451 492 lineto 401 109 lineto 378 -13 lineto closepath fill } def /U { 501 0 126 2 538 643 setcachedevice newpath 262 2 moveto 342 32 lineto 436 158 lineto 509 340 lineto 538 536 lineto 527 643 lineto 489 637 lineto 481 558 lineto 459 363 lineto 379 162 lineto 300 68 lineto 261 63 lineto 211 128 lineto 183 282 lineto 209 508 lineto 209 555 lineto 170 549 lineto 126 333 lineto 142 146 lineto 195 35 lineto closepath fill } def /V { 573 0 180 -12 639 652 setcachedevice newpath 310 -12 moveto 350 1 lineto 500 305 lineto 639 634 lineto 610 652 lineto 578 611 lineto 342 90 lineto 335 87 lineto 334 97 lineto 263 503 lineto 216 615 lineto 180 600 lineto 188 532 lineto 251 257 lineto 295 -2 lineto closepath fill } def /W { 724 0 170 -48 777 629 setcachedevice newpath 250 -48 moveto 290 -39 lineto 476 240 lineto 482 245 lineto 487 236 lineto 543 8 lineto 581 -12 lineto 618 6 lineto 677 157 lineto 769 528 lineto 777 629 lineto 740 629 lineto 718 560 lineto 639 218 lineto 597 85 lineto 592 75 lineto 585 71 lineto 583 82 lineto 522 316 lineto 484 321 lineto 396 217 lineto 282 37 lineto 275 32 lineto 274 43 lineto 231 426 lineto 222 595 lineto 185 597 lineto 170 550 lineto 206 82 lineto 235 -39 lineto closepath fill } def /X { 658 0 96 -7 651 620 setcachedevice newpath 109 -7 moveto 147 4 lineto 379 254 lineto 388 263 lineto 395 259 lineto 569 -6 lineto 598 3 lineto 603 41 lineto 438 305 lineto 433 314 lineto 440 323 lineto 646 580 lineto 651 619 lineto 615 620 lineto 409 363 lineto 400 360 lineto 395 368 lineto 208 614 lineto 180 601 lineto 178 564 lineto 354 319 lineto 359 310 lineto 354 301 lineto 96 14 lineto closepath fill } def /Y { 669 0 177 -75 730 632 setcachedevice newpath 298 -75 moveto 335 -54 lineto 415 252 lineto 730 609 lineto 717 632 lineto 678 615 lineto 393 303 lineto 385 294 lineto 380 296 lineto 294 500 lineto 213 602 lineto 177 586 lineto 189 541 lineto 282 388 lineto 340 194 lineto 285 -61 lineto closepath fill } def /Z { 618 0 75 -28 631 588 setcachedevice newpath 103 -26 moveto 404 -18 lineto 546 -20 lineto 555 -13 lineto 550 21 lineto 274 39 lineto 192 35 lineto 182 37 lineto 188 45 lineto 416 282 lineto 631 559 lineto 614 587 lineto 201 588 lineto 171 559 lineto 182 535 lineto 534 532 lineto 544 532 lineto 543 523 lineto 268 192 lineto 75 1 lineto 93 -28 lineto closepath fill } def /bracketleft { 330 0 54 -122 370 676 setcachedevice newpath 125 -122 moveto 239 -104 lineto 254 -75 lineto 251 -67 lineto 204 -59 lineto 121 -64 lineto 114 -57 lineto 116 -48 lineto 236 583 lineto 239 603 lineto 243 612 lineto 253 614 lineto 358 633 lineto 370 670 lineto 322 676 lineto 208 661 lineto 182 615 lineto 78 24 lineto 54 -98 lineto 95 -119 lineto closepath fill } def /backslash { 602 0 188 -79 528 657 setcachedevice newpath 509 -79 moveto 519 -76 lineto 527 -70 lineto 528 -20 lineto 266 592 lineto 226 657 lineto 188 643 lineto 194 596 lineto 383 167 lineto 489 -75 lineto closepath fill } def /bracketright { 349 0 62 -127 412 703 setcachedevice newpath 90 -127 moveto 255 -100 lineto 278 -52 lineto 317 254 lineto 412 680 lineto 384 703 lineto 198 693 lineto 191 656 lineto 331 643 lineto 342 644 lineto 347 639 lineto 345 629 lineto 240 141 lineto 221 -43 lineto 219 -52 lineto 209 -57 lineto 64 -82 lineto 62 -119 lineto closepath fill } def /asciicircum { 457 0 131 330 474 547 setcachedevice newpath 159 330 moveto 259 405 lineto 319 474 lineto 326 476 lineto 331 469 lineto 443 356 lineto 474 386 lineto 394 488 lineto 334 547 lineto 282 510 lineto 187 416 lineto 131 360 lineto 149 330 lineto closepath fill } def /underscore { 780 0 60 -59 716 14 setcachedevice newpath 489 -59 moveto 696 -54 lineto 716 -19 lineto 686 -2 lineto 98 14 lineto 60 4 lineto 60 -32 lineto 261 -52 lineto closepath fill } def /quoteleft { 284 0 186 486 325 674 setcachedevice newpath 287 486 moveto 325 504 lineto 313 560 lineto 228 674 lineto 198 671 lineto 186 633 lineto 265 517 lineto closepath fill } def /a { 564 0 71 -59 511 442 setcachedevice newpath 237 -59 moveto 466 -41 lineto 501 -14 lineto 511 208 lineto 481 330 lineto 410 404 lineto 301 442 lineto 207 425 lineto 180 395 lineto 194 372 lineto 307 384 lineto 406 328 lineto 446 244 lineto 447 233 lineto 445 224 lineto 437 228 lineto 310 252 lineto 195 225 lineto 98 150 lineto 71 59 lineto 117 -21 lineto 217 -57 lineto closepath 233 -2 moveto 153 28 lineto 130 90 lineto 163 144 lineto 252 189 lineto 363 189 lineto 440 153 lineto 448 97 lineto 442 27 lineto 439 17 lineto 430 10 lineto 253 -4 lineto closepath fill } def /b { 570 0 82 -25 546 616 setcachedevice newpath 103 -25 moveto 136 0 lineto 145 2 lineto 324 -19 lineto 428 6 lineto 511 79 lineto 546 180 lineto 523 252 lineto 451 296 lineto 299 301 lineto 196 270 lineto 188 270 lineto 188 280 lineto 230 616 lineto 193 616 lineto 165 527 lineto 82 -8 lineto closepath 267 39 moveto 160 59 lineto 152 64 lineto 152 74 lineto 177 199 lineto 186 207 lineto 289 245 lineto 432 239 lineto 484 201 lineto 479 130 lineto 423 61 lineto 329 35 lineto closepath fill } def /c { 530 0 96 -28 500 435 setcachedevice newpath 275 -28 moveto 420 -16 lineto 470 3 lineto 469 39 lineto 284 28 lineto 176 68 lineto 147 126 lineto 172 238 lineto 241 340 lineto 333 379 lineto 431 368 lineto 465 314 lineto 500 333 lineto 500 381 lineto 442 428 lineto 342 435 lineto 239 398 lineto 158 319 lineto 96 180 lineto 96 81 lineto 147 16 lineto 254 -25 lineto closepath fill } def /d { 586 0 87 -28 616 615 setcachedevice newpath 322 -28 moveto 496 -14 lineto 529 14 lineto 524 71 lineto 616 601 lineto 583 615 lineto 558 580 lineto 513 300 lineto 510 289 lineto 503 289 lineto 406 331 lineto 262 328 lineto 160 284 lineto 100 204 lineto 87 114 lineto 128 28 lineto 212 -13 lineto closepath 252 35 moveto 174 72 lineto 144 152 lineto 172 223 lineto 248 268 lineto 372 277 lineto 462 243 lineto 493 224 lineto 498 217 lineto 462 50 lineto 458 39 lineto 448 35 lineto closepath fill } def /e { 470 0 90 -12 424 409 setcachedevice newpath 241 -12 moveto 345 8 lineto 424 72 lineto 419 108 lineto 381 97 lineto 295 46 lineto 214 50 lineto 159 100 lineto 147 158 lineto 153 165 lineto 278 197 lineto 370 259 lineto 391 321 lineto 351 395 lineto 284 409 lineto 195 365 lineto 109 246 lineto 90 134 lineto 128 37 lineto 201 -7 lineto closepath 163 236 moveto 228 328 lineto 288 354 lineto 326 326 lineto 328 287 lineto 207 229 lineto 166 221 lineto 158 225 lineto closepath fill } def /f { 498 0 108 -30 534 587 setcachedevice newpath 194 -30 moveto 228 -7 lineto 247 207 lineto 255 212 lineto 319 219 lineto 326 226 lineto 332 257 lineto 326 264 lineto 265 268 lineto 257 270 lineto 256 280 lineto 291 476 lineto 334 526 lineto 424 522 lineto 474 481 lineto 491 437 lineto 521 444 lineto 534 481 lineto 500 549 lineto 402 587 lineto 308 572 lineto 247 507 lineto 204 342 lineto 197 270 lineto 190 263 lineto 108 244 lineto 108 207 lineto 178 207 lineto 189 208 lineto 192 200 lineto 178 -21 lineto closepath fill } def /g { 528 0 22 -319 499 356 setcachedevice newpath 234 -319 moveto 317 -307 lineto 384 -247 lineto 448 -98 lineto 499 180 lineto 496 317 lineto 410 356 lineto 295 337 lineto 179 268 lineto 103 172 lineto 74 70 lineto 95 7 lineto 158 -12 lineto 272 17 lineto 374 89 lineto 432 158 lineto 437 164 lineto 438 153 lineto 388 -112 lineto 326 -241 lineto 266 -264 lineto 42 -201 lineto 22 -236 lineto 114 -282 lineto closepath 136 56 moveto 145 136 lineto 201 217 lineto 295 280 lineto 398 296 lineto 425 289 lineto 433 284 lineto 432 273 lineto 354 141 lineto 254 67 lineto 160 43 lineto closepath fill } def /h { 505 0 91 -41 485 615 setcachedevice newpath 404 -41 moveto 439 -14 lineto 485 201 lineto 468 317 lineto 414 367 lineto 341 351 lineto 213 237 lineto 192 209 lineto 184 204 lineto 182 215 lineto 232 606 lineto 197 615 lineto 175 579 lineto 103 93 lineto 91 1 lineto 114 -12 lineto 125 -8 lineto 159 43 lineto 247 199 lineto 345 293 lineto 395 308 lineto 425 241 lineto 410 87 lineto 384 -24 lineto closepath fill } def /i { 295 0 134 -18 315 523 setcachedevice newpath 157 -18 moveto 188 8 lineto 230 215 lineto 226 363 lineto 188 360 lineto 173 291 lineto 157 97 lineto 134 -4 lineto closepath 284 389 moveto 315 400 lineto 315 437 lineto 191 523 lineto 159 497 lineto 191 453 lineto closepath fill } def /j { 406 0 38 -188 428 527 setcachedevice newpath 128 -188 moveto 189 -172 lineto 260 -86 lineto 319 86 lineto 341 351 lineto 304 356 lineto 295 349 lineto 254 43 lineto 194 -97 lineto 151 -134 lineto 94 -101 lineto 61 -86 lineto 38 -108 lineto 61 -156 lineto closepath 394 391 moveto 428 414 lineto 413 446 lineto 296 527 lineto 262 504 lineto 277 472 lineto closepath fill } def /k { 434 0 81 -39 384 609 setcachedevice newpath 106 -39 moveto 135 -8 lineto 166 115 lineto 217 160 lineto 227 165 lineto 234 159 lineto 314 34 lineto 339 -4 lineto 376 12 lineto 357 85 lineto 279 202 lineto 273 209 lineto 279 217 lineto 384 321 lineto 376 347 lineto 337 340 lineto 194 208 lineto 187 200 lineto 179 202 lineto 179 211 lineto 224 601 lineto 217 609 lineto 180 600 lineto 145 393 lineto 89 32 lineto 81 -26 lineto closepath fill } def /l { 190 0 79 -2 226 592 setcachedevice newpath 105 -2 moveto 134 25 lineto 226 577 lineto 205 592 lineto 173 569 lineto 79 28 lineto 96 -2 lineto closepath fill } def /m { 661 0 112 -41 613 382 setcachedevice newpath 557 -39 moveto 566 -41 lineto 576 -37 lineto 600 -1 lineto 613 210 lineto 570 317 lineto 526 333 lineto 472 293 lineto 423 218 lineto 417 209 lineto 412 209 lineto 412 218 lineto 375 338 lineto 327 367 lineto 270 340 lineto 193 241 lineto 189 240 lineto 187 250 lineto 176 379 lineto 139 382 lineto 127 335 lineto 121 92 lineto 112 10 lineto 147 1 lineto 156 7 lineto 228 200 lineto 308 307 lineto 317 308 lineto 325 303 lineto 355 193 lineto 347 -8 lineto 373 -16 lineto 400 14 lineto 470 197 lineto 512 263 lineto 519 272 lineto 527 268 lineto 558 157 lineto 544 -25 lineto closepath fill } def /n { 484 0 107 -64 446 423 setcachedevice newpath 122 -64 moveto 142 -61 lineto 152 -54 lineto 262 206 lineto 349 323 lineto 358 324 lineto 365 317 lineto 388 164 lineto 369 -18 lineto 404 -28 lineto 427 17 lineto 446 222 lineto 414 354 lineto 368 384 lineto 309 356 lineto 210 219 lineto 203 210 lineto 196 215 lineto 197 224 lineto 194 405 lineto 163 423 lineto 138 391 lineto 136 160 lineto 107 -54 lineto closepath fill } def /o { 551 0 98 23 534 405 setcachedevice newpath 245 23 moveto 349 35 lineto 465 104 lineto 530 195 lineto 534 286 lineto 467 388 lineto 392 405 lineto 246 365 lineto 138 280 lineto 98 193 lineto 111 105 lineto 179 41 lineto closepath 237 83 moveto 167 130 lineto 155 197 lineto 201 272 lineto 308 333 lineto 411 347 lineto 475 270 lineto 473 200 lineto 418 129 lineto 318 81 lineto closepath fill } def /p { 530 0 0 -317 497 356 setcachedevice newpath 21 -317 moveto 53 -289 lineto 128 -32 lineto 133 -23 lineto 142 -17 lineto 320 -4 lineto 432 41 lineto 494 120 lineto 497 201 lineto 435 282 lineto 306 342 lineto 198 356 lineto 148 335 lineto 44 -138 lineto 0 -301 lineto closepath 160 39 moveto 150 39 lineto 147 46 lineto 189 286 lineto 191 296 lineto 199 301 lineto 333 270 lineto 425 207 lineto 444 143 lineto 408 87 lineto 296 45 lineto closepath fill } def /q { 476 0 83 -291 468 377 setcachedevice newpath 334 -291 moveto 363 -261 lineto 468 368 lineto 392 377 lineto 278 342 lineto 153 245 lineto 83 119 lineto 87 21 lineto 145 -24 lineto 236 -17 lineto 340 48 lineto 355 64 lineto 363 71 lineto 367 68 lineto 308 -282 lineto closepath 174 28 moveto 136 67 lineto 151 148 lineto 235 254 lineto 344 312 lineto 397 319 lineto 406 317 lineto 407 307 lineto 351 143 lineto 275 59 lineto 194 26 lineto closepath fill } def /r { 468 0 71 0 463 425 setcachedevice newpath 87 0 moveto 122 25 lineto 179 294 lineto 267 338 lineto 347 333 lineto 402 282 lineto 428 256 lineto 463 279 lineto 427 354 lineto 342 395 lineto 239 388 lineto 199 370 lineto 189 370 lineto 189 379 lineto 182 425 lineto 152 421 lineto 128 340 lineto 71 8 lineto closepath fill } def /s { 520 0 53 -64 470 405 setcachedevice newpath 142 -64 moveto 309 -52 lineto 421 -7 lineto 470 52 lineto 469 109 lineto 386 185 lineto 248 268 lineto 245 277 lineto 248 286 lineto 380 347 lineto 449 347 lineto 461 384 lineto 421 405 lineto 306 377 lineto 202 310 lineto 185 261 lineto 230 202 lineto 408 93 lineto 415 57 lineto 349 14 lineto 214 -9 lineto 67 4 lineto 53 -32 lineto closepath fill } def /t { 485 0 122 -9 498 497 setcachedevice newpath 300 -9 moveto 328 20 lineto 361 300 lineto 363 310 lineto 373 312 lineto 488 328 lineto 498 365 lineto 451 375 lineto 378 368 lineto 370 370 lineto 371 381 lineto 372 493 lineto 336 497 lineto 317 449 lineto 312 377 lineto 311 365 lineto 303 361 lineto 136 340 lineto 122 312 lineto 151 291 lineto 297 307 lineto 306 303 lineto 304 293 lineto 274 -2 lineto closepath fill } def /u { 525 0 106 -23 517 435 setcachedevice newpath 428 -23 moveto 464 -1 lineto 517 428 lineto 482 435 lineto 461 388 lineto 434 202 lineto 427 193 lineto 277 70 lineto 217 54 lineto 178 92 lineto 164 218 lineto 194 416 lineto 170 428 lineto 140 400 lineto 106 153 lineto 136 43 lineto 185 0 lineto 267 8 lineto 379 85 lineto 414 115 lineto 421 119 lineto 422 109 lineto 414 -10 lineto closepath fill } def /v { 433 0 135 13 461 462 setcachedevice newpath 219 13 moveto 258 23 lineto 461 444 lineto 432 462 lineto 398 421 lineto 264 157 lineto 257 146 lineto 253 151 lineto 198 356 lineto 172 395 lineto 135 377 lineto 175 230 lineto closepath fill } def /w { 673 0 127 2 699 455 setcachedevice newpath 448 2 moveto 496 18 lineto 699 432 lineto 674 455 lineto 637 414 lineto 483 108 lineto 478 98 lineto 474 107 lineto 437 338 lineto 403 365 lineto 358 333 lineto 257 126 lineto 252 115 lineto 245 119 lineto 169 368 lineto 132 361 lineto 127 312 lineto 219 19 lineto 259 20 lineto 317 127 lineto 383 266 lineto 388 275 lineto 395 275 lineto 395 264 lineto 433 13 lineto closepath fill } def /x { 494 0 64 2 453 414 setcachedevice newpath 78 2 moveto 118 10 lineto 276 160 lineto 285 168 lineto 293 165 lineto 409 30 lineto 444 52 lineto 427 93 lineto 333 212 lineto 333 222 lineto 452 386 lineto 453 405 lineto 447 414 lineto 408 409 lineto 308 272 lineto 300 263 lineto 292 263 lineto 178 412 lineto 140 398 lineto 148 352 lineto 251 216 lineto 250 208 lineto 64 25 lineto closepath fill } def /y { 537 0 126 -268 546 381 setcachedevice newpath 164 -268 moveto 201 -254 lineto 546 344 lineto 540 381 lineto 502 374 lineto 334 72 lineto 328 70 lineto 323 78 lineto 164 342 lineto 134 340 lineto 126 333 lineto 127 294 lineto 291 8 lineto 289 0 lineto 154 -252 lineto closepath fill } def /z { 595 0 129 -14 576 386 setcachedevice newpath 149 -14 moveto 441 -7 lineto 532 -8 lineto 540 28 lineto 404 52 lineto 278 48 lineto 268 48 lineto 267 56 lineto 275 64 lineto 574 331 lineto 576 368 lineto 499 381 lineto 159 386 lineto 131 356 lineto 144 333 lineto 486 328 lineto 495 326 lineto 489 319 lineto 211 79 lineto 129 19 lineto 140 -12 lineto closepath fill } def /braceleft { 377 0 120 -75 417 672 setcachedevice newpath 265 -75 moveto 295 -72 lineto 309 -35 lineto 211 35 lineto 222 136 lineto 261 268 lineto 231 300 lineto 205 312 lineto 199 319 lineto 209 323 lineto 276 358 lineto 316 541 lineto 358 606 lineto 417 635 lineto 416 672 lineto 367 670 lineto 296 615 lineto 246 505 lineto 229 393 lineto 226 386 lineto 215 381 lineto 135 342 lineto 120 303 lineto 178 259 lineto 196 252 lineto 199 245 lineto 151 59 lineto 170 -13 lineto closepath fill } def /bar { 212 0 86 -68 237 657 setcachedevice newpath 116 -68 moveto 144 -35 lineto 219 419 lineto 237 653 lineto 201 657 lineto 181 610 lineto 118 125 lineto 86 -50 lineto closepath fill } def /braceright { 348 0 58 -127 341 663 setcachedevice newpath 76 -127 moveto 179 -97 lineto 243 -35 lineto 266 148 lineto 263 196 lineto 262 206 lineto 270 212 lineto 341 268 lineto 336 305 lineto 286 345 lineto 317 467 lineto 330 579 lineto 293 644 lineto 228 663 lineto 189 648 lineto 186 611 lineto 253 597 lineto 274 536 lineto 225 342 lineto 249 291 lineto 266 282 lineto 271 275 lineto 266 270 lineto 204 222 lineto 200 21 lineto 178 -35 lineto 99 -67 lineto 60 -82 lineto 58 -119 lineto closepath fill } def /asciitilde { 488 0 125 280 504 414 setcachedevice newpath 337 280 moveto 409 296 lineto 504 379 lineto 495 414 lineto 456 402 lineto 376 338 lineto 305 365 lineto 229 400 lineto 168 377 lineto 125 328 lineto 135 303 lineto 174 316 lineto 218 344 lineto closepath fill } def end /BuildChar { exch begin Encoding exch get CharProcs exch get end exec } def end /whaeberli F_whaeberli definefont pop %%EndFont %%BeginProcSet: texps.pro TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics /Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont /setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin @defspecial userdict begin /start-hook { /cshow {dup stringwidth pop 2 div neg 0 rmoveto show} def} def /bop-hook{ gsave /Times-Roman findfont 10 scalefont setfont 306 20 translate 0 0 moveto (Version 1.2 - 4 March 1997) cshow grestore} def end @fedspecial end TeXDict begin 40258437 52099154 1000 300 300 (glxspec.dvi) @start /Fa 2 63 df60 D<12E01278121EEA0780EA01E0EA0078131C1307EB03C0EB00F0143C140F EC03C0A2EC0F00143C14F0EB03C049C7FC131C1378EA01E0EA0780001EC8FC127812E01A 1A7C9723>62 D E /Fb 61 123 df<90380FF07F90397FF9FF809039F83FC7C03901E07F 8F0003140FEA07C091383F07806EC7FCA5B612F8A22607C01FC7FCB0393FF8FFF0A22220 809F1F>11 DI<1330136013C0EA01801203EA07005A120E 121E121C123CA212381278A412F85AA97E1278A41238123CA2121C121E120E120F7EEA03 801201EA00C0136013300C2D7CA114>40 D<12C012607E7E121C7E120F7E1380120313C0 A2120113E0A413F01200A9120113E0A413C01203A21380120713005A120E5A12185A5A5A 0C2D7DA114>I<13E0487E6C5AA23870E1C038F8E3E0EAFCE7387E4FC0380F5E00EA03F8 A2EA0F5E387E4FC038FCE7E0EAF8E33870E1C03800E000A2487E6C5A13147DA11A>I45 D<1238127C12FEA3127C123807077C860F>I<137013F0120712 FF12F91201B3A4387FFFC0A2121D7D9C1A>49 DIII<001C13E0EA1FFF14 C01480140013FC13C00018C7FCA4EA19FE381FFF80381E07C0381803E0381001F0120014 F8A2127812FCA314F0EA7803007013E0383C0FC0380FFF00EA03FC151D7E9C1A>I<133F 3801FFC03807C0E0EA0F81381F03F0121E123E127CEB01E090C7FCEAFC1013FF00FD13C0 EB03E038FE01F0A200FC13F8A4127CA3003C13F0123E381E03E0380F07C03807FF803801 FE00151D7E9C1A>I<1260387FFFF8A214F014E014C038E0018038C00300A21306C65A5B 13381330137013F0A2485AA21203A41207A56C5A6C5A151E7D9D1A>II<14E0A2497EA3497EA2EB06FCA2EB0EFEEB0C7EA2 497EA201307F141F01707FEB600FA2496C7E90B5FC4880EB8003000380EB0001A200066D 7EA2000E803AFFE00FFFE0A2231F7E9E28>65 DI<903807FC0290383FFF0E9038FE03DE39 03F000FE4848133E4848131E485A48C7120EA2481406127EA200FE1400A7127E1506127F 7E150C6C7E6C6C13186C6C13386C6C13703900FE01C090383FFF80903807FC001F1F7D9E 26>IIII<903807FC0290 383FFF0E9038FE03DE3903F000FE4848133E4848131E485A48C7120EA2481406127EA200 FE91C7FCA591381FFFE0A2007E9038007E00A2127F7EA26C7E6C7E6C7E6C6C13FE3800FE 0190383FFF8E903807FC06231F7D9E29>I73 D75 DIIIIIII<3803FC08380FFF38381E03F8EA3800481378143812F01418A26C13007EEA7FC0 13FE383FFF806C13C06C13E06C13F0C613F81307EB00FC147C143C12C0A36C1338147800 F8137038FE01E038EFFFC000811300161F7D9E1D>I<007FB512FCA2397C07E07C007014 1C0060140CA200E0140E00C01406A400001400B10003B512C0A21F1E7E9D24>III<3CFFFC0FFFC0FFE0A23C0FC000FC000E00 7F00076E130CA26D151C0003D901BF1318A2D801F85D9138031F80A22600FC076D5AEC06 0F01FE15E0903A7E0C07E0C0A2013FECE18091381803F1A2D91FB801FBC7FCECB00102F0 13FF6D486C5AA201075C4A137CA2010314784A133801011430331F7F9E36>I<3AFFFE07 FF80A23A07F000700000035C6D5B6C6C485A3800FE03D97E07C7FCEB7F06EB3F8CEB1FDC EB0FF85C13076D7EA28080EB067EEB0E7F496C7E9038181FC0EB300F01707F496C7E4848 6C7EEB8001D803007F486D7E3AFFF007FFE0A2231F7E9E28>I97 DIIIII<3803FC3C380FFFFE381E079E383C 03DE007C13E0A5003C13C0381E0780381FFF00EA13FC0030C7FCA21238383FFF806C13F0 6C13F84813FC3878007C0070133E00F0131EA30078133CA2383F01F8380FFFE000011300 171E7F931A>II<121C123E127FA3123E121CC7FCA6B4FCA2121FB0EAFFE0A20B217EA00E>I< B4FCA2121FAAEB01FEA2EB00F014C0EB0380EB0700130C5B137C13FC139E130F001E1380 EB07C01303EB01E014F0EB00F838FFC3FFA218207E9F1C>107 DI<3AFE0FE03F8090391FF07FC03A1E70F9C3E09039407D01F0EB807E 121FEB007CAC3AFFE3FF8FFEA227147D932C>I<38FE0FC0EB3FE0381E61F0EBC0F81380 EA1F00AD38FFE7FFA218147D931D>I<48B4FC000713C0381F83F0383E00F8A248137CA2 00FC137EA6007C137CA26C13F8A2381F83F03807FFC00001130017147F931A>I<38FF1F C0EB7FF0381FE1F8EB80FCEB007EA2143E143FA6143E147E147CEB80FCEBC1F8EB7FE0EB 1F8090C7FCA7EAFFE0A2181D7E931D>I114 DI<1203A45AA25AA2123FEAFFFCA2EA1F00AA1306A5EA0F8CEA07F8EA03F00F1D 7F9C14>I<38FF07F8A2EA1F00AD1301A2EA0F063807FCFF6C5A18147D931D>I<39FFE07F 80A2391F001C00380F8018A26C6C5AA26C6C5AA2EBF0E000015B13F900005B13FF6DC7FC A2133EA2131CA219147F931C>I<3AFFC7FE1FE0A23A1F00F0030014F8D80F801306A290 38C1BC0E0007140CEBC3BE3903E31E18A29038F60F380001143001FE13B03900FC07E0A2 EBF80301785BA2903830018023147F9326>I<38FFC0FFA2380F80703807C0606D5A3803 E180EA01F36CB4C7FC137E133E133F497E136FEBC7C0380183E0380381F048C67E000E7F 39FF81FF80A219147F931C>I<39FFE07F80A2391F001C00380F8018A26C6C5AA26C6C5A A2EBF0E000015B13F900005B13FF6DC7FCA2133EA2131CA21318A2EA783012FC5BEAC0E0 EAE1C0EA7F80001EC8FC191D7F931C>I<383FFFE0A2383C07C038380F80EA701F38603F 00133E5BC65A1201485AEBE060EA07C0EA0F80001F13E0383F00C0EA3E01EA7C03B5FCA2 13147F9317>I E /Fc 18 118 df73 D<38FC1F80A238380E00A3EA3C1EEA1C1CA46C5AA4EA0630EA0770A3EA0360A213E0A26C 5A11177F9614>86 D88 D97 D99 D<137EA2130EA5EA07CEEA0FFEEA1C3EEA 301EEA700E12E0A61270EA301EEA383E381FEFC0EA07CF12177F9614>II<13FCEA01FEEA038EEA07041300A3EA7FFE12FFEA0700ACEAFFF8A20F17 7F9614>I<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317809614> 104 D<1206120FA21206C7FCA4B4FCA21207ACEAFFF8A20D187C9714>I108 D110 DII114 DI<12 06120EA4EA7FFC12FFEA0E00A8130EA3131CEA07F8EA01F00F157F9414>II E /Fd 2 104 df<133C13E0EA01C0EA0380 ADEA0700121E12F8121E1207EA0380ADEA01C0EA00E0133C0E257E9B13>102 D<12F8121E1207EA0380ADEA01C0EA00E0133C13E0EA01C0EA0380ADEA0700121E12F80E 257E9B13>I E /Fe 29 122 df11 D<126012F0A212701210A31220A21240A2040B 7D830B>44 D<126012F0A2126004047D830B>46 D<130CA3131EA2132F1327A2EB4380A3 EB81C0A200017F1300A248B47E38020070A2487FA3487FA2003C131EB4EBFFC01A1A7F99 1D>65 D71 D76 D<137F3801C1C038070070000E7F487F003C131E0038130E0078130F00707F00F01480A8 0078EB0F00A20038130E003C131E001C131C6C5B6C5B3801C1C0D8007FC7FC191A7E991E >79 D<007FB5FC38701C0700401301A200C0148000801300A300001400B13803FFE0191A 7F991C>84 D<39FFC0FF80390F003C0014106C5BEA03806D5A00015BEA00E101F1C7FC13 7A133E131C131EA21317EB27801343EB41C0EB81E0EA010048137000021378481338000C 7F001E133EB4EB7FC01A1A7F991D>88 D97 D<12FC121CA913FCEA1D07 381E0380381C01C0130014E0A6EB01C01480381E0300EA1906EA10F8131A809915>II<133F 1307A9EA03E7EA0C17EA180F487E127012E0A6126012706C5AEA1C373807C7E0131A7F99 15>IIII<12FC121CA9 137CEA1D87381E0380A2121CAB38FF9FF0141A809915>I<1218123CA212181200A612FC 121CAE12FF081A80990A>I<12FC121CB3A6EAFF80091A80990A>108 D<38FC7C1F391D8E6380391E0781C0A2001C1301AB39FF9FE7F81D107F8F20>IIII114 DI<1208A41218A21238EAFFC0EA3800A81320A41218EA1C40 EA07800B177F960F>I<38FC1F80EA1C03AB1307120CEA0E0B3803F3F01410808F15>I<39 FE7F1F8039381C0700003C1306381C0C04130E380E16081317A238072310149013A33803 C1A014E0380180C0A319107F8F1C>119 D<38FF0F80383C0700EA1C061304A26C5AA26C 5AA3EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>121 D E /Ff 2 122 df<120CA2EACCC012EDEA7F80EA0C00EA7F80EAEDC012CCEA0C00A20A 0B7D8B10>3 D<1218A512FFA21218AF08167D900E>121 D E /Fg 2 122 df<1202A3EAC218EAF278EA3AE0EA0F80A2EA3AE0EAF278EAC218EA0200A30D0E 7E8E12>3 D<1206A8EAFFF0A2EA0600B30C1D7E9611>121 D E /Fh 54 122 df<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47EA2 7E121E7EEA0780EA03C0EA01F0120013700C24799F18>40 D<126012F012787E7E7EEA07 801203EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A1260 0C247C9F18>II<136013F0A7387FFFC0B512E0 A26C13C03800F000A7136013147E9718>I<121C123E127E127F123F121F1207120E121E 127C12F81260080C788518>I<387FFFC0B512E0A26C13C013047E8F18>I49 D<1218123C127EA2123C12181200A81218123C127EA2123E121E120E121C123C127812F0 1260071A789318>59 D<137013F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80 A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>65 DIIIII<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290 C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1 141C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F0 38FF8FF8387F07F0151C7F9B18>II<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B13 385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8 387F03F0151C7F9B18>75 DI<38FC 01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03 F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A31361 1371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>III82 D<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC1270 1278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F8 0780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07 FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300 EA007C171C809B18>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E03000E1380 A438070700A4EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I<38FE03F8A3 38700070A36C13E0A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305000D1380EA 0F07A2EA0E03151C7F9B18>I<387F0FE0139F130F380E0700120FEA070E138EEA039C13 DCEA01F8A212005B137013F07F487E13DCEA039E138EEA070F7F000E13801303001E13C0 387F07F000FF13F8007F13F0151C7F9B18>I<383FFFE05AA2387001C01303EB07801400 C65A131E131C133C5B137013F0485A5B1203485A90C7FC5A001E13E0121C123C5A1270B5 FCA3131C7E9B18>90 D97 D<127E12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6000F1370 A2EB80E013C1EBFFC0000E138038063E00151C809B18>IIIII<3801E1F03807FFF85A381E1E3038 1C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801 F038700070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318>I<127E 12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FFE7FE387F C7FC171C809B18>II108 D<38F9C1C038FFF7F013FF 383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>IIII<3801F380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6EA 7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318 >I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EAFFFC7F5B14147E93 18>II<487E1203A4387FFFC0B5FC A238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE 0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000 FF13F8007F13F0381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A213 7015147F9318>I<38FF07F8138F1307383800E0A4381C01C0137113F9A213D9EA1DDD00 0D1380A3138DEA0F8FA23807070015147F9318>I<387F8FF0139F138F380F0700EA078E EA039EEA01DC13F81200137013F07FEA01DCEA039E138EEA0707000E1380387F8FF000FF 13F8007F13F015147F9318>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB 0700A2EA0387A2138EEA01CEA213CC120013DC1378A31370A313F05B1279EA7BC0EA7F80 6CC7FC121E151E7F9318>I E /Fi 45 122 df<1238127C12FEA3127C123807077C8610> 46 D<13181378EA01F812FFA21201B3A7387FFFE0A213207C9F1C>49 DI<13FE3807FFC0380F07E0381E03F0123FEB81F8A3EA1F 0314F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA2003C13FE12 7EB4FCA314FCEA7E01007813F8381E07F0380FFFC03801FE0017207E9F1C>I<14E01301 1303A21307130F131FA21337137713E7EA01C71387EA03071207120E120C121812381270 12E0B6FCA2380007E0A790B5FCA218207E9F1C>I<00301320383E01E0383FFFC0148014 005B13F8EA33C00030C7FCA4EA31FCEA37FF383E0FC0383807E0EA3003000013F0A214F8 A21238127C12FEA200FC13F0A2387007E0003013C0383C1F80380FFF00EA03F815207D9F 1C>II<12601278387FFFFEA214FC14F8A2 14F038E0006014C038C00180EB0300A2EA00065B131C131813381378A25BA31201A31203 A76C5A17227DA11C>I<1470A214F8A3497EA2497EA3EB067FA2010C7F143FA2496C7EA2 01307F140F01707FEB6007A201C07F90B5FC4880EB8001A2D803007F14004880000680A2 3AFFE007FFF8A225227EA12A>65 D67 D IIII76 D I79 D82 D<3801FE023807FF86381F01FE383C007E007C131E0078130EA200F81306A27E1400B4FC 13E06CB4FC14C06C13F06C13F86C13FC000313FEEA003F1303EB007F143FA200C0131FA3 6C131EA26C133C12FCB413F838C7FFE00080138018227DA11F>I<007FB61280A2397E03 F80F00781407007014030060140100E015C0A200C01400A400001500B3A248B512F0A222 227EA127>II87 D97 DIII<13FE3807FF80380F87C0381E01 E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA2127E003E13186C1330380FC0 703803FFC0C6130015167E951A>II<3801FE0F3907FFBF80380F87C738 1F03E7391E01E000003E7FA5001E5BEA1F03380F87C0EBFF80D809FEC7FC0018C8FCA212 1C381FFFE06C13F86C13FE001F7F383C003F48EB0F80481307A40078EB0F006C131E001F 137C6CB45A000113C019217F951C>II<121C123E127FA3123E121CC7FCA7B4FCA212 1FB2EAFFE0A20B247EA310>I<1338137C13FEA3137C13381300A7EA03FEA2EA003EB3A5 127812FC133C137CEA78F8EA7FE0EA1F800F2E83A311>I108 D<3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C487EA201 001300AE3BFFE0FFE0FFE0A22B167E9530>I<38FF07E0EB1FF8381F307CEB403CEB803E A21300AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F848 137CA300FC137EA7007C137CA26C13F8381F01F0380F83E03807FFC03800FE0017167E95 1C>I<38FF0FE0EB3FF8381FE07CEB803E497E1580A2EC0FC0A8EC1F80A29038803F00EB C03EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>IIII<487EA41203A21207A2120F123FB5FCA2EA0F80ABEB8180A5EB8300EA07 C3EA03FEEA00F811207F9F16>I<38FF01FEA2381F003EAF147E14FE380F81BE3907FF3F C0EA01FC1A167E951F>I<3AFFE3FF07F8A23A1F007800C09038807C01000F1580A23A07 C07E030014DE5D3903E1DF06148FD801F1138CEBF307A2D800FF13D8EBFE0315F890387C 01F0A2013C5BEB3800A225167F9528>119 D<39FFE07FC0A2390F801C006C6C5A6C6C5A EBF0606C6C5A3800F980137F6DC7FC7F80497E1337EB63E0EBC1F03801C0F848487E3807 007E000E133E39FF80FFE0A21B167F951E>I<39FFE01FE0A2391F800700000F1306EBC0 0E0007130C13E000035BA26C6C5AA26C6C5AA2EB7CC0A2137F6D5AA26DC7FCA2130EA213 0CA25B1278EAFC3813305BEA69C0EA7F80001FC8FC1B207F951E>I E /Fj 29 122 df12 D<1330A31320A2381861C0381C678038064E00EA0378EA01E0A2EA07B0EA1C98EA798EEA E1860001C7FCA25AA3121478A117>42 D45 D<14021406A2140E141EA2143F142F144F14CF148FEB010FA21302A213041308A2011013 8014071320EB3FFFEB40071380A2EA0100A2120212061204001E14C039FF807FF81D207E 9F22>65 D<903807E04090381C18C09038300580EB600313C000011301018013001203A3 91C7FC7FA213F86CB47E14E06C6C7E131FEB01F8EB0078A21438A21220A2143000601370 146014E000705B38E80380D8C606C7FCEA81F81A217D9F1A>83 D97 DI<137E EA01C138030080EA0E07121E001C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838 EA07C011147C9315>I<1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA 0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F0700 15207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4 127013011302EA3804EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB07181400 A2130EA5EBFFE0EB1C00A45BA55BA55BA5485AA35B1231007BC7FC12F31266123C162982 9F0E>III< 13C0EA01E0A213C0C7FCA7120E12131223EA4380EA4700A21287120EA35AA3EA38401380 A21270EA31001232121C0B1F7C9E0E>IIII<391C0F80F0392630C318394740640C903880680EEB0070A2008E49 5A120EA34848485AA3ED70803A3803807100A215E115623970070064D83003133821147C 9325>I<381C0F80382630C0384740601380EB0070A2008E13E0120EA3381C01C0A3EB03 8400381388A2EB0708EB031000701330383001C016147C931A>I<137CEA01C338030180 000E13C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F130EEA3018EA1870 EA07C013147C9317>I<3801C1E0380262183804741C1378EB701EA2EA08E01200A33801 C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2B47E171D 809317>I114 D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA 03FCEA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>II<000E13C0001313E0382301C0EA4381EA4701A238870380120EA3381C07 00A31410EB0E201218A2381C1E40EA0C263807C38014147C9318>I<380E0380EA130700 2313C0EA4383EA4701130000871380120EA3381C0100A31302A25BA25BEA0E30EA03C012 147C9315>I<000EEBC1C0001313E3392301C3E0384381C1384701C01560398703804012 0EA3391C070080A3EC0100A21306EB0F02000C5B380E13083803E1F01B147C931E>I<38 038380380CC440381068E013711220EB70C03840E0001200A3485AA314403863808012F3 EB810012E5EA84C6EA787813147D9315>I<000E13C0001313E0382301C0EA4381EA4701 A238870380120EA3381C0700A4130E1218A2EA1C1EEA0C3CEA07DCEA001CA25B12F05BEA E060485AEA4380003EC7FC131D7C9316>I E /Fk 34 122 df<130E131E137EEA07FE12 FFA212F81200B3ABB512FEA317277BA622>49 DII<140FA25C5C5C5C5BA2EB03BFEB073F130E131C133C1338137013E0EA 01C0EA038012071300120E5A5A5A12F0B612F8A3C7EA7F00A890381FFFF8A31D277EA622 >I<00181303381F801FEBFFFE5C5C5C14C091C7FC001CC8FCA7EB7FC0381DFFF8381F80 FC381E003F1208C7EA1F8015C0A215E0A21218127C12FEA315C05A0078EB3F80A26CEB7F 00381F01FE6CB45A000313F0C613801B277DA622>II66 D69 DI<91387FE003903907FFFC07011FEBFF0F90397FF00F9F90 39FF0001FFD801FC7F484880484880484880485A82485A82127FA290CAFC5AA892B512F8 7E7F03001300123FA26C7EA26C7E6C7E6C7E6C7E6CB45B90387FF007011FB5129F0107EB FE0F9039007FF0032D297CA835>I76 D79 D<9038FF80600003EBF0E0000F13F8381F80FD383F001F003E1307481303A200FC1301A2 14007EA26C140013C0EA7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB 007FEC1FF0140F140700E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE00 00E15B38C01FF01C297CA825>83 D<3B7FFFF01FFFE0A3000190C7EAF0006C6D485A02C0 5B017F13036D6C485AD91FF090C7FC5D90380FF81E6D6C5A1538903803FE786D6C5A5D6D 5B147F6E7EA26E7E81143F81EC7BFEECF3FFEB01E102C07F01036D7EEB078049486C7E01 0E6D7E131E496D7E01386D7E498001F0130348486D7EB5013F13FCA32E297EA833>88 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA 0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803FC031E1B7E9A21 >97 D99 DII<9038FF80F00003EBE3F8390FC1FE1C391F007C7C48137E003EEB3E 10007EEB3F00A6003E133E003F137E6C137C380FC1F8380BFFE00018138090C8FC1238A2 123C383FFFF814FF6C14C06C14E06C14F0121F383C0007007CEB01F8481300A4007CEB01 F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>103 DI<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7 FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I108 D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC90 39C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FF C07E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA3 201B7D9A25>II<38FFE1FE9038EFFF809038FE0FE0390FF803F09038F001 F801E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038F807F09038FC0FE0 9038EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC1F0EBC7FCEBC63E 380FCC7F13D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114 D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C 13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C137038FF01E038E7FF C000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381FFFE0B5FCA2380FE000 AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<39FFE07FF0A3000F13 07B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25>I<39FFFC03FFA339 0FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA214 9EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFFFC7FFC1FFCA33B0FE0 0FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600 FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2 EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803F8079038FC0F003801 FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F 803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<39FFFC03FFA3390FF0 00F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000140013FFEB7F0EA2149EEB 3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C0FEAFE0E131E131C5B EA74F0EA3FE0EA0F8020277F9A23>I E /Fl 4 104 df<14FF010713E090381F00F80178 131E01E01307D80180EB018048C812C000061560481530A248151848150CA2481506A448 1503A900601506A46C150CA26C15186C1530A26C15606C15C06C6CEB0180D800E0EB0700 0178131E011F13F8903807FFE0010090C7FC282B7EA02D>13 D15 D<130F1338136013E0EA01C0AFEA0380EA0700121E12F8121E1207EA0380EA01C0AFEA00 E013601338130F102D7DA117>102 D<12F8121E1207EA0380EA01C0AFEA00E013601338 130F1338136013E0EA01C0AFEA0380EA0700121E12F8102D7DA117>I E /Fm 72 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000 A7B612803907007000B2383FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA07 01A290C7FCA6B512E0EA0700B2383FC3FC1620809F19>II<90381F81F89038F04F043901C07C0639 0380F80FEB00F05A0270C7FCA6B7FC3907007007B23A3FE3FE3FE02320809F26>I<9038 1F81FF9038F06F073901C07C0F380380F849487E481370A7B7FC3907007007B23A3FE3FE 3FE02320809F26>I<127012F812FCA212741204A31208A21210A212201240060E7C9F0D> 39 D<13401380EA01005A12061204120C5AA212381230A212701260A412E0AC1260A412 701230A212381218A27E120412067E7EEA008013400A2E7BA112>I<7E12407E12307E12 08120C7EA212077EA213801201A413C0AC1380A412031300A25A1206A25A120812185A12 205A5A0A2E7EA112>I<1303AFB612FCA2D80003C7FCAF1E207E9A23>43 D<127012F012F8A212781208A31210A31220A21240050E7C840D>II<127012F8A3127005057C840D>I<144014C0EB0180A3EB0300A31306A25BA35BA35B A25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35AA2122D7EA117>II<13801203120F12F31203B3A6EA07C0EAFFFE0F1E7C9D 17>III<1306A2130EA2131E132EA2134E138EA2EA010E1202A212041208 A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17>II<137CEA0182EA0701380E0380 EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEAF406EAF807EB0380A200F013 C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F7E9D17>I<1240387FFFE014 C0A23840008038800100A21302485AA25B5BA25BA21360A213E05B1201A41203A76C5A13 1F7E9D17>III<127012F8A312701200AA127012F8A3 127005147C930D>I<127012F8A312701200AA127012F012F8A212781208A31210A31220 A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB 801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F 22>65 DI<90380FE0109038 381C309038E002703803C00139078000F048C71270121E15305A1510127C127800F81400 A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C21 7E9F21>IIII<90380F E0109038381C309038E002703803C00139078000F048C71270121E15305A1510127C1278 00F81400A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903C001703900E0023090 38380C1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FF F07FF81D1F7E9E22>II76 DIIII82 D<3803F040380C0CC0EA1803EA3001EA6000A2 12E01440A36C13007E127CEA7F80EA3FF86CB4FC00071380C613C0EB1FE013031301EB00 F014707EA46C136014E06C13C038F8018038C60300EA81FC14217E9F19>I<007FB512E0 38780F010060EB006000401420A200C0143000801410A400001400B3497E3803FFFC1C1F 7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C5A EB3830EB0FC01D207E9E22>I<39FFF003FE391F8000F86CC7126015206C6C1340A36C6C 1380A2EBE00100011400A23800F002A213F8EB7804A26D5AA36D5AA2131F6D5AA2EB07C0 A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F000FC007C06C90390780018017 0015C001805C00071502EC09E013C000035DEC19F01410D801E05CA2EC2078D800F05CA2 EC403C01785CA2EC801E017C1460013C144090383D000F133F6D5CA2011E1307010E91C7 FCA2010C7F010413022C207F9E2F>I<397FF81FF8390FE007C03907C0030000031302EB E0063801F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA213076D7E497E1305EB08 F0EB18F8EB1078EB207CEB603EEB401EEB801F3901000F801407000214C000061303001F EB07E039FFC01FFE1F1F7F9E22>I97 D<121C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478A6147014F014E0 001E13C0381A018038198700EA107C15207E9F19>IIII<137CEA01C6EA03 0F1207EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330EA0E3CEA 1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF80 14C0383001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417>I< 121C12FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<123812 7CA31238C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3EA00E01300A6 1370EA07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<121C12FC12 1CAAEB1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C7F130F 7F148014C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F9F0C>I<391C3E 03E039FCC30C30391D039038391E01E01CA2001C13C0AE3AFF8FF8FF8021147E9326>I< EA1C7CEAFC86EA1D03001E1380A2121CAE38FF8FF014147E9319>III<3801F04038070C C0EA0E02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01F1EA 0001A8EB0FF8151D7F9318>III<1202A31206A2120EA2123EEAFF F8EA0E00AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE1307 120CEA061B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C1380A338070100 A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC393C 078070391C030060EC8020000E1440A214C0D80704138014E0A239038861001471A23801 D032143A143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E0180 EB0300EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA0607380403 80000C13C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C1380A3 38070100A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200F1C7 FC1262123C151D7F9318>II E /Fn 134[27 25 1[22 26 24 26 23 1[26 27 24 33 9 22 1[15 25 26 25 23 29 26 28 28 8[33 2[25 35 28 34 2[29 1[29 27 2[9 1[31 3[30 30 39 7[24 1[28 4[25 10 2[10 25 12 5[26 38[{}43 50.000000 /whaeberli rf /Fo 23 122 df<127012F8A312701200AB127012 F8A3127005157C940E>58 D75 D80 D82 D<3BFFF03FFC03FE3B1F8007E000F86C486C48137017206E7ED807801540A24A 7E2603C0021480A39039E004780100011600A2EC083CD800F01402A2EC101E01785CA2EC 200F013C5CA20260138890391E400790A216D090391F8003F0010F5CA2EC00016D5CA201 06130001025C2F237FA132>87 D97 D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA7141C14 3C1438000F1370380C8060EB41C038083F0017237FA21B>II<14E0130F13011300ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0 A7127012781238EA1801EA0C0238070CF03801F0FE17237EA21B>II<120E12FE121E120EABEB1F80EB60C0EB80E0380F 0070A2120EAF38FFE7FF18237FA21B>104 D<121C123EA3121CC7FCA8120E127E121E12 0EB1EAFFC00A227FA10E>I<120E12FE121E120EABEB03FCEB01F014C01480EB02005B5B 5B133813F8EA0F1CEA0E1E130E7F1480EB03C0130114E0EB00F014F838FFE3FE17237FA2 1A>107 D<120E12FE121E120EB3ADEAFFE00B237FA20E>I<390E1FC07F3AFE60E183803A 1E807201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE27157F942A>I<380E1F8038FE 60C0381E80E0380F0070A2120EAF38FFE7FF18157F941B>II114 DI<1202 A41206A3120E121E123EEAFFFCEA0E00AB1304A6EA07081203EA01F00E1F7F9E13>I<00 0E137038FE07F0EA1E00000E1370AD14F0A238060170380382783800FC7F18157F941B> I<38FF80FE381E00781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00E2 A31374A21338A3131017157F941A>I<38FF80FE381E00781430000E1320A26C1340A2EB 80C000031380A23801C100A2EA00E2A31374A21338A31310A25BA35B12F05B12F10043C7 FC123C171F7F941A>121 D E /Fp 27 122 df<126012F0A2126004047C830C>46 D<5A1207123F12C71207B3A5EAFFF80D1C7C9B15>49 DI 66 D68 D70 D<90381F8080EBE0613801 801938070007000E13035A14015A00781300A2127000F01400A6ECFFF0EC0F8000701307 1278A212387EA27E6C130B380180113800E06090381F80001C1E7E9C21>I76 D82 D<39FFF07FC0390FC01E0038 07800CEBC00800035B6C6C5A13F000005BEB7880137C013DC7FC133E7F7F80A2EB13C0EB 23E01321EB40F0497E14783801007C00027F141E0006131F001F148039FF807FF01C1C7F 9B1F>88 D97 D<12FC121CAA137CEA1D87381E0180381C 00C014E014601470A6146014E014C0381E018038190700EA10FC141D7F9C17>IIII103 D<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>105 D<12FC121CAAEB0FE0EB0780EB06005B13105B5B13E0121DEA1E70EA1C781338133C131C 7F130F148038FF9FE0131D7F9C16>107 D<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E 07E0391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>III114 DI<1204A4120CA2121C123CEAFFE0EA1C00A9 1310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3 F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A2 13C8EA01D0A2EA00E0A31340A25BA212F000F1C7FC12F312661238131A7F9116>121 D E /Fq 1 14 df13 D E /Fr 27 122 df<13021304130813101330136013C0A2EA0180A2EA03005A1206120EA2120C121CA212 181238A35AA612F0A25AAD7EA21270A67EA31218121CA2120C120EA2120612077EEA0180 A2EA00C0A21360133013101308130413020F497AB519>40 D<7E12407E7E12187E7EA27E A2EA018013C0120013E0A213601370A213301338A3131CA6131EA2130EAD131EA2131CA6 1338A313301370A2136013E0A213C012011380EA0300A21206A25A5A12105A5A5A0F497C B519>I<127812FCA4127806067A8512>46 D<130813381378EA01F8123FEAFE7812C012 00B3B313FC387FFFF8A2152F7AAE21>49 DI71 D76 D79 D<90387F80203801FFE03907C07860380F001C001EEB06E0481303003813010078130012 70156012F0A21520A37E1500127C127E7E13C0EA1FF86CB47E6C13F06C13FCC613FF010F 1380010013C0EC1FE01407EC03F01401140015F8A26C1478A57E15706C14F015E07E6CEB 01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF01D337CB125>83 D86 DI<267FFF80EBFFF8 A2D803FEC7EA3F806C48EC1E0000001518017E141016306D14206D6C5B16C06D6C5B6D6C 48C7FC0103130214F06D6C5A01005B14FCEC7E10EC3E20EC3F606E5A6E5A816E7E14034A 7EEC05F814084A7E157EEC203EEC403F9138C01F80EC800FD901007F496D7E0102130349 80010C6D7E0108130049800130147E0120143E49143F01C0EC1F801201D80FE0EC3FE0D8 FFF891B5FCA230317FB032>I<13FE380303C0380C00E00010137080003C133C003E131C 141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143EA2 1278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97 D99 D<15F0141FA214011400AFEB0FC0EB70303801C00C3803800238070001120E 001E13005AA2127C1278A212F8A71278A2127C123CA27E000E13016C1302380380046C6C 487E3A00F030FF80EB1FC021327EB125>II104 D<120FEA1F80A4EA0F00C7FCABEA0780127FA2120F1207B3A6EA 0FC0EAFFF8A20D307EAF12>I<260780FEEB1FC03BFF83078060F0903A8C03C180783B0F 9001E2003CD807A013E4DA00F47F01C013F8A2495BB3A2486C486C133F3CFFFC1FFF83FF F0A2341F7E9E38>109 D<380780FE39FF83078090388C03C0390F9001E0EA07A06E7E13 C0A25BB3A2486C487E3AFFFC1FFF80A2211F7E9E25>I I<380781FC39FF86078090388801C0390F9000E0D807A0137001C01378497F153E151E15 1FA2811680A716005DA2151E153E153C6D5B01A013705D90389803C0D9860FC7FCEB81F8 0180C8FCAB487EEAFFFCA2212D7E9E25>I<380783E038FF8418EB887CEA0F90EA07A014 38EBC000A35BB3487EEAFFFEA2161F7E9E19>114 D<3801FC10380E0330381800F04813 7048133012E01410A37E6C1300127EEA3FF06CB4FC6C13C0000313E038003FF0EB01F813 006C133CA2141C7EA27E14186C1338143000CC136038C301C03880FE00161F7E9E1A>I< 1340A513C0A31201A212031207120F381FFFE0B5FC3803C000B01410A80001132013E000 001340EB78C0EB1F00142C7FAB19>I<3BFFF03FF80FFCA23B0F8007E003F0913903C001 C00007ED0080A201C0EBE00100031600140401E06D5A00011502EC087001F0EB78060000 1504EC10380178EB3C08A2EC201C013CEB1E10A2EC400E011EEB0F20A2EC8007010F14C0 A2EC00036D5CA201061301010291C7FC2E1F7F9E30>119 D121 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 0 1 0 0 bop 651 422 a Fr(Op)r(enGL)901 396 y Fq(\015)-39 b Fp(R)965 422 y Fr(Graphics)816 513 y(with)22 b(the)646 605 y(X)f(Windo)n(w)g(System)1185 579 y Fq(\015)-39 b Fp(R)753 676 y Fr(\(V)-6 b(ersion)22 b(1.2\))802 802 y Fo(Phil)16 b(Karlton)643 860 y(Revised)f(b)o(y:)21 b(P)o(aula)c(W)l(omac)o(k)508 1027 y Fn(Copyright)765 1026 y Fm(c)753 1027 y Fl(\015)j Fn(1992-1997)g(Silicon)g(Graphics,)i (Inc.)411 1133 y(This)e(document)i(contains)e(unpublished)i (information)f(of)770 1189 y(Silicon)g(Graphics,)g(Inc.)224 1296 y Fm(This)14 b(do)q(cumen)o(t)g(is)g(protected)g(b)o(y)f(cop)o (yrigh)o(t,)g(and)h(con)o(tains)g(information)f(proprietary)224 1352 y(to)i(Silicon)k(Graphics,)d(Inc.)22 b(An)o(y)16 b(cop)o(ying,)g(adaptation,)g(distribution,)h(public)h(p)q(erfor-)224 1409 y(mance,)d(or)f(public)j(displa)o(y)f(of)f(this)g(do)q(cumen)o(t)g (without)g(the)g(express)g(written)g(consen)o(t)224 1465 y(of)e(Silicon)j(Graphics,)e(Inc.)20 b(is)14 b(strictly)g(prohibited.) 21 b(The)14 b(receipt)g(or)f(p)q(ossession)i(of)e(this)224 1522 y(do)q(cumen)o(t)19 b(do)q(es)g(not)f(con)o(v)o(ey)g(an)o(y)g (righ)o(ts)g(to)g(repro)q(duce,)h(disclose,)h(or)e(distribute)i(its)224 1578 y(con)o(ten)o(ts,)12 b(or)g(to)g(man)o(ufacture,)h(use,)g(or)f (sell)i(an)o(ything)f(that)f(it)h(ma)o(y)f(describ)q(e,)i(in)g(whole) 224 1634 y(or)h(in)h(part.)524 1728 y Fn(U.S.)21 b(Government)g (Restricted)g(Rights)f(Legend)224 1822 y Fm(Use,)j(duplication,)i(or)c (disclosure)i(b)o(y)f(the)g(Go)o(v)o(ernmen)o(t)e(is)i(sub)s(ject)g(to) f(restrictions)224 1879 y(set)g(forth)f(in)h(F)-5 b(AR)21 b(52.227.19\(c\)\(2)o(\))d(or)i(subparagraph)g(\(c\)\(1\)\(ii\))g(of)g (the)h(Righ)o(ts)g(in)224 1935 y(T)l(ec)o(hnical)16 b(Data)e(and)g (Computer)g(Soft)o(w)o(are)f(clause)i(at)f(DF)-5 b(ARS)14 b(252.227-7013)e(and/or)224 1991 y(in)21 b(similar)g(or)e(successor)h (clauses)h(in)g(the)f(F)-5 b(AR)20 b(or)f(the)h(DOD)g(or)f(NASA)h(F)-5 b(AR)20 b(Sup-)224 2048 y(plemen)o(t.)28 b(Unpublished)20 b(righ)o(ts)d(reserv)o(ed)h(under)g(the)f(cop)o(yrigh)o(t)g(la)o(ws)h (of)f(the)g(United)224 2104 y(States.)30 b(Con)o(tractor/man)o (ufacturer)16 b(is)j(Silicon)i(Graphics,)f(Inc.,)f(2011)f(N.)g (Shoreline)224 2161 y(Blvd.,)e(Moun)o(tain)f(View,)g(CA)g(94039-7311.) 333 2255 y Fn(OpenGL)22 b(is)d(a)h(registered)i(trademark)f(of)f (Silicon)h(Graphics,)g(Inc.)259 2311 y(X)f(is)f(a)h(registered)i (trademark)g(of)e(the)g(Massachussetts)i(Institute)f(of)878 2368 y(Technology)295 2424 y(Unix)e(is)g(a)h(registered)i(trademark)g (of)e(A)g(T)g(&)g(T)g(Bell)h(Laboratories.)p eop %%Page: 1 2 1 1 bop 224 469 a Fr(Op)r(enGL)474 443 y Fq(\015)-39 b Fp(R)536 469 y Fr(Graphics)20 b(with)f(the)h(X)g(Windo)n(w)f(System) 1607 443 y Fq(\015)-39 b Fp(R)802 595 y Fo(Phil)16 b(Karlton)643 653 y(Revised)f(b)o(y:)21 b(P)o(aula)c(W)l(omac)o(k)224 903 y Fk(1)67 b(Ov)n(erview)224 1004 y Fm(This)14 b(do)q(cumen)o(t)f (describ)q(es)i(GLX,)e(the)g(Op)q(enGL)h(extension)g(to)f(the)g(X)g (Windo)o(w)224 1061 y(System.)19 b(It)13 b(refers)f(to)g(concepts)h (discussed)h(in)g(the)e(Op)q(enGL)i(sp)q(eci\014cation,)h(and)224 1117 y(ma)o(y)e(b)q(e)h(view)o(ed)f(as)g(an)g(X)h(sp)q(eci\014c)h(app)q (endix)g(to)d(that)h(do)q(cumen)o(t.)19 b(P)o(arts)12 b(of)h(the)224 1173 y(do)q(cumen)o(t)j(assume)f(some)g(acquain)o(tance) g(with)h(b)q(oth)f(the)h(Op)q(enGL)g(and)g(X.)295 1230 y(In)j(the)g(X)g(Windo)o(w)g(System,)g(Op)q(enGL)h(rendering)g(is)f (made)g(a)o(v)m(ailable)i(as)224 1286 y(an)15 b(extension)h(to)e(X)h (in)g(the)g(formal)g(X)f(sense:)21 b(connection)16 b(and)f(authen)o (tication)224 1343 y(are)h(accomplished)j(with)e(the)g(normal)f(X)h (mec)o(hanisms.)24 b(As)17 b(with)g(other)f(X)h(ex-)224 1399 y(tensions,)g(there)f(is)g(a)g(de\014ned)h(net)o(w)o(ork)e(proto)q (col)h(for)g(the)g(Op)q(enGL)h(rendering)224 1456 y(commands)e (encapsulated)i(within)f(the)f(X)h(b)o(yte)f(stream.)295 1512 y(Since)25 b(p)q(erformance)e(is)h(critical)g(in)h(3D)d (rendering,)k(there)e(is)g(a)e(w)o(a)o(y)h(for)224 1569 y(Op)q(enGL)17 b(rendering)g(to)e(b)o(ypass)h(the)g(data)f(enco)q(ding) i(step,)f(the)g(data)f(cop)o(ying,)224 1625 y(and)g(in)o(terpretation)f (of)h(that)e(data)h(b)o(y)h(the)f(X)h(serv)o(er.)k(This)c Fj(dir)n(e)n(ct)g(r)n(endering)f Fm(is)224 1682 y(p)q(ossible)k(only)f (when)g(a)f(pro)q(cess)h(has)f(direct)h(access)g(to)f(the)g(graphics)h (pip)q(eline)q(.)224 1738 y(Allo)o(wing)j(for)e(parallel)j(rendering)e (has)g(a\013ected)g(the)f(design)i(of)e(the)h(GLX)g(in-)224 1794 y(terface.)h(This)15 b(has)g(resulted)h(in)g(an)e(added)i(burden)g (on)f(the)g(clien)o(t)h(to)e(explicitly)224 1851 y(prev)o(en)o(t)h (parallel)i(execution)f(when)g(that)e(is)i(inappropriate.)295 1907 y(X)10 b(and)h(the)f(Op)q(enGL)i(ha)o(v)o(e)e(di\013eren)o(t)g (con)o(v)o(en)o(tions)g(for)g(naming)h(en)o(try)f(p)q(oin)o(ts)224 1964 y(and)16 b(macros.)j(The)c(GLX)g(extension)h(adopts)f(those)g(of)g (the)g(Op)q(enGL.)224 2107 y Fk(2)67 b(GLX)22 b(Op)r(eration)224 2210 y Fi(2.1)56 b(Rendering)17 b(Con)n(texts)i(and)g(Dra)n(wing)g (Surfaces)224 2296 y Fm(The)k(Op)q(enGL)h(sp)q(eci\014cation)g(is)f(in) o(ten)o(tionally)h(v)m(ague)f(on)g(ho)o(w)f(a)g(rendering)224 2352 y(con)o(text)f(\(an)h(abstract)e(Op)q(enGL)j(state)e(mac)o(hine\)) i(is)f(created.)39 b(One)23 b(of)e(the)224 2409 y(purp)q(oses)f(of)e (GLX)h(is)h(to)e(pro)o(vide)i(a)e(means)h(to)g(create)f(an)h(Op)q(enGL) i(con)o(text)224 2465 y(and)16 b(asso)q(ciate)f(it)g(with)h(a)f(dra)o (wing)g(surface.)925 2613 y(1)p eop %%Page: 2 3 2 2 bop 295 286 a Fm(In)19 b(X,)g(a)f(rendering)i(surface)e(is)i (called)g(a)e Fh(Drawable)p Fm(.)30 b Fh(Window)p Fm(s,)18 b(one)h(t)o(yp)q(e)224 343 y(of)j Fh(Drawable)p Fm(,)g(are)g(asso)q (ciated)g(with)g(a)g Fh(Visual)p Fm(.)1128 326 y Fg(\003)1188 343 y Fm(The)g(X)g(proto)q(col)g(allo)o(ws)224 399 y(for)17 b(a)g(single)h Fh(VisualID)e Fm(to)h(b)q(e)h(instan)o(tiated)f(at)g(m)o (ultiple)i(depths.)27 b(The)17 b(GLX)224 456 y(bindings)22 b(allo)o(w)f(only)g(one)f(depth)h(for)f(an)g(Op)q(enGL)h(renderer)g (for)f(an)o(y)g(giv)o(en)224 512 y Fh(VisualID)p Fm(.)11 b(In)i(GLX)f(the)g(de\014nition)i(of)e Fh(Visual)g Fm(has)g(b)q(een)h (extended)g(to)f(include)224 569 y(the)18 b(t)o(yp)q(es,)f(quan)o (tities)h(and)g(sizes)g(of)f(the)h(ancillary)h(bu\013ers)e(\(depth,)h (accum)o(u-)224 625 y(lation,)h(auxiliary)l(,)h(and)e(stencil\).)29 b(Double)19 b(bu\013ering)g(capabilit)o(y)g(is)g(also)e(\014xed)224 682 y(b)o(y)f(the)g Fh(Visual)p Fm(.)524 665 y Fg(y)564 682 y Fm(The)g(ancillary)i(bu\013ers)e(ha)o(v)o(e)g(no)g(meaning)h (within)g(the)f(core)224 738 y(X)h(en)o(vironmen)o(t.)26 b(The)17 b(set)g(of)g(extended)h Fh(Visual)p Fm(s)e(is)h(\014xed)h(at)e (serv)o(er)h(startup)224 795 y(time.)j(One)15 b(result)f(is)g(that)f(a) h(serv)o(er)f(can)h(exp)q(ort)g(m)o(ultiple)i Fh(Visual)p Fm(s)d(that)g(di\013er)224 851 y(only)j(in)g(the)f(extended)h (attributes.)295 907 y(The)i(other)f(t)o(yp)q(e)h(of)f(X)h Fh(Drawable)e Fm(is)j(a)e Fh(Pixmap)p Fm(,)g(a)h(dra)o(wing)f(surface)h (that)224 964 y(is)24 b(main)o(tained)f(o\013)f(screen.)44 b(The)23 b(GLX)g(equiv)m(alen)o(t)h(to)e(an)h(X)g Fh(Pixmap)f Fm(is)h(a)224 1020 y Fh(GLXPixmap)p Fm(.)35 b(A)21 b Fh(GLXPixmap)e Fm(is)i(created)g(using)g(the)g Fh(Visual)e Fm(along)i(with)g(its)224 1077 y(extended)d(attributes.)25 b(The)17 b Fh(Visual)f Fm(is)i(used)f(to)f(de\014ne)j(the)e(t)o(yp)q(e) g(and)g(size)h(of)224 1133 y(the)h(Ancillary)h(bu\013ers)f(asso)q (ciated)g(with)g(the)f Fh(Pixmap)p Fm(.)30 b(The)19 b Fh(Pixmap)e Fm(is)j(used)224 1190 y(as)i(the)g(fron)o(t-left)g(color)h (bu\013er.)41 b(A)22 b Fh(GLXDrawable)f Fm(is)i(the)f(union)i Fl(f)p Fh(Window)p Fm(,)224 1246 y Fh(GLXPixmap)p Fl(g)p Fm(.)295 1303 y(Ancillary)15 b(bu\013ers)f(are)f(asso)q(ciated)h(with)g (a)f Fh(GLXDrawable)p Fm(,)f(not)h(with)h(a)g(ren-)224 1359 y(dering)i(con)o(text.)j(If)d(sev)o(eral)f(Op)q(enGL)i(renderers)e (are)g(all)h(writing)g(to)e(the)h(same)224 1416 y(windo)o(w,)f(they)h (will)h(share)e(those)g(bu\013ers.)19 b(Rendering)d(op)q(erations)e(to) g(one)g(win-)224 1472 y(do)o(w)21 b(nev)o(er)h(a\013ect)f(the)h (unobscured)h(pixels)g(of)e(another)g(windo)o(w,)j(or)d(of)g(the)224 1528 y(corresp)q(onding)e(pixels)h(of)d(ancillary)j(bu\013ers)e(of)g (that)f(windo)o(w.)29 b(If)18 b(an)g Fh(Expose)224 1585 y Fm(ev)o(en)o(t)d(is)h(receiv)o(ed)h(b)o(y)e(the)h(clien)o(t,)g(the)g (v)m(alues)g(in)h(the)e(ancillary)i(bu\013ers)f(and)f(in)224 1641 y(the)f(bac)o(k)g(bu\013ers)g(for)f(regions)h(corresp)q(onding)h (to)e(the)h(exp)q(osed)g(region)g(b)q(ecome)224 1698 y(unde\014ned.)295 1754 y(A)f(rendering)g(con)o(text)g(can)g(b)q(e)g (used)g(with)h(m)o(ultiple)g Fh(GLXDrawable)p Fm(s)d(as)i(long)224 1811 y(as)k(those)g Fh(Drawable)p Fm(s)e(are)i Fj(similar)p Fm(.)25 b(Similar)18 b(means)f(that)g(the)g(rendering)h(con-)224 1867 y(texts)d(and)g Fh(GLXDrawable)p Fm(s)f(are)h(created)g(with)g (the)h(same)f Fh(XVisualInfo)p Fm(.)295 1924 y(An)22 b(application)i(can)f(use)f(an)o(y)g(rendering)i(con)o(text)d(\(sub)s (ject)h(to)g(the)g(re-)224 1980 y(strictions)16 b(discussed)h(in)g(the) e(section)h(on)g(address)g(spaces\))f(to)g(render)h(in)o(to)f(an)o(y) 224 2037 y(similar)k Fh(GLXDrawable)p Fm(.)26 b(An)18 b(implication)i(is)e(that)f(m)o(ultiple)j(applications)f(can)224 2093 y(render)d(in)o(to)f(the)g(same)g(windo)o(w,)g(eac)o(h)g(using)h (a)f(di\013eren)o(t)h(rendering)g(con)o(text.)p 224 2133 570 2 v 275 2159 a Ff(\003)293 2175 y Fe(The)10 b(asso)q(ciation)j(is)e (with)g(a)f Fd(f)p Fc(Visual)p Fe(,)e Fc(screen)p Fe(,)g Fc(depth)p Fd(g)g Fe(triple.)18 b(An)10 b Fc(XVisualIn)o(fo)c Fe(is)11 b(used)224 2221 y(b)o(y)i(GLX)g(functions)i(since)f(it)f(can)h (b)q(e)f(in)o(terpreted)h(unam)o(biguosl)q(y)m(.)277 2252 y Ff(y)293 2268 y Fe(An)o(y)h(rendering)h(system)e(is)h(free)f(to) h(use)f(the)h(ancillary)i(bu\013ers)e(as)f(long)i(as)e(it)h(uses)g (them)224 2313 y(in)f(a)f(manner)h(consisten)o(t)g(with)g(the)f(use)g (b)o(y)h(the)f(Op)q(enGL.)925 2613 y Fm(2)p eop %%Page: 3 4 3 3 bop 224 286 a Fi(2.2)56 b(Using)18 b(Rendering)g(Con)n(texts)224 372 y Fm(Op)q(enGL)k(de\014nes)f(b)q(oth)f(clien)o(t)h(state)f(and)g (serv)o(er)g(state.)33 b(Th)o(us)20 b(a)g(rendering)224 429 y(con)o(text)f(consists)h(of)f(t)o(w)o(o)f(parts:)28 b(one)19 b(to)g(hold)h(the)g(clien)o(t)h(state)d(and)i(one)g(to)224 485 y(hold)e(the)f(serv)o(er)f(state.)24 b(The)17 b(clien)o(t)h(is)f (resp)q(onsible)i(for)d(creating)h(a)f(rendering)224 542 y(con)o(text)f(and)g(a)g(dra)o(w)o(able;)g(defaults)g(are)g(not)g (supplied.)295 598 y(Eac)o(h)21 b(thread)h(can)g(ha)o(v)o(e)f(at)g (most)g(one)g(curren)o(t)h(rendering)h(con)o(text.)38 b(In)224 655 y(addition,)17 b(a)e(rendering)i(con)o(text)e(can)h(b)q(e) h(curren)o(t)f(for)f(only)h(one)g(thread)g(at)f(one)224 711 y(time.)295 767 y(Issuing)f(Op)q(enGL)h(commands)e(ma)o(y)g(cause)g (the)h(X)f(bu\013er)g(to)g(b)q(e)h(\015ushed.)20 b(In)224 824 y(particular,)15 b(calling)h Fb(glFlush\(\))f Fm(will)h(\015ush)f (b)q(oth)f(the)g(X)h(and)f(Op)q(enGL)h(render-)224 880 y(ing)h(streams.)295 937 y(Some)h(state)f(is)h(shared)g(b)q(et)o(w)o (een)g(the)g(Op)q(enGL)h(and)f(X.)f(The)h(pixel)i(v)m(alues)224 993 y(in)d(the)f(X)f(frame)h(bu\013er)f(are)h(shared.)20 b(The)15 b(X)g(double)h(bu\013er)e(extension)i(\(DBE\))224 1050 y(has)h(a)f(de\014nition)j(for)d(whic)o(h)i(bu\013er)e(is)i (curren)o(tly)f(the)g(displa)o(y)o(ed)h(bu\013er.)25 b(This)224 1106 y(information)17 b(is)g(shared)f(with)h(GLX.)f(The)h (state)e(of)h(whic)o(h)i(bu\013er)e(is)h(displa)o(y)o(ed)224 1163 y(trac)o(ks)k(in)i(b)q(oth)f(extensions,)h(indep)q(enden)o(t)i(of) c(whic)o(h)i(extension)f(initiates)h(a)224 1219 y(bu\013er)15 b(sw)o(ap.)224 1341 y Fi(2.3)56 b(Direct)17 b(Rendering)h(and)h (Address)g(Spaces)224 1427 y Fm(One)h(of)f(the)g(basic)h(assumptions)f (of)g(the)g(X)g(proto)q(col)g(is)h(that)e(if)i(a)f(clien)o(t)h(can)224 1483 y(name)f(an)g(ob)s(ject,)h(then)f(it)h(can)f(manipulate)h(that)f (ob)s(ject.)31 b(GLX)19 b(in)o(tro)q(duces)224 1540 y(the)e(notion)g (of)g(an)f Fj(A)n(ddr)n(ess)h(Sp)n(ac)n(e)p Fm(.)24 b(A)17 b(GLX)g(ob)s(ject)f(cannot)h(b)q(e)g(used)g(outside)224 1596 y(of)e(the)g(address)g(space)h(in)g(whic)o(h)g(it)f(exists.)295 1652 y(In)20 b(a)f(classic)i(UNIX)f(en)o(vironmen)o(t,)g(eac)o(h)g(pro) q(cess)f(is)h(in)g(its)g(o)o(wn)f(address)224 1709 y(space.)h(In)14 b(a)g(m)o(ulti-threaded)h(en)o(vironmen)o(t,)f(eac)o(h)g(of)f(the)h (threads)f(will)j(share)d(a)224 1765 y(virtual)j(address)f(space)h (whic)o(h)g(references)g(a)e(common)h(data)g(region.)295 1822 y(An)21 b(Op)q(enGL)i(clien)o(t)f(that)f(is)g(rendering)h(to)f(a)g (graphics)g(engine)i(directly)224 1878 y(connected)17 b(to)e(the)i(executing)g(CPU)e(ma)o(y)h(a)o(v)o(oid)f(passing)i(the)f (tok)o(ens)f(through)224 1935 y(the)h(X)f(serv)o(er.)20 b(This)15 b(generalization)i(is)f(made)f(for)g(p)q(erformance)g (reasons.)20 b(The)224 1991 y(mo)q(del)15 b(describ)q(ed)g(here)f(sp)q (eci\014cally)j(allo)o(ws)d(for)f(suc)o(h)h(optimizations,)g(but)g(do)q (es)224 2048 y(not)h(mandate)g(that)f(an)o(y)h(implemen)o(tation)i (supp)q(ort)e(it.)295 2104 y(When)e(direct)g(rendering)h(is)f(o)q (ccurring,)g(the)g(address)g(space)g(of)f(the)h(renderer)224 2161 y(is)h(that)e(of)g(the)i(direct)f(pro)q(cess;)h(when)f(direct)h (rendering)g(is)g(not)e(b)q(eing)i(used,)g(the)224 2217 y(address)21 b(space)f(of)g(the)g(renderer)h(is)g(that)f(of)f(the)i(X)f (serv)o(er.)35 b(The)21 b(clien)o(t)g(has)224 2273 y(the)h(abilit)o(y)h (to)f(reject)g(the)g(use)g(of)f(direct)i(rendering,)h(but)f(there)f(ma) o(y)f(b)q(e)h(a)224 2330 y(p)q(erformance)16 b(p)q(enalt)o(y)f(in)h (doing)g(so.)295 2386 y(In)e(order)g(to)f(use)i(direct)f(rendering,)h (a)f(clien)o(t)h(m)o(ust)e(create)h(a)g(direct)g(render-)224 2443 y(ing)g(con)o(text.)k(Both)13 b(the)g(clien)o(t)h(con)o(text)f (state)f(and)h(the)g(serv)o(er)g(con)o(text)f(state)h(of)925 2613 y(3)p eop %%Page: 4 5 4 4 bop 224 745 1459 2 v 224 1939 2 1195 v 278 819 a 21313290 15345567 1578762 1644544 51178209 37627166 startTexFig 278 819 a %%BeginDocument: block.eps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if /incr { 2 1 roll dup 3 -1 roll 5 -1 roll dup 6 1 roll cvi put 3 1 roll dup 4 1 roll add 3 1 roll } bind def /scanspan { /xb2 exch def /xg2 exch def /xr2 exch def /xx2 exch def /xb1 exch def /xg1 exch def /xr1 exch def /xx1 exch def /dx xx2 xx1 sub def dx 0 ne { /drdx xr2 xr1 sub dx div def /dgdx xg2 xg1 sub dx div def /dbdx xb2 xb1 sub dx div def }{ /drdx 0 def /dgdx 0 def /dbdx 0 def } ifelse /len dx 1 add cvi 3 mul def len string dup dup xr1 drdx 3 -1 roll 0 3 len 1 sub { incr } for pop pop pop xg1 dgdx 3 -1 roll 1 3 len 1 sub { incr } for pop pop pop xb1 dbdx 3 -1 roll 2 3 len 1 sub { incr } for 3 1 roll pop pop } bind def /scantrap { /trapsave save def /b4 exch def /g4 exch def /r4 exch def /x4 exch def /b3 exch def /g3 exch def /r3 exch def /x3 exch def /b2 exch def /g2 exch def /r2 exch def /y2 exch def /x2 exch def /b1 exch def /g1 exch def /r1 exch def /y1 exch def /x1 exch def /dy y1 y2 sub def dy 0 ne { /dxdy12 x2 x1 sub dy div def /dxdy43 x3 x4 sub dy div def /drdy12 r2 r1 sub dy div def /drdy43 r3 r4 sub dy div def /dgdy12 g2 g1 sub dy div def /dgdy43 g3 g4 sub dy div def /dbdy12 b2 b1 sub dy div def /dbdy43 b3 b4 sub dy div def }{ /dxdy12 0 def /dxdy43 0 def /drdy12 0 def /drdy43 0 def /dgdy12 0 def /dgdy43 0 def /dbdy12 0 def /dbdy43 0 def } ifelse y1 -1 y2 { x4 x1 sub 0 lt { exit } if /y exch def /traploopsave save def x1 r1 g1 b1 x4 r4 g4 b4 scanspan /img exch def /xlen x4 x1 sub 1 add def x1 y translate xlen 1 scale xlen cvi 1 8 [xlen 0 0 0.9 0 0] { img } false 3 colorimage traploopsave restore /x1 x1 dxdy12 add def /r1 r1 drdy12 add def /g1 g1 dgdy12 add def /b1 b1 dbdy12 add def /x4 x4 dxdy43 add def /r4 r4 drdy43 add def /g4 g4 dgdy43 add def /b4 b4 dbdy43 add def } for trapsave restore } def /d { newpath moveto lineto lineto closepath stroke } bind def /q { newpath moveto lineto lineto lineto closepath stroke } bind def /draw3 { setgray newpath moveto lineto lineto closepath stroke } bind def /F3 { setgray newpath moveto lineto lineto closepath fill } bind def /F4 { setgray newpath moveto lineto lineto lineto closepath fill } bind def /F5 { setgray newpath moveto lineto lineto lineto lineto closepath fill } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Courier-Bold-SHOWISO exch definefont pop /NewCenturySchlbk-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /NewCenturySchlbk-BoldItalic-SHOWISO exch definefont pop /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-BoldOblique-SHOWISO exch definefont pop /Helvetica-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Oblique-SHOWISO exch definefont pop /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-SHOWISO exch definefont pop /Times-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Times-Italic-SHOWISO exch definefont pop gsave 0 0 0 setrgbcolor gsave newpath 14.3725 478.994 M -5.62748 518.994 L 223.373 518.994 L 223.373 478.994 L closepath clip newpath /Helvetica-Bold-SHOWISO findfont 32 scalefont setfont 0 0 0 setrgbcolor 24 487 M (GLX) S 102.104 487 M (Client) S grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 309.562 243.075 translate -90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 309.562 429.267 M 309.562 262.075 L stroke grestore 0 0 0 setrgbcolor 0 0 0 setrgbcolor gsave matrix currentmatrix [179.773 0 0 -139.751 213.558 571.59] concat B setmatrix 3 setlinewidth gsave stroke grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 1 setlinewidth newpath 214.499 485.853 M 336.858 485.853 L stroke grestore 0 0 0 setrgbcolor gsave newpath 260.972 443.842 M 240.972 474.842 L 349.972 474.842 L 349.972 443.842 L closepath clip newpath 270 450 M gsave -270 0.0 translate 1.06779 1.0 scale 252.858 0.0 translate /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor (Xlib) S grestore grestore 0 0 0 setrgbcolor gsave newpath 232.736 501.286 M 212.736 563.286 L 408.736 563.286 L 408.736 501.286 L closepath clip newpath 242 539 M gsave -242 0.0 translate 1.02541 1.0 scale 236.004 0.0 translate /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor (Application) S grestore /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 242 508 M (and) S 293.328 508 M (Toolkit) S grestore 0 0 0 setrgbcolor gsave 1 setlinewidth 339.681 472.135 M 339.681 503.135 L 393.681 503.135 L 393.681 472.135 L closepath stroke newpath 329.681 472.135 M 309.681 503.135 L 423.681 503.135 L 423.681 472.135 L closepath clip newpath 339 479 M gsave -339 0.0 translate 1.05383 1.0 scale 321.685 0.0 translate /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor (GLX) S grestore grestore 0 0 0 setrgbcolor gsave newpath 21.9023 170.341 M 1.90228 210.341 L 197.902 210.341 L 197.902 170.341 L closepath clip newpath /Helvetica-Bold-SHOWISO findfont 32 scalefont setfont 0 0 0 setrgbcolor 31 179 M (X) S 65.384 179 M (Server) S grestore 0 0 0 setrgbcolor gsave matrix currentmatrix [179.773 0 0 -139.751 216.382 241.503] concat B setmatrix 3 setlinewidth gsave stroke grestore grestore 0 0 0 setrgbcolor gsave 1 setlinewidth [1] 0 setdash 293.09 158.196 M 293.09 182.196 L 395.09 182.196 L 395.09 158.196 L closepath stroke newpath 283.09 158.196 M 263.09 182.196 L 425.09 182.196 L 425.09 158.196 L closepath clip newpath /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 293 165 M (X) S 313.98 165 M (Renderer) S grestore 0 0 0 setrgbcolor gsave 1 setlinewidth 280.03 117.042 M 280.03 141.042 L 395.03 141.042 L 395.03 117.042 L closepath stroke newpath 270.03 117.042 M 250.03 141.042 L 425.03 141.042 L 425.03 117.042 L closepath clip newpath /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor 280 124 M (GL) S 313.98 124 M (Renderer) S grestore 0 0 0 setrgbcolor gsave 1 setlinewidth 223.911 217.067 M 223.911 241.067 L 303.911 241.067 L 303.911 217.067 L closepath stroke newpath 213.911 217.067 M 193.911 241.067 L 333.911 241.067 L 333.911 217.067 L closepath clip newpath 223 224 M gsave -223 0.0 translate 1.02613 1.0 scale 217.322 0.0 translate /Helvetica-Bold-SHOWISO findfont 18 scalefont setfont 0 0 0 setrgbcolor (Dispatch) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 292.031 168.199 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 240.912 216.353 M 240.912 168.199 L 273.031 168.199 L stroke grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 277.972 129.045 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 231.382 216.353 M 231.382 129.045 L 258.972 129.045 L stroke grestore 0 0 0 setrgbcolor gsave matrix currentmatrix [30.1191 0 0 -164.615 638.048 237.216] concat B setmatrix 3 setlinewidth gsave stroke grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 3 setlinewidth newpath 668.168 237.216 M 728.406 292.088 L 728.406 127.473 L 668.168 72.6014 L stroke grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 3 setlinewidth newpath 638.049 237.216 M 698.287 292.088 L 728.406 292.088 L stroke grestore 0 0 0 setrgbcolor gsave newpath 573.458 25.4462 M 553.458 65.4462 L 807.458 65.4462 L 807.458 25.4462 L closepath clip newpath 583 34 M gsave -583 0.0 translate 1.02845 1.0 scale 566.87 0.0 translate /Helvetica-Bold-SHOWISO findfont 32 scalefont setfont 0 0 0 setrgbcolor (Framebuffer) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 639.99 171.199 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 398.037 171.199 M 620.99 171.199 L stroke grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 639.99 130.045 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 398.037 130.045 M 620.99 130.045 L stroke grestore 0 0 0 setrgbcolor gsave newpath 486.865 320.381 M 466.865 382.381 L 640.865 382.381 L 640.865 320.381 L closepath clip newpath /Helvetica-Bold-SHOWISO findfont 24 scalefont setfont 0 0 0 setrgbcolor 497 358 M (Direct) S 575.664 358 M (GL) S 498 327 M gsave -498 0.0 translate 1.03455 1.0 scale 481.37 0.0 translate (Renderer) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 548.633 385.398 translate -90 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 393.331 484.138 M 548.633 484.138 L 548.633 404.398 L stroke grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor gsave 0 setlinejoin 637.166 215.782 translate 0 rotate 1.1 1.1 scale newpath 0 0 M -20 -5 L -20 5 L closepath fill grestore 1 setlinewidth newpath 548.633 303.234 M 548.633 215.782 L 618.166 215.782 L stroke grestore 0 0 0 setrgbcolor gsave matrix currentmatrix [139.301 0 0 -83.1647 479.923 387.256] concat B setmatrix 3 setlinewidth gsave stroke grestore grestore grestore showpage %%EndDocument endTexFig 263 1909 a Fp(Figure)14 b(1.)k(Direct)c(Rendering)g(Blo)q(c)o(k)g (Diagram.)p 1681 1939 2 1195 v 224 1941 1459 2 v 925 2613 a Fm(4)p eop %%Page: 5 6 5 5 bop 224 286 a Fm(a)17 b(direct)h(rendering)g(con)o(text)e(exist)i (in)g(the)f(clien)o(t's)h(address)f(space;)g(this)h(state)224 343 y(cannot)13 b(b)q(e)h(shared)f(b)o(y)g(a)g(clien)o(t)i(in)f (another)e(pro)q(cess.)20 b(With)13 b(indirect)i(rendering)224 399 y(con)o(texts,)d(the)h(clien)o(t)h(con)o(text)e(state)g(is)i(k)o (ept)e(in)i(the)f(clien)o(t's)g(address)g(space)g(and)224 456 y(the)j(serv)o(er)f(con)o(text)h(state)f(is)h(k)o(ept)g(in)g(the)g (address)g(space)g(of)f(the)h(X)g(serv)o(er.)21 b(In)224 512 y(this)e(case)f(the)h(serv)o(er)e(con)o(text)h(state)g(is)g(stored) g(in)h(an)g(X)f(resource;)h(it)g(has)f(an)224 569 y(asso)q(ciated)e (XID)f(and)g(ma)o(y)g(p)q(oten)o(tially)h(b)q(e)g(used)g(b)o(y)f (another)g(clien)o(t)h(pro)q(cess.)224 690 y Fi(2.4)56 b(Op)r(enGL)18 b(Displa)n(y)g(Lists)224 776 y Fm(Most)13 b(Op)q(enGL)i(state)e(is)h(small)g(and)g(easily)h(retriev)o(ed)f(using) h(the)e Fb(glGet*)i Fm(com-)224 833 y(mands.)33 b(This)20 b(is)f(not)g(true)h(of)f(Op)q(enGL)h(displa)o(y)h(lists,)g(whic)o(h)f (are)f(used,)i(for)224 889 y(example,)15 b(to)f(encapsulate)i(a)e(mo)q (del)i(of)e(some)h(ph)o(ysical)h(ob)s(ject.)j(First,)14 b(there)h(is)224 946 y(no)i(mec)o(hanism)h(to)f(obtain)h(the)f(con)o (ten)o(ts)g(of)g(a)g(displa)o(y)h(list)g(from)f(the)g(render-)224 1002 y(ing)h(con)o(text.)27 b(Second,)19 b(displa)o(y)g(lists)f(ma)o(y) f(b)q(e)i(large)f(and)g(n)o(umerous.)27 b(It)18 b(ma)o(y)224 1059 y(b)q(e)e(desirable)h(for)d(m)o(ultiple)j(rendering)f(con)o(texts) f(to)g(share)g(displa)o(y)h(lists)g(rather)224 1115 y(than)f (replicating)i(that)e(information)g(in)h(eac)o(h)f(con)o(text.)295 1171 y(GLX)21 b(pro)o(vides)g(for)f(limited)i(sharing)f(of)g(displa)o (y)g(lists;)j(the)d(lists)h(can)e(b)q(e)224 1228 y(shared)g(only)h(if)g (the)f(serv)o(er)g(state)f(for)h(the)g(con)o(texts)g(share)g(a)g (single)h(address)224 1284 y(space.)31 b(Using)20 b(this)f(mec)o (hanism,)h(a)f(single)h(set)f(of)f(lists)i(can)f(b)q(e)h(used,)g(for)e (in-)224 1341 y(stance,)f(b)o(y)f(a)h(con)o(text)f(that)g(supp)q(orts)h (color)g(index)h(rendering)f(and)g(a)g(con)o(text)224 1397 y(that)e(supp)q(orts)g(R)o(GBA)g(rendering.)295 1454 y(A)i(group)g(of)g(shared)h(displa)o(y)h(lists)f(exists)g(un)o (til)g(the)g(last)f(referencing)i(ren-)224 1510 y(dering)d(con)o(text)f (is)h(destro)o(y)o(ed.)k(All)c(rendering)h(con)o(texts)d(ha)o(v)o(e)h (equal)h(access)g(to)224 1567 y(using)g(lists)f(or)g(de\014ning)h(new)f (lists.)21 b(Implemen)o(tations)15 b(sharing)h(con)o(texts)e(m)o(ust) 224 1623 y(handle)i(the)e(case)g(where)h(one)f(rendering)i(con)o(text)d (is)i(using)g(a)f(displa)o(y)i(list)f(when)224 1680 y(another)g (rendering)h(con)o(text)f(destro)o(ys)f(that)h(list.)295 1736 y(When)e(displa)o(y)g(lists)h(are)e(shared)g(b)q(et)o(w)o(een)h (Op)q(enGL)h(con)o(texts,)e(the)h(sharing)224 1792 y(extends)18 b(only)g(to)f(the)g(displa)o(y)i(lists)f(themselv)o(es)g(and)f(the)h (information)f(ab)q(out)224 1849 y(whic)o(h)f(displa)o(y)g(list)g(n)o (um)o(b)q(ers)f(ha)o(v)o(e)g(b)q(een)h(allo)q(cated.)21 b(In)15 b(particular,)h(the)f(v)m(alue)224 1905 y(of)g(the)g(base)g (set)g(with)h Fb(glListBase)h Fm(is)f(not)e(shared.)295 1962 y(In)24 b(general,)i(Op)q(enGL)e(commands)g(are)f(not)g(atomic.)44 b Fb(glEndList)26 b Fm(and)224 2018 y Fb(glDeleteLists)f Fm(are)d(exceptions.)42 b(The)23 b(list)g(named)g(in)g(a)f Fb(glNewList)i Fm(call)224 2075 y(is)16 b(not)f(created)g(or)g(sup)q (erseded)i(un)o(til)f Fb(glEndList)h Fm(is)f(called.)22 b(If)16 b(one)f(rendering)224 2131 y(con)o(text)g(is)g(sharing)g(a)g (displa)o(y)h(list)g(with)f(another,)f(it)h(will)i(con)o(tin)o(ue)e(to) g(use)g(the)224 2188 y(existing)d(de\014nition)h(while)f(the)f(second)g (con)o(text)g(is)g(in)h(the)f(pro)q(cess)g(of)f(re-de\014ning)224 2244 y(it.)925 2613 y(5)p eop %%Page: 6 7 6 6 bop 224 286 a Fi(2.5)56 b(T)-5 b(exture)17 b(Ob)s(jects)224 372 y Fm(Op)q(enGL)i(texture)e(state)g(can)h(b)q(e)g(encapsulated)h(in) f(a)f(named)h(texture)f(ob)s(ject.)224 429 y(A)j(texture)f(ob)s(ject)g (is)h(created)g(b)o(y)f(binding)j(an)d(un)o(used)i(name)e(to)g(one)h (of)f(the)224 485 y(texture)e(targets)e(\(TEXTURE)p 787 485 14 2 v 16 w(1D)i(or)f(TEXTURE)p 1164 485 V 16 w(2D\))g(of)h(a)f (rendering)i(con-)224 542 y(text.)h(When)13 b(a)g(texture)g(ob)s(ject)g (is)h(b)q(ound,)g(Op)q(enGL)h(op)q(erations)e(on)g(the)g(target)224 598 y(to)i(whic)o(h)h(it)g(is)g(b)q(ound)g(a\013ect)f(the)g(b)q(ound)i (texture)e(ob)s(ject,)f(and)i(queries)g(of)f(the)224 655 y(target)f(to)h(whic)o(h)h(it)f(is)h(b)q(ound)g(return)f(state)g (from)f(the)h(b)q(ound)h(texture)f(ob)s(ject.)295 711 y(T)l(exture)f(ob)s(jects)h(ma)o(y)e(b)q(e)j(shared)f(b)o(y)f (rendering)i(con)o(texts,)e(as)g(long)h(as)f(the)224 767 y(serv)o(er)k(p)q(ortion)h(of)f(the)h(con)o(texts)e(share)i(the)f (same)g(address)h(space.)30 b(Op)q(enGL)224 824 y(mak)o(es)15 b(no)g(attempt)g(to)g(sync)o(hronize)h(access)g(to)e(texture)i(ob)s (jects.)k(If)15 b(a)g(texture)224 880 y(ob)s(ject)10 b(is)h(b)q(ound)g(to)e(more)h(than)g(one)h(con)o(text,)f(then)g(it)h (is)g(up)f(to)g(the)g(programmer)224 937 y(to)15 b(ensure)h(that)f(the) h(con)o(ten)o(ts)f(of)h(the)f(ob)s(ject)g(are)h(not)f(b)q(eing)i(c)o (hanged)f(via)g(one)224 993 y(con)o(text)g(while)h(another)f(con)o (text)f(is)i(using)g(the)f(texture)g(ob)s(ject)f(for)g(rendering.)224 1050 y(The)i(results)g(of)f(c)o(hanging)h(a)f(texture)g(ob)s(ject)g (while)i(another)e(con)o(text)g(is)h(using)224 1106 y(it)f(are)e (unde\014ned.)295 1163 y(A)k(texture)h(ob)s(ject)f(will)j(not)d(b)q(e)h (deleted)h(un)o(til)g(it)f(is)g(no)g(longer)g(b)q(ound)h(to)224 1219 y(an)o(y)15 b(rendering)h(con)o(text.)224 1341 y Fi(2.6)56 b(Aligning)18 b(Multiple)f(Dra)n(w)n(ables)224 1427 y Fm(A)11 b(clien)o(t)h(can)g(create)e(one)i(windo)o(w)f(with)g (an)g(o)o(v)o(erla)o(y)f Fh(Visual)g Fm(and)i(a)e(second)i(with)224 1483 y(a)17 b(main)h(plane)g Fh(Visual)e Fm(and)h(then)h(mo)o(v)o(e)e (them)h(indep)q(enden)o(tly)j(or)d(in)h(concert)224 1540 y(to)c(k)o(eep)h(them)f(aligned.)21 b(This)15 b(is)g(a)f(ma)s(jor)f(c)o (hange)i(b)q(et)o(w)o(een)g(the)f(Op)q(enGL)i(and)224 1596 y(the)g(previous)g(SGI)f(proprietary)g(GL:)g(allo)q(cation)i(of)d (o)o(v)o(erla)o(y)h(planes)h(and)g(main)224 1652 y(planes)f(for)f(ev)o (ery)g(windo)o(w)h(is)g(no)f(longer)h(done)f(automatically)l(.)21 b(T)l(o)14 b(accomplish)224 1709 y(what)e(w)o(as)f(done)h(b)o(y)g(a)g Fb(dra)o(wmo)q(de)p Fm(/)p Fb(gcon\014g)g Fm(pair)g(in)h(previous)g(v)o (ersions)f(of)g(the)224 1765 y(SGI)i(proprietary)f(GL,)g(the)h(Op)q (enGL)h(clien)o(t)f(can)g(use)g(the)f(follo)o(wing)i(paradigm:)292 1859 y Fl(\017)23 b Fm(Mak)o(e)11 b(the)h(windo)o(ws)f(whic)o(h)i(are)e (to)g(share)h(the)g(same)f(screen)h(area)f(c)o(hildren)338 1916 y(of)k(a)h(single)h(windo)o(w)f(\(that)f(will)j(nev)o(er)e(b)q(e)h (written\).)22 b(Size)17 b(and)f(p)q(osition)338 1972 y(the)d(c)o(hildren)i(to)e(completely)h(o)q(cclude)h(their)e(paren)o (t.)19 b(When)14 b(the)f(windo)o(w)338 2029 y(com)o(bination)k(m)o(ust) g(b)q(e)g(mo)o(v)o(ed)g(or)f(resized,)i(p)q(erform)f(the)g(op)q (eration)g(on)338 2085 y(the)e(paren)o(t.)292 2179 y Fl(\017)23 b Fm(Mak)o(e)18 b(the)h(sub)o(windo)o(ws)h(ha)o(v)o(e)f(a)f (bac)o(kground)h(of)g Fh(None)g Fm(so)f(that)h(the)g(X)338 2235 y(serv)o(er)h(will)i(not)f(pain)o(t)g(in)o(to)f(the)h(shared)g (area)f(when)h(y)o(ou)f(restac)o(k)g(the)338 2292 y(c)o(hildren.)292 2385 y Fl(\017)j Fm(Select)17 b(for)f(device-related)j(ev)o(en)o(ts)d (on)h(the)f(paren)o(t)h(windo)o(w,)f(not)h(on)f(the)338 2442 y(c)o(hildren.)28 b(Since)19 b(device-related)g(ev)o(en)o(ts)e (with)h(the)f(fo)q(cus)h(in)g(one)f(of)g(the)925 2613 y(6)p eop %%Page: 7 8 7 7 bop 338 286 a Fm(c)o(hild)20 b(windo)o(ws)f(will)i(b)q(e)e (inherited)i(b)o(y)e(the)g(paren)o(t,)g(input)h(dispatc)o(hing)338 343 y(can)15 b(b)q(e)h(done)g(directly)g(without)f(reference)h(to)f (the)g(c)o(hild)i(on)e(top.)224 465 y Fi(2.7)56 b(Multiple)17 b(Threads)224 550 y Fm(It)12 b(is)h(p)q(ossible)g(to)f(create)f(a)h(v)o (ersion)g(of)g(the)g(clien)o(t)h(side)g(library)f(that)g(is)g (protected)224 607 y(against)g(m)o(ultiple)j(threads)d(attempting)g(to) g(access)h(the)f(same)g(connection.)21 b(This)224 663 y(is)15 b(accomplished)g(b)o(y)f(ha)o(ving)g(appropriate)g (de\014nitions)i(for)d Fb(Lo)q(c)o(kDispla)o(y)i Fm(and)224 720 y Fb(Unlo)q(c)o(kDispla)o(y)p Fm(.)21 b(Since)15 b(there)e(is)h(some)g(p)q(erformance)g(p)q(enalt)o(y)g(for)f(doing)h (the)224 776 y(lo)q(c)o(king,)h(it)f(is)g(implemen)o(tation-dep)q (enden)o(t)i(whether)e(a)f(thread)g(safe)h(v)o(ersion,)f(a)224 833 y(non-safe)j(v)o(ersion,)f(or)g(b)q(oth)h(v)o(ersions)f(of)g(the)h (library)g(are)g(pro)o(vided.)21 b(In)o(terrupt)224 889 y(routines)11 b(ma)o(y)f(not)g(share)g(a)g(connection)h(\(and)f(hence)i (a)e(rendering)h(con)o(text\))f(with)224 946 y(the)k(main)f(thread.)20 b(An)13 b(application)i(ma)o(y)e(b)q(e)h(written)g(as)f(a)g(set)g(of)g (co-op)q(erating)224 1002 y(pro)q(cesses.)295 1059 y(X)20 b(has)h(atomicit)o(y)f(\(b)q(et)o(w)o(een)h(clien)o(ts\))h(and)e (sequen)o(tialit)o(y)i(\(within)g(a)e(sin-)224 1115 y(gle)d(clien)o (t\))g(requiremen)o(ts)g(that)e(limit)j(the)e(amoun)o(t)f(of)h (parallelism)i(ac)o(hiev)m(able)224 1171 y(when)j(in)o(terpreting)h (the)e(command)h(streams.)35 b(GLX)20 b(relaxes)h(these)g(require-)224 1228 y(men)o(ts.)j(Sequen)o(tialit)o(y)18 b(is)g(still)g(guaran)o(teed) e(within)i(a)e(command)h(stream,)f(but)224 1284 y(not)c(b)q(et)o(w)o (een)g(the)g(X)g(and)g(the)g(Op)q(enGL)h(command)f(streams.)18 b(It)11 b(is)i(p)q(ossible,)h(for)224 1341 y(example,)h(that)e(an)h(X)h (command)f(issued)h(b)o(y)f(a)g(single)h(threaded)f(clien)o(t)i(after)d (an)224 1397 y(Op)q(enGL)k(command)e(migh)o(t)g(b)q(e)h(executed)g(b)q (efore)f(that)g(Op)q(enGL)h(command.)295 1454 y(The)f(X)g(sp)q (eci\014cation)i(requires)f(that)f(commands)g(are)g(atomic:)338 1548 y(If)10 b(a)h(serv)o(er)f(is)g(implemen)o(ted)j(with)d(in)o (ternal)i(concurrency)l(,)g(the)e(o)o(v)o(er-)338 1604 y(all)21 b(e\013ect)f(m)o(ust)f(b)q(e)i(as)f(if)g(individual)j (requests)d(are)g(executed)h(to)338 1660 y(completion)f(in)g(some)e (serial)i(order,)f(and)g(requests)g(from)f(a)h(giv)o(en)338 1717 y(connection)g(m)o(ust)f(b)q(e)h(executed)g(in)g(deliv)o(ery)g (order)f(\(that)f(is,)i(the)338 1773 y(total)14 b(execution)j(order)e (is)g(a)g(sh)o(u\017e)h(of)e(the)i(individual)i(streams\).)224 1867 y(Op)q(enGL)j(commands)e(are)g(not)g(guaran)o(teed)g(to)g(b)q(e)h (atomic.)32 b(Some)20 b(Op)q(enGL)224 1924 y(rendering)d(commands)e (migh)o(t)h(otherwise)f(impair)i(in)o(teractiv)o(e)f(use)g(of)f(the)g (win-)224 1980 y(do)o(wing)g(system)g(b)o(y)g(the)g(user.)20 b(F)l(or)15 b(instance)h(calling)h(a)e(deeply)h(nested)g(displa)o(y)224 2037 y(list)j(or)f(rendering)h(a)f(large)g(texture)g(mapp)q(ed)h(p)q (olygon)g(on)f(a)g(system)g(with)g(no)224 2093 y(graphics)h(hardw)o (are)e(could)i(prev)o(en)o(t)e(a)h(user)g(from)f(p)q(opping)i(up)g(a)e (men)o(u)h(so)q(on)224 2149 y(enough)e(to)e(b)q(e)i(usable.)295 2206 y(Sync)o(hronization)i(is)g(in)g(the)f(hands)h(of)f(the)g(clien)o (t.)28 b(It)17 b(can)g(b)q(e)h(main)o(tained)224 2262 y(with)12 b(mo)q(derate)f(cost)f(with)i(the)f(judicious)i(use)f(of)f (the)g Fb(glFinish)p Fm(,)i Fb(glXW)l(aitGL)p Fm(,)224 2319 y Fb(glXW)l(aitX)p Fm(,)k(and)g Fb(XSync)f Fm(commands.)24 b(Op)q(enGL)18 b(and)f(X)g(rendering)h(can)e(b)q(e)224 2375 y(done)i(in)h(parallel)g(as)e(long)h(as)f(the)h(clien)o(t)h(do)q (es)f(not)f(preclude)i(it)f(with)g(explicit)224 2432 y(sync)o(hronization)13 b(calls.)20 b(This)13 b(is)g(true)f(ev)o(en)h (when)g(the)f(rendering)h(is)g(b)q(eing)h(done)925 2613 y(7)p eop %%Page: 8 9 8 8 bop 224 286 a Fm(b)o(y)17 b(the)g(X)g(serv)o(er.)25 b(Th)o(us,)16 b(a)h(m)o(ulti-threaded)h(X)f(serv)o(er)g(implemen)o (tation)h(ma)o(y)224 343 y(execute)d(Op)q(enGL)g(rendering)g(commands)f (in)g(parallel)i(with)e(other)g(X)g(requests.)295 399 y(Some)31 b(p)q(erformance)h(degradation)f(ma)o(y)g(b)q(e)h(exp)q (erienced)i(if)e(needless)224 456 y(switc)o(hing)17 b(b)q(et)o(w)o(een) f(Op)q(enGL)i(and)e(X)g(rendering)h(is)g(done.)23 b(This)16 b(ma)o(y)g(in)o(v)o(olv)o(e)224 512 y(a)f(round)g(trip)h(to)f(the)g (serv)o(er,)f(whic)o(h)i(can)g(b)q(e)g(costly)l(.)224 655 y Fk(3)67 b(F)-6 b(unctions)24 b(and)f(Errors)224 759 y Fi(3.1)56 b(Errors)224 844 y Fm(Where)18 b(p)q(ossible,)i(as)d (in)i(X,)e(when)h(a)g(request)f(terminates)h(with)g(an)g(error,)f(the) 224 901 y(request)e(has)g(no)h(side)g(e\013ects.)295 957 y(The)j(error)f(co)q(des)h(that)f(ma)o(y)g(b)q(e)i(generated)f(b)o (y)f(a)h(request)g(are)f(describ)q(ed)224 1014 y(with)k(that)g (request.)40 b(The)22 b(follo)o(wing)h(table)f(summarizes)h(the)f (GLX-sp)q(eci\014c)224 1070 y(error)15 b(co)q(des)g(that)g(are)g (visible)i(to)e(applications:)247 1176 y Fh(GLXBadContext)22 b Fm(A)i(v)m(alue)i(for)d(a)h Fh(Context)g Fm(argumen)o(t)f(do)q(es)h (not)g(name)g(a)338 1233 y Fh(Context)p Fm(.)247 1327 y Fh(GLXBadContextState)h Fm(An)i(attempt)g(w)o(as)f(made)i(to)e(switc) o(h)i(to)f(another)338 1383 y(rendering)c(con)o(text)e(while)i(the)f (curren)o(t)f(con)o(text)g(w)o(as)g(in)i Fh(RenderMode)338 1440 y(GL)p 389 1440 15 2 v 17 w(FEEDBACK)c Fm(or)h Fh(GL)p 726 1440 V 17 w(SELECT)p Fm(,)f(or)h(a)g(call)i(to)e Fb(glXMak)o(eCurren)o(t)e Fm(w)o(as)338 1496 y(made)d(b)q(et)o(w)o(een) h(a)e Fb(glBegin)j Fm(and)e(the)h(corresp)q(onding)g(call)g(to)f Fb(glEnd)p Fm(.)247 1590 y Fh(GLXBadCurrentWindow)c Fm(The)k(curren)o (t)f Fh(Drawable)e Fm(of)i(the)g(calling)i(thread)e(is)g(a)338 1646 y(windo)o(w)h(that)g(is)g(no)h(longer)f(v)m(alid.)247 1740 y Fh(GLXBadDrawable)g Fm(The)j Fh(Drawable)e Fm(argumen)o(t)g(do)q (es)i(not)f(name)g(a)g Fh(Drawable)338 1797 y Fm(con\014gured)f(for)e (Op)q(enGL)j(rendering.)247 1890 y Fh(GLXBadPixmap)e Fm(The)i Fh(Pixmap)f Fm(argumen)o(t)g(do)q(es)h(not)f(name)h(a)g Fh(Pixmap)f Fm(that)g(is)338 1947 y(appropriate)f(for)g(Op)q(enGL)h (rendering.)247 2041 y Fh(GLXUnsupportedPrivateRequ)o(est)g Fm(Ma)o(y)j(b)q(e)h(returned)g(in)g(resp)q(onse)g(to)f(ei-)338 2097 y(ther)12 b(a)g(glXV)l(endorPriv)m(ate)i(request)f(or)f(a)g(glXV)l (endorPriv)m(ateWithReply)338 2154 y(request.)295 2260 y(The)j(follo)o(wing)h(error)e(co)q(des)i(ma)o(y)e(b)q(e)i(generated)f (b)o(y)g(a)g(fault)o(y)g(GLX)g(imple-)224 2316 y(men)o(tation,)g(but)g (w)o(ould)h(not)e(normally)i(b)q(e)g(visible)h(to)e(clien)o(ts:)247 2423 y Fh(GLXBadContextTag)9 b Fm(A)j(rendering)g(request)g(con)o (tains)f(an)h(in)o(v)m(alid)h(con)o(text)e(tag.)338 2479 y(\(Con)o(text)j(tags)g(are)h(used)h(to)e(iden)o(tify)j(con)o(texts)d (in)i(the)f(proto)q(col.\))925 2613 y(8)p eop %%Page: 9 10 9 9 bop 247 286 a Fh(GLXBadRenderRequest)12 b Fm(A)k(glXRender)g (request)g(is)f(ill-formed.)247 380 y Fh(GLXBadLargeRequest)e Fm(A)i(glXRenderLarge)h(request)g(is)f(ill-formed.)224 502 y Fi(3.2)56 b(F)-5 b(unctions)224 588 y Fm(GLX)15 b(functions)h(should)g(not)f(b)q(e)h(called)g(b)q(et)o(w)o(een)g Fb(glBegin)g Fm(and)g Fb(glEnd)g Fm(op)q(er-)224 644 y(ations.)22 b(If)16 b(a)f(GLX)h(function)h(is)f(called)h(within)g(a)f Fb(glBegin)p Fm(/)p Fb(glEnd)i Fm(pair,)e(then)224 701 y(the)f(result)h(is)g(unde\014ned;)g(ho)o(w)o(ev)o(er,)e(no)i(error)e (is)i(rep)q(orted.)224 821 y Fb(3.2.1)52 b(Initializat)q(ion)224 907 y Fm(T)l(o)15 b(ascertain)g(if)h(the)f(GLX)h(extension)g(is)f (de\014ned)i(for)e(an)g(X)g(serv)o(er,)f(use)338 1013 y Fh(Bool)33 b Fb(glX)o(QueryExtension)p Fh(\()58 b(Display)33 b Fj(*dpy)p Fh(,)39 b(int)34 b Fj(*er-)406 1069 y(r)n(or)p 468 1069 14 2 v 17 w(b)n(ase)p Fh(,)14 b(int)h Fj(*event)p 819 1069 V 16 w(b)n(ase)g Fh(\))24 b(;)224 1176 y Fj(dpy)c Fm(sp)q(eci\014es)h(the)e(connection)i(to)e(the)g(X)g(serv)o(er.)32 b Fh(False)19 b Fm(is)h(returned)f(if)h(the)224 1232 y(extension)g(is)g(not)e(presen)o(t.)32 b Fj(err)n(or)p 853 1232 V 17 w(b)n(ase)18 b Fm(is)i(used)f(to)g(return)g(the)g(v)m (alue)h(of)f(the)224 1288 y(\014rst)d(error)g(co)q(de.)24 b(The)16 b(constan)o(t)g(error)f(co)q(des)i(should)h(b)q(e)f(added)g (to)e(this)i(base)224 1345 y(to)e(get)f(the)i(actual)f(v)m(alue.)295 1401 y Fj(event)p 402 1401 V 16 w(b)n(ase)g Fm(is)i(included)i(for)c (future)h(extension.)24 b(GLX)16 b(do)q(es)h(not)f(curren)o(tly)224 1458 y(de\014ne)g(an)o(y)f(ev)o(en)o(ts.)295 1514 y(The)g(GLX)g (de\014nition)j(exists)d(in)h(m)o(ultiple)h(v)o(ersions.)j(Use)338 1608 y Fh(Bool)11 b Fb(glX)o(QueryV)l(ersion)p Fh(\()34 b(Display)11 b Fj(*dpy)p Fh(,)j(int)d Fj(*major)p Fh(,)j(int)406 1665 y Fj(*minor)h Fh(\))24 b(;)224 1758 y Fm(to)15 b(disco)o(v)o(er)g (whic)o(h)h(v)o(ersion)g(of)e(GLX)i(is)f(a)o(v)m(ailable.)22 b(Up)q(on)16 b(success,)f Fj(major)h Fm(and)224 1815 y Fj(minor)11 b Fm(are)g(\014lled)i(in)f(with)g(the)f(ma)s(jor)f(and)h (minor)g(v)o(ersions)h(of)e(the)i(extension)g(im-)224 1871 y(plemen)o(tation.)21 b(If)14 b(the)g(clien)o(t)i(and)f(serv)o(er) e(b)q(oth)i(ha)o(v)o(e)f(the)g(same)g(ma)s(jor)f(v)o(ersion)224 1928 y(n)o(um)o(b)q(er)h(then)f(they)h(are)f(compatible)h(and)g(the)f (minor)h(v)o(ersion)f(that)g(is)h(returned)224 1984 y(is)i(the)f(minim) o(um)h(of)f(the)g(t)o(w)o(o)f(minor)i(v)o(ersion)f(n)o(um)o(b)q(ers.) 295 2041 y Fj(major)e Fm(and)f Fj(minor)h Fm(do)f(not)g(return)g(v)m (alues)i(if)f(they)f(are)g(sp)q(eci\014ed)j(as)d Fb(NULL)p Fm(.)295 2097 y Fb(glX)o(QueryV)l(ersion)h Fm(returns)j Fb(T)l(rue)f Fm(if)h(it)g(succeeds)g(and)g Fb(F)l(alse)g Fm(if)g(it)g(fails.)224 2154 y(If)g(it)f(fails,)h Fj(major)g Fm(and)f Fj(minor)g Fm(are)g(not)g(up)q(dated.)224 2274 y Fb(3.2.2)52 b(Con\014guration)18 b(Managemen)o(t)224 2359 y Fm(The)c(constan)o(ts)g(sho)o(wn)f(in)i(T)l(able)g(1)f(are)f (passed)i(to)e Fb(glX)o(GetCon\014g)h Fm(and)h Fb(glX-)224 2416 y(Cho)q(oseVisual)h Fm(to)f(sp)q(ecify)h(whic)o(h)g(attributes)f (are)g(b)q(eing)h(queried.)925 2613 y(9)p eop %%Page: 10 11 10 10 bop 224 772 1676 2 v 223 829 2 57 v 384 812 a Fm(A)o(ttribute)p 730 829 V 211 w(T)o(yp)q(e)p 934 829 V 76 w(Notes)p 1899 829 V 224 830 1676 2 v 224 839 V 223 895 2 57 v 365 878 a Fh(GLX)p 440 878 15 2 v 17 w(USE)p 529 878 V 17 w(GL)p 730 895 2 57 v 165 w Fm(b)q(o)q(olean)p 934 895 V 51 w Fb(T)l(rue)15 b Fm(if)g(Op)q(enGL)i(rendering)f(supp)q(orted)p 1899 895 V 224 897 1676 2 v 223 953 2 57 v 305 936 a Fh(GLX)p 380 936 15 2 v 17 w(BUFFER)p 541 936 V 17 w(SIZE)p 730 953 2 57 v 115 w Fm(in)o(teger)p 934 953 V 59 w(depth)g(of)f(the)g (color)g(bu\013er)p 1899 953 V 224 955 1676 2 v 223 1011 2 57 v 374 994 a Fh(GLX)p 449 994 15 2 v 16 w(LEVEL)p 730 1011 2 57 v 184 w Fm(in)o(teger)p 934 1011 V 59 w(frame)g(bu\013er) g(lev)o(el)p 1899 1011 V 224 1013 1676 2 v 223 1069 2 57 v 386 1053 a Fh(GLX)p 461 1053 15 2 v 16 w(RGBA)p 730 1069 2 57 v 186 w Fm(b)q(o)q(olean)p 934 1069 V 51 w Fb(T)l(rue)g Fm(if)g(R)o(GBA)h(rendering)g(supp)q(orted)p 1899 1069 V 224 1071 1676 2 v 223 1128 2 57 v 290 1111 a Fh(GLX)p 365 1111 15 2 v 17 w(DOUBLEBUFFER)p 730 1128 2 57 v 89 w Fm(b)q(o)q(olean)p 934 1128 V 51 w Fb(T)l(rue)f Fm(if)g(color)h(bu\013ers)f(ha)o(v)o(e)f(fron)o(t/bac)o(k)g(pairs)p 1899 1128 V 224 1129 1676 2 v 223 1186 2 57 v 362 1169 a Fh(GLX)p 437 1169 15 2 v 16 w(STEREO)p 730 1186 2 57 v 162 w Fm(b)q(o)q(olean)p 934 1186 V 51 w Fb(T)l(rue)h Fm(if)g(color)h(bu\013ers)f(ha)o(v)o(e)f(left/righ)o(t)i(pairs)p 1899 1186 V 224 1187 1676 2 v 223 1244 2 57 v 305 1227 a Fh(GLX)p 380 1227 15 2 v 17 w(AUX)p 469 1227 V 17 w(BUFFERS)p 730 1244 2 57 v 115 w Fm(in)o(teger)p 934 1244 V 59 w(n)o(um)o(b)q(er)f (of)g(auxiliary)i(color)e(bu\013ers)p 1899 1244 V 224 1245 1676 2 v 223 1302 2 57 v 341 1285 a Fh(GLX)p 416 1285 15 2 v 17 w(RED)p 505 1285 V 17 w(SIZE)p 730 1302 2 57 v 151 w Fm(in)o(teger)p 934 1302 V 59 w(n)o(um)o(b)q(er)g(of)g (bits)h(of)f(Red)h(in)g(the)f(framebu\013er)p 1899 1302 V 224 1304 1676 2 v 223 1360 2 57 v 317 1343 a Fh(GLX)p 392 1343 15 2 v 17 w(GREEN)p 529 1343 V 17 w(SIZE)p 730 1360 2 57 v 127 w Fm(in)o(teger)p 934 1360 V 59 w(n)o(um)o(b)q(er)g(of) g(bits)h(of)f(Green)g(in)h(the)f(framebu\013er)p 1899 1360 V 224 1362 1676 2 v 223 1418 2 57 v 329 1401 a Fh(GLX)p 404 1401 15 2 v 17 w(BLUE)p 517 1401 V 17 w(SIZE)p 730 1418 2 57 v 139 w Fm(in)o(teger)p 934 1418 V 59 w(n)o(um)o(b)q(er)g(of) g(bits)h(of)f(Blue)h(in)g(the)f(framebu\013er)p 1899 1418 V 224 1420 1676 2 v 223 1476 2 57 v 317 1459 a Fh(GLX)p 392 1459 15 2 v 17 w(ALPHA)p 529 1459 V 17 w(SIZE)p 730 1476 2 57 v 127 w Fm(in)o(teger)p 934 1476 V 59 w(n)o(um)o(b)q(er)g(of) g(bits)h(in)g(the)f(destination)h(alpha)g(bu\013er)p 1899 1476 V 224 1478 1676 2 v 223 1534 2 57 v 317 1517 a Fh(GLX)p 392 1517 15 2 v 17 w(DEPTH)p 529 1517 V 17 w(SIZE)p 730 1534 2 57 v 127 w Fm(in)o(teger)p 934 1534 V 59 w(n)o(um)o(b)q(er)f(of)g(bits)h(in)g(the)f(depth)h(bu\013er)p 1899 1534 V 224 1536 1676 2 v 223 1593 2 57 v 293 1576 a Fh(GLX)p 368 1576 15 2 v 17 w(STENCIL)p 553 1576 V 16 w(SIZE)p 730 1593 2 57 v 104 w Fm(in)o(teger)p 934 1593 V 59 w(n)o(um)o(b)q(er)f(of)g(bits)h(in)g(the)f(stencil)i (bu\013er)p 1899 1593 V 224 1594 1676 2 v 223 1651 2 57 v 273 1634 a Fh(GLX)p 348 1634 15 2 v 17 w(ACCUM)p 485 1634 V 16 w(RED)p 573 1634 V 17 w(SIZE)p 730 1651 2 57 v 83 w Fm(in)o(teger)p 934 1651 V 59 w(n)o(um)o(b)q(er)e(Red)i (bits)e(in)h(the)g(accum)o(ulation)g(bu\013er)p 1899 1651 V 224 1652 1676 2 v 223 1709 2 57 v 249 1692 a Fh(GLX)p 324 1692 15 2 v 17 w(ACCUM)p 461 1692 V 16 w(GREEN)p 597 1692 V 17 w(SIZE)p 730 1709 2 57 v 59 w Fm(in)o(teger)p 934 1709 V 59 w(n)o(um)o(b)q(er)f(Green)h(bits)f(in)h(the)g(accum)o (ulation)g(bu\013er)p 1899 1709 V 224 1710 1676 2 v 223 1767 2 57 v 261 1750 a Fh(GLX)p 336 1750 15 2 v 17 w(ACCUM)p 473 1750 V 16 w(BLUE)p 585 1750 V 17 w(SIZE)p 730 1767 2 57 v 71 w Fm(in)o(teger)p 934 1767 V 59 w(n)o(um)o(b)q(er)f(Blue)i (bits)f(in)g(the)f(accum)o(ulation)h(bu\013er)p 1899 1767 V 224 1769 1676 2 v 223 1825 2 57 v 249 1808 a Fh(GLX)p 324 1808 15 2 v 17 w(ACCUM)p 461 1808 V 16 w(ALPHA)p 597 1808 V 17 w(SIZE)p 730 1825 2 57 v 59 w Fm(in)o(teger)p 934 1825 V 59 w(n)o(um)o(b)q(er)f(Alpha)i(bits)e(in)h(the)g(accum)o (ulation)g(bu\013er)p 1899 1825 V 224 1827 1676 2 v 599 1904 a(T)l(able)g(1:)j(Con\014guration)c(attributes.)914 2613 y(10)p eop %%Page: 11 12 11 11 bop 295 286 a Fh(GLX)p 370 286 15 2 v 16 w(BUFFER)p 530 286 V 17 w(SIZE)12 b Fm(giv)o(es)g(the)h(total)e(depth)i(of)f(the)h (color)f(bu\013er)g(in)h(bits.)20 b(F)l(or)224 343 y Fb(PseudoColor)13 b Fm(and)g Fb(StaticColor)h Fm(visuals,)g(this)f(is)h (equal)f(to)g(the)f(depth)i(v)m(alue)224 399 y(rep)q(orted)22 b(in)h(the)f(core)g(X11)f(Visual.)42 b(F)l(or)21 b Fb(T)l(rueColor)g Fm(and)h Fb(DirectColor)224 456 y Fm(visuals,)16 b Fh(GLX)p 460 456 V 17 w(BUFFER)p 621 456 V 16 w(SIZE)e Fm(is)i(the)f(sum)g(of)f Fh(GLX)p 1090 456 V 17 w(RED)p 1179 456 V 17 w(SIZE)p Fm(,)g Fh(GLX)p 1391 456 V 17 w(GREEN)p 1528 456 V 16 w(SIZE)p Fm(,)224 512 y Fh(GLX)p 299 512 V 17 w(BLUE)p 412 512 V 17 w(SIZE)p Fm(,)d(and)i Fh(GLX)p 707 512 V 16 w(ALPHA)p 843 512 V 17 w(SIZE)p Fm(.)e(Note)h(that)g(this)h(v)m (alue)h(ma)o(y)d(b)q(e)i(larger)224 569 y(than)f(the)h(depth)g(v)m (alue)g(rep)q(orted)f(in)i(the)e(core)g(X11)g(visual)h(since)h(it)e(ma) o(y)g(include)224 625 y(alpha)21 b(planes)g(that)e(ma)o(y)g(not)h(b)q (e)h(rep)q(orted)f(b)o(y)g(X11.)34 b(Also,)21 b(for)e Fh(TrueColor)224 682 y Fm(visuals,)e(the)e(sum)h(of)f Fh(GLX)p 688 682 V 17 w(RED)p 777 682 V 17 w(SIZE)p Fm(,)f Fh(GLX)p 989 682 V 17 w(GREEN)p 1126 682 V 17 w(SIZE)p Fm(,)g(and)i Fh(GLX)p 1427 682 V 17 w(BLUE)p 1540 682 V 17 w(SIZE)224 738 y Fm(ma)o(y)f(b)q(e)h(larger)f(than)g(the)g(maxim)o (um)g(depth)h(that)e(core)h(X11)g(can)g(supp)q(ort.)295 795 y(T)l(o)10 b(obtain)h(a)f(description)i(of)e(an)g(Op)q(enGL)i (attribute)f(exp)q(orted)f(b)o(y)h(a)f Fh(Visual)224 851 y Fm(use)338 945 y Fh(int)24 b Fb(glX)o(GetCon\014g)p Fh(\()48 b(Display)23 b Fj(*dpy)p Fh(,)k(XVisualInfo*)22 b Fj(*vi-)406 1001 y(sual)p Fh(,)15 b(int)g Fj(attribute)p Fh(,)g(int)g Fj(*value)h Fh(\))23 b(;)295 1095 y Fb(glX)o(GetCon\014g)c Fm(returns)g(through)g Fj(value)g Fm(the)h(v)m(alue)g(of)f(the)g Fj(attribute)i Fm(of)224 1152 y Fj(visual)p Fm(.)295 1208 y Fb(glX)o(GetCon\014g)f Fm(returns)g(one)h(of)f(the)g(follo)o (wing)h(error)f(co)q(des)g(if)h(it)g(fails,)224 1264 y(and)16 b(Success)g(otherwise:)247 1371 y Fh(GLX)p 322 1371 V 17 w(NO)p 387 1371 V 17 w(EXTENSION)d Fj(dpy)j Fm(do)q(es)g(not)f(supp)q(ort)g(the)g(GLX)g(extension.)247 1465 y Fh(GLX)p 322 1465 V 17 w(BAD)p 411 1465 V 16 w(SCREEN)g Fm(screen)h(of)e Fj(visual)h Fm(do)q(es)h(not)e(corresp)q(ond)i(to)f(a) f(screen.)247 1558 y Fh(GLX)p 322 1558 V 17 w(BAD)p 411 1558 V 16 w(ATTRIBUTE)g Fj(attribute)i Fm(is)g(not)f(a)g(v)m(alid)i (GLX)e(attribute.)247 1652 y Fh(GLX)p 322 1652 V 17 w(BAD)p 411 1652 V 16 w(VISUAL)j Fj(visual)f Fm(do)q(es)i(not)f(supp)q(ort)g (GLX)g(and)g(an)h(attribute)e(other)338 1709 y(than)e Fh(GLX)p 519 1709 V 17 w(USE)p 608 1709 V 16 w(GL)g Fm(w)o(as)g(sp)q (eci\014ed.)247 1802 y Fh(GLX)p 322 1802 V 17 w(BAD)p 411 1802 V 16 w(VALUE)g Fm(parameter)f(in)o(v)m(alid)295 1909 y(A)28 b(GLX)g(implemen)o(tation)h(ma)o(y)e(exp)q(ort)h(man)o(y)f (visuals)i(that)e(supp)q(ort)224 1965 y(Op)q(enGL.)17 b(These)g(visuals)h(supp)q(ort)e(either)h(color)f(index)i(or)e(R)o(GBA) g(rendering.)224 2022 y(Curren)o(tly)k(R)o(GBA)g(rendering)h(can)f(b)q (e)h(supp)q(orted)f(only)h(b)o(y)f(Visuals)h(of)e(t)o(yp)q(e)224 2078 y Fb(T)l(rueColor)11 b Fm(or)h Fb(DirectColor)g Fm(and)g(color)g(index)h(rendering)f(can)g(b)q(e)h(supp)q(orted)224 2134 y(only)j(b)o(y)f(Visuals)h(of)f(t)o(yp)q(e)g Fb(PseudoColor)g Fm(or)g Fb(StaticColor)p Fm(.)295 2191 y(Serv)o(ers)10 b(are)g(required)i(to)e(exp)q(ort)g(at)g(least)h(one)g(visual)h(that)d (supp)q(orts)i(R)o(GBA)224 2247 y(rendering.)34 b(A)o(t)19 b(least)g(one)h(of)f(the)g(visuals)h(that)f(supp)q(orts)h(R)o(GBA)f (rendering)224 2304 y(m)o(ust)h(ha)o(v)o(e)h(at)f(least)h(one)f(color)h (bu\013er,)h(a)e(stencil)j(bu\013er)d(of)h(at)f(least)h(1)f(bit,)224 2360 y(a)h(depth)g(bu\013er)g(of)f(at)g(least)h(12)f(bits,)i(and)f(an)g (accum)o(ulation)g(bu\013er;)j(alpha)224 2417 y(bitplanes)19 b(are)f(optional.)28 b(The)18 b(color)g(bu\013er)f(size)i(for)e(this)h (visual)h(m)o(ust)e(b)q(e)i(as)224 2473 y(large)d(as)f(that)h(of)f(the) h(deep)q(est)h Fb(T)l(rueColor)p Fm(,)e Fb(DirectColor)p Fm(,)h Fb(PseudoColor)p Fm(,)914 2613 y(11)p eop %%Page: 12 13 12 12 bop 372 242 1130 2 v 371 299 2 57 v 532 282 a Fm(A)o(ttribute)p 878 299 V 185 w(Default)p 1075 299 V 50 w(Selection)17 b(Criteria)p 1500 299 V 372 301 1130 2 v 372 309 V 371 365 2 57 v 513 348 a Fh(GLX)p 588 348 15 2 v 17 w(USE)p 677 348 V 16 w(GL)p 878 365 2 57 v 178 w Fb(T)l(rue)p 1075 365 V 78 w Fm(exact)p 1500 365 V 372 367 1130 2 v 371 423 2 57 v 453 406 a Fh(GLX)p 528 406 15 2 v 17 w(BUFFER)p 689 406 V 16 w(SIZE)p 878 423 2 57 v 168 w Fm(0)p 1075 423 V 112 w(minim)o(um,)f(smallest)p 1500 423 V 372 425 1130 2 v 371 482 2 57 v 522 465 a Fh(GLX)p 597 465 15 2 v 16 w(LEVEL)p 878 482 2 57 v 236 w Fm(0)p 1075 482 V 112 w(exact)p 1500 482 V 372 483 1130 2 v 371 540 2 57 v 533 523 a Fh(GLX)p 608 523 15 2 v 17 w(RGBA)p 878 540 2 57 v 203 w Fb(F)l(alse)p 1075 540 V 67 w Fm(exact)p 1500 540 V 372 541 1130 2 v 371 598 2 57 v 438 581 a Fh(GLX)p 513 581 15 2 v 17 w(DOUBLEBUFFER)p 878 598 2 57 v 106 w Fb(F)l(alse)p 1075 598 V 67 w Fm(exact)p 1500 598 V 372 599 1130 2 v 371 656 2 57 v 510 639 a Fh(GLX)p 585 639 15 2 v 16 w(STEREO)p 878 656 2 57 v 179 w Fb(F)l(alse)p 1075 656 V 67 w Fm(exact)p 1500 656 V 372 658 1130 2 v 371 714 2 57 v 453 697 a Fh(GLX)p 528 697 15 2 v 17 w(AUX)p 617 697 V 17 w(BUFFERS)p 878 714 2 57 v 167 w Fm(0)p 1075 714 V 112 w(minim)o(um,)g(smallest)p 1500 714 V 372 716 1130 2 v 371 772 2 57 v 489 755 a Fh(GLX)p 564 755 15 2 v 17 w(RED)p 653 755 V 17 w(SIZE)p 878 772 2 57 v 203 w Fm(0)p 1075 772 V 112 w(minim)o(um,)g(largest)p 1500 772 V 372 774 1130 2 v 371 830 2 57 v 465 813 a Fh(GLX)p 540 813 15 2 v 17 w(GREEN)p 677 813 V 16 w(SIZE)p 878 830 2 57 v 180 w Fm(0)p 1075 830 V 112 w(minim)o(um,)g(largest)p 1500 830 V 372 832 1130 2 v 371 888 2 57 v 477 871 a Fh(GLX)p 552 871 15 2 v 17 w(BLUE)p 665 871 V 17 w(SIZE)p 878 888 2 57 v 191 w Fm(0)p 1075 888 V 112 w(minim)o(um,)g(largest)p 1500 888 V 372 890 1130 2 v 371 946 2 57 v 465 930 a Fh(GLX)p 540 930 15 2 v 17 w(ALPHA)p 677 930 V 16 w(SIZE)p 878 946 2 57 v 180 w Fm(0)p 1075 946 V 112 w(minim)o(um,)g(largest)p 1500 946 V 372 948 1130 2 v 371 1005 2 57 v 465 988 a Fh(GLX)p 540 988 15 2 v 17 w(DEPTH)p 677 988 V 16 w(SIZE)p 878 1005 2 57 v 180 w Fm(0)p 1075 1005 V 112 w(minim)o(um,)g(largest)p 1500 1005 V 372 1006 1130 2 v 371 1063 2 57 v 441 1046 a Fh(GLX)p 516 1046 15 2 v 17 w(STENCIL)p 701 1046 V 16 w(SIZE)p 878 1063 2 57 v 156 w Fm(0)p 1075 1063 V 112 w(minim)o(um,)g(smallest)p 1500 1063 V 372 1064 1130 2 v 371 1121 2 57 v 421 1104 a Fh(GLX)p 496 1104 15 2 v 17 w(ACCUM)p 633 1104 V 16 w(RED)p 721 1104 V 17 w(SIZE)p 878 1121 2 57 v 135 w Fm(0)p 1075 1121 V 112 w(minim)o(um,)g(largest)p 1500 1121 V 372 1122 1130 2 v 371 1179 2 57 v 397 1162 a Fh(GLX)p 472 1162 15 2 v 17 w(ACCUM)p 609 1162 V 16 w(GREEN)p 745 1162 V 17 w(SIZE)p 878 1179 2 57 v 111 w Fm(0)p 1075 1179 V 112 w(minim)o(um,)g(largest)p 1500 1179 V 372 1181 1130 2 v 371 1237 2 57 v 409 1220 a Fh(GLX)p 484 1220 15 2 v 17 w(ACCUM)p 621 1220 V 16 w(BLUE)p 733 1220 V 17 w(SIZE)p 878 1237 2 57 v 123 w Fm(0)p 1075 1237 V 112 w(minim)o(um,)g(largest)p 1500 1237 V 372 1239 1130 2 v 371 1295 2 57 v 397 1278 a Fh(GLX)p 472 1278 15 2 v 17 w(ACCUM)p 609 1278 V 16 w(ALPHA)p 745 1278 V 17 w(SIZE)p 878 1295 2 57 v 111 w Fm(0)p 1075 1295 V 112 w(minim)o(um,)g(largest)p 1500 1295 V 372 1297 1130 2 v 258 1374 a(T)l(able)g(2:)j(Defaults)d(and)f(selection)i (criteria)e(used)h(b)o(y)f Fb(glX)o(Cho)q(oseVisual)p Fm(.)224 1556 y(or)21 b Fb(StaticColor)h Fm(visual)g(supp)q(orted)g(on) f(framebu\013er)f(lev)o(el)i(zero)f(\(the)g(main)224 1613 y(image)15 b(planes\),)h(and)f(it)h(m)o(ust)e(b)q(e)i(a)o(v)m (ailable)h(on)e(framebu\013er)g(lev)o(el)h(zero.)295 1669 y(If)j(the)g(X)f(serv)o(er)h(exp)q(orts)g(a)f Fb(PseudoColor)g Fm(or)h Fb(StaticColor)h Fm(visual)g(on)224 1726 y(framebu\013er)c(lev) o(el)j(0,)d(a)g(visual)i(that)e(supp)q(orts)h(color)g(index)h (rendering)g(is)f(also)224 1782 y(required.)30 b(If)18 b(color)g(index)i(rendering)f(is)g(supp)q(orted)f(then)h(one)f(of)g (the)g(visuals)224 1839 y(that)d(supp)q(orts)g(color)h(index)h (rendering)f(m)o(ust)f(ha)o(v)o(e)g(at)g(least)g(one)h(color)g (bu\013er,)224 1895 y(a)h(stencil)i(bu\013er)e(of)g(at)g(least)g(1)g (bit,)h(and)g(a)f(depth)h(bu\013er)f(of)g(at)g(least)g(12)g(bits.)224 1952 y(It)e(also)f(m)o(ust)h(ha)o(v)o(e)f(as)g(man)o(y)g(color)h (bitplanes)h(as)e(the)h(deep)q(est)h Fb(PseudoColor)224 2008 y Fm(or)f Fb(StaticColor)i Fm(visual)g(supp)q(orted)f(on)f (framebu\013er)g(lev)o(el)i(zero,)d(and)i(it)g(m)o(ust)224 2065 y(itself)g(b)q(e)g(made)f(a)o(v)m(ailable)i(on)e(lev)o(el)i(zero.) 295 2121 y Fb(glX)o(Cho)q(oseVisual)e Fm(is)g(used)h(to)e(\014nd)i(a)f (visual)h(that)e(matc)o(hes)g(the)h(clien)o(t's)224 2177 y(sp)q(eci\014ed)i(attributes.)338 2276 y Fh(XVisualInfo*)28 b Fb(glX)o(Cho)q(oseVisual)p Fh(\()53 b(Display)29 b Fj(*dpy)p Fh(,)34 b(int)406 2333 y Fj(scr)n(e)n(en)p Fh(,)13 b(int)i Fj(*attrib)p 786 2333 14 2 v 18 w(list)f Fh(\))24 b(;)295 2432 y Fb(glX)o(Cho)q(oseVisual)19 b Fm(returns)f(a)h(p)q(oin)o(ter)g(to)f(an)g Fh(XVisualInfo)f Fm(structure)224 2488 y(describing)k(the)e(visual)i(that)d(b)q(est)h (matc)o(hes)g(the)g(sp)q(eci\014ed)i(attributes.)32 b(If)19 b(no)914 2613 y(12)p eop %%Page: 13 14 13 13 bop 224 286 a Fm(matc)o(hing)15 b(visual)i(exists,)e Fb(NULL)h Fm(is)g(returned.)295 343 y(The)28 b(attributes)g(are)g(matc) o(hed)h(in)g(an)f(attribute-sp)q(eci\014c)i(manner,)i(as)224 399 y(sho)o(wn)22 b(in)g(T)l(able)h(2.)39 b(Some)22 b(of)g(the)g (attributes,)h(suc)o(h)f(as)f Fh(GLX)p 1384 399 15 2 v 17 w(LEVEL)p Fm(,)g(m)o(ust)224 456 y(matc)o(h)13 b(the)h(sp)q (eci\014ed)h(v)m(alue)g(exactly;)f(others,)f(suc)o(h)h(as,)f Fh(GLX)p 1293 456 V 17 w(BUFFER)p 1454 456 V 16 w(SIZE)g Fm(and)224 512 y Fh(GLX)p 299 512 V 17 w(RED)p 388 512 V 17 w(SIZE)19 b Fm(m)o(ust)g(meet)h(or)g(exceed)h(the)f(sp)q (eci\014ed)i(minim)o(um)f(v)m(alues.)35 b(In)224 569 y(the)14 b(case)h(of)f Fh(GLX)p 523 569 V 16 w(BUFFER)p 683 569 V 17 w(SIZE)p Fm(,)f(preference)i(is)g(giv)o(en)g(based)f(on)g (ho)o(w)g(close)h(the)224 625 y(visual's)21 b(attribute)f(v)m(alue)h (is)g(to)f(the)g(sp)q(eci\014ed)i(v)m(alue.)36 b(\(A)o(ttributes)20 b(that)f(are)224 682 y(matc)o(hed)e(in)h(this)g(manner)f(ha)o(v)o(e)g Fh(minimum,)23 b(smallest)16 b Fm(listed)i(as)f(their)h(selec-)224 738 y(tion)h(criteria)h(in)f(T)l(able)h(2.\))30 b(In)20 b(the)f(case)g(of)f Fh(GLX)p 1124 738 V 17 w(RED)p 1213 738 V 17 w(SIZE)p Fm(,)g(if)h(the)g(sp)q(eci\014ed)224 795 y(v)m(alue)j(is)g(non-zero,)g(then)f(preference)h(is)f(giv)o(en)g (to)g(visuals)g(with)h(the)e(largest)224 851 y(v)m(alue)j(for)e(this)i (attribute;)h(otherwise)e(preference)h(is)f(giv)o(en)h(to)e(visuals)i (with)224 907 y(the)c(smallest)h(v)m(alue.)32 b(\(A)o(ttributes)19 b(that)f(are)h(matc)o(hed)g(in)h(this)f(manner)h(ha)o(v)o(e)224 964 y Fh(minimum,)j(largest)14 b Fm(listed)j(as)d(their)i(selection)h (criteria)f(in)g(T)l(able)g(2.\))295 1020 y(If)11 b Fh(GLX)p 411 1020 V 16 w(RGBA)g Fm(is)g(in)g Fj(attrib)p 730 1020 14 2 v 17 w(list)f Fm(then)h(the)g(resulting)h(visual)g(will)g(b)q(e)f Fh(TrueColor)224 1077 y Fm(or)h Fh(DirectColor)p Fm(.)18 b(If)12 b(all)i(other)e(attributes)h(are)f(equiv)m(alen)o(t,)i(then)f (a)f Fh(TrueColor)224 1133 y Fm(visual)k(will)h(b)q(e)f(c)o(hosen)g(in) g(preference)g(to)e(a)h Fh(DirectColor)f Fm(visual.)295 1190 y(If)24 b Fh(GLX)p 424 1190 15 2 v 17 w(RGBA)g Fm(is)h(not)f(in)i Fj(attrib)p 876 1190 14 2 v 17 w(list)d Fm(then)i(the)g(returned)g (visual)g(will)h(b)q(e)224 1246 y Fh(PseudoColor)11 b Fm(or)h Fh(StaticColor)p Fm(.)18 b(If)13 b(all)g(other)g(attributes)f (are)g(equiv)m(alen)o(t)j(then)224 1303 y(a)f Fh(PseudoColor)g Fm(visual)h(will)i(b)q(e)e(c)o(hosen)g(in)g(preference)h(to)e(a)g Fh(StaticColor)f Fm(vi-)224 1359 y(sual.)295 1416 y(If)i(an)g (attribute)g(is)g(not)g(sp)q(eci\014ed)i(in)f Fj(attrib)p 1067 1416 V 17 w(list)p Fm(,)e(then)h(the)g(default)g(v)m(alue)i(is)224 1472 y(used.)k(See)15 b(T)l(able)h(2)f(for)g(a)g(list)h(of)f(defaults.) 295 1528 y(Default)c(sp)q(eci\014cations)j(are)d(sup)q(erseded)i(b)o(y) e(the)h(attributes)f(included)j(in)f Fj(at-)224 1585 y(trib)p 296 1585 V 17 w(list)p Fm(.)19 b(In)o(teger)c(attributes)g (are)g(immediately)i(follo)o(w)o(ed)e(b)o(y)g(the)h(corresp)q(ond-)224 1641 y(ing)21 b(desired)h(v)m(alue.)37 b(Bo)q(olean)22 b(attributes)e(app)q(earing)i(in)f Fj(attrib)p 1397 1641 V 17 w(list)f Fm(ha)o(v)o(e)g(an)224 1698 y(implicit)i Fb(T)l(rue)e Fm(v)m(alue;)j(suc)o(h)d(attributes)g(are)f Fj(never)g Fm(follo)o(w)o(ed)h(b)o(y)g(an)g(explicit)224 1754 y Fb(T)l(rue)15 b Fm(or)g Fb(F)l(alse)g Fm(v)m(alue.)21 b(The)15 b(list)h(is)g(terminated)f(with)h Fh(None)p Fm(.)295 1811 y(T)l(o)f(free)g(the)g(data)g(returned,)g(use)g Fb(XF)l(ree)p Fm(.)295 1867 y Fb(NULL)h Fm(is)g(returned)f(if)h(an)f (unde\014ned)i(GLX)e(attribute)g(is)h(encoun)o(tered.)224 1986 y Fb(3.2.3)52 b(O\013)17 b(Screen)g(Rendering)224 2071 y Fm(T)l(o)h(create)f(an)h(o\013)f(screen)h(rendering)h(area,)e (\014rst)g(create)h(an)f(X)h Fh(Pixmap)f Fm(of)g(the)224 2128 y(depth)f(sp)q(eci\014ed)h(b)o(y)e(the)h(desired)g Fh(Visual)p Fm(,)e(then)i(call)338 2223 y Fh(GLXPixmap)43 b Fb(glX)o(CreateGLXPixmap)p Fh(\()68 b(Display)43 b Fj(*dpy)p Fh(,)406 2280 y(XVisualInfo*)13 b Fj(visual)p Fh(,)i(Pixmap)g Fj(pixmap)h Fh(\))23 b(;)295 2375 y Fb(glX)o (CreateGLXPixmap)c Fm(creates)g(an)g(o\013)g(screen)h(rendering)g(area) f(and)224 2432 y(returns)i(its)g(XID.)g(An)o(y)g(GLX)g(rendering)h(con) o(text)f(created)g(with)g(resp)q(ect)h(to)224 2488 y Fj(visual)15 b Fm(can)g(b)q(e)h(used)g(to)f(render)g(in)o(to)g(this)h (o\013)e(screen)i(area.)914 2613 y(13)p eop %%Page: 14 15 14 14 bop 295 286 a Fj(pixmap)22 b Fm(is)h(used)f(for)f(the)h(R)o(GB)g (planes)h(of)e(the)h(fron)o(t-left)g(bu\013er)g(of)f(the)224 343 y(resulting)16 b(GLX)f(o\013)g(screen)g(rendering)h(area.)k(The)15 b(alpha)g(bu\013er)g(and)h(ancillary)224 399 y(bu\013ers)g(sp)q (eci\014ed)j(b)o(y)d Fj(visual)g Fm(are)f(created)i(without)f (externally)h(visible)i(names.)224 456 y(GLX)f(pixmaps)h(ma)o(y)e(b)q (e)i(created)f(with)g(a)f Fj(visual)h Fm(that)f(includes)j(bac)o(k)e (bu\013ers)224 512 y(and)11 b(stereoscopic)g(bu\013ers.)19 b(Ho)o(w)o(ev)o(er,)10 b Fb(glXSw)o(apBu\013ers)f Fm(is)j(ignored)f (for)f(these)224 569 y(pixmaps.)295 625 y(A)i(direct)g(rendering)h(con) o(text)e(migh)o(t)h(not)f(b)q(e)h(able)h(to)e(b)q(e)h(made)g(curren)o (t)g(with)224 682 y(a)j Fh(GLXPixmap)p Fm(.)295 738 y(If)i(the)f(depth) h(of)f Fj(pixmap)i Fm(do)q(es)f(not)f(matc)o(h)g(the)h(depth)g(v)m (alue)g(rep)q(orted)g(b)o(y)224 795 y(core)j(X11)g(for)f Fj(visual)p Fm(,)i(or)e(if)i Fj(pixmap)g Fm(w)o(as)e(not)h(created)g (with)g(resp)q(ect)h(to)e(the)224 851 y(same)f(screen)h(as)f Fj(visual)p Fm(,)g(then)h(a)f Fh(BadMatch)f Fm(error)h(is)h(generated.) 29 b(If)19 b Fj(visual)f Fm(is)224 907 y(not)h(v)m(alid)h(\(e.g.,)e(if) h(GLX)g(do)q(es)h(not)e(supp)q(ort)h(it\),)g(then)g(a)g Fh(BadValue)e Fm(error)i(is)224 964 y(generated.)h(If)13 b Fj(pixmap)i Fm(is)f(not)f(a)h(v)m(alid)h(pixmap)f(id,)h(then)f(a)f Fh(BadPixmap)g Fm(error)g(is)224 1020 y(generated.)26 b(Finally)l(,)18 b(if)g(the)f(serv)o(er)g(cannot)f(allo)q(cate)i(the)f (new)h(GLX)f(pixmap,)224 1077 y(a)e Fh(BadAlloc)f Fm(error)h(is)g (generated.)295 1133 y(A)g Fh(GLXPixmap)f Fm(is)i(destro)o(y)o(ed)e(b)o (y)h(calling)338 1240 y Fh(void)74 b Fb(glXDestro)o(yGLXPixmap)p Fh(\()98 b(Display)74 b Fj(*dpy)p Fh(,)406 1296 y(GLXPixmap)14 b Fj(pixmap)i Fh(\))24 b(;)295 1402 y Fm(This)15 b(request)f(deletes)i (the)f(asso)q(ciation)g(b)q(et)o(w)o(een)f(the)h(resource)g(ID)f Fj(pixmap)224 1459 y Fm(and)j(the)g(GLX)f(pixmap.)25 b(The)17 b(storage)e(will)j(b)q(e)f(freed)g(when)g(it)g(is)g(not)f (curren)o(t)224 1515 y(to)f(an)o(y)g(clien)o(t.)295 1572 y(If)i Fj(pixmap)g Fm(is)g(not)f(a)h(v)m(alid)h(GLX)e(pixmap)i(then)f (a)f Fh(GLXBadPixmap)f Fm(error)h(is)224 1628 y(generated.)224 1748 y Fb(3.2.4)52 b(Rendering)18 b(Con)o(texts)224 1834 y Fm(T)l(o)d(create)g(an)g(Op)q(enGL)i(rendering)f(con)o(text)f(call) 338 1928 y Fh(GLXContext)70 b Fb(glX)o(CreateCon)o(text)p Fh(\()94 b(Display)70 b Fj(*dpy)p Fh(,)406 1984 y(XVisualInfo*)10 b Fj(visual)p Fh(,)j(GLXContext)d Fj(shar)n(e)p 1210 1984 14 2 v 17 w(list)p Fh(,)h(Bool)h Fj(dir)n(e)n(ct)406 2041 y Fh(\))24 b(;)224 2134 y Fb(glX)o(CreateCon)o(text)17 b Fm(returns)g Fb(NULL)h Fm(if)f(it)h(fails.)26 b(If)18 b Fb(glX)o(CreateCon)o(text)224 2191 y Fm(succeeds,)c(it)e(initializes) j(the)e(rendering)g(con)o(text)f(to)f(the)i(default)f(Op)q(enGL)i (state)224 2247 y(and)k(returns)f(a)g(handle)h(to)f(it.)26 b(This)18 b(handle)g(can)f(b)q(e)h(used)g(to)f(render)g(to)g(b)q(oth) 224 2304 y(windo)o(ws)e(and)h(GLX)f(pixmaps.)295 2360 y(If)i Fj(shar)n(e)p 448 2360 V 16 w(list)f Fm(is)h(not)f Fb(NULL)p Fm(,)h(then)g(all)h(displa)o(y)f(lists)h(and)e(texture)h(ob)s (jects)224 2417 y(except)12 b(texture)f(ob)s(jects)g(named)g(0)g(will)i (b)q(e)f(shared)g(b)o(y)f Fj(shar)n(e)p 1291 2417 V 17 w(list)f Fm(and)i(the)f(newly)224 2473 y(created)k(rendering)i(con)o (text.)i(An)d(arbitrary)e(n)o(um)o(b)q(er)i(of)f Fb(GLX)o(Con)o(texts)f Fm(can)914 2613 y(14)p eop %%Page: 15 16 15 15 bop 224 286 a Fm(share)14 b(a)g(single)i(displa)o(y)f(list)g(and) f(texture)g(ob)s(ject)g(space.)20 b(All)15 b(sharing)g(con)o(texts)224 343 y(m)o(ust)f(also)h(share)f(a)g(single)i(address)f(space)g(or)f(a)g Fh(BadMatch)g Fm(error)f(is)i(generated.)295 399 y(If)f Fj(dir)n(e)n(ct)g Fm(is)g(true,)g(then)g(a)g(direct)h(rendering)g(con)o (text)e(will)j(b)q(e)f(created)f(if)g(the)224 456 y(implemen)o(tation) 21 b(supp)q(orts)f(direct)g(rendering)h(and)f(the)f(connection)i(is)f (to)f(an)224 512 y(X)e(serv)o(er)g(that)g(is)g(lo)q(cal.)27 b(If)18 b Fj(dir)n(e)n(ct)f Fm(is)g Fb(F)l(alse)p Fm(,)h(then)f(a)g (rendering)h(con)o(text)f(that)224 569 y(renders)f(through)f(the)g(X)g (serv)o(er)g(is)h(created.)295 625 y(Direct)i(rendering)i(con)o(texts)e (ma)o(y)g(b)q(e)h(a)f(scarce)h(resource)g(in)g(some)f(imple-)224 682 y(men)o(tations.)32 b(If)20 b Fj(dir)n(e)n(ct)f Fm(is)h(true,)g (and)f(if)h(a)f(direct)h(rendering)h(con)o(text)d(cannot)224 738 y(b)q(e)d(created,)f(then)h Fb(glX)o(CreateCon)o(text)f Fm(will)i(attempt)d(to)h(create)g(an)h(indirect)224 795 y(con)o(text)g(instead.)295 851 y Fb(glX)o(CreateCon)o(text)i Fm(can)i(generate)e(the)i(follo)o(wing)g(GLX)f(extension)h(er-)224 907 y(rors:)f Fh(GLXBadContext)11 b Fm(if)i Fj(shar)n(e)p 800 907 14 2 v 17 w(list)f Fm(is)h(neither)h(zero)f(nor)f(a)h(v)m(alid) i(GLX)d(render-)224 964 y(ing)h(con)o(text;)f Fh(BadValue)f Fm(if)i Fj(visual)f Fm(is)h(not)f(a)f(v)m(alid)j(X)f(Visual)g(or)f(if)h (GLX)f(do)q(es)h(not)224 1020 y(supp)q(ort)18 b(it;)h Fh(BadMatch)e Fm(if)i Fj(shar)n(e)p 817 1020 V 16 w(list)e Fm(de\014nes)i(an)f(address)g(space)g(that)f(cannot)224 1077 y(b)q(e)c(shared)g(with)f(the)h(newly)g(created)f(con)o(text)g(or) g(if)g Fj(shar)n(e)p 1240 1077 V 17 w(list)f Fm(w)o(as)h(created)g(on)g (a)224 1133 y(di\013eren)o(t)i(screen)f(than)g(the)h(one)f(referenced)h (b)o(y)f Fj(visual)p Fm(;)g Fh(BadAlloc)g Fm(if)g(the)g(serv)o(er)224 1190 y(do)q(es)j(not)e(ha)o(v)o(e)h(enough)h(resources)f(to)g(allo)q (cate)h(the)f(new)g(con)o(text.)295 1246 y(T)l(o)g(determine)h(if)g(an) f(Op)q(enGL)h(rendering)h(con)o(text)d(is)i(direct)g(call)338 1340 y Fh(Bool)e Fb(glXIsDirect)p Fh(\()40 b(Display)14 b Fj(*dpy)p Fh(,)i(GLXContext)d Fj(ctx)j Fh(\))23 b(;)295 1434 y Fb(glXIsDirect)13 b Fm(returns)g Fb(T)l(rue)g Fm(if)h Fj(ctx)f Fm(is)g(a)g(direct)h(rendering)g(con)o(text,)f Fb(F)l(alse)224 1490 y Fm(otherwise.)19 b(If)13 b Fj(ctx)g Fm(is)g(not)g(a)f(v)m(alid)j(GLX)d(rendering)i(con)o(text,)f(a)f Fh(GLXBadContext)224 1547 y Fm(error)j(is)g(generated.)295 1603 y(An)g(Op)q(enGL)i(rendering)f(con)o(text)f(is)g(destro)o(y)o(ed)g (b)o(y)g(calling)338 1697 y Fh(void)21 b Fb(glXDestro)o(yCon)o(text)p Fh(\()45 b(Display)21 b Fj(*dpy)p Fh(,)k(GLXContext)406 1753 y Fj(ctx)15 b Fh(\))24 b(;)224 1847 y Fm(If)c Fj(ctx)g Fm(is)g(still)h(curren)o(t)f(to)f(an)o(y)g(thread,)h Fj(ctx)g Fm(is)g(not)f(destro)o(y)o(ed)g(un)o(til)i(it)f(is)g(no)224 1904 y(longer)d(curren)o(t.)24 b(In)17 b(an)o(y)f(ev)o(en)o(t,)g(the)h (asso)q(ciated)g(XID)g(will)h(b)q(e)f(destro)o(y)o(ed)f(and)224 1960 y Fj(ctx)f Fm(cannot)g(subsequen)o(tly)i(b)q(e)f(made)f(curren)o (t)g(to)g(an)o(y)f(thread.)295 2017 y Fb(glXDestro)o(yCon)o(text)h Fm(will)j(generate)e(a)g Fh(GLXBadContext)f Fm(error)g(if)i Fj(ctx)g Fm(is)224 2073 y(not)e(a)g(v)m(alid)i(rendering)f(con)o(text.) 295 2130 y(T)l(o)f(cop)o(y)g(Op)q(enGL)h(rendering)h(state)d(from)g (one)i(con)o(text)e(to)h(another,)f(use)338 2223 y Fh(void)36 b Fb(glX)o(Cop)o(yCon)o(text)p Fh(\()59 b(Display)35 b Fj(*dpy)p Fh(,)43 b(GLXContext)406 2280 y Fj(sour)n(c)n(e)p Fh(,)15 b(GLXContext)e Fj(dest)p Fh(,)i(unsigned)23 b(long)15 b Fj(mask)g Fh(\))23 b(;)224 2374 y Fb(glX)o(Cop)o(yCon)o(text)13 b Fm(copies)j(selected)g(groups)e(of)h(state)f(v)m(ariables)i(from)e Fj(sour)n(c)n(e)224 2430 y Fm(to)g Fj(dest)p Fm(.)20 b Fj(mask)14 b Fm(indicates)i(whic)o(h)g(groups)e(of)g(state)g(v)m (ariables)i(are)e(to)g(b)q(e)h(copied;)224 2487 y(it)25 b(con)o(tains)g(the)f(bit)o(wise)i(OR)f(of)f(the)h(sym)o(b)q(olic)h (names)f(for)f(the)g(attribute)914 2613 y(15)p eop %%Page: 16 17 16 16 bop 224 286 a Fm(groups.)20 b(The)15 b(sym)o(b)q(olic)h(names)f (are)g(the)g(same)g(as)g(those)g(used)g(b)o(y)g Fb(glPushA)o(t-)224 343 y(trib)p Fm(,)j(describ)q(ed)i(in)e(the)f(Op)q(enGL)i(Sp)q (eci\014cation.)29 b(Also,)18 b(the)g(order)f(in)h(whic)o(h)224 399 y(the)h(attributes)g(are)f(copied)i(to)e Fj(dest)h Fm(as)f(a)g(result)i(of)e(the)h Fb(glX)o(Cop)o(yCon)o(text)224 456 y Fm(op)q(eration)24 b(is)g(the)f(same)g(as)g(the)h(order)f(in)h (whic)o(h)h(they)e(are)g(p)q(opp)q(ed)i(o\013)e(of)224 512 y(the)d(stac)o(k)g(when)g Fb(glP)o(opA)o(ttrib)g Fm(is)h(called.)36 b(The)20 b(single)i(sym)o(b)q(olic)f(constan)o(t)224 569 y Fh(GL)p 275 569 15 2 v 17 w(ALL)p 364 569 V 17 w(ATTRIB)p 525 569 V 16 w(BITS)13 b Fm(can)g(b)q(e)h(used)g(to)f(cop)o (y)g(the)h(maxim)o(um)f(p)q(ossible)i(p)q(ortion)224 625 y(of)j(the)g(rendering)h(state.)27 b(It)18 b(is)h(not)e(an)h(error) f(to)h(sp)q(ecify)h Fj(mask)f Fm(bits)g(that)f(are)224 682 y(unde\014ned.)295 738 y(If)e Fj(sour)n(c)n(e)f Fm(and)h Fj(dest)g Fm(do)f(not)h(share)f(an)h(address)g(space)g(or)f(w)o(ere)h (not)f(created)224 795 y(on)21 b(the)g(same)f(screen,)i(a)f Fh(BadMatch)e Fm(error)h(is)h(generated.)37 b(\()p Fj(sour)n(c)n(e)19 b Fm(and)i Fj(dest)224 851 y Fm(ma)o(y)e(b)q(e)i(based)f(on)g (di\013eren)o(t)h(X)f(visuals)h(and)f(still)h(share)f(an)g(address)g (space;)224 907 y Fb(glX)o(Cop)o(yCon)o(text)11 b Fm(will)j(w)o(ork)d (correctly)h(in)h(suc)o(h)g(cases.)19 b(\))f(If)13 b(the)f(destination) 224 964 y(con)o(text)j(is)g(curren)o(t)g(for)g(some)g(thread)f(then)i (a)f Fh(BadAccess)e Fm(error)i(is)g(generated.)224 1020 y(If)k(the)h(source)f(con)o(text)f(is)i(the)f(same)g(as)f(the)h(curren) o(t)g(con)o(text)g(of)f(the)h(calling)224 1077 y(thread,)c(and)g(the)h (curren)o(t)f(dra)o(w)o(able)g(of)g(the)g(calling)i(thread)f(is)f(a)g (windo)o(w)h(that)224 1133 y(is)c(no)e(longer)h(v)m(alid,)i(a)e Fh(GLXBadCurrentWindow)d Fm(is)k(generated.)18 b(Finally)l(,)13 b(if)e(either)224 1190 y Fj(sour)n(c)n(e)17 b Fm(or)g Fj(dest)h Fm(is)g(not)f(a)g(v)m(alid)i(GLX)f(rendering)h(con)o(text,)e (a)g Fh(GLXBadContext)224 1246 y Fm(error)e(is)g(generated.)295 1303 y Fb(glX)o(Cop)o(yCon)o(text)i Fm(p)q(erforms)h(an)h(implicit)i Fb(glFlush\(\))f Fm(if)f Fj(sour)n(c)n(e)f Fm(is)h(the)224 1359 y(curren)o(t)c(con)o(text)g(for)f(the)i(calling)h(thread.)295 1416 y(Only)22 b(one)g(rendering)g(con)o(text)f(ma)o(y)f(b)q(e)i(in)g (use,)h(or)d Fj(curr)n(ent)p Fm(,)j(for)d(a)h(par-)224 1472 y(ticular)f(thread)f(at)g(a)g(giv)o(en)h(time.)32 b(The)20 b(minim)o(um)g(n)o(um)o(b)q(er)g(of)f(curren)o(t)g(ren-)224 1528 y(dering)i(con)o(texts)f(that)f(m)o(ust)h(b)q(e)h(supp)q(orted)g (b)o(y)f(a)g(GLX)g(implemen)o(tation)i(is)224 1585 y(one.)e(\(Supp)q (orting)14 b(a)f(larger)g(n)o(um)o(b)q(er)h(of)f(curren)o(t)g (rendering)i(con)o(texts)e(is)g(essen-)224 1641 y(tial)18 b(for)e(general-purp)q(ose)i(systems,)f(but)g(ma)o(y)f(not)g(b)q(e)i (necessary)f(for)f(turnk)o(ey)224 1698 y(applications.\))295 1754 y(T)l(o)f(mak)o(e)f(a)h(con)o(text)g(curren)o(t,)g(call)338 1839 y Fh(Bool)29 b Fb(glXMak)o(eCurren)o(t)p Fh(\()51 b(Display)29 b Fj(*dpy)p Fh(,)34 b(GLXDrawable)406 1895 y Fj(dr)n(awable)p Fh(,)15 b(GLXContext)f Fj(ctx)h Fh(\))24 b(;)295 1980 y Fm(If)19 b(the)g(calling)i(thread)e(already)h(has)f(a)f (curren)o(t)h(rendering)i(con)o(text,)e(then)224 2037 y(that)13 b(con)o(text)g(is)h(\015ushed)h(and)f(mark)o(ed)f(as)h(no)f (longer)h(curren)o(t.)19 b Fj(ctx)14 b Fm(is)g(made)g(the)224 2093 y(curren)o(t)h(con)o(text)g(for)f(the)i(calling)h(thread.)295 2149 y(If)i(the)g Fj(dr)n(awable)f Fm(and)h Fj(ctx)g Fm(are)g(not)f(similar,)i(a)f Fh(BadMatch)f Fm(error)g(is)h(gener-)224 2206 y(ated.)32 b(If)19 b Fj(ctx)h Fm(is)f(curren)o(t)h(to)e(some)h (other)g(thread,)h(then)f Fb(glXMak)o(eCurren)o(t)224 2262 y Fm(will)26 b(generate)d(a)h Fh(BadAccess)e Fm(error.)45 b Fh(GLXBadContextState)22 b Fm(is)i(generated)224 2319 y(if)f(there)f(is)h(a)f(curren)o(t)h(rendering)g(con)o(text)f(and)g (its)h(render)g(mo)q(de)g(is)f(either)224 2375 y Fb(GL)p 299 2375 16 2 v 20 w(FEEDBA)o(CK)g Fm(or)g Fb(GL)p 772 2375 V 20 w(SELECT)p Fm(.)h Fh(GLXBadContextState)e Fm(will)j(also)224 2432 y(b)q(e)f(generated)g(if)f Fb(glXMak)o(eCurren)o(t)f Fm(is)i(called)g(b)q(et)o(w)o(een)g(a)f Fb(glBegin)i Fm(and)224 2488 y(its)18 b(corresp)q(onding)h Fb(glEnd)p Fm(.)30 b(If)18 b Fj(ctx)g Fm(is)h(not)e(a)h(v)m(alid)i(GLX)e (rendering)h(con)o(text,)914 2613 y(16)p eop %%Page: 17 18 17 17 bop 224 286 a Fh(GLXBadContext)12 b Fm(is)i(generated.)19 b(If)14 b Fj(dr)n(awable)g Fm(is)g(not)f(a)g(v)m(alid)i(GLX)f(dra)o(w)o (able,)f(a)224 343 y Fh(GLXBadDrawable)d Fm(error)h(is)h(generated.)19 b(If)12 b(the)g(previous)h(con)o(text)e(of)g(the)h(calling)224 399 y(thread)i(has)f(un\015ushed)i(commands,)e(and)h(the)g(previous)g (dra)o(w)o(able)g(is)g(a)f(windo)o(w)224 456 y(that)e(is)h(no)f(longer) h(v)m(alid,)h Fh(GLXBadCurrentWindow)c Fm(is)j(generated.)19 b(Finally)l(,)13 b(note)224 512 y(that)k(the)g(ancillary)i(bu\013ers)e (for)g Fj(dr)n(awable)g Fm(need)h(not)f(b)q(e)h(allo)q(cated)h(un)o (til)f(they)224 569 y(are)g(needed.)29 b(A)18 b Fh(BadAlloc)f Fm(error)g(will)j(b)q(e)e(generated)g(if)h(the)f(serv)o(er)f(do)q(es)i (not)224 625 y(ha)o(v)o(e)c(enough)h(resources)f(to)f(allo)q(cate)i (the)f(bu\013ers.)295 682 y(If)h Fj(dr)n(awable)f Fm(is)h(destro)o(y)o (ed)f(after)g Fb(glXMak)o(eCurren)o(t)f Fm(is)i(called)h(then)f(sub-) 224 738 y(sequen)o(t)g(rendering)h(commands)f(will)i(b)q(eha)o(v)o(e)e (as)g(if)g Fj(dr)n(awable)g Fm(is)h(b)q(ound)g(to)e(the)224 795 y(NULL)h(clip.)22 b(The)16 b(commands)f(will)i(b)q(e)f(pro)q (cessed)g(and)f(the)g(con)o(text)g(state)f(will)224 851 y(b)q(e)i(up)q(dated,)g(but)f(no)g(output)g(will)i(app)q(ear)e(on)h (the)f(displa)o(y)l(.)295 907 y(T)l(o)e(release)g(the)g(curren)o(t)g (con)o(text)g(without)g(assigning)h(a)f(new)g(one,)g(use)h Fh(NULL)224 964 y Fm(for)j Fj(ctx)g Fm(and)g Fh(None)f Fm(for)h Fj(dr)n(awable)p Fm(.)25 b(If)17 b Fj(ctx)h Fm(is)f Fh(NULL)g Fm(and)g Fj(dr)n(awable)g Fm(is)g(not)g Fh(None)p Fm(,)224 1020 y(or)d(if)g Fj(dr)n(awable)h Fm(is)f Fh(None)g Fm(and)g Fj(ctx)g Fm(is)h(not)f Fh(NULL)p Fm(,)f(then)h(a)g Fh(BadMatch)f Fm(error)h(will)h(b)q(e)224 1077 y(generated.)295 1133 y(The)f(\014rst)f(time)h Fj(ctx)g Fm(is)g(made)g(curren)o(t)g(to)f(a)g Fh(GLXDrawable)p Fm(,)g(its)g(initial)j(view-)224 1190 y(p)q(ort)g(is)h(set.)24 b(That)16 b(viewp)q(ort)g(m)o(ust)g(b)q(e)h(reset)g(b)o(y)f(the)g (clien)o(t)i(when)f Fj(ctx)g Fm(is)g(sub-)224 1246 y(sequen)o(tly)f (made)f(curren)o(t.)295 1303 y(Note)21 b(that)h(when)g(m)o(ultiple)i (threads)e(are)g(using)g(their)h(curren)o(t)f(con)o(texts)224 1359 y(to)16 b(render)g(to)g(the)g(same)g(dra)o(w)o(able,)g(Op)q(enGL)i (do)q(es)e(not)g(guaran)o(tee)f(atomicit)o(y)224 1416 y(of)22 b(fragmen)o(t)f(up)q(date)h(op)q(erations.)41 b(In)22 b(particular,)i(programmers)d(ma)o(y)h(not)224 1472 y(assume)17 b(that)g(depth-bu\013ering)i(will)g(automatically)f(w) o(ork)e(correctly;)i(there)g(is)224 1528 y(a)13 b(race)g(condition)i(b) q(et)o(w)o(een)e(threads)g(that)g(read)g(and)h(up)q(date)f(the)h(depth) g(bu\013er.)224 1585 y(Clien)o(ts)e(are)f(resp)q(onsible)i(for)e(a)o(v) o(oiding)g(this)h(condition.)20 b(They)11 b(ma)o(y)g(use)g(v)o(endor-) 224 1641 y(sp)q(eci\014c)18 b(extensions)f(or)f(they)g(ma)o(y)f (arrange)g(for)h(separate)g(threads)f(to)h(dra)o(w)f(in)224 1698 y(disjoin)o(t)h(regions)f(of)g(the)g(framebu\013er,)g(for)f (example.)295 1754 y Fb(glX)o(GetCurren)o(tCon)o(text)f Fm(returns)i(the)h(curren)o(t)f(con)o(text.)338 1861 y Fh(GLXContext)f Fb(glX)o(GetCurren)o(tCon)o(text)p Fh(\()22 b(void)h(\))h(;)295 1967 y Fm(If)15 b(there)g(is)h(no)f (curren)o(t)g(con)o(text,)g Fb(NULL)h Fm(is)f(returned.)295 2023 y Fb(glX)o(GetCurren)o(tDra)o(w)o(able)9 b Fm(returns)h(the)g(XID) g(of)g(the)h(curren)o(t)f(dra)o(w)o(able.)338 2130 y Fh(GLXDrawable)j Fb(glX)o(GetCurren)o(tDra)o(w)o(able)p Fh(\()23 b(void)g(\))h(;)295 2236 y Fm(If)15 b(there)g(is)h(no)f (curren)o(t)g(dra)o(w)o(able,)g Fh(None)g Fm(is)g(returned.)295 2292 y(T)l(o)e(get)g(the)h(displa)o(y)g(asso)q(ciated)g(with)g(the)g (curren)o(t)f(con)o(text)g(and)h(dra)o(w)o(able,)224 2349 y(call)338 2455 y Fh(Display*)g Fb(glX)o(GetCurren)o(tDispla)o(y)p Fh(\()23 b(void)g(\))h(;)914 2613 y Fm(17)p eop %%Page: 18 19 18 18 bop 295 286 a Fm(If)19 b(there)h(is)f(no)g(curren)o(t)h(con)o (text,)f Fb(NULL)h Fm(is)g(returned.)32 b(This)20 b(routine)g(is)224 343 y(a)o(v)m(ailable)d(only)f(if)f(the)h(GLX)f(v)o(ersion)g(is)h(1.2)e (or)h(later.)295 399 y Fb(glX)o(Get*)e Fm(calls)h(retriev)o(e)f(clien)o (t-side)i(state)d(and)h(do)f(not)h(force)f(a)h(round)g(trip)224 456 y(to)k(the)h(X)f(serv)o(er.)26 b(Unlik)o(e)19 b(most)e(X)h(calls)g (\(including)i(the)e Fb(glX)o(Query*)e Fm(calls\))224 512 y(that)f(return)g(a)g(v)m(alue,)h(these)f(calls)h(do)g(not)e (\015ush)i(an)o(y)f(p)q(ending)i(requests.)224 632 y Fb(3.2.5)52 b(Sync)o(hronization)19 b(Primitiv)o(es)224 718 y Fm(T)l(o)h(prev)o(en)o(t)g(X)g(requests)g(from)f(executing)j(un)o (til)f(an)o(y)f(outstanding)g(Op)q(enGL)224 775 y(rendering)c(is)g (done,)f(call)338 868 y Fh(void)f Fb(glXW)l(aitGL)p Fh(\()26 b(void)d(\))h(;)224 962 y Fm(Op)q(enGL)14 b(calls)f(made)g(prior)f(to)g Fb(glXW)l(aitGL)i Fm(are)e(guaran)o(teed)g(to)f(b)q(e)i(executed)224 1019 y(b)q(efore)h(X)f(rendering)h(calls)h(made)e(after)f Fb(glXW)l(aitGL)p Fm(.)j(While)f(the)g(same)f(result)224 1075 y(can)j(b)q(e)f(ac)o(hiev)o(ed)i(using)f Fb(glFinish)p Fm(,)g Fb(glXW)l(aitGL)g Fm(do)q(es)g(not)f(require)h(a)f(round)224 1132 y(trip)e(to)f(the)h(serv)o(er,)f(and)h(is)g(therefore)g(more)f (e\016cien)o(t)h(in)h(cases)e(where)h(the)g(clien)o(t)224 1188 y(and)j(serv)o(er)e(are)h(on)g(separate)g(mac)o(hines.)295 1244 y Fb(glXW)l(aitGL)d Fm(is)f(ignored)h(if)f(there)g(is)g(no)g (curren)o(t)f(rendering)i(con)o(text.)18 b(If)11 b(the)224 1301 y(dra)o(w)o(able)g(asso)q(ciated)h(with)g(the)f(calling)j (thread's)d(curren)o(t)g(con)o(text)g(is)h(a)f(windo)o(w)224 1357 y(that)k(is)g(no)g(longer)h(v)m(alid,)g(a)f Fh (GLXBadCurrentWindow)e Fm(error)h(is)i(generated.)295 1414 y(T)l(o)c(prev)o(en)o(t)g(the)h(Op)q(enGL)h(command)e(sequence)i (from)d(executing)j(un)o(til)f(an)o(y)224 1470 y(outstanding)i(X)h (requests)f(are)g(completed,)g(call)338 1564 y Fh(void)f Fb(glXW)l(aitX)p Fh(\()25 b(void)e(\))h(;)224 1658 y Fm(X)18 b(rendering)i(calls)f(made)f(prior)g(to)g Fb(glXW)l(aitX)h Fm(are)f(guaran)o(teed)f(to)h(b)q(e)h(exe-)224 1714 y(cuted)c(b)q (efore)g(Op)q(enGL)h(rendering)f(calls)h(made)e(after)g Fb(glXW)l(aitX)p Fm(.)g(While)i(the)224 1771 y(same)f(result)g(can)g(b) q(e)g(ac)o(hiev)o(ed)g(using)h Fb(XSync)p Fm(,)e Fb(glXW)l(aitX)h Fm(do)q(es)g(not)f(require)224 1827 y(a)h(round)g(trip)h(to)f(the)g (serv)o(er,)f(and)i(ma)o(y)e(therefore)h(b)q(e)h(more)f(e\016cien)o(t.) 295 1884 y Fb(glXW)l(aitX)f Fm(is)h(ignored)f(if)h(there)f(is)g(no)g (curren)o(t)g(rendering)h(con)o(text.)k(If)14 b(the)224 1940 y(dra)o(w)o(able)d(asso)q(ciated)h(with)g(the)f(calling)j (thread's)d(curren)o(t)g(con)o(text)g(is)h(a)f(windo)o(w)224 1997 y(that)k(is)g(no)g(longer)h(v)m(alid,)g(a)f Fh (GLXBadCurrentWindow)e Fm(error)h(is)i(generated.)224 2117 y Fb(3.2.6)52 b(Double)18 b(Bu\013ering)224 2203 y Fm(F)l(or)e(dra)o(w)o(ables)g(that)g(are)h(double)g(bu\013ered,)g (the)g(con)o(ten)o(ts)f(of)g(the)h(bac)o(k)f(bu\013er)224 2259 y(can)j(b)q(e)g(made)g(p)q(oten)o(tially)h(visible)h(\(i.e.,)e(b)q (ecome)g(the)g(con)o(ten)o(ts)f(of)g(the)h(fron)o(t)224 2315 y(bu\013er\))c(b)o(y)g(calling)338 2409 y Fh(void)28 b Fb(glXSw)o(apBu\013ers)f Fh(\()53 b(Display)27 b Fj(*dpy)p Fh(,)33 b(GLXDrawable)406 2466 y Fj(dr)n(awable)15 b Fh(\))24 b(;)914 2613 y Fm(18)p eop %%Page: 19 20 19 19 bop 224 286 a Fm(The)16 b(con)o(ten)o(ts)f(of)g(the)g(bac)o(k)g (bu\013er)h(then)f(b)q(ecome)i(unde\014ned.)22 b(This)16 b(op)q(eration)224 343 y(is)g(a)g(no-op)g(if)g Fj(dr)n(awable)g Fm(w)o(as)f(created)g(with)i(a)e(non-double-bu\013ered)j(visual,)f(or) 224 399 y(if)f Fj(dr)n(awable)f Fm(is)h(a)f Fh(GLXPixmap)p Fm(.)295 456 y(All)f(GLX)g(rendering)g(con)o(texts)e(share)i(the)f (same)g(notion)g(of)g(whic)o(h)h(are)f(fron)o(t)224 512 y(bu\013ers)j(and)h(whic)o(h)g(are)f(bac)o(k)h(bu\013ers)f(for)g(a)g (giv)o(en)h(dra)o(w)o(able.)23 b(This)17 b(notion)g(is)224 569 y(also)e(shared)h(with)f(the)g(X)h(double)g(bu\013er)f(extension)h (\(DBE\).)295 625 y(When)e(m)o(ultiple)h(threads)e(are)g(rendering)i (to)e(the)g(same)h(dra)o(w)o(able,)f(only)h(one)224 682 y(of)20 b(them)g(need)g(call)h Fh(glXSwapBuffers)d Fm(and)i(all)h(of)f (them)g(will)h(see)f(the)g(e\013ect)224 738 y(of)c(the)h(sw)o(ap.)23 b(The)17 b(clien)o(t)h(m)o(ust)d(sync)o(hronize)j(the)f(threads)f(that) g(p)q(erform)g(the)224 795 y(sw)o(ap)i(and)h(the)g(rendering,)h(using)f (some)g(means)f(outside)h(the)g(scop)q(e)g(of)f(GLX,)224 851 y(to)e(insure)i(that)e(eac)o(h)h(new)g(frame)f(is)h(completely)h (rendered)g(b)q(efore)f(it)g(is)g(made)224 907 y(visible.)295 964 y(If)27 b Fj(dpy)h Fm(and)f Fj(dr)n(awable)g Fm(are)g(the)g(displa) o(y)i(and)e(dra)o(w)o(able)g(for)g(the)g(call-)224 1020 y(ing)h(thread's)f(curren)o(t)g(con)o(text,)j Fh(glXSwapBuffers)25 b Fm(p)q(erforms)i(an)h(implicit)224 1077 y Fh(glFlush\(\))p Fm(.)18 b(Subsequen)o(t)e(Op)q(enGL)f(commands)f(can)g(b)q(e)h(issued)h (immediately)l(,)224 1133 y(but)g(will)h(not)f(b)q(e)g(executed)h(un)o (til)g(the)f(bu\013er)g(sw)o(apping)g(has)f(completed,)i(t)o(ypi-)224 1190 y(cally)f(during)h(v)o(ertical)e(retrace)g(of)g(the)g(displa)o(y)h (monitor.)295 1246 y(If)c Fj(dr)n(awable)f Fm(is)i(not)e(a)g(v)m(alid)i (GLX)f(dra)o(w)o(able,)g Fb(glXSw)o(apBu\013ers)e Fm(generates)224 1303 y(a)15 b Fh(GLXBadDrawable)e Fm(error.)19 b(If)c Fj(dpy)g Fm(and)g Fj(dr)n(awable)g Fm(are)g(the)g(displa)o(y)h(and)f (dra)o(w-)224 1359 y(able)f(asso)q(ciated)f(with)h(the)f(calling)i (thread's)d(curren)o(t)h(con)o(text,)g(and)g(if)h Fj(dr)n(awable)224 1416 y Fm(is)21 b(a)g(windo)o(w)f(that)g(is)i(no)e(longer)h(v)m(alid,)i (a)e Fh(GLXBadCurrentWindow)d Fm(error)i(is)224 1472 y(generated.)224 1592 y Fb(3.2.7)52 b(Access)16 b(to)i(X)f(F)l(on)o(ts) 224 1678 y Fm(A)e(shortcut)g(for)g(using)h(X)f(fon)o(ts)f(is)i(pro)o (vided)g(b)o(y)f(the)g(command)338 1772 y Fh(void)d Fb(glXUseXF)l(on)o (t)p Fh(\()35 b(Font)12 b Fj(font)p Fh(,)h(int)f Fj(\014rst)p Fh(,)h(int)f Fj(c)n(ount)p Fh(,)h(int)406 1828 y Fj(list)p 469 1828 14 2 v 16 w(b)n(ase)h Fh(\))24 b(;)224 1922 y Fj(c)n(ount)19 b Fm(displa)o(y)h(lists)g(are)e(de\014ned)j(starting)d (at)h Fj(list)p 1142 1922 V 16 w(b)n(ase)p Fm(,)f(eac)o(h)h(list)h (consisting)224 1978 y(of)d(a)g(single)i(call)g(on)e Fb(glBitmap)p Fm(.)28 b(The)18 b(de\014nition)h(of)e(bitmap)h Fj(list)p 1424 1978 V 16 w(b)n(ase)f Fm(+)h(i)g(is)224 2035 y(tak)o(en)d(from)f(the)i(glyph)g Fj(\014rst)e Fm(+)i(i)g(of)f Fj(font)p Fm(.)k(If)d(a)f(glyph)h(is)g(not)e(de\014ned,)j(then)e(an)224 2091 y(empt)o(y)g(displa)o(y)h(list)g(is)g(constructed)f(for)g(it.)20 b(The)c Fh(width)p Fm(,)e Fh(height)p Fm(,)g Fh(xorig)p Fm(,)g(and)224 2148 y Fh(yorig)20 b Fm(of)f(the)i(constructed)f(bitmap) g(are)g(computed)h(from)e(the)h(fon)o(t)g(metrics)224 2204 y(as)g Fh(rbearing-lbearing)p Fm(,)e Fh(ascent+descent)p Fm(,)h Fh(-lbearing)p Fm(,)h(and)g Fh(descent-1)224 2261 y Fm(resp)q(ectiv)o(ely)l(.)26 b Fh(xmove)15 b Fm(is)i(tak)o(en)f(from) g(the)h Fh(width)e Fm(metric)i(and)g Fh(ymove)f Fm(is)h(set)f(to)224 2317 y(zero.)295 2374 y(Note)d(that)f(in)i(the)g(direct)g(rendering)g (case,)f(this)h(requires)g(that)e(the)i(bitmaps)224 2430 y(b)q(e)i(copied)g(to)f(the)g(clien)o(t's)h(address)g(space.)295 2486 y Fb(glXUseXF)l(on)o(t)e Fm(p)q(erforms)h(an)g(implicit)j Fh(glFlush\(\))p Fm(.)914 2613 y(19)p eop %%Page: 20 21 20 20 bop 295 286 a Fb(glXUseXF)l(on)o(t)25 b Fm(is)i(ignored)g(if)f (there)h(is)f(no)h(curren)o(t)f(GLX)g(rendering)224 343 y(con)o(text.)64 b Fh(BadFont)29 b Fm(is)i(generated)f(if)g Fj(font)g Fm(is)h(not)f(a)f(v)m(alid)j(X)e(fon)o(t)g(id.)224 399 y Fh(GLXBadContextState)11 b Fm(is)j(generated)g(if)g(the)g(curren) o(t)f(GLX)h(rendering)h(con)o(text)224 456 y(is)f(in)h(displa)o(y)g (list)f(construction)g(mo)q(de.)20 b Fh(GLXBadCurrentWindow)11 b Fm(is)j(generated)224 512 y(if)j(the)f(dra)o(w)o(able)f(asso)q (ciated)i(with)f(the)g(calling)h(thread's)f(curren)o(t)g(con)o(text)f (is)h(a)224 569 y(windo)o(w)g(and)f(is)h(no)f(longer)g(v)m(alid.)224 689 y Fb(3.2.8)52 b(GLX)17 b(V)l(ersioning)224 775 y Fm(The)h(follo)o(wing)h(functions)g(are)f(a)o(v)m(ailable)h(only)g(if)f (the)h(GLX)f(v)o(ersion)g(is)h(1.1)e(or)224 831 y(later.)338 925 y Fh(const)23 b(char*)68 b Fb(glX)o(QueryExtensionsString)p Fh(\()g(Display)406 981 y Fj(*dpy)p Fh(,)16 b(int)f Fj(scr)n(e)n(en)e Fh(\))24 b(;)295 1075 y Fb(glX)o(QueryExtensionsString)15 b Fm(returns)h(a)f(p)q(oin)o(ter)i(to)e(a)g(string)h(describ-)224 1132 y(ing)c(whic)o(h)g(GLX)f(extensions)h(are)f(supp)q(orted)g(on)g (the)h(connection.)19 b(The)12 b(string)f(is)224 1188 y(zero-terminated)16 b(and)f(con)o(tains)h(a)f(space-sep)q(erated)h (list)g(of)f(extension)i(names.)224 1244 y(The)g(extension)g(names)g (themselv)o(es)g(do)f(not)g(con)o(tain)h(spaces.)24 b(If)16 b(there)h(are)f(no)224 1301 y(extensions)g(to)f(GLX,)g(then)g(the)g (empt)o(y)g(string)g(is)h(returned.)338 1407 y Fh(const)23 b(char*)e Fb(glX)o(GetClien)o(tString)p Fh(\()47 b(Display)22 b Fj(*dpy)p Fh(,)i(int)406 1464 y Fj(name)15 b Fh(\);)295 1570 y Fb(glX)o(GetClien)o(tString)h Fm(returns)g(a)f(p)q(oin)o(ter)g (to)g(a)g(static,)g(zero-terminated)224 1626 y(string)j(describing)h (some)e(asp)q(ect)h(of)f(the)g(clien)o(t)i(library)l(.)28 b(The)18 b(p)q(ossible)h(v)m(alues)224 1683 y(for)e Fj(name)g Fm(are)h Fh(GLX)p 574 1683 15 2 v 16 w(VENDOR)p Fm(,)f Fh(GLX)p 836 1683 V 16 w(VERSION)p Fm(,)f(and)i Fh(GLX)p 1212 1683 V 17 w(EXTENSIONS)p Fm(.)e(If)h Fj(name)224 1739 y Fm(is)i(not)f(set)g(to)g(one)h(of)f(these)g(v)m(alues)i(then)f Fb(NULL)g Fm(is)g(returned.)30 b(The)18 b(format)224 1796 y(and)d(con)o(ten)o(ts)f(of)g(the)h(v)o(endor)g(string)f(is)h (implemen)o(tation)h(dep)q(enden)o(t,)g(and)f(the)224 1852 y(format)e(of)h(the)g(extension)h(string)g(is)f(the)h(same)f(as)f (for)h Fb(glX)o(QueryExtension-)224 1909 y(sString)p Fm(.)20 b(The)c(v)o(ersion)f(string)g(is)h(laid)g(out)f(as)g(follo)o (ws:)338 2015 y Fa(<)p Fm(ma)s(jor)p 495 2015 14 2 v 15 w(v)o(ersion.minor)p 778 2015 V 17 w(v)o(ersion)p Fa(><)p Fm(space)p Fa(><)p Fm(v)o(endor-sp)q(eci\014c)406 2071 y(info)p Fa(>)224 2178 y Fm(Both)c(the)g(ma)s(jor)e(and)i(minor)g (p)q(ortions)g(of)f(the)h(v)o(ersion)g(n)o(um)o(b)q(er)g(are)f(of)h (arbitrary)224 2234 y(length.)36 b(The)21 b(v)o(endor-sp)q(eci\014c)h (information)e(is)h(optional.)36 b(Ho)o(w)o(ev)o(er,)20 b(if)h(it)g(is)224 2291 y(presen)o(t,)15 b(the)g(format)f(and)i(con)o (ten)o(ts)e(are)h(implemen)o(tation)h(sp)q(eci\014c.)338 2397 y Fh(const)23 b(char*)12 b Fb(glX)o(QueryServ)o(erString)p Fh(\()e(Display)h Fj(*dpy)p Fh(,)j(int)406 2453 y Fj(scr)n(e)n(en)p Fh(,)f(int)i Fj(name)g Fh(\))24 b(;)914 2613 y Fm(20)p eop %%Page: 21 22 21 21 bop 295 286 a Fb(glX)o(QueryServ)o(erString)34 b Fm(returns)i(a)h(p)q(oin)o(ter)g(to)f(a)g(static,)41 b(zero-)224 343 y(terminated)14 b(string)h(describing)g(some)f(asp)q (ect)g(of)g(the)g(serv)o(er's)f(GLX)i(extension.)224 399 y(The)i(p)q(ossible)i(v)m(alues)e(for)f Fj(name)h Fm(and)g(the)g(format)e(of)h(the)h(strings)f(is)i(the)e(same)224 456 y(as)i(for)g Fb(glX)o(GetClien)o(tString)p Fm(.)30 b(If)19 b Fj(name)f Fm(is)h(not)f(set)g(to)f(a)h(recognized)i(v)m(alue) 224 512 y(then)c Fb(NULL)g Fm(is)g(returned.)224 655 y Fk(4)67 b(Enco)r(ding)23 b(on)g(the)f(X)h(Byte)f(Stream)224 757 y Fm(In)16 b(the)g(remote)f(rendering)i(case,)e(the)h(o)o(v)o (erhead)f(asso)q(ciated)h(with)g(in)o(terpreting)224 813 y(the)21 b(GLX)g(extension)h(requests)f(m)o(ust)g(b)q(e)h (minimized.)40 b(F)l(or)20 b(this)h(reason,)h(all)224 870 y(commands)15 b(ha)o(v)o(e)f(b)q(een)h(brok)o(en)g(up)g(in)o(to)g (t)o(w)o(o)e(categories:)19 b(Op)q(enGL)d(and)f(GLX)224 926 y(commands)k(that)g(are)g(eac)o(h)g(implemen)o(ted)i(as)e(a)g (single)i(X)e(extension)h(request)224 983 y(and)f(Op)q(enGL)h (rendering)g(requests)f(that)f(are)h(batc)o(hed)g(within)h(a)e Fh(GLXRender)224 1039 y Fm(request.)224 1161 y Fi(4.1)56 b(Requests)17 b(that)i(hold)f(a)h(single)f(extension)f(request)224 1247 y Fm(Eac)o(h)f(of)g(the)h(commands)f(from)f(glx.h)i(\(that)e(is,)i (the)f Fb(glX*)h Fm(commands\))f(is)h(en-)224 1303 y(co)q(ded)d(b)o(y)f (a)f(separate)h(X)g(extension)h(request.)19 b(In)13 b(addition,)i (there)e(is)g(a)g(separate)224 1360 y(X)j(extension)h(request)f(for)f (eac)o(h)i(of)e(the)h(Op)q(enGL)i(commands)d(that)h(cannot)f(b)q(e)224 1416 y(put)j(in)o(to)g(a)f(displa)o(y)i(list.)29 b(That)17 b(list)h(consists)g(of)g(all)h(the)e Fb(glGet*)i Fm(commands)224 1473 y(plus)330 1566 y Fb(glAreT)l(exturesResiden)o(t)330 1623 y(glDeleteLists)330 1679 y(glDeleteT)l(extures)330 1736 y(glEndList)330 1792 y(glF)l(eedbac)o(kBu\013er)330 1849 y(glFinish)330 1905 y(glFlush)330 1962 y(glGenLists)330 2018 y(glGenT)l(extures)330 2074 y(glIsEnabled)330 2131 y(glIsList)330 2187 y(glIsT)l(exture)330 2244 y(glNewList)330 2300 y(glPixelStoref)330 2357 y(glPixelStorei)330 2413 y(glReadPixels)330 2470 y(glRenderMo)q(de)914 2613 y Fm(21)p eop %%Page: 22 23 22 22 bop 224 247 1459 2 v 224 631 2 385 v 278 321 a 21313290 2557593 2105016 42626580 38679674 47099740 startTexFig 278 321 a %%BeginDocument: encoding.eps 1 setlinejoin /M { moveto } bind def /S { show } bind def /R { rmoveto } bind def /L { lineto } bind def /B { newpath 0 0 M 0 1 L 1 1 L 1 0 L closepath } bind def /CS { closepath stroke } bind def /newfont 10 dict def newfont begin /FontType 3 def /FontMatrix [1 0 0 1 0 0] def /FontBBox [0 0 1 1] def /Encoding 256 array def 0 1 255 {Encoding exch /.notdef put} for /CharProcs 1 dict def CharProcs begin /.notdef {} def end /BuildChar { 1 0 0 0 1 1 setcachedevice exch begin Encoding exch get CharProcs exch get end exec } def end /PatternFont newfont definefont pop /bwproc { rgbproc dup length 3 idiv string 0 3 0 5 -1 roll { add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } { 2 1 roll } ifelse } forall pop pop pop } def systemdict /colorimage known not { /colorimage { pop pop /rgbproc exch def { bwproc } image } def } if /incr { 2 1 roll dup 3 -1 roll 5 -1 roll dup 6 1 roll cvi put 3 1 roll dup 4 1 roll add 3 1 roll } bind def /scanspan { /xb2 exch def /xg2 exch def /xr2 exch def /xx2 exch def /xb1 exch def /xg1 exch def /xr1 exch def /xx1 exch def /dx xx2 xx1 sub def dx 0 ne { /drdx xr2 xr1 sub dx div def /dgdx xg2 xg1 sub dx div def /dbdx xb2 xb1 sub dx div def }{ /drdx 0 def /dgdx 0 def /dbdx 0 def } ifelse /len dx 1 add cvi 3 mul def len string dup dup xr1 drdx 3 -1 roll 0 3 len 1 sub { incr } for pop pop pop xg1 dgdx 3 -1 roll 1 3 len 1 sub { incr } for pop pop pop xb1 dbdx 3 -1 roll 2 3 len 1 sub { incr } for 3 1 roll pop pop } bind def /scantrap { /trapsave save def /b4 exch def /g4 exch def /r4 exch def /x4 exch def /b3 exch def /g3 exch def /r3 exch def /x3 exch def /b2 exch def /g2 exch def /r2 exch def /y2 exch def /x2 exch def /b1 exch def /g1 exch def /r1 exch def /y1 exch def /x1 exch def /dy y1 y2 sub def dy 0 ne { /dxdy12 x2 x1 sub dy div def /dxdy43 x3 x4 sub dy div def /drdy12 r2 r1 sub dy div def /drdy43 r3 r4 sub dy div def /dgdy12 g2 g1 sub dy div def /dgdy43 g3 g4 sub dy div def /dbdy12 b2 b1 sub dy div def /dbdy43 b3 b4 sub dy div def }{ /dxdy12 0 def /dxdy43 0 def /drdy12 0 def /drdy43 0 def /dgdy12 0 def /dgdy43 0 def /dbdy12 0 def /dbdy43 0 def } ifelse y1 -1 y2 { x4 x1 sub 0 lt { exit } if /y exch def /traploopsave save def x1 r1 g1 b1 x4 r4 g4 b4 scanspan /img exch def /xlen x4 x1 sub 1 add def x1 y translate xlen 1 scale xlen cvi 1 8 [xlen 0 0 0.9 0 0] { img } false 3 colorimage traploopsave restore /x1 x1 dxdy12 add def /r1 r1 drdy12 add def /g1 g1 dgdy12 add def /b1 b1 dbdy12 add def /x4 x4 dxdy43 add def /r4 r4 drdy43 add def /g4 g4 dgdy43 add def /b4 b4 dbdy43 add def } for trapsave restore } def /d { newpath moveto lineto lineto closepath stroke } bind def /q { newpath moveto lineto lineto lineto closepath stroke } bind def /draw3 { setgray newpath moveto lineto lineto closepath stroke } bind def /F3 { setgray newpath moveto lineto lineto closepath fill } bind def /F4 { setgray newpath moveto lineto lineto lineto closepath fill } bind def /F5 { setgray newpath moveto lineto lineto lineto lineto closepath fill } bind def /showcaseisoencoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /guilsinglright /fraction /florin /quotesingle /quotedblleft /guilsinglleft /fi /fl /endash /dagger /daggerdbl /bullet /quotesinglbase /quotedblbase /quotedblright /ellipsis /trademark /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /perthousand /ring /cedilla /Ydieresis /hungarumlaut /ogonek /caron /emdash /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Helvetica-Bold-SHOWISO exch definefont pop /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding showcaseisoencoding def currentdict end /Courier-Bold-SHOWISO exch definefont pop gsave 0 0 0 setrgbcolor gsave matrix currentmatrix [96 0 0 -68 32 716] concat B setmatrix 2 setlinewidth gsave stroke grestore grestore 0 0 0 setrgbcolor gsave matrix currentmatrix [144 0 0 -68 128 716] concat B setmatrix 2 setlinewidth gsave stroke grestore grestore 0 0 0 setrgbcolor gsave matrix currentmatrix [316 0 0 -68 272 716] concat B setmatrix 2 setlinewidth gsave stroke grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 2 setlinewidth [2 3 8 3] 1 setdash newpath 88 716 M 88 648 L stroke grestore 0 0 0 setrgbcolor gsave newpath 273 687 M 253 706 L 343 706 L 343 687 L closepath clip newpath 283 692 M gsave -283 0.0 translate 0.972763 1.0 scale 290.924 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (GLX) S grestore grestore 0 0 0 setrgbcolor gsave newpath 265 658 M 245 677 L 358 677 L 358 658 L closepath clip newpath 275 663 M gsave -275 0.0 translate 1.05743 1.0 scale 260.064 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (Render) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 2 setlinewidth [2 3 8 3] 1 setdash newpath 328 716 M 328 648 L stroke grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 2 setlinewidth [2 3 8 3] 1 setdash newpath 184 716 M 184 648 L stroke grestore 0 0 0 setrgbcolor gsave newpath 128 686 M 108 705 L 198 705 L 198 686 L closepath clip newpath 138 691 M gsave -138 0.0 translate 0.972763 1.0 scale 141.864 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (GLX) S grestore grestore 0 0 0 setrgbcolor gsave newpath 33 659 M 13 697 L 109 697 L 109 659 L closepath clip newpath 44 683 M gsave -44 0.0 translate 1.0661 1.0 scale 41.272 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (Core) S grestore 56 664 M gsave -56 0.0 translate 0.963804 1.0 scale 58.1031 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (X) S grestore grestore 0 0 0 setrgbcolor gsave newpath 81 670 M 61 689 L 153 689 L 153 670 L closepath clip newpath 91 675 M gsave -91 0.0 translate 1.04225 1.0 scale 87.3115 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (data) S grestore grestore 0 0 0 setrgbcolor gsave newpath 125 658 M 105 677 L 209 677 L 209 658 L closepath clip newpath 135 663 M gsave -135 0.0 translate 1.03806 1.0 scale 130.05 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (single) S grestore grestore 0 0 0 setrgbcolor gsave newpath 189 670 M 169 689 L 261 689 L 261 670 L closepath clip newpath 199 675 M gsave -199 0.0 translate 1.04225 1.0 scale 190.934 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (data) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 1 setlinewidth [1 3] 0 setdash newpath 464 712 M 464 648 L stroke grestore 0 0 0 setrgbcolor gsave newpath 325 670 M 305 689 L 396 689 L 396 670 L closepath clip newpath 335 675 M gsave -335 0.0 translate 1.0075 1.0 scale 332.505 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (cmd) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 1 setlinewidth [1 3] 0 setdash newpath 376 704 M 376 660 L stroke grestore 0 0 0 setrgbcolor gsave newpath 385 670 M 365 689 L 457 689 L 457 670 L closepath clip newpath 395 675 M gsave -395 0.0 translate 1.04225 1.0 scale 378.989 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (data) S grestore grestore 0 0 0 setrgbcolor gsave newpath 461 670 M 441 689 L 532 689 L 532 670 L closepath clip newpath 471 675 M gsave -471 0.0 translate 1.0075 1.0 scale 467.492 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (cmd) S grestore grestore 0 0 0 setrgbcolor gsave 0 0 0 setrgbcolor 1 setlinewidth [1 3] 0 setdash newpath 512 704 M 512 660 L stroke grestore 0 0 0 setrgbcolor gsave newpath 529 670 M 509 689 L 601 689 L 601 670 L closepath clip newpath 539 675 M gsave -539 0.0 translate 1.04225 1.0 scale 517.153 0.0 translate /Helvetica-Bold-SHOWISO findfont 14 scalefont setfont 0 0 0 setrgbcolor (data) S grestore grestore grestore showpage %%EndDocument endTexFig 263 601 a Fp(Figure)14 b(2.)k(GLX)13 b(b)o(yte)i(stream.)p 1681 631 2 385 v 224 633 1459 2 v 330 811 a Fb(glSelectBu\013er)224 961 y Fm(The)c(t)o(w)o(o)e Fb(PixelStore)i Fm(commands)f(\()p Fb(glPixelStorei)i Fm(and)e Fb(glPixelStoref)p Fm(\))h(are)224 1018 y(exceptions.)21 b(These)15 b(commands)g(are)f(issued)i(to)e(the)h (serv)o(er)f(only)i(to)e(allo)o(w)h(it)g(to)224 1074 y(set)c(its)f(error)g(state)g(appropriately)l(.)19 b(Pixel)12 b(storage)e(state)f(is)j(main)o(tained)f(en)o(tirely)224 1131 y(on)16 b(the)g(clien)o(t)h(side.)22 b(When)16 b(pixel)i(data)d (is)h(transmitted)f(to)h(the)f(serv)o(er)h(\(b)o(y)f Fb(gl-)224 1187 y(Dra)o(wPixels)p Fm(,)e(for)h(example\),)g(the)g (pixel)h(storage)e(information)h(that)f(describ)q(es)224 1243 y(it)j(is)g(transmitted)f(as)g(part)g(of)g(the)g(same)g(proto)q (col)h(request.)k(Implemen)o(tations)224 1300 y(ma)o(y)13 b(not)h(c)o(hange)g(this)g(b)q(eha)o(vior,)g(b)q(ecause)h(suc)o(h)f(c)o (hanges)g(w)o(ould)g(cause)g(shared)224 1356 y(con)o(texts)h(to)f(b)q (eha)o(v)o(e)i(incorrectly)l(.)224 1478 y Fi(4.2)56 b(Request)17 b(that)i(holds)f(m)n(ultiple)e(Op)r(enGL)i(commands)224 1564 y Fm(The)e(remaining)h(Op)q(enGL)g(commands)f(are)g(those)f(that)h (ma)o(y)f(b)q(e)h(put)g(in)o(to)g(dis-)224 1620 y(pla)o(y)d(lists.)20 b(Multiple)14 b(o)q(ccurrences)g(of)e(these)h(commands)f(are)h(group)q (ed)g(together)224 1677 y(in)o(to)k(a)g(single)h(X)f(extension)g (request)g(\()p Fb(GLXRender)p Fm(\).)24 b(This)18 b(is)f(diagrammed) 224 1733 y(in)f(Figure)g(2.)295 1790 y(The)c(grouping)g(minimizes)i (dispatc)o(hing)g(within)f(the)f(X)g(serv)o(er.)18 b(The)12 b(library)224 1846 y(pac)o(ks)18 b(as)g(man)o(y)g(Op)q(enGL)i(commands) e(as)g(p)q(ossible)i(in)o(to)e(a)g(single)i(X)e(request)224 1903 y(\(without)j(exceeding)i(the)f(maxim)o(um)f(size)h(limit\).)39 b(No)22 b(Op)q(enGL)g(command)224 1959 y(ma)o(y)15 b(b)q(e)h(split)g (across)e(m)o(ultiple)j Fb(GLXRender)e Fm(requests.)295 2016 y(F)l(or)i(long)i(Op)q(enGL)h(commands)e(\(those)g(longer)g(than)g (a)g(maxim)o(um)h(X)f(re-)224 2072 y(quest)i(size\),)h(a)f(series)h(of) e Fb(GLXRenderLarge)h Fm(commands)g(is)h(issued.)35 b(The)224 2128 y(structure)19 b(of)g(the)h(Op)q(enGL)h(command)e(within)h Fb(GLXRenderLarge)g Fm(is)g(the)224 2185 y(same)15 b(as)g(for)f Fb(GLXRender)p Fm(.)295 2241 y(Note)j(that)g(it)h(is)g(legal)h(to)e(ha) o(v)o(e)g(a)h Fb(glBegin)h Fm(in)f(one)g(request,)g(follo)o(w)o(ed)g(b) o(y)224 2298 y Fb(glV)l(ertex)g Fm(commands,)i(and)f(ev)o(en)o(tually)h (the)f(matc)o(hing)h Fb(glEnd)g Fm(in)g(a)e(subse-)224 2354 y(quen)o(t)d(request.)20 b(A)c(command)f(is)g(not)g(the)g(same)g (as)g(an)g(Op)q(enGL)i(primitiv)o(e.)914 2613 y(22)p eop %%Page: 23 24 23 23 bop 224 286 a Fi(4.3)56 b(Wire)17 b(represen)n(tations)h(and)h(b) n(yte)f(sw)n(apping)224 372 y Fm(Unsigned)f(and)e(signed)h(in)o(tegers) f(are)g(represen)o(ted)h(as)f(they)g(are)g(represen)o(ted)g(in)224 429 y(the)g(core)g(X)f(proto)q(col.)20 b(Single)d(and)e(double)h (precision)g(\015oating)f(p)q(oin)o(t)g(n)o(um)o(b)q(ers)224 485 y(are)f(sen)o(t)g(and)g(receiv)o(ed)h(in)g(IEEE)g(\015oating)f(p)q (oin)o(t)g(format.)k(The)d(X)f(b)o(yte)g(stream)224 542 y(and)21 b(net)o(w)o(ork)e(sp)q(eci\014cations)k(mak)o(e)d(it)g(imp)q (ossible)j(for)d(the)h(clien)o(t)g(to)f(assure)224 598 y(that)f(double)i(precision)g(\015oating)e(p)q(oin)o(t)h(n)o(um)o(b)q (ers)g(will)h(b)q(e)g(naturally)f(aligned)224 655 y(within)e(the)g (transp)q(ort)e(bu\013ers)h(of)g(the)g(serv)o(er.)25 b(F)l(or)17 b(those)f(arc)o(hitectures)i(that)224 711 y(require)d(it,)e(the)h(serv)o(er)f(or)g(clien)o(t)i(m)o(ust)e(cop)o(y) h(those)f(\015oating)h(p)q(oin)o(t)g(n)o(um)o(b)q(ers)g(to)224 767 y(a)h(prop)q(erly)h(aligned)h(bu\013er)e(b)q(efore)g(using)h(them.) 295 824 y(Byte)23 b(sw)o(apping)h(on)f(the)g(encapsulated)i(Op)q(enGL)f (b)o(yte)f(stream)g(is)g(p)q(er-)224 880 y(formed)15 b(b)o(y)h(the)f(serv)o(er)g(using)h(the)g(same)f(rule)h(as)f(the)g (core)h(X)f(proto)q(col.)20 b(Single)224 937 y(precision)d(\015oating)f (p)q(oin)o(t)g(v)m(alues)h(are)e(sw)o(app)q(ed)h(in)h(the)e(same)h(w)o (a)o(y)e(that)h(32-bit)224 993 y(in)o(tegers)d(are)f(sw)o(app)q(ed.)19 b(Double)12 b(precision)h(\015oating)f(p)q(oin)o(t)g(v)m(alues)h(are)e (sw)o(app)q(ed)224 1050 y(across)k(all)h(8)f(b)o(ytes.)224 1171 y Fi(4.4)56 b(Sequen)n(tialit)n(y)224 1257 y Fm(There)16 b(are)f(t)o(w)o(o)f(sequences)j(of)e(commands:)20 b(the)c(X)f(stream,)g (and)g(the)h(Op)q(enGL)224 1314 y(stream.)34 b(In)21 b(general)g(these)f(t)o(w)o(o)f(streams)g(are)h(indep)q(enden)o(t:)32 b(Although)21 b(the)224 1370 y(commands)h(in)h(eac)o(h)g(stream)e(will) j(b)q(e)f(pro)q(cessed)g(in)g(sequence,)i(there)d(is)h(no)224 1427 y(guaran)o(tee)17 b(that)g(commands)h(in)g(the)g(separate)f (streams)g(will)i(b)q(e)g(pro)q(cessed)f(in)224 1483 y(the)d(order)g(in)h(whic)o(h)g(they)g(w)o(ere)f(issued)h(b)o(y)f(the)g (calling)i(thread.)295 1540 y(An)g(exception)h(to)f(this)g(rule)h (arises)f(when)h(a)f(single)h(command)f(app)q(ears)g(in)224 1596 y Fj(b)n(oth)e Fm(streams.)k(This)d(forces)f(the)g(t)o(w)o(o)f (streams)h(to)f(rendezv)o(ous.)295 1652 y(Because)f(the)f(pro)q (cessing)h(of)f(the)g(t)o(w)o(o)f(streams)g(ma)o(y)h(tak)o(e)f(place)i (at)f(di\013eren)o(t)224 1709 y(rates,)h(and)h(some)f(op)q(erations)h (ma)o(y)f(dep)q(end)j(on)d(the)h(results)g(of)f(commands)h(in)g(a)224 1765 y(di\013eren)o(t)j(stream,)e(w)o(e)i(distinguish)h(b)q(et)o(w)o (een)f(commands)f(assigned)h(to)f(eac)o(h)h(of)224 1822 y(the)e(X)h(and)f(Op)q(enGL)i(streams.)295 1878 y(The)f(follo)o(wing)g (commands)f(are)h(pro)q(cessed)g(on)g(the)f(clien)o(t)i(side)g(and)f (there-)224 1935 y(fore)f(do)g(not)g(exist)g(in)h(either)g(the)g(X)f (or)g(the)g(Op)q(enGL)h(stream:)330 2041 y Fb(glX)o(GetClien)o(tString) 330 2097 y(glX)o(GetCurren)o(tCon)o(text)330 2154 y(glX)o(GetCurren)o (tDispla)o(y)330 2210 y(glX)o(GetCurren)o(tDra)o(w)o(able)330 2267 y(glX)o(GetCon\014g)295 2429 y Fm(The)h(follo)o(wing)g(commands)f (are)g(in)i(the)e(X)h(stream)f(and)h(ob)q(ey)g(the)f(sequen-)224 2486 y(tialit)o(y)g(guaran)o(tees)e(for)h(X)g(requests:)914 2613 y(23)p eop %%Page: 24 25 24 24 bop 330 286 a Fb(glX)o(CreateCon)o(text)330 343 y(glXDestro)o(yCon)o(text)330 399 y(glXMak)o(eCurren)o(t)330 456 y(glXIsDirect)330 512 y(glX)o(QueryExtensionsString)330 569 y(glX)o(QueryServ)o(erString)330 625 y(glX)o(QueryV)l(ersion)330 682 y(glXW)l(aitGL)330 738 y(glX)o(CreateGLXPixmap)330 795 y(glXDestro)o(yGLXPixmap)330 851 y(glX)o(Cho)q(oseVisual)330 907 y(glXSw)o(apBu\013ers)14 b Fm(\(but)h(see)h(b)q(elo)o(w\))330 964 y Fb(glX)o(Cop)o(yCon)o(text)e Fm(\(see)h(b)q(elo)o(w\))295 1127 y Fb(glXSw)o(apBu\013ers)h Fm(is)h(in)h(the)g(X)f(stream)f(if)i (and)f(only)h(if)f(the)h(displa)o(y)g(and)224 1183 y(dra)o(w)o(able)13 b(are)g(not)g(those)h(b)q(elonging)h(to)d(the)i(calling)h(thread's)e (curren)o(t)g(con)o(text;)224 1240 y(otherwise)19 b(it)f(is)h(in)g(the) f(Op)q(enGL)h(stream.)28 b Fb(glX)o(Cop)o(yCon)o(text)17 b Fm(is)i(in)g(the)f(X)224 1296 y(stream)i(alone)i(if)g(and)f(only)h (if)f(its)h(source)f(con)o(text)f(di\013ers)i(from)e(the)h(calling)224 1352 y(thread's)15 b(curren)o(t)g(con)o(text;)f(otherwise)i(it)f(is)h (in)g(b)q(oth)f(streams.)295 1409 y(Commands)23 b(in)h(the)g(Op)q(enGL) h(stream,)g(whic)o(h)f(ob)q(ey)g(the)g(sequen)o(tialit)o(y)224 1465 y(guaran)o(tees)15 b(for)f(Op)q(enGL)j(requests)e(are:)330 1572 y Fb(glXW)l(aitX)330 1628 y(glXSw)o(apBu\013ers)f Fm(\(see)h(b)q(elo)o(w\))330 1685 y(All)i(Op)q(enGL)f(Commands)295 1847 y Fb(glXSw)o(apBu\013ers)11 b Fm(is)j(in)f(the)g(Op)q(enGL)i (stream)d(if)h(and)g(only)h(if)f(the)g(displa)o(y)224 1904 y(and)g(dra)o(w)o(able)f(are)h(those)f(b)q(elonging)i(to)e(the)h (calling)h(thread's)f(curren)o(t)f(con)o(text;)224 1960 y(otherwise)k(it)f(is)h(in)g(the)f(X)g(stream.)295 2017 y(Commands)f(in)i(b)q(oth)g(streams,)e(whic)o(h)i(force)f(a)g(rendezv)o (ous)g(are:)330 2123 y Fb(glX)o(Cop)o(yCon)o(text)f Fm(\(see)h(b)q(elo) o(w\))330 2179 y Fb(glXUseXF)l(on)o(t)295 2342 y(glX)o(Cop)o(yCon)o (text)9 b Fm(is)i(in)g(b)q(oth)g(streams)f(if)h(and)f(only)h(if)g(the)g (source)g(con)o(text)224 2399 y(is)18 b(the)f(same)f(as)h(the)g(curren) o(t)g(con)o(text)f(of)h(the)g(calling)i(thread;)e(otherwise)g(it)h(is) 224 2455 y(in)e(the)f(X)h(stream)e(only)l(.)914 2613 y(24)p eop %%Page: 25 26 25 25 bop 224 286 a Fk(5)67 b(Extending)24 b(Op)r(enGL)224 388 y Fm(Op)q(enGL)16 b(is)e(extended)h(b)o(y)f(adding)h(new)f(GLX)g (requests,)g(Op)q(enGL)i(requests)e(or)224 444 y(additional)f(en)o (umerated)e(v)m(alues)i(to)d(the)i(Op)q(enGL)g(requests.)19 b(The)11 b(Op)q(enGL)i(Ar-)224 501 y(c)o(hitectural)h(Review)g(Board)e (main)o(tains)h(a)f(registry)g(of)h(indexes)h(for)e(eac)o(h)g(v)o (endor)224 557 y(to)j(use)g(as)g(they)g(wish.)295 614 y(New)23 b(names)f(m)o(ust)g(clearly)i(indicate)g(to)e(clien)o(ts)i (whether)f(some)g(partic-)224 670 y(ular)h(feature)g(is)h(in)f(the)g (core)g(Op)q(enGL)h(or)f(is)g(v)o(endor)g(sp)q(eci\014c.)48 b(T)l(o)24 b(mak)o(e)224 727 y(a)e(v)o(endor-sp)q(eci\014c)i(name,)g (app)q(end)g(a)d(compan)o(y)i(iden)o(ti\014er)g(\(in)g(upp)q(er)g (case\))224 783 y(and)c(an)o(y)e(additional)j(v)o(endor-sp)q(eci\014c)g (tags)e(\(e.g.)28 b(mac)o(hine)19 b(names\).)29 b(F)l(or)17 b(in-)224 840 y(stance,)22 b(SGI)f(migh)o(t)f(add)h(new)g(commands)f (and)h(manifest)g(constan)o(ts)f(of)g(the)224 896 y(form)f Fb(glNewCommandSGI)f Fm(and)i Fb(GL)p 990 896 16 2 v 19 w(NEW)p 1138 896 V 19 w(DEFINITION)p 1481 896 V 19 w(SGI)p Fm(.)f(If)224 952 y(SGI)f(w)o(an)o(ted)g(to)f(pro)o(vide)i (extensions)f(that)g(w)o(ere)f(sp)q(eci\014c)j(to)e(its)g(Realit)o(y)h (En-)224 1009 y(gine,)13 b(then)f(the)f(names)h(migh)o(t)f(b)q(e)i(of)e (the)g(form)g Fb(glNewCommandSGIre)g Fm(and)224 1065 y Fb(GL)p 299 1065 V 20 w(NEW)p 448 1065 V 19 w(DEFINITION)p 791 1065 V 19 w(SGI)p 900 1065 V 18 w(RE)p Fm(.)k(If)f(t)o(w)o(o)f(or)h (more)f(licensees)k(agree)c(in)224 1122 y(go)q(o)q(d)i(faith)h(to)e (implemen)o(t)j(the)e(same)g(extension,)g(and)h(to)e(mak)o(e)h(the)g (sp)q(eci\014ca-)224 1178 y(tion)f(of)g(that)f(extension)i(publicly)h (a)o(v)m(ailable,)g(the)e(pro)q(cedures)g(and)g(tok)o(ens)g(that)224 1235 y(are)h(de\014ned)i(b)o(y)e(the)g(extension)h(can)f(b)q(e)h (su\016xed)g(b)o(y)f Fb(EXT)p Fm(.)224 1378 y Fk(6)67 b(Glossary)224 1479 y Fb(Address)16 b(Space)23 b Fm(the)30 b(set)f(of)h(ob)s(jects)f(or)g(memory)g(lo)q(cations)h(accessible)338 1536 y(through)18 b(a)f(single)j(name)e(space.)29 b(In)19 b(other)f(w)o(ords,)f(it)i(is)f(a)g(data)g(region)338 1592 y(that)c(one)i(or)e(more)h(pro)q(cesses)h(ma)o(y)e(share)h (through)g(p)q(oin)o(ters.)224 1686 y Fb(Clien)o(t)24 b Fm(an)16 b(X)h(clien)o(t.)26 b(An)18 b(application)g(comm)o(unicates) f(to)g(a)f(serv)o(er)h(b)o(y)f(some)338 1743 y(path.)j(The)13 b(application)i(program)d(is)h(referred)g(to)g(as)f(a)h(clien)o(t)i(of) d(the)h(win-)338 1799 y(do)o(w)i(system)f(serv)o(er.)20 b(T)l(o)15 b(the)g(serv)o(er,)g(the)g(clien)o(t)h(is)g(the)f(comm)o (unication)338 1855 y(path)e(itself.)20 b(A)13 b(program)f(with)h(m)o (ultiple)i(connections)f(is)f(view)o(ed)h(as)f(m)o(ul-)338 1912 y(tiple)j(clien)o(ts)g(to)f(the)g(serv)o(er.)k(The)c(resource)g (lifetimes)i(are)d(con)o(trolled)i(b)o(y)338 1968 y(the)f(connection)h (lifetimes,)h(not)e(the)g(application)i(program)d(lifetimes.)224 2062 y Fb(Connection)24 b Fm(a)15 b(bidirectional)j(b)o(yte)d(stream)f (that)g(carries)i(the)f(X)g(\(and)g(GLX\))338 2119 y(proto)q(col)h(b)q (et)o(w)o(een)h(the)g(clien)o(t)h(and)f(the)g(serv)o(er.)24 b(A)16 b(clien)o(t)i(t)o(ypically)g(has)338 2175 y(only)e(one)f (connection)h(to)f(a)g(serv)o(er.)224 2269 y Fb(\(Rendering\))k(Con)o (text)j Fm(a)15 b(Op)q(enGL)h(rendering)g(con)o(text.)j(This)c(is)h(a)e (virtual)338 2325 y(Op)q(enGL)j(mac)o(hine.)24 b(All)18 b(Op)q(enGL)g(rendering)f(is)g(done)f(with)h(resp)q(ect)g(to)338 2382 y(a)g(con)o(text.)27 b(The)19 b(state)e(main)o(tained)h(b)o(y)g (one)g(rendering)h(con)o(text)e(is)i(not)338 2438 y(a\013ected)c(b)o(y) g(another)g(except)g(in)h(case)g(of)e(shared)i(displa)o(y)g(lists.)914 2613 y(25)p eop %%Page: 26 27 26 26 bop 224 286 a Fb(GLX)o(Con)o(text)22 b Fm(a)g(handle)i(to)e(a)g (rendering)i(con)o(text.)41 b(Rendering)25 b(con)o(texts)338 343 y(consist)15 b(of)g(clien)o(t)i(side)f(state)e(and)h(serv)o(er)g (side)h(state.)224 437 y Fb(Similar)24 b Fm(a)18 b(p)q(oten)o(tial)h (corresp)q(ondence)h(among)e Fh(GLXDrawable)p Fm(s)f(and)h(render-)338 493 y(ing)f(con)o(texts.)25 b Fh(Window)p Fm(s)16 b(and)h Fh(GLXPixmap)p Fm(s)f(are)h(similar)h(to)e(a)h(rendering)338 550 y(con)o(text)j(are)h(similar)h(if,)g(and)f(only)h(if,)g(they)f(ha)o (v)o(e)g(b)q(een)h(created)f(with)338 606 y(resp)q(ect)15 b(to)g(the)g(same)g Fh(VisualID)f Fm(and)i(ro)q(ot)e(windo)o(w.)224 700 y Fb(Thread)23 b Fm(one)15 b(of)f(a)g(group)g(of)g(pro)q(cesses)g (all)i(sharing)e(the)h(same)f(address)g(space.)338 756 y(T)o(ypically)l(,)g(eac)o(h)f(thread)f(will)i(ha)o(v)o(e)e(its)g(o)o (wn)g(program)f(coun)o(ter)h(and)h(stac)o(k)338 813 y(p)q(oin)o(ter,)22 b(but)e(the)h(text)f(and)h(data)f(spaces)g(are)h(visible)h(to)e(eac)o (h)h(of)f(the)338 869 y(threads.)e(A)11 b(thread)g(that)f(is)h(the)g (only)h(mem)o(b)q(er)f(of)f(its)h(group)g(is)g(equiv)m(alen)o(t)338 926 y(to)j(a)h(pro)q(cess.)914 2613 y(26)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF