Lines Matching refs:infoRec
116 XAAInitAccel(ScreenPtr pScreen, XAAInfoRecPtr infoRec)
145 infoRec->pScrn = pScrn;
146 infoRec->NeedToSync = FALSE;
149 if(!infoRec->Sync) return FALSE;
157 if(!infoRec->RestoreAccelState && is_shared) return FALSE;
159 if(infoRec->RestoreAccelState) {
160 if(!XAAInitStateWrap(pScreen, infoRec)) return FALSE;
170 if(!infoRec->SetClippingRectangle || !infoRec->DisableClipping) {
171 infoRec->ClippingFlags = 0;
172 infoRec->SetClippingRectangle = NULL;
173 infoRec->DisableClipping = NULL;
178 if(infoRec->SetupForScreenToScreenCopy &&
179 infoRec->SubsequentScreenToScreenCopy &&
183 infoRec->ScreenToScreenCopyFlags = 0;
184 infoRec->SetupForScreenToScreenCopy = NULL;
185 infoRec->SubsequentScreenToScreenCopy = NULL;
190 if(infoRec->SetupForSolidFill && infoRec->SubsequentSolidFillRect &&
193 if(infoRec->SubsequentSolidFillTrap &&
197 infoRec->SubsequentSolidFillTrap = NULL;
199 infoRec->SolidFillFlags = 0;
200 infoRec->SetupForSolidFill = NULL;
201 infoRec->SubsequentSolidFillRect = NULL;
202 infoRec->SubsequentSolidFillTrap = NULL;
207 if(infoRec->SetupForSolidLine) {
208 if(infoRec->SubsequentSolidTwoPointLine &&
212 if(infoRec->SubsequentSolidBresenhamLine &&
216 if(infoRec->SolidBresenhamLineErrorTermBits)
217 infoRec->SolidBresenhamLineErrorTermBits =
218 ~((1 << infoRec->SolidBresenhamLineErrorTermBits) - 1);
221 if(infoRec->SubsequentSolidHorVertLine &&
226 infoRec->SubsequentSolidHorVertLine =
230 infoRec->SubsequentSolidHorVertLine =
241 infoRec->SetupForSolidLine = infoRec->SetupForSolidFill;
242 infoRec->SubsequentSolidHorVertLine = XAASolidHorVertLineAsRects;
243 infoRec->SolidLineFlags = infoRec->SolidFillFlags;
248 infoRec->SubsequentSolidTwoPointLine = NULL;
250 infoRec->SubsequentSolidBresenhamLine = NULL;
252 infoRec->SubsequentSolidHorVertLine = NULL;
258 infoRec->SolidLineFlags = 0;
259 infoRec->SetupForSolidLine = NULL;
264 if(infoRec->SetupForMono8x8PatternFill &&
265 infoRec->SubsequentMono8x8PatternFillRect &&
270 if(infoRec->SubsequentMono8x8PatternFillTrap &&
276 if(infoRec->Mono8x8PatternFillFlags &
278 infoRec->CanDoMono8x8 = TRUE;
281 infoRec->PixmapCacheFlags |= CACHE_MONO_8x8;
290 if(min_pitch > infoRec->MonoPatternPitch)
291 infoRec->MonoPatternPitch = min_pitch;
293 if(infoRec->Mono8x8PatternFillFlags &
295 if(!infoRec->CacheWidthMono8x8Pattern ||
296 !infoRec->CacheHeightMono8x8Pattern) {
297 infoRec->CacheWidthMono8x8Pattern =
298 infoRec->MonoPatternPitch;
299 infoRec->CacheHeightMono8x8Pattern = 1;
302 int numPerLine = 128/infoRec->MonoPatternPitch;
304 if(!infoRec->CacheWidthMono8x8Pattern ||
305 !infoRec->CacheHeightMono8x8Pattern) {
306 infoRec->CacheWidthMono8x8Pattern =
307 numPerLine * infoRec->MonoPatternPitch;
308 infoRec->CacheHeightMono8x8Pattern =
314 infoRec->Mono8x8PatternFillFlags = 0;
315 infoRec->SetupForMono8x8PatternFill = NULL;
316 infoRec->SubsequentMono8x8PatternFillRect = NULL;
321 if(infoRec->SetupForDashedLine && infoRec->DashPatternMaxLength) {
322 if(infoRec->SubsequentDashedTwoPointLine &&
326 if(infoRec->SubsequentDashedBresenhamLine &&
331 if(infoRec->DashedBresenhamLineErrorTermBits)
332 infoRec->DashedBresenhamLineErrorTermBits =
333 ~((1 << infoRec->DashedBresenhamLineErrorTermBits) - 1);
338 infoRec->SubsequentDashedTwoPointLine = NULL;
340 infoRec->SubsequentDashedBresenhamLine = NULL;
344 infoRec->DashedLineFlags = 0;
345 infoRec->SetupForDashedLine = NULL;
350 if(infoRec->SetupForColor8x8PatternFill &&
351 infoRec->SubsequentColor8x8PatternFillRect &&
354 if(infoRec->SubsequentColor8x8PatternFillTrap &&
359 infoRec->SubsequentColor8x8PatternFillTrap = NULL;
361 infoRec->PixmapCacheFlags |= CACHE_COLOR_8x8;
363 if(infoRec->Color8x8PatternFillFlags &
365 if(!infoRec->CacheWidthColor8x8Pattern ||
366 !infoRec->CacheHeightColor8x8Pattern) {
367 infoRec->CacheWidthColor8x8Pattern = 64;
368 infoRec->CacheHeightColor8x8Pattern = 1;
371 if(!infoRec->CacheWidthColor8x8Pattern ||
372 !infoRec->CacheHeightColor8x8Pattern) {
373 infoRec->CacheWidthColor8x8Pattern = 128;
374 infoRec->CacheHeightColor8x8Pattern = 8;
378 infoRec->Color8x8PatternFillFlags = 0;
379 infoRec->SetupForColor8x8PatternFill = NULL;
380 infoRec->SubsequentColor8x8PatternFillRect = NULL;
381 infoRec->SubsequentColor8x8PatternFillTrap = NULL;
386 if(infoRec->SetupForCPUToScreenColorExpandFill &&
387 infoRec->ColorExpandBase &&
388 infoRec->SubsequentCPUToScreenColorExpandFill &&
393 infoRec->ColorExpandRange >>= 2; /* convert to DWORDS */
396 if(infoRec->CPUToScreenColorExpandFillFlags &
400 if(dwordsNeeded > infoRec->ColorExpandRange)
401 infoRec->CPUToScreenColorExpandFillFlags |= CPU_TRANSFER_BASE_FIXED;
403 infoRec->CPUToScreenColorExpandFillFlags = 0;
404 infoRec->SetupForCPUToScreenColorExpandFill = NULL;
405 infoRec->SubsequentCPUToScreenColorExpandFill = NULL;
410 if(infoRec->SetupForScanlineCPUToScreenColorExpandFill &&
411 infoRec->SubsequentScanlineCPUToScreenColorExpandFill &&
412 infoRec->SubsequentColorExpandScanline &&
413 infoRec->ScanlineColorExpandBuffers &&
414 (infoRec->NumScanlineColorExpandBuffers > 0) &&
420 infoRec->ScanlineCPUToScreenColorExpandFillFlags = 0;
421 infoRec->SetupForScanlineCPUToScreenColorExpandFill = NULL;
422 infoRec->SubsequentScanlineCPUToScreenColorExpandFill = NULL;
423 infoRec->SubsequentColorExpandScanline = NULL;
428 if(infoRec->SetupForScreenToScreenColorExpandFill &&
429 infoRec->SubsequentScreenToScreenColorExpandFill &&
433 if (!infoRec->CacheColorExpandDensity)
434 infoRec->CacheColorExpandDensity = 1;
436 infoRec->ScreenToScreenColorExpandFillFlags = 0;
437 infoRec->SetupForScreenToScreenColorExpandFill = NULL;
438 infoRec->SubsequentScreenToScreenColorExpandFill = NULL;
443 if(infoRec->SetupForImageWrite && infoRec->ImageWriteBase &&
444 infoRec->SubsequentImageWriteRect &&
447 infoRec->ImageWriteRange >>= 2; /* convert to DWORDS */
448 if(infoRec->ImageWriteFlags & CPU_TRANSFER_BASE_FIXED)
449 infoRec->ImageWriteRange = 0;
452 infoRec->ImageWriteFlags = 0;
453 infoRec->SetupForImageWrite = NULL;
454 infoRec->SubsequentImageWriteRect = NULL;
459 if(infoRec->SetupForScanlineImageWrite &&
460 infoRec->SubsequentScanlineImageWriteRect &&
461 infoRec->SubsequentImageWriteScanline &&
462 infoRec->ScanlineImageWriteBuffers &&
463 (infoRec->NumScanlineImageWriteBuffers > 0) &&
468 infoRec->ScanlineImageWriteFlags = 0;
469 infoRec->SetupForScanlineImageWrite = NULL;
470 infoRec->SubsequentScanlineImageWriteRect = NULL;
471 infoRec->SubsequentImageWriteScanline = NULL;
478 ((infoRec->ImageWriteFlags & CLIP_FLAGS) != CLIP_FLAGS))
483 ((infoRec->ScanlineImageWriteFlags & CLIP_FLAGS) != CLIP_FLAGS))
530 if((infoRec->Flags & OFFSCREEN_PIXMAPS) && HaveScreenToScreenCopy &&
537 infoRec->Flags &= ~OFFSCREEN_PIXMAPS;
545 if(infoRec->ScreenToScreenBitBlt) {
548 infoRec->ScreenToScreenBitBlt = XAAScreenToScreenBitBlt;
549 infoRec->ScreenToScreenBitBltFlags = infoRec->ScreenToScreenCopyFlags;
554 if(infoRec->FillSolidRects) {
557 infoRec->FillSolidRects = XAAFillSolidRects;
558 infoRec->FillSolidRectsFlags = infoRec->SolidFillFlags;
563 if(infoRec->FillSolidSpans) {
566 infoRec->FillSolidSpans = XAAFillSolidSpans;
567 infoRec->FillSolidSpansFlags = infoRec->SolidFillFlags;
572 if(infoRec->FillMono8x8PatternRects) {
575 infoRec->FillMono8x8PatternRects =
576 (infoRec->Mono8x8PatternFillFlags & HARDWARE_PATTERN_SCREEN_ORIGIN) ?
580 infoRec->FillMono8x8PatternRectsFlags =
581 infoRec->Mono8x8PatternFillFlags;
586 if(infoRec->FillMono8x8PatternSpans) {
589 infoRec->FillMono8x8PatternSpans =
590 (infoRec->Mono8x8PatternFillFlags & HARDWARE_PATTERN_SCREEN_ORIGIN) ?
594 infoRec->FillMono8x8PatternSpansFlags =
595 infoRec->Mono8x8PatternFillFlags;
600 if(infoRec->FillColor8x8PatternRects) {
603 infoRec->FillColor8x8PatternRects =
604 (infoRec->Color8x8PatternFillFlags & HARDWARE_PATTERN_SCREEN_ORIGIN) ?
608 infoRec->FillColor8x8PatternRectsFlags =
609 infoRec->Color8x8PatternFillFlags;
614 if(infoRec->FillColor8x8PatternSpans) {
617 infoRec->FillColor8x8PatternSpans =
618 (infoRec->Color8x8PatternFillFlags & HARDWARE_PATTERN_SCREEN_ORIGIN) ?
622 infoRec->FillColor8x8PatternSpansFlags =
623 infoRec->Color8x8PatternFillFlags;
628 if(infoRec->FillCacheBltRects) {
631 infoRec->FillCacheBltRects = XAAFillCacheBltRects;
632 infoRec->FillCacheBltRectsFlags = infoRec->ScreenToScreenCopyFlags;
637 if(infoRec->FillCacheBltSpans) {
640 infoRec->FillCacheBltSpans = XAAFillCacheBltSpans;
641 infoRec->FillCacheBltSpansFlags = infoRec->ScreenToScreenCopyFlags;
646 if(infoRec->FillCacheExpandRects) {
649 infoRec->FillCacheExpandRects = XAAFillCacheExpandRects;
650 infoRec->FillCacheExpandRectsFlags =
651 infoRec->ScreenToScreenColorExpandFillFlags;
656 if(infoRec->FillCacheExpandSpans) {
659 infoRec->FillCacheExpandSpans = XAAFillCacheExpandSpans;
660 infoRec->FillCacheExpandSpansFlags =
661 infoRec->ScreenToScreenColorExpandFillFlags;
666 if(infoRec->FillColorExpandRects) {
669 if (infoRec->CPUToScreenColorExpandFillFlags & TRIPLE_BITS_24BPP) {
670 if(infoRec->CPUToScreenColorExpandFillFlags &
672 if(infoRec->CPUToScreenColorExpandFillFlags &
674 infoRec->FillColorExpandRects =
677 infoRec->FillColorExpandRects =
680 if(infoRec->CPUToScreenColorExpandFillFlags &
682 infoRec->FillColorExpandRects =
685 infoRec->FillColorExpandRects =
689 if(infoRec->CPUToScreenColorExpandFillFlags &
691 if(infoRec->CPUToScreenColorExpandFillFlags &
693 infoRec->FillColorExpandRects =
696 infoRec->FillColorExpandRects =
699 if(infoRec->CPUToScreenColorExpandFillFlags &
701 infoRec->FillColorExpandRects =
704 infoRec->FillColorExpandRects =
708 infoRec->FillColorExpandRectsFlags =
709 infoRec->CPUToScreenColorExpandFillFlags;
711 if (infoRec->ScanlineCPUToScreenColorExpandFillFlags &
713 if(infoRec->ScanlineCPUToScreenColorExpandFillFlags &
715 infoRec->FillColorExpandRects =
718 infoRec->FillColorExpandRects =
721 if(infoRec->ScanlineCPUToScreenColorExpandFillFlags &
723 infoRec->FillColorExpandRects =
726 infoRec->FillColorExpandRects =
729 infoRec->FillColorExpandRectsFlags =
730 infoRec->ScanlineCPUToScreenColorExpandFillFlags;
735 if(infoRec->FillColorExpandSpans) {
738 if (infoRec->CPUToScreenColorExpandFillFlags & TRIPLE_BITS_24BPP) {
739 if(infoRec->CPUToScreenColorExpandFillFlags &
741 if(infoRec->CPUToScreenColorExpandFillFlags &
743 infoRec->FillColorExpandSpans =
746 infoRec->FillColorExpandSpans =
749 if(infoRec->CPUToScreenColorExpandFillFlags &
751 infoRec->FillColorExpandSpans =
754 infoRec->FillColorExpandSpans =
758 if(infoRec->CPUToScreenColorExpandFillFlags &
760 if(infoRec->CPUToScreenColorExpandFillFlags &
762 infoRec->FillColorExpandSpans =
765 infoRec->FillColorExpandSpans =
768 if(infoRec->CPUToScreenColorExpandFillFlags &
770 infoRec->FillColorExpandSpans =
773 infoRec->FillColorExpandSpans =
777 infoRec->FillColorExpandSpansFlags =
778 infoRec->CPUToScreenColorExpandFillFlags;
780 if (infoRec->ScanlineCPUToScreenColorExpandFillFlags &
782 if(infoRec->ScanlineCPUToScreenColorExpandFillFlags &
784 infoRec->FillColorExpandSpans =
787 infoRec->FillColorExpandSpans =
790 if(infoRec->ScanlineCPUToScreenColorExpandFillFlags &
792 infoRec->FillColorExpandSpans =
795 infoRec->FillColorExpandSpans =
798 infoRec->FillColorExpandSpansFlags =
799 infoRec->ScanlineCPUToScreenColorExpandFillFlags;
804 if(infoRec->FillImageWriteRects) {
807 (infoRec->ImageWriteFlags & LEFT_EDGE_CLIPPING_NEGATIVE_X) &&
808 (infoRec->ImageWriteFlags & LEFT_EDGE_CLIPPING)) {
809 infoRec->FillImageWriteRects = XAAFillImageWriteRects;
810 infoRec->FillImageWriteRectsFlags = infoRec->ImageWriteFlags;
815 if(!infoRec->FillImageWriteRects) {
817 (infoRec->ScanlineImageWriteFlags &
819 (infoRec->ScanlineImageWriteFlags & LEFT_EDGE_CLIPPING)) {
820 infoRec->FillImageWriteRects = XAAFillScanlineImageWriteRects;
821 infoRec->FillImageWriteRectsFlags =
822 infoRec->ScanlineImageWriteFlags;
828 if(infoRec->WriteBitmap &&
832 if (infoRec->CPUToScreenColorExpandFillFlags & TRIPLE_BITS_24BPP) {
833 if(infoRec->CPUToScreenColorExpandFillFlags &
835 if(infoRec->CPUToScreenColorExpandFillFlags &
837 infoRec->WriteBitmap =
840 infoRec->WriteBitmap = XAAWriteBitmapColorExpand3MSBFirst;
842 if(infoRec->CPUToScreenColorExpandFillFlags &
844 infoRec->WriteBitmap =
847 infoRec->WriteBitmap = XAAWriteBitmapColorExpand3LSBFirst;
850 if(infoRec->CPUToScreenColorExpandFillFlags &
852 if(infoRec->CPUToScreenColorExpandFillFlags &
854 infoRec->WriteBitmap =
857 infoRec->WriteBitmap = XAAWriteBitmapColorExpandMSBFirst;
859 if(infoRec->CPUToScreenColorExpandFillFlags &
861 infoRec->WriteBitmap =
864 infoRec->WriteBitmap = XAAWriteBitmapColorExpandLSBFirst;
867 infoRec->WriteBitmapFlags = infoRec->CPUToScreenColorExpandFillFlags;
869 if (infoRec->ScanlineCPUToScreenColorExpandFillFlags &
871 if(infoRec->ScanlineCPUToScreenColorExpandFillFlags &
873 infoRec->WriteBitmap =
876 infoRec->WriteBitmap =
879 if(infoRec->ScanlineCPUToScreenColorExpandFillFlags &
881 infoRec->WriteBitmap =
884 infoRec->WriteBitmap =
887 infoRec->WriteBitmapFlags =
888 infoRec->ScanlineCPUToScreenColorExpandFillFlags;
890 infoRec->WriteBitmap = NULL;
894 if (infoRec->TEGlyphRenderer) {
897 infoRec->TEGlyphRendererFlags =
898 infoRec->CPUToScreenColorExpandFillFlags;
900 if (infoRec->TEGlyphRendererFlags & TRIPLE_BITS_24BPP) {
901 if (infoRec->TEGlyphRendererFlags & BIT_ORDER_IN_BYTE_MSBFIRST) {
902 if (infoRec->TEGlyphRendererFlags & CPU_TRANSFER_BASE_FIXED)
903 infoRec->TEGlyphRenderer =
906 infoRec->TEGlyphRenderer = XAATEGlyphRenderer3MSBFirst;
908 if (infoRec->TEGlyphRendererFlags & CPU_TRANSFER_BASE_FIXED)
909 infoRec->TEGlyphRenderer =
912 infoRec->TEGlyphRenderer = XAATEGlyphRenderer3LSBFirst;
916 (infoRec->TEGlyphRendererFlags & RGB_EQUAL)) {
917 infoRec->TEGlyphRendererFlags &= ~RGB_EQUAL;
922 if (infoRec->TEGlyphRendererFlags & BIT_ORDER_IN_BYTE_MSBFIRST) {
923 if (infoRec->TEGlyphRendererFlags & CPU_TRANSFER_BASE_FIXED)
924 infoRec->TEGlyphRenderer =
927 infoRec->TEGlyphRenderer = XAATEGlyphRendererMSBFirst;
929 if (infoRec->TEGlyphRendererFlags & CPU_TRANSFER_BASE_FIXED)
930 infoRec->TEGlyphRenderer =
933 infoRec->TEGlyphRenderer = XAATEGlyphRendererLSBFirst;
938 (infoRec->TEGlyphRendererFlags & TRANSPARENCY_ONLY)) {
939 infoRec->TEGlyphRendererFlags &= ~TRANSPARENCY_ONLY;
945 infoRec->TEGlyphRendererFlags =
946 infoRec->ScanlineCPUToScreenColorExpandFillFlags;
948 if (infoRec->TEGlyphRendererFlags & TRIPLE_BITS_24BPP) {
949 if (infoRec->TEGlyphRendererFlags & BIT_ORDER_IN_BYTE_MSBFIRST)
950 infoRec->TEGlyphRenderer = XAATEGlyphRendererScanline3MSBFirst;
952 infoRec->TEGlyphRenderer = XAATEGlyphRendererScanline3LSBFirst;
955 (infoRec->TEGlyphRendererFlags & RGB_EQUAL)) {
956 infoRec->TEGlyphRendererFlags &= ~RGB_EQUAL;
961 if (infoRec->TEGlyphRendererFlags & BIT_ORDER_IN_BYTE_MSBFIRST)
962 infoRec->TEGlyphRenderer = XAATEGlyphRendererScanlineMSBFirst;
964 infoRec->TEGlyphRenderer = XAATEGlyphRendererScanlineLSBFirst;
968 (infoRec->TEGlyphRendererFlags & TRANSPARENCY_ONLY)) {
969 infoRec->TEGlyphRendererFlags &= ~TRANSPARENCY_ONLY;
977 if(infoRec->NonTEGlyphRenderer) {
979 } else if(infoRec->WriteBitmap &&
980 !(infoRec->WriteBitmapFlags & NO_TRANSPARENCY)) {
981 infoRec->NonTEGlyphRenderer = XAANonTEGlyphRenderer;
982 infoRec->NonTEGlyphRendererFlags = infoRec->WriteBitmapFlags;
987 if(infoRec->WritePixmap &&
991 infoRec->WritePixmap = XAAWritePixmap;
992 infoRec->WritePixmapFlags =
993 infoRec->ImageWriteFlags | CONVERT_32BPP_TO_24BPP;
995 infoRec->WritePixmap = XAAWritePixmapScanline;
996 infoRec->WritePixmapFlags = infoRec->ScanlineImageWriteFlags;
998 infoRec->WritePixmap = NULL;
1002 if(infoRec->ReadPixmap) {
1011 if(infoRec->CopyArea) {
1013 } else if(infoRec->ScreenToScreenBitBlt) {
1014 infoRec->CopyArea = XAACopyArea;
1015 infoRec->CopyAreaFlags = infoRec->ScreenToScreenBitBltFlags;
1029 if(infoRec->CopyPlane) {
1031 } else if(infoRec->WriteBitmap &&
1032 !(infoRec->WriteBitmapFlags & TRANSPARENCY_ONLY)) {
1033 infoRec->CopyPlane = XAACopyPlaneColorExpansion;
1034 infoRec->CopyPlaneFlags = infoRec->WriteBitmapFlags;
1037 if(infoRec->PushPixelsSolid) {
1039 } else if(infoRec->WriteBitmap &&
1040 !(infoRec->WriteBitmapFlags & NO_TRANSPARENCY)) {
1041 infoRec->PushPixelsSolid = XAAPushPixelsSolidColorExpansion;
1042 infoRec->PushPixelsFlags = infoRec->WriteBitmapFlags;
1045 if(infoRec->FillSolidRects) {
1046 if(!infoRec->PolyFillRectSolid) {
1047 infoRec->PolyFillRectSolid = XAAPolyFillRect;
1048 infoRec->PolyFillRectSolidFlags = infoRec->FillSolidRectsFlags;
1051 if(infoRec->FillSolidSpans) {
1052 if(!infoRec->FillSpansSolid) {
1053 infoRec->FillSpansSolid = XAAFillSpans;
1054 infoRec->FillSpansSolidFlags = infoRec->FillSolidSpansFlags;
1058 if(infoRec->FillMono8x8PatternRects || infoRec->FillColor8x8PatternRects ||
1059 infoRec->FillCacheBltRects || infoRec->FillColorExpandRects ||
1060 infoRec->FillCacheExpandRects) {
1061 if(!infoRec->PolyFillRectStippled) {
1063 infoRec->PolyFillRectStippled = XAAPolyFillRect;
1064 infoRec->PolyFillRectStippledFlags = 0;
1068 if(infoRec->FillMono8x8PatternSpans || infoRec->FillColor8x8PatternSpans ||
1069 infoRec->FillCacheBltSpans || infoRec->FillColorExpandSpans ||
1070 infoRec->FillCacheExpandSpans) {
1071 if(!infoRec->FillSpansStippled) {
1073 infoRec->FillSpansStippled = XAAFillSpans;
1074 infoRec->FillSpansStippledFlags = 0;
1078 if(infoRec->FillMono8x8PatternRects || infoRec->FillColor8x8PatternRects ||
1079 infoRec->FillCacheBltRects || infoRec->FillColorExpandRects ||
1080 infoRec->FillCacheExpandRects) {
1081 if(!infoRec->PolyFillRectOpaqueStippled) {
1083 infoRec->PolyFillRectOpaqueStippled = XAAPolyFillRect;
1084 infoRec->PolyFillRectOpaqueStippledFlags = 0;
1088 if(infoRec->FillMono8x8PatternSpans || infoRec->FillColor8x8PatternSpans ||
1089 infoRec->FillCacheBltSpans || infoRec->FillColorExpandSpans ||
1090 infoRec->FillCacheExpandSpans) {
1091 if(!infoRec->FillSpansOpaqueStippled) {
1093 infoRec->FillSpansOpaqueStippled = XAAFillSpans;
1094 infoRec->FillSpansOpaqueStippledFlags = 0;
1098 if(infoRec->FillMono8x8PatternRects || infoRec->FillColor8x8PatternRects ||
1099 infoRec->FillCacheBltRects || infoRec->FillImageWriteRects) {
1100 if(!infoRec->PolyFillRectTiled) {
1102 infoRec->PolyFillRectTiled = XAAPolyFillRect;
1103 infoRec->PolyFillRectTiledFlags = 0;
1107 if(infoRec->FillMono8x8PatternSpans || infoRec->FillColor8x8PatternSpans ||
1108 infoRec->FillCacheBltSpans) {
1109 if(!infoRec->FillSpansTiled) {
1111 infoRec->FillSpansTiled = XAAFillSpans;
1112 infoRec->FillSpansTiledFlags = 0;
1116 if(infoRec->TEGlyphRenderer &&
1117 !(infoRec->TEGlyphRendererFlags & NO_TRANSPARENCY)) {
1119 if(!infoRec->PolyText8TE) {
1120 infoRec->PolyText8TE = XAAPolyText8TEColorExpansion;
1121 infoRec->PolyText8TEFlags = infoRec->TEGlyphRendererFlags;
1124 if(!infoRec->PolyText16TE) {
1125 infoRec->PolyText16TE = XAAPolyText16TEColorExpansion;
1126 infoRec->PolyText16TEFlags = infoRec->TEGlyphRendererFlags;
1129 if(!infoRec->PolyGlyphBltTE) {
1130 infoRec->PolyGlyphBltTE = XAAPolyGlyphBltTEColorExpansion;
1131 infoRec->PolyGlyphBltTEFlags = infoRec->TEGlyphRendererFlags;
1135 if(infoRec->TEGlyphRenderer &&
1136 !(infoRec->TEGlyphRendererFlags & TRANSPARENCY_ONLY)) {
1138 if(!infoRec->ImageText8TE) {
1139 infoRec->ImageText8TE = XAAImageText8TEColorExpansion;
1140 infoRec->ImageText8TEFlags = infoRec->TEGlyphRendererFlags;
1143 if(!infoRec->ImageText16TE) {
1144 infoRec->ImageText16TE = XAAImageText16TEColorExpansion;
1145 infoRec->ImageText16TEFlags = infoRec->TEGlyphRendererFlags;
1148 if(!infoRec->ImageGlyphBltTE) {
1149 infoRec->ImageGlyphBltTE = XAAImageGlyphBltTEColorExpansion;
1150 infoRec->ImageGlyphBltTEFlags = infoRec->TEGlyphRendererFlags;
1154 if(infoRec->NonTEGlyphRenderer) {
1155 if(!infoRec->PolyText8NonTE) {
1156 infoRec->PolyText8NonTE = XAAPolyText8NonTEColorExpansion;
1157 infoRec->PolyText8NonTEFlags = infoRec->NonTEGlyphRendererFlags;
1160 if(!infoRec->PolyText16NonTE) {
1161 infoRec->PolyText16NonTE = XAAPolyText16NonTEColorExpansion;
1162 infoRec->PolyText16NonTEFlags = infoRec->NonTEGlyphRendererFlags;
1164 if(!infoRec->PolyGlyphBltNonTE) {
1165 infoRec->PolyGlyphBltNonTE = XAAPolyGlyphBltNonTEColorExpansion;
1166 infoRec->PolyGlyphBltNonTEFlags = infoRec->NonTEGlyphRendererFlags;
1170 if(infoRec->NonTEGlyphRenderer && HaveSolidFillRect) {
1171 if(!infoRec->ImageText8NonTE) {
1172 infoRec->ImageText8NonTE = XAAImageText8NonTEColorExpansion;
1173 infoRec->ImageText8NonTEFlags = infoRec->NonTEGlyphRendererFlags;
1176 if(!infoRec->ImageText16NonTE) {
1177 infoRec->ImageText16NonTE = XAAImageText16NonTEColorExpansion;
1178 infoRec->ImageText16NonTEFlags = infoRec->NonTEGlyphRendererFlags;
1181 if(!infoRec->ImageGlyphBltNonTE) {
1182 infoRec->ImageGlyphBltNonTE = XAAImageGlyphBltNonTEColorExpansion;
1183 infoRec->ImageGlyphBltNonTEFlags = infoRec->NonTEGlyphRendererFlags;
1187 if(!infoRec->PolyRectangleThinSolid && HaveSolidHorVertLine) {
1188 infoRec->PolyRectangleThinSolid = XAAPolyRectangleThinSolid;
1189 infoRec->PolyRectangleThinSolidFlags = infoRec->SolidLineFlags;
1192 if(!infoRec->FillPolygonSolid && HaveSolidFillRect) {
1193 infoRec->FillPolygonSolid = XAAFillPolygonSolid;
1194 infoRec->FillPolygonSolidFlags = infoRec->SolidFillFlags;
1197 if(!infoRec->FillPolygonStippled && (HaveMono8x8PatternFillRect ||
1199 infoRec->FillPolygonStippled = XAAFillPolygonStippled;
1200 infoRec->FillPolygonStippledFlags = infoRec->SolidFillFlags;
1203 if(!infoRec->FillPolygonOpaqueStippled && (HaveMono8x8PatternFillRect ||
1205 infoRec->FillPolygonOpaqueStippled = XAAFillPolygonStippled;
1206 infoRec->FillPolygonOpaqueStippledFlags = infoRec->SolidFillFlags;
1209 if(!infoRec->FillPolygonTiled && (HaveMono8x8PatternFillRect ||
1211 infoRec->FillPolygonTiled = XAAFillPolygonTiled;
1212 infoRec->FillPolygonTiledFlags = infoRec->SolidFillFlags;
1216 if(!infoRec->PolyFillArcSolid && HaveSolidFillRect) {
1217 infoRec->PolyFillArcSolid = XAAPolyFillArcSolid;
1218 infoRec->PolyFillArcSolidFlags = infoRec->SolidFillFlags;
1221 if(!infoRec->PolylinesWideSolid && HaveSolidFillRect) {
1222 infoRec->PolylinesWideSolid = XAAPolylinesWideSolid;
1223 infoRec->PolylinesWideSolidFlags =
1224 infoRec->SolidFillFlags | GXCOPY_ONLY;
1227 if(!infoRec->PutImage && (infoRec->WritePixmap ||
1228 (infoRec->WriteBitmap &&
1229 !(infoRec->WriteBitmapFlags & TRANSPARENCY_ONLY)))) {
1230 infoRec->PutImage = XAAPutImage;
1239 (infoRec->ClippingFlags & HARDWARE_CLIP_SOLID_LINE)))){
1240 if(!infoRec->PolylinesThinSolid) {
1241 infoRec->PolylinesThinSolid = XAAPolyLines;
1242 infoRec->PolylinesThinSolidFlags = infoRec->SolidLineFlags;
1244 if(!infoRec->PolySegmentThinSolid) {
1245 infoRec->PolySegmentThinSolid = XAAPolySegment;
1246 infoRec->PolySegmentThinSolidFlags = infoRec->SolidLineFlags;
1251 (infoRec->ClippingFlags & HARDWARE_CLIP_DASHED_LINE))){
1252 if(!infoRec->PolylinesThinDashed) {
1253 infoRec->PolylinesThinDashed = XAAPolyLinesDashed;
1254 infoRec->PolylinesThinDashedFlags = infoRec->DashedLineFlags;
1256 if(!infoRec->PolySegmentThinDashed) {
1257 infoRec->PolySegmentThinDashed = XAAPolySegmentDashed;
1258 infoRec->PolySegmentThinDashedFlags = infoRec->DashedLineFlags;
1262 if(infoRec->PolylinesThinDashed || infoRec->PolySegmentThinDashed) {
1263 if(!infoRec->ComputeDash)
1264 infoRec->ComputeDash = XAAComputeDash;
1268 Bool haveTexture = infoRec->CPUToScreenTextureFormats &&
1269 infoRec->CPUToScreenTextureDstFormats &&
1270 infoRec->SetupForCPUToScreenTexture2 &&
1271 infoRec->SubsequentCPUToScreenTexture;
1272 Bool haveAlphaTexture = infoRec->CPUToScreenAlphaTextureFormats &&
1273 infoRec->CPUToScreenAlphaTextureDstFormats &&
1274 infoRec->SetupForCPUToScreenAlphaTexture2 &&
1275 infoRec->SubsequentCPUToScreenAlphaTexture;
1277 if(!infoRec->Composite && (haveTexture || haveAlphaTexture))
1278 infoRec->Composite = XAADoComposite;
1280 if(!infoRec->Glyphs && infoRec->WriteBitmap &&
1281 !(infoRec->WriteBitmapFlags & NO_TRANSPARENCY))
1283 infoRec->Glyphs = XAADoGlyphs;
1289 if(!infoRec->ValidateCopyArea && infoRec->CopyArea) {
1290 infoRec->CopyAreaMask = GCWhenForced;
1291 if((infoRec->CopyAreaFlags & GXCOPY_ONLY) ||
1292 (infoRec->CopyAreaFlags & ROP_NEEDS_SOURCE))
1293 infoRec->CopyAreaMask |= GCFunction;
1294 if(infoRec->CopyAreaFlags & NO_PLANEMASK)
1295 infoRec->CopyAreaMask |= GCPlaneMask;
1296 infoRec->ValidateCopyArea = XAAValidateCopyArea;
1299 if(!infoRec->ValidateCopyPlane && infoRec->CopyPlane) {
1300 infoRec->CopyPlaneMask = GCWhenForced;
1301 if((infoRec->CopyPlaneFlags & GXCOPY_ONLY) ||
1302 (infoRec->CopyPlaneFlags & ROP_NEEDS_SOURCE))
1303 infoRec->CopyPlaneMask |= GCFunction;
1304 if(infoRec->CopyPlaneFlags & NO_PLANEMASK)
1305 infoRec->CopyPlaneMask |= GCPlaneMask;
1306 if(infoRec->CopyPlaneFlags & RGB_EQUAL)
1307 infoRec->CopyPlaneMask |= GCForeground | GCBackground;
1308 infoRec->ValidateCopyPlane = XAAValidateCopyPlane;
1311 if(!infoRec->ValidatePutImage && infoRec->PutImage) {
1312 infoRec->PutImageMask = GCWhenForced;
1313 if((infoRec->PutImageFlags & GXCOPY_ONLY) ||
1314 (infoRec->PutImageFlags & ROP_NEEDS_SOURCE))
1315 infoRec->PutImageMask |= GCFunction;
1316 if(infoRec->PutImageFlags & NO_PLANEMASK)
1317 infoRec->PutImageMask |= GCPlaneMask;
1318 if(infoRec->PutImageFlags & RGB_EQUAL)
1319 infoRec->PutImageMask |= GCForeground | GCBackground;
1320 infoRec->ValidatePutImage = XAAValidatePutImage;
1324 if(!infoRec->ValidatePushPixels && infoRec->PushPixelsSolid) {
1325 infoRec->PushPixelsMask = GCFillStyle;
1326 if((infoRec->PushPixelsFlags & GXCOPY_ONLY) ||
1327 (infoRec->PushPixelsFlags & ROP_NEEDS_SOURCE) ||
1328 (infoRec->PushPixelsFlags & TRANSPARENCY_GXCOPY_ONLY))
1329 infoRec->PushPixelsMask |= GCFunction;
1330 if(infoRec->PushPixelsFlags & NO_PLANEMASK)
1331 infoRec->PushPixelsMask |= GCPlaneMask;
1332 if(infoRec->PushPixelsFlags & RGB_EQUAL)
1333 infoRec->PushPixelsMask |= GCForeground;
1334 infoRec->ValidatePushPixels = XAAValidatePushPixels;
1342 if(!infoRec->ValidateFillSpans &&
1343 (infoRec->FillSpansSolid || infoRec->FillSpansStippled ||
1344 infoRec->FillSpansOpaqueStippled || infoRec->FillSpansTiled)) {
1346 int compositeFlags = infoRec->FillSpansSolidFlags |
1347 infoRec->FillSpansStippledFlags |
1348 infoRec->FillSpansOpaqueStippledFlags |
1349 infoRec->FillSpansTiledFlags;
1351 infoRec->FillSpansMask = GCFillStyle | GCTile | GCStipple;
1355 infoRec->FillSpansMask |= GCFunction;
1357 infoRec->FillSpansMask |= GCPlaneMask;
1359 infoRec->FillSpansMask |= GCForeground;
1360 infoRec->ValidateFillSpans = XAAValidateFillSpans;
1369 if(!infoRec->ValidatePolyGlyphBlt &&
1370 (infoRec->PolyGlyphBltTE || infoRec->PolyGlyphBltNonTE)) {
1371 int compositeFlags = infoRec->PolyGlyphBltTEFlags |
1372 infoRec->PolyGlyphBltNonTEFlags;
1374 infoRec->PolyGlyphBltMask = GCFillStyle | GCFont;
1377 (infoRec->PolyGlyphBltNonTEFlags & TRANSPARENCY_GXCOPY_ONLY))
1378 infoRec->PolyGlyphBltMask |= GCFunction;
1380 infoRec->PolyGlyphBltMask |= GCPlaneMask;
1382 infoRec->PolyGlyphBltMask |= GCForeground;
1383 infoRec->ValidatePolyGlyphBlt = XAAValidatePolyGlyphBlt;
1386 if(!infoRec->ValidateImageGlyphBlt &&
1387 (infoRec->ImageGlyphBltTE || infoRec->ImageGlyphBltNonTE)) {
1388 int compositeFlags = infoRec->ImageGlyphBltTEFlags |
1389 infoRec->ImageGlyphBltNonTEFlags;
1391 if(infoRec->ImageGlyphBltNonTE)
1392 compositeFlags |= infoRec->SolidFillFlags;
1394 infoRec->ImageGlyphBltMask = GCFont;
1396 infoRec->ImageGlyphBltMask |= GCPlaneMask;
1398 infoRec->ImageGlyphBltMask |= GCForeground | GCBackground;
1399 infoRec->ValidateImageGlyphBlt = XAAValidateImageGlyphBlt;
1405 if(!infoRec->ValidatePolylines && infoRec->ValidateFillSpans) {
1406 int compositeFlags = infoRec->PolyRectangleThinSolidFlags |
1407 infoRec->PolylinesWideSolidFlags |
1408 infoRec->PolylinesThinSolidFlags |
1409 infoRec->PolySegmentThinSolidFlags |
1410 infoRec->PolySegmentThinDashedFlags |
1411 infoRec->PolylinesThinDashedFlags;
1413 infoRec->ValidatePolylines = XAAValidatePolylines;
1414 infoRec->PolylinesMask =
1415 infoRec->FillSpansMask | GCLineStyle | GCLineWidth;
1417 if(infoRec->PolySegmentThinDashed || infoRec->PolylinesThinDashed)
1418 infoRec->PolylinesMask |= GCDashList;
1420 infoRec->PolylinesMask |= GCPlaneMask;
1423 infoRec->PolylinesMask |= GCFunction;
1425 infoRec->PolylinesMask |= GCForeground;
1431 if(!infoRec->StippledFillChooser)
1432 infoRec->StippledFillChooser = XAAStippledFillChooser;
1434 if(!infoRec->OpaqueStippledFillChooser)
1435 infoRec->OpaqueStippledFillChooser = XAAOpaqueStippledFillChooser;
1437 if(!infoRec->TiledFillChooser)
1438 infoRec->TiledFillChooser = XAATiledFillChooser;
1443 if(infoRec->WriteBitmapToCache) {}
1444 else if(infoRec->WriteBitmap &&
1445 !(infoRec->WriteBitmapFlags & TRANSPARENCY_ONLY))
1446 infoRec->WriteBitmapToCache = XAAWriteBitmapToCache;
1447 else if(infoRec->Flags & LINEAR_FRAMEBUFFER)
1448 infoRec->WriteBitmapToCache = XAAWriteBitmapToCacheLinear;
1450 infoRec->PixmapCacheFlags |= DO_NOT_BLIT_STIPPLES;
1452 if(infoRec->WritePixmapToCache) {}
1453 else if(infoRec->WritePixmap && !(infoRec->WritePixmapFlags & NO_GXCOPY))
1454 infoRec->WritePixmapToCache = XAAWritePixmapToCache;
1455 else if(infoRec->Flags & LINEAR_FRAMEBUFFER)
1456 infoRec->WritePixmapToCache = XAAWritePixmapToCacheLinear;
1458 infoRec->Flags &= ~PIXMAP_CACHE;
1461 infoRec->Flags &= ~PIXMAP_CACHE;
1463 if(infoRec->WriteMono8x8PatternToCache) {}
1464 else if(infoRec->PixmapCacheFlags & CACHE_MONO_8x8) {
1465 if(infoRec->WritePixmapToCache)
1466 infoRec->WriteMono8x8PatternToCache = XAAWriteMono8x8PatternToCache;
1468 infoRec->PixmapCacheFlags &= ~CACHE_MONO_8x8;
1471 if(infoRec->WriteColor8x8PatternToCache) {}
1472 else if(infoRec->PixmapCacheFlags & CACHE_COLOR_8x8) {
1473 if(infoRec->WritePixmapToCache && infoRec->WriteBitmapToCache)
1474 infoRec->WriteColor8x8PatternToCache = XAAWriteColor8x8PatternToCache;
1476 infoRec->PixmapCacheFlags &= ~CACHE_COLOR_8x8;
1479 if(infoRec->CachePixelGranularity < 0) {
1482 case 8: infoRec->CachePixelGranularity = 4; break;
1483 case 16: infoRec->CachePixelGranularity = 2; break;
1484 case 32: infoRec->CachePixelGranularity = 1; break;
1489 infoRec->CachePixelGranularity *= 2;
1494 if(!infoRec->CacheTile && infoRec->WritePixmapToCache)
1495 infoRec->CacheTile = XAACacheTile;
1496 if(!infoRec->CacheMonoStipple && infoRec->WritePixmapToCache)
1497 infoRec->CacheMonoStipple = XAACacheMonoStipple;
1498 if(!infoRec->CacheStipple && infoRec->WriteBitmapToCache)
1499 infoRec->CacheStipple = XAACacheStipple;
1500 if(!infoRec->CacheMono8x8Pattern && infoRec->WriteMono8x8PatternToCache)
1501 infoRec->CacheMono8x8Pattern = XAACacheMono8x8Pattern;
1502 if(!infoRec->CacheColor8x8Pattern && infoRec->WriteColor8x8PatternToCache)
1503 infoRec->CacheColor8x8Pattern = XAACacheColor8x8Pattern;
1505 if((infoRec->Flags & PIXMAP_CACHE) && !infoRec->InitPixmapCache) {
1506 infoRec->InitPixmapCache = XAAInitPixmapCache;
1507 infoRec->ClosePixmapCache = XAAClosePixmapCache;