1 2#ifndef _XAA_H 3#define _XAA_H 4 5#define XAA_VERSION_MAJOR 1 6#define XAA_VERSION_MINOR 2 7#define XAA_VERSION_RELEASE 1 8 9/* 10 11 ******** OPERATION SPECIFIC FLAGS ********* 12 13 **** solid/dashed line flags **** 14 15--------- -------- 1623 LINE_PATTERN_LSBFIRST_MSBJUSTIFIED 1722 LINE_PATTERN_LSBFIRST_LSBJUSTIFIED 1821 LINE_PATTERN_MSBFIRST_MSBJUSTIFIED 1920 LINE_PATTERN_MSBFIRST_LSBJUSTIFIED 2019 LINE_PATTERN_POWER_OF_2_ONLY 2118 LINE_LIMIT_COORDS 2217 . 2316 . 24--------- ------- 25 26 **** screen to screen copy flags **** 27 28--------- -------- 2923 ONLY_LEFT_TO_RIGHT_BITBLT 3022 ONLY_TWO_BITBLT_DIRECTIONS 3121 . 3220 . 3319 . 3418 . 3517 . 3616 . 37--------- ------- 38 39 **** clipping flags **** 40 41--------- -------- 4223 . 4322 HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND 4421 HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY 4520 HARDWARE_CLIP_MONO_8x8_FILL 4619 HARDWARE_CLIP_COLOR_8x8_FILL 4718 HARDWARE_CLIP_SOLID_FILL 4817 HARDWARE_CLIP_DASHED_LINE 4916 HARDWARE_CLIP_SOLID_LINE 50--------- ------- 51 52 53 **** hardware pattern flags **** 54 55--------- -------- 5623 . 5722 . 5821 HARDWARE_PATTERN_SCREEN_ORIGIN 5920 . 6019 . 6118 . 6217 HARDWARE_PATTERN_PROGRAMMED_ORIGIN 6316 HARDWARE_PATTERN_PROGRAMMED_BITS 64--------- ------- 65 66 **** write pixmap flags **** 67 68--------- -------- 6923 . 7022 . 7121 . 7220 . 7319 . 7418 . 7517 . 7616 CONVERT_32BPP_TO_24BPP 77--------- ------- 78 79 80 ******** GENERIC FLAGS ********* 81 82--------- ------- 8315 SYNC_AFTER_COLOR_EXPAND 8414 CPU_TRANSFER_PAD_QWORD 8513 . 8612 LEFT_EDGE_CLIPPING_NEGATIVE_X 8711 LEFT_EDGE_CLIPPING 8810 CPU_TRANSFER_BASE_FIXED 89 9 BIT_ORDER_IN_BYTE_MSBFIRST 90 8 TRANSPARENCY_GXCOPY_ONLY 91--------- ------- 92 7 NO_TRANSPARENCY 93 6 TRANSPARENCY_ONLY 94 5 ROP_NEEDS_SOURCE 95 4 TRIPLE_BITS_24BPP 96 3 RGB_EQUAL 97 2 NO_PLANEMASK 98 1 NO_GXCOPY 99 0 GXCOPY_ONLY 100--------- ------- 101 102 103*/ 104 105#include "gcstruct.h" 106#include "pixmapstr.h" 107#include "xf86str.h" 108#include "regionstr.h" 109#include "xf86fbman.h" 110 111#include "picturestr.h" 112 113/* Flags */ 114#define PIXMAP_CACHE 0x00000001 115#define MICROSOFT_ZERO_LINE_BIAS 0x00000002 116#define OFFSCREEN_PIXMAPS 0x00000004 117#define LINEAR_FRAMEBUFFER 0x00000008 118 119 120/* GC fg, bg, and planemask restrictions */ 121#define GXCOPY_ONLY 0x00000001 122#define NO_GXCOPY 0x00000002 123#define NO_PLANEMASK 0x00000004 124#define RGB_EQUAL 0x00000008 125#define TRIPLE_BITS_24BPP 0x00000010 126#define ROP_NEEDS_SOURCE 0x00000020 127 128/* transparency restrictions */ 129#define TRANSPARENCY_ONLY 0x00000040 130#define NO_TRANSPARENCY 0x00000080 131#define TRANSPARENCY_GXCOPY_ONLY 0x00000100 132 133/* bit order restrictions */ 134#define BIT_ORDER_IN_BYTE_MSBFIRST 0x00000200 135#define BIT_ORDER_IN_BYTE_LSBFIRST 0x00000000 136 137/* transfer base restriction */ 138#define CPU_TRANSFER_BASE_FIXED 0x00000400 139 140/* skipleft restrictions */ 141#define LEFT_EDGE_CLIPPING 0x00000800 142#define LEFT_EDGE_CLIPPING_NEGATIVE_X 0x00001000 143 144/* data padding */ 145#define CPU_TRANSFER_PAD_DWORD 0x00000000 146#define CPU_TRANSFER_PAD_QWORD 0x00004000 147#define SCANLINE_PAD_DWORD 0x00000000 148 149#define SYNC_AFTER_COLOR_EXPAND 0x00008000 150#define SYNC_AFTER_IMAGE_WRITE SYNC_AFTER_COLOR_EXPAND 151 152/* hardware pattern */ 153#define HARDWARE_PATTERN_PROGRAMMED_BITS 0x00010000 154#define HARDWARE_PATTERN_PROGRAMMED_ORIGIN 0x00020000 155#define HARDWARE_PATTERN_SCREEN_ORIGIN 0x00200000 156 157/* copyarea flags */ 158#define ONLY_TWO_BITBLT_DIRECTIONS 0x00400000 159#define ONLY_LEFT_TO_RIGHT_BITBLT 0x00800000 160 161/* line flags */ 162#define LINE_PATTERN_LSBFIRST_MSBJUSTIFIED 0x00800000 163#define LINE_PATTERN_LSBFIRST_LSBJUSTIFIED 0x00400000 164#define LINE_PATTERN_MSBFIRST_MSBJUSTIFIED 0x00200000 165#define LINE_PATTERN_MSBFIRST_LSBJUSTIFIED 0x00100000 166#define LINE_PATTERN_POWER_OF_2_ONLY 0x00080000 167#define LINE_LIMIT_COORDS 0x00040000 168 169/* clipping flags */ 170#define HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND 0x00400000 171#define HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY 0x00200000 172#define HARDWARE_CLIP_MONO_8x8_FILL 0x00100000 173#define HARDWARE_CLIP_COLOR_8x8_FILL 0x00080000 174#define HARDWARE_CLIP_SOLID_FILL 0x00040000 175#define HARDWARE_CLIP_DASHED_LINE 0x00020000 176#define HARDWARE_CLIP_SOLID_LINE 0x00010000 177 178#define HARDWARE_CLIP_LINE 0x00000000 179 180 181/* image write flags */ 182#define CONVERT_32BPP_TO_24BPP 0x00010000 183 184/* pixmap cache flags */ 185#define CACHE_MONO_8x8 0x00000001 186#define CACHE_COLOR_8x8 0x00000002 187#define DO_NOT_BLIT_STIPPLES 0x00000004 188#define DO_NOT_TILE_MONO_DATA 0x00000008 189#define DO_NOT_TILE_COLOR_DATA 0x00000010 190 191 192#define DEGREES_0 0 193#define DEGREES_90 1 194#define DEGREES_180 2 195#define DEGREES_270 3 196 197#define OMIT_LAST 1 198 199/* render flags */ 200 201#define XAA_RENDER_POWER_OF_2_TILE_ONLY 0x00000008 202#define XAA_RENDER_NO_SRC_ALPHA 0x00000004 203#define XAA_RENDER_IMPRECISE_ONLY 0x00000002 204#define XAA_RENDER_NO_TILE 0x00000001 205 206#define XAA_RENDER_REPEAT 0x00000001 207 208typedef void (* ValidateGCProcPtr)( 209 GCPtr pGC, 210 unsigned long changes, 211 DrawablePtr pDraw 212); 213 214typedef struct { 215 unsigned char *bits; 216 int width; 217 int height; 218 int yoff; 219 int srcwidth; 220 int start; 221 int end; 222} NonTEGlyphInfo, *NonTEGlyphPtr; 223 224 225typedef struct { 226 int x; 227 int y; 228 int w; 229 int h; 230 int orig_w; 231 int orig_h; 232 unsigned long serialNumber; 233 int pat0; 234 int pat1; 235 int fg; 236 int bg; 237 int trans_color; 238 DDXPointPtr offsets; 239 DevUnion devPrivate; 240} XAACacheInfoRec, *XAACacheInfoPtr; 241 242 243typedef struct _PixmapLink { 244 PixmapPtr pPix; 245 struct _PixmapLink *next; 246 FBAreaPtr area; 247} PixmapLink, *PixmapLinkPtr; 248 249typedef struct _XAAInfoRec { 250 ScrnInfoPtr pScrn; 251 int Flags; 252 253 void (*Sync)( 254 ScrnInfoPtr pScrn 255 ); 256 257 /* Restore Accel State is a driver callback that is used 258 * when another screen on the same device has been active. 259 * This allows multihead on a single device to work. 260 * If The entityProp has IS_SHARED_ACCEL defined then this 261 * function is required. 262 */ 263 264 void (*RestoreAccelState)( 265 ScrnInfoPtr pScrn 266 ); 267 268 /***************** Low Level *****************/ 269 270/* Blits */ 271 void (*SetupForScreenToScreenCopy)( 272 ScrnInfoPtr pScrn, 273 int xdir, int ydir, 274 int rop, 275 unsigned int planemask, 276 int trans_color 277 ); 278 int ScreenToScreenCopyFlags; 279 280 void (*SubsequentScreenToScreenCopy)( 281 ScrnInfoPtr pScrn, 282 int xsrc, int ysrc, 283 int xdst, int ydst, 284 int w, int h 285 ); 286 287 288/* Solid fills */ 289 void (*SetupForSolidFill)( 290 ScrnInfoPtr pScrn, 291 int color, 292 int rop, 293 unsigned int planemask 294 ); 295 int SolidFillFlags; 296 297 void (*SubsequentSolidFillRect)( 298 ScrnInfoPtr pScrn, 299 int x, int y, int w, int h 300 ); 301 302 void (*SubsequentSolidFillTrap)( 303 ScrnInfoPtr pScrn, 304 int y, int h, 305 int left, int dxL, int dyL, int eL, 306 int right, int dxR, int dyR, int eR 307 ); 308 309 310/* Solid lines */ 311 312 void (*SetupForSolidLine)( 313 ScrnInfoPtr pScrn, 314 int color, 315 int rop, 316 unsigned int planemask 317 ); 318 int SolidLineFlags; 319 320 void (*SubsequentSolidTwoPointLine)( 321 ScrnInfoPtr pScrn, 322 int xa, int ya, int xb, int yb, int flags 323 ); 324 325 void (*SubsequentSolidBresenhamLine)( 326 ScrnInfoPtr pScrn, 327 int x, int y, int absmaj, int absmin, int err, int len, int octant 328 ); 329 int SolidBresenhamLineErrorTermBits; 330 331 void (*SubsequentSolidHorVertLine)( 332 ScrnInfoPtr pScrn, 333 int x, int y, int len, int dir 334 ); 335 336/* Dashed lines */ 337 338 void (*SetupForDashedLine)( 339 ScrnInfoPtr pScrn, 340 int fg, int bg, 341 int rop, 342 unsigned int planemask, 343 int length, 344 unsigned char *pattern 345 ); 346 int DashedLineFlags; 347 int DashPatternMaxLength; 348 349 void (*SubsequentDashedTwoPointLine)( 350 ScrnInfoPtr pScrn, 351 int xa, int ya, int xb, int yb, int flags, int phase 352 ); 353 354 void (*SubsequentDashedBresenhamLine)( 355 ScrnInfoPtr pScrn, 356 int x, int y, int absmaj, int absmin, int err, int len, int flags, 357 int phase 358 ); 359 int DashedBresenhamLineErrorTermBits; 360 361/* Clipper */ 362 363 void (*SetClippingRectangle) ( 364 ScrnInfoPtr pScrn, 365 int left, int top, int right, int bottom 366 ); 367 int ClippingFlags; 368 369 void (*DisableClipping)(ScrnInfoPtr pScrn); 370 371/* 8x8 mono pattern fills */ 372 void (*SetupForMono8x8PatternFill)( 373 ScrnInfoPtr pScrn, 374 int patx, int paty, 375 int fg, int bg, 376 int rop, 377 unsigned int planemask 378 ); 379 int Mono8x8PatternFillFlags; 380 381 void (*SubsequentMono8x8PatternFillRect)( 382 ScrnInfoPtr pScrn, 383 int patx, int paty, 384 int x, int y, int w, int h 385 ); 386 387 void (*SubsequentMono8x8PatternFillTrap)( 388 ScrnInfoPtr pScrn, 389 int patx, int paty, 390 int y, int h, 391 int left, int dxL, int dyL, int eL, 392 int right, int dxR, int dyR, int eR 393 ); 394 395/* 8x8 color pattern fills */ 396 397 void (*SetupForColor8x8PatternFill)( 398 ScrnInfoPtr pScrn, 399 int patx, int paty, 400 int rop, 401 unsigned int planemask, 402 int transparency_color 403 ); 404 int Color8x8PatternFillFlags; 405 406 void (*SubsequentColor8x8PatternFillRect)( 407 ScrnInfoPtr pScrn, 408 int patx, int paty, 409 int x, int y, int w, int h 410 ); 411 412 void (*SubsequentColor8x8PatternFillTrap)( 413 ScrnInfoPtr pScrn, 414 int patx, int paty, 415 int y, int h, 416 int left, int dxL, int dyL, int eL, 417 int right, int dxR, int dyR, int eR 418 ); 419 420 421/* Color expansion */ 422 423 void (*SetupForCPUToScreenColorExpandFill)( 424 ScrnInfoPtr pScrn, 425 int fg, int bg, 426 int rop, 427 unsigned int planemask 428 ); 429 int CPUToScreenColorExpandFillFlags; 430 431 void (*SubsequentCPUToScreenColorExpandFill)( 432 ScrnInfoPtr pScrn, 433 int x, int y, int w, int h, 434 int skipleft 435 ); 436 437 unsigned char *ColorExpandBase; 438 int ColorExpandRange; 439 440 441/* Scanline color expansion */ 442 443 void (*SetupForScanlineCPUToScreenColorExpandFill)( 444 ScrnInfoPtr pScrn, 445 int fg, int bg, 446 int rop, 447 unsigned int planemask 448 ); 449 int ScanlineCPUToScreenColorExpandFillFlags; 450 451 void (*SubsequentScanlineCPUToScreenColorExpandFill)( 452 ScrnInfoPtr pScrn, 453 int x, int y, int w, int h, 454 int skipleft 455 ); 456 457 void (*SubsequentColorExpandScanline)( 458 ScrnInfoPtr pScrn, 459 int bufno 460 ); 461 462 int NumScanlineColorExpandBuffers; 463 unsigned char **ScanlineColorExpandBuffers; 464 465/* Screen to screen color expansion */ 466 467 void (*SetupForScreenToScreenColorExpandFill) ( 468 ScrnInfoPtr pScrn, 469 int fg, int bg, 470 int rop, 471 unsigned int planemask 472 ); 473 int ScreenToScreenColorExpandFillFlags; 474 475 void (*SubsequentScreenToScreenColorExpandFill)( 476 ScrnInfoPtr pScrn, 477 int x, int y, int w, int h, 478 int srcx, int srcy, int skipleft 479 ); 480 481 482/* Image transfers */ 483 484 void (*SetupForImageWrite)( 485 ScrnInfoPtr pScrn, 486 int rop, 487 unsigned int planemask, 488 int transparency_color, 489 int bpp, int depth 490 ); 491 int ImageWriteFlags; 492 493 void (*SubsequentImageWriteRect)( 494 ScrnInfoPtr pScrn, 495 int x, int y, int w, int h, 496 int skipleft 497 ); 498 unsigned char *ImageWriteBase; 499 int ImageWriteRange; 500 501/* Scanline Image transfers */ 502 503 void (*SetupForScanlineImageWrite)( 504 ScrnInfoPtr pScrn, 505 int rop, 506 unsigned int planemask, 507 int transparency_color, 508 int bpp, int depth 509 ); 510 int ScanlineImageWriteFlags; 511 512 void (*SubsequentScanlineImageWriteRect)( 513 ScrnInfoPtr pScrn, 514 int x, int y, int w, int h, 515 int skipleft 516 ); 517 518 void (*SubsequentImageWriteScanline) ( 519 ScrnInfoPtr pScrn, 520 int bufno 521 ); 522 523 int NumScanlineImageWriteBuffers; 524 unsigned char **ScanlineImageWriteBuffers; 525 526 /* Image Reads - OBSOLETE AND NOT USED */ 527 528 void (*SetupForImageRead) ( 529 ScrnInfoPtr pScrn, 530 int bpp, int depth 531 ); 532 int ImageReadFlags; 533 534 unsigned char *ImageReadBase; 535 int ImageReadRange; 536 537 void (*SubsequentImageReadRect)( 538 ScrnInfoPtr pScrn, 539 int x, int y, int w, int h 540 ); 541 542 543 /***************** Mid Level *****************/ 544 void (*ScreenToScreenBitBlt)( 545 ScrnInfoPtr pScrn, 546 int nbox, 547 DDXPointPtr pptSrc, 548 BoxPtr pbox, 549 int xdir, int ydir, 550 int alu, 551 unsigned int planmask 552 ); 553 int ScreenToScreenBitBltFlags; 554 555 void (*WriteBitmap) ( 556 ScrnInfoPtr pScrn, 557 int x, int y, int w, int h, 558 unsigned char *src, 559 int srcwidth, 560 int skipleft, 561 int fg, int bg, 562 int rop, 563 unsigned int planemask 564 ); 565 int WriteBitmapFlags; 566 567 void (*FillSolidRects)( 568 ScrnInfoPtr pScrn, 569 int fg, int rop, 570 unsigned int planemask, 571 int nBox, 572 BoxPtr pBox 573 ); 574 int FillSolidRectsFlags; 575 576 void (*FillMono8x8PatternRects)( 577 ScrnInfoPtr pScrn, 578 int fg, int bg, int rop, 579 unsigned int planemask, 580 int nBox, 581 BoxPtr pBox, 582 int pat0, int pat1, 583 int xorg, int yorg 584 ); 585 int FillMono8x8PatternRectsFlags; 586 587 void (*FillColor8x8PatternRects)( 588 ScrnInfoPtr pScrn, 589 int rop, 590 unsigned int planemask, 591 int nBox, 592 BoxPtr pBox, 593 int xorg, int yorg, 594 XAACacheInfoPtr pCache 595 ); 596 int FillColor8x8PatternRectsFlags; 597 598 void (*FillCacheBltRects)( 599 ScrnInfoPtr pScrn, 600 int rop, 601 unsigned int planemask, 602 int nBox, 603 BoxPtr pBox, 604 int xorg, int yorg, 605 XAACacheInfoPtr pCache 606 ); 607 int FillCacheBltRectsFlags; 608 609 void (*FillColorExpandRects)( 610 ScrnInfoPtr pScrn, 611 int fg, int bg, int rop, 612 unsigned int planemask, 613 int nBox, 614 BoxPtr pBox, 615 int xorg, int yorg, 616 PixmapPtr pPix 617 ); 618 int FillColorExpandRectsFlags; 619 620 void (*FillCacheExpandRects)( 621 ScrnInfoPtr pScrn, 622 int fg, int bg, int rop, 623 unsigned int planemask, 624 int nBox, 625 BoxPtr pBox, 626 int xorg, int yorg, 627 PixmapPtr pPix 628 ); 629 int FillCacheExpandRectsFlags; 630 631 void (*FillImageWriteRects)( 632 ScrnInfoPtr pScrn, 633 int rop, 634 unsigned int planemask, 635 int nBox, 636 BoxPtr pBox, 637 int xorg, int yorg, 638 PixmapPtr pPix 639 ); 640 int FillImageWriteRectsFlags; 641 642 643 void (*FillSolidSpans)( 644 ScrnInfoPtr pScrn, 645 int fg, int rop, 646 unsigned int planemask, 647 int n, 648 DDXPointPtr points, 649 int *widths, 650 int fSorted 651 ); 652 int FillSolidSpansFlags; 653 654 void (*FillMono8x8PatternSpans)( 655 ScrnInfoPtr pScrn, 656 int fg, int bg, int rop, 657 unsigned int planemask, 658 int n, 659 DDXPointPtr points, 660 int *widths, 661 int fSorted, 662 int pat0, int pat1, 663 int xorg, int yorg 664 ); 665 int FillMono8x8PatternSpansFlags; 666 667 void (*FillColor8x8PatternSpans)( 668 ScrnInfoPtr pScrn, 669 int rop, 670 unsigned int planemask, 671 int n, 672 DDXPointPtr points, 673 int *widths, 674 int fSorted, 675 XAACacheInfoPtr pCache, 676 int xorg, int yorg 677 ); 678 int FillColor8x8PatternSpansFlags; 679 680 void (*FillCacheBltSpans)( 681 ScrnInfoPtr pScrn, 682 int rop, 683 unsigned int planemask, 684 int n, 685 DDXPointPtr points, 686 int *widths, 687 int fSorted, 688 XAACacheInfoPtr pCache, 689 int xorg, int yorg 690 ); 691 int FillCacheBltSpansFlags; 692 693 void (*FillColorExpandSpans)( 694 ScrnInfoPtr pScrn, 695 int fg, int bg, int rop, 696 unsigned int planemask, 697 int n, 698 DDXPointPtr points, 699 int *widths, 700 int fSorted, 701 int xorg, int yorg, 702 PixmapPtr pPix 703 ); 704 int FillColorExpandSpansFlags; 705 706 void (*FillCacheExpandSpans)( 707 ScrnInfoPtr pScrn, 708 int fg, int bg, int rop, 709 unsigned int planemask, 710 int n, 711 DDXPointPtr ppt, 712 int *pwidth, 713 int fSorted, 714 int xorg, int yorg, 715 PixmapPtr pPix 716 ); 717 int FillCacheExpandSpansFlags; 718 719 void (*TEGlyphRenderer)( 720 ScrnInfoPtr pScrn, 721 int x, int y, int w, int h, int skipleft, int startline, 722 unsigned int **glyphs, int glyphWidth, 723 int fg, int bg, int rop, unsigned planemask 724 ); 725 int TEGlyphRendererFlags; 726 727 void (*NonTEGlyphRenderer)( 728 ScrnInfoPtr pScrn, 729 int x, int y, int n, 730 NonTEGlyphPtr glyphs, 731 BoxPtr pbox, 732 int fg, int rop, 733 unsigned int planemask 734 ); 735 int NonTEGlyphRendererFlags; 736 737 void (*WritePixmap) ( 738 ScrnInfoPtr pScrn, 739 int x, int y, int w, int h, 740 unsigned char *src, 741 int srcwidth, 742 int rop, 743 unsigned int planemask, 744 int transparency_color, 745 int bpp, int depth 746 ); 747 int WritePixmapFlags; 748 749 void (*ReadPixmap) ( 750 ScrnInfoPtr pScrn, 751 int x, int y, int w, int h, 752 unsigned char *dst, 753 int dstwidth, 754 int bpp, int depth 755 ); 756 int ReadPixmapFlags; 757 758 /***************** GC Level *****************/ 759 RegionPtr (*CopyArea)( 760 DrawablePtr pSrcDrawable, 761 DrawablePtr pDstDrawable, 762 GC *pGC, 763 int srcx, int srcy, 764 int width, int height, 765 int dstx, int dsty 766 ); 767 int CopyAreaFlags; 768 769 RegionPtr (*CopyPlane)( 770 DrawablePtr pSrc, 771 DrawablePtr pDst, 772 GCPtr pGC, 773 int srcx, int srcy, 774 int width, int height, 775 int dstx, int dsty, 776 unsigned long bitPlane 777 ); 778 int CopyPlaneFlags; 779 780 void (*PushPixelsSolid) ( 781 GCPtr pGC, 782 PixmapPtr pBitMap, 783 DrawablePtr pDrawable, 784 int dx, int dy, 785 int xOrg, int yOrg 786 ); 787 int PushPixelsFlags; 788 789 /** PolyFillRect **/ 790 791 void (*PolyFillRectSolid)( 792 DrawablePtr pDraw, 793 GCPtr pGC, 794 int nrectFill, 795 xRectangle *prectInit 796 ); 797 int PolyFillRectSolidFlags; 798 799 void (*PolyFillRectStippled)( 800 DrawablePtr pDraw, 801 GCPtr pGC, 802 int nrectFill, 803 xRectangle *prectInit 804 ); 805 int PolyFillRectStippledFlags; 806 807 void (*PolyFillRectOpaqueStippled)( 808 DrawablePtr pDraw, 809 GCPtr pGC, 810 int nrectFill, 811 xRectangle *prectInit 812 ); 813 int PolyFillRectOpaqueStippledFlags; 814 815 void (*PolyFillRectTiled)( 816 DrawablePtr pDraw, 817 GCPtr pGC, 818 int nrectFill, 819 xRectangle *prectInit 820 ); 821 int PolyFillRectTiledFlags; 822 823 /** FillSpans **/ 824 825 void (*FillSpansSolid)( 826 DrawablePtr pDraw, 827 GCPtr pGC, 828 int nInit, 829 DDXPointPtr ppt, 830 int *pwidth, 831 int fSorted 832 ); 833 int FillSpansSolidFlags; 834 835 void (*FillSpansStippled)( 836 DrawablePtr pDraw, 837 GCPtr pGC, 838 int nInit, 839 DDXPointPtr ppt, 840 int *pwidth, 841 int fSorted 842 ); 843 int FillSpansStippledFlags; 844 845 void (*FillSpansOpaqueStippled)( 846 DrawablePtr pDraw, 847 GCPtr pGC, 848 int nInit, 849 DDXPointPtr ppt, 850 int *pwidth, 851 int fSorted 852 ); 853 int FillSpansOpaqueStippledFlags; 854 855 void (*FillSpansTiled)( 856 DrawablePtr pDraw, 857 GCPtr pGC, 858 int nInit, 859 DDXPointPtr ppt, 860 int *pwidth, 861 int fSorted 862 ); 863 int FillSpansTiledFlags; 864 865 int (*PolyText8TE) ( 866 DrawablePtr pDraw, 867 GCPtr pGC, 868 int x, int y, 869 int count, 870 char *chars 871 ); 872 int PolyText8TEFlags; 873 874 int (*PolyText16TE) ( 875 DrawablePtr pDraw, 876 GCPtr pGC, 877 int x, int y, 878 int count, 879 unsigned short *chars 880 ); 881 int PolyText16TEFlags; 882 883 void (*ImageText8TE) ( 884 DrawablePtr pDraw, 885 GCPtr pGC, 886 int x, int y, 887 int count, 888 char *chars 889 ); 890 int ImageText8TEFlags; 891 892 void (*ImageText16TE) ( 893 DrawablePtr pDraw, 894 GCPtr pGC, 895 int x, int y, 896 int count, 897 unsigned short *chars 898 ); 899 int ImageText16TEFlags; 900 901 void (*ImageGlyphBltTE) ( 902 DrawablePtr pDrawable, 903 GCPtr pGC, 904 int xInit, int yInit, 905 unsigned int nglyph, 906 CharInfoPtr *ppci, 907 pointer pglyphBase 908 ); 909 int ImageGlyphBltTEFlags; 910 911 void (*PolyGlyphBltTE) ( 912 DrawablePtr pDrawable, 913 GCPtr pGC, 914 int xInit, int yInit, 915 unsigned int nglyph, 916 CharInfoPtr *ppci, 917 pointer pglyphBase 918 ); 919 int PolyGlyphBltTEFlags; 920 921 int (*PolyText8NonTE) ( 922 DrawablePtr pDraw, 923 GCPtr pGC, 924 int x, int y, 925 int count, 926 char *chars 927 ); 928 int PolyText8NonTEFlags; 929 930 int (*PolyText16NonTE) ( 931 DrawablePtr pDraw, 932 GCPtr pGC, 933 int x, int y, 934 int count, 935 unsigned short *chars 936 ); 937 int PolyText16NonTEFlags; 938 939 void (*ImageText8NonTE) ( 940 DrawablePtr pDraw, 941 GCPtr pGC, 942 int x, int y, 943 int count, 944 char *chars 945 ); 946 int ImageText8NonTEFlags; 947 948 void (*ImageText16NonTE) ( 949 DrawablePtr pDraw, 950 GCPtr pGC, 951 int x, int y, 952 int count, 953 unsigned short *chars 954 ); 955 int ImageText16NonTEFlags; 956 957 void (*ImageGlyphBltNonTE) ( 958 DrawablePtr pDrawable, 959 GCPtr pGC, 960 int xInit, int yInit, 961 unsigned int nglyph, 962 CharInfoPtr *ppci, 963 pointer pglyphBase 964 ); 965 int ImageGlyphBltNonTEFlags; 966 967 void (*PolyGlyphBltNonTE) ( 968 DrawablePtr pDrawable, 969 GCPtr pGC, 970 int xInit, int yInit, 971 unsigned int nglyph, 972 CharInfoPtr *ppci, 973 pointer pglyphBase 974 ); 975 int PolyGlyphBltNonTEFlags; 976 977 void (*PolyRectangleThinSolid)( 978 DrawablePtr pDrawable, 979 GCPtr pGC, 980 int nRectsInit, 981 xRectangle *pRectsInit 982 ); 983 int PolyRectangleThinSolidFlags; 984 985 void (*PolylinesWideSolid)( 986 DrawablePtr pDrawable, 987 GCPtr pGC, 988 int mode, 989 int npt, 990 DDXPointPtr pPts 991 ); 992 int PolylinesWideSolidFlags; 993 994 void (*PolylinesThinSolid)( 995 DrawablePtr pDrawable, 996 GCPtr pGC, 997 int mode, 998 int npt, 999 DDXPointPtr pPts 1000 ); 1001 int PolylinesThinSolidFlags; 1002 1003 void (*PolySegmentThinSolid)( 1004 DrawablePtr pDrawable, 1005 GCPtr pGC, 1006 int nseg, 1007 xSegment *pSeg 1008 ); 1009 int PolySegmentThinSolidFlags; 1010 1011 void (*PolylinesThinDashed)( 1012 DrawablePtr pDrawable, 1013 GCPtr pGC, 1014 int mode, 1015 int npt, 1016 DDXPointPtr pPts 1017 ); 1018 int PolylinesThinDashedFlags; 1019 1020 void (*PolySegmentThinDashed)( 1021 DrawablePtr pDrawable, 1022 GCPtr pGC, 1023 int nseg, 1024 xSegment *pSeg 1025 ); 1026 int PolySegmentThinDashedFlags; 1027 1028 void (*FillPolygonSolid)( 1029 DrawablePtr pDrawable, 1030 GCPtr pGC, 1031 int shape, 1032 int mode, 1033 int count, 1034 DDXPointPtr ptsIn 1035 ); 1036 int FillPolygonSolidFlags; 1037 1038 void (*FillPolygonStippled)( 1039 DrawablePtr pDrawable, 1040 GCPtr pGC, 1041 int shape, 1042 int mode, 1043 int count, 1044 DDXPointPtr ptsIn 1045 ); 1046 int FillPolygonStippledFlags; 1047 1048 void (*FillPolygonOpaqueStippled)( 1049 DrawablePtr pDrawable, 1050 GCPtr pGC, 1051 int shape, 1052 int mode, 1053 int count, 1054 DDXPointPtr ptsIn 1055 ); 1056 int FillPolygonOpaqueStippledFlags; 1057 1058 void (*FillPolygonTiled)( 1059 DrawablePtr pDrawable, 1060 GCPtr pGC, 1061 int shape, 1062 int mode, 1063 int count, 1064 DDXPointPtr ptsIn 1065 ); 1066 int FillPolygonTiledFlags; 1067 1068 void (*PolyFillArcSolid)( 1069 DrawablePtr pDraw, 1070 GCPtr pGC, 1071 int narcs, 1072 xArc *parcs 1073 ); 1074 int PolyFillArcSolidFlags; 1075 1076 void (*PutImage)( 1077 DrawablePtr pDraw, 1078 GCPtr pGC, 1079 int depth, 1080 int x, 1081 int y, 1082 int w, 1083 int h, 1084 int leftPad, 1085 int format, 1086 char *pImage 1087 ); 1088 int PutImageFlags; 1089 1090 /* Validation masks */ 1091 1092 unsigned long FillSpansMask; 1093 ValidateGCProcPtr ValidateFillSpans; 1094 unsigned long SetSpansMask; 1095 ValidateGCProcPtr ValidateSetSpans; 1096 unsigned long PutImageMask; 1097 ValidateGCProcPtr ValidatePutImage; 1098 unsigned long CopyAreaMask; 1099 ValidateGCProcPtr ValidateCopyArea; 1100 unsigned long CopyPlaneMask; 1101 ValidateGCProcPtr ValidateCopyPlane; 1102 unsigned long PolyPointMask; 1103 ValidateGCProcPtr ValidatePolyPoint; 1104 unsigned long PolylinesMask; 1105 ValidateGCProcPtr ValidatePolylines; 1106 unsigned long PolySegmentMask; 1107 ValidateGCProcPtr ValidatePolySegment; 1108 unsigned long PolyRectangleMask; 1109 ValidateGCProcPtr ValidatePolyRectangle; 1110 unsigned long PolyArcMask; 1111 ValidateGCProcPtr ValidatePolyArc; 1112 unsigned long FillPolygonMask; 1113 ValidateGCProcPtr ValidateFillPolygon; 1114 unsigned long PolyFillRectMask; 1115 ValidateGCProcPtr ValidatePolyFillRect; 1116 unsigned long PolyFillArcMask; 1117 ValidateGCProcPtr ValidatePolyFillArc; 1118 unsigned long PolyText8Mask; 1119 ValidateGCProcPtr ValidatePolyText8; 1120 unsigned long PolyText16Mask; 1121 ValidateGCProcPtr ValidatePolyText16; 1122 unsigned long ImageText8Mask; 1123 ValidateGCProcPtr ValidateImageText8; 1124 unsigned long ImageText16Mask; 1125 ValidateGCProcPtr ValidateImageText16; 1126 unsigned long PolyGlyphBltMask; 1127 ValidateGCProcPtr ValidatePolyGlyphBlt; 1128 unsigned long ImageGlyphBltMask; 1129 ValidateGCProcPtr ValidateImageGlyphBlt; 1130 unsigned long PushPixelsMask; 1131 ValidateGCProcPtr ValidatePushPixels; 1132 1133 void (*ComputeDash)(GCPtr pGC); 1134 1135 /* Pixmap Cache */ 1136 1137 int PixmapCacheFlags; 1138 Bool UsingPixmapCache; 1139 Bool CanDoMono8x8; 1140 Bool CanDoColor8x8; 1141 1142 void (*InitPixmapCache)( 1143 ScreenPtr pScreen, 1144 RegionPtr areas, 1145 pointer data 1146 ); 1147 void (*ClosePixmapCache)( 1148 ScreenPtr pScreen 1149 ); 1150 1151 int (*StippledFillChooser)(GCPtr pGC); 1152 int (*OpaqueStippledFillChooser)(GCPtr pGC); 1153 int (*TiledFillChooser)(GCPtr pGC); 1154 1155 int CachePixelGranularity; 1156 int MaxCacheableTileWidth; 1157 int MaxCacheableTileHeight; 1158 int MaxCacheableStippleWidth; 1159 int MaxCacheableStippleHeight; 1160 1161 XAACacheInfoPtr (*CacheTile)( 1162 ScrnInfoPtr Scrn, PixmapPtr pPix 1163 ); 1164 XAACacheInfoPtr (*CacheStipple)( 1165 ScrnInfoPtr Scrn, PixmapPtr pPix, 1166 int fg, int bg 1167 ); 1168 XAACacheInfoPtr (*CacheMonoStipple)( 1169 ScrnInfoPtr Scrn, PixmapPtr pPix 1170 ); 1171 XAACacheInfoPtr (*CacheMono8x8Pattern)( 1172 ScrnInfoPtr Scrn, int pat0, int pat1 1173 ); 1174 XAACacheInfoPtr (*CacheColor8x8Pattern)( 1175 ScrnInfoPtr Scrn, PixmapPtr pPix, 1176 int fg, int bg 1177 ); 1178 1179 1180 int MonoPatternPitch; 1181 int CacheWidthMono8x8Pattern; 1182 int CacheHeightMono8x8Pattern; 1183 1184 int ColorPatternPitch; 1185 int CacheWidthColor8x8Pattern; 1186 int CacheHeightColor8x8Pattern; 1187 1188 int CacheColorExpandDensity; 1189 1190 void (*WriteBitmapToCache) ( 1191 ScrnInfoPtr pScrn, 1192 int x, int y, int w, int h, 1193 unsigned char *src, 1194 int srcwidth, 1195 int fg, int bg 1196 ); 1197 void (*WritePixmapToCache) ( 1198 ScrnInfoPtr pScrn, 1199 int x, int y, int w, int h, 1200 unsigned char *src, 1201 int srcwidth, 1202 int bpp, int depth 1203 ); 1204 void (*WriteMono8x8PatternToCache)( 1205 ScrnInfoPtr pScrn, 1206 XAACacheInfoPtr pCache 1207 ); 1208 void (*WriteColor8x8PatternToCache)( 1209 ScrnInfoPtr pScrn, 1210 PixmapPtr pPix, 1211 XAACacheInfoPtr pCache 1212 ); 1213 1214 char* PixmapCachePrivate; 1215 1216 /* Miscellaneous */ 1217 1218 GC ScratchGC; 1219 int PreAllocSize; 1220 unsigned char *PreAllocMem; 1221 1222 CharInfoPtr CharInfo[255]; 1223 NonTEGlyphInfo GlyphInfo[255]; 1224 1225 unsigned int FullPlanemask; /* deprecated */ 1226 1227 PixmapLinkPtr OffscreenPixmaps; 1228 int maxOffPixWidth; 1229 int maxOffPixHeight; 1230 1231 XAACacheInfoRec ScratchCacheInfoRec; 1232 1233 BoxPtr ClipBox; 1234 1235 Bool NeedToSync; 1236 1237 char *dgaSaves; 1238 1239 /* These can be supplied to override the defaults */ 1240 1241 GetImageProcPtr GetImage; 1242 GetSpansProcPtr GetSpans; 1243 CopyWindowProcPtr CopyWindow; 1244 1245 unsigned int offscreenDepths; 1246 Bool offscreenDepthsInitialized; 1247 1248 CARD32 FullPlanemasks[32]; 1249 1250 Bool (*Composite) ( 1251 CARD8 op, 1252 PicturePtr pSrc, 1253 PicturePtr pMask, 1254 PicturePtr pDst, 1255 INT16 xSrc, 1256 INT16 ySrc, 1257 INT16 xMask, 1258 INT16 yMask, 1259 INT16 xDst, 1260 INT16 yDst, 1261 CARD16 width, 1262 CARD16 height 1263 ); 1264 1265 Bool (*Glyphs) ( 1266 CARD8 op, 1267 PicturePtr pSrc, 1268 PicturePtr pDst, 1269 PictFormatPtr maskFormat, 1270 INT16 xSrc, 1271 INT16 ySrc, 1272 int nlist, 1273 GlyphListPtr list, 1274 GlyphPtr *glyphs 1275 ); 1276 1277 /* The old SetupForCPUToScreenAlphaTexture function is no longer used because 1278 * it doesn't pass in enough information to write a conforming 1279 * implementation. See SetupForCPUToScreenAlphaTexture2. 1280 */ 1281 Bool (*SetupForCPUToScreenAlphaTexture) ( 1282 ScrnInfoPtr pScrn, 1283 int op, 1284 CARD16 red, 1285 CARD16 green, 1286 CARD16 blue, 1287 CARD16 alpha, 1288 int alphaType, 1289 CARD8 *alphaPtr, 1290 int alphaPitch, 1291 int width, 1292 int height, 1293 int flags 1294 ); 1295 void (*SubsequentCPUToScreenAlphaTexture) ( 1296 ScrnInfoPtr pScrn, 1297 int dstx, 1298 int dsty, 1299 int srcx, 1300 int srcy, 1301 int width, 1302 int height 1303 ); 1304 int CPUToScreenAlphaTextureFlags; 1305 CARD32 * CPUToScreenAlphaTextureFormats; 1306 1307 /* The old SetupForCPUToScreenTexture function is no longer used because 1308 * it doesn't pass in enough information to write a conforming 1309 * implementation. See SetupForCPUToScreenTexture2. 1310 */ 1311 Bool (*SetupForCPUToScreenTexture) ( 1312 ScrnInfoPtr pScrn, 1313 int op, 1314 int texType, 1315 CARD8 *texPtr, 1316 int texPitch, 1317 int width, 1318 int height, 1319 int flags 1320 ); 1321 void (*SubsequentCPUToScreenTexture) ( 1322 ScrnInfoPtr pScrn, 1323 int dstx, 1324 int dsty, 1325 int srcx, 1326 int srcy, 1327 int width, 1328 int height 1329 ); 1330 int CPUToScreenTextureFlags; 1331 CARD32 * CPUToScreenTextureFormats; 1332 1333 1334 /* these were added for 4.3.0 */ 1335 BoxRec SolidLineLimits; 1336 BoxRec DashedLineLimits; 1337 1338 /* These were added for X.Org 6.8.0 */ 1339 Bool (*SetupForCPUToScreenAlphaTexture2) ( 1340 ScrnInfoPtr pScrn, 1341 int op, 1342 CARD16 red, 1343 CARD16 green, 1344 CARD16 blue, 1345 CARD16 alpha, 1346 CARD32 maskFormat, 1347 CARD32 dstFormat, 1348 CARD8 *alphaPtr, 1349 int alphaPitch, 1350 int width, 1351 int height, 1352 int flags 1353 ); 1354 CARD32 *CPUToScreenAlphaTextureDstFormats; 1355 1356 Bool (*SetupForCPUToScreenTexture2) ( 1357 ScrnInfoPtr pScrn, 1358 int op, 1359 CARD32 srcFormat, 1360 CARD32 dstFormat, 1361 CARD8 *texPtr, 1362 int texPitch, 1363 int width, 1364 int height, 1365 int flags 1366 ); 1367 CARD32 *CPUToScreenTextureDstFormats; 1368} XAAInfoRec, *XAAInfoRecPtr; 1369 1370#define SET_SYNC_FLAG(infoRec) (infoRec)->NeedToSync = TRUE 1371 1372 1373extern _X_EXPORT Bool 1374XAAInit( 1375 ScreenPtr pScreen, 1376 XAAInfoRecPtr infoRec 1377); 1378 1379extern _X_EXPORT XAAInfoRecPtr XAACreateInfoRec(void); 1380 1381extern _X_EXPORT void 1382XAADestroyInfoRec( 1383 XAAInfoRecPtr infoRec 1384); 1385 1386typedef void (*DepthChangeFuncPtr) (ScrnInfoPtr pScrn, int depth); 1387 1388extern _X_EXPORT Bool 1389XAAInitDualFramebufferOverlay( 1390 ScreenPtr pScreen, 1391 DepthChangeFuncPtr callback 1392); 1393 1394#endif /* _XAA_H */ 1395