mga-1.4.12-bigendian.patch 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. This is pretty lame, sticking INREG into the blit path is probably going
  2. to hurt performance. Which, whatever, G-series are old cards, but still.
  3. Redo me to put the needed bits in the pMga at init time instead. - ajax
  4. diff -up xf86-video-mga-1.4.12/src/mga_dri.c.jx xf86-video-mga-1.4.12/src/mga_dri.c
  5. --- xf86-video-mga-1.4.12/src/mga_dri.c.jx 2008-08-15 13:55:06.000000000 -0400
  6. +++ xf86-video-mga-1.4.12/src/mga_dri.c 2011-06-20 12:04:43.047560274 -0400
  7. @@ -374,7 +374,8 @@ void MGAGetQuiescence( ScrnInfoPtr pScrn
  8. pMga->SrcOrg = 0;
  9. OUTREG( MGAREG_DSTORG, pMga->DstOrg );
  10. - OUTREG( MGAREG_OPMODE, MGAOPM_DMA_BLIT );
  11. + OUTREG( MGAREG_OPMODE,
  12. + (INREG(MGAREG_OPMODE) & ~MGAOPM_DMA_MASK) | MGAOPM_DMA_BLIT );
  13. OUTREG( MGAREG_CXBNDRY, 0xFFFF0000 ); /* (maxX << 16) | minX */
  14. OUTREG( MGAREG_YTOP, 0x00000000 ); /* minPixelPointer */
  15. OUTREG( MGAREG_YBOT, 0x007FFFFF ); /* maxPixelPointer */
  16. diff -up xf86-video-mga-1.4.12/src/mga_exa.c.jx xf86-video-mga-1.4.12/src/mga_exa.c
  17. --- xf86-video-mga-1.4.12/src/mga_exa.c.jx 2009-04-27 11:47:42.000000000 -0400
  18. +++ xf86-video-mga-1.4.12/src/mga_exa.c 2011-06-20 12:08:14.368304719 -0400
  19. @@ -701,7 +701,8 @@ mgaUploadToScreen(PixmapPtr pDst, int x,
  20. mgaSetup(pMga, pDst, NULL, 10);
  21. - OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT);
  22. + OUTREG(MGAREG_OPMODE,
  23. + (INREG(MGAREG_OPMODE) & ~MGAOPM_DMA_MASK) | MGAOPM_DMA_BLIT);
  24. OUTREG(MGAREG_DSTORG, exaGetPixmapOffset(pDst));
  25. OUTREG(MGAREG_PITCH, mgaGetPixmapPitch(pDst));
  26. OUTREG(MGAREG_PLNWT, 0xffffffff);
  27. diff -up xf86-video-mga-1.4.12/src/mga_reg.h.jx xf86-video-mga-1.4.12/src/mga_reg.h
  28. --- xf86-video-mga-1.4.12/src/mga_reg.h.jx 2011-06-20 11:57:31.000000000 -0400
  29. +++ xf86-video-mga-1.4.12/src/mga_reg.h 2011-06-20 12:01:22.891854925 -0400
  30. @@ -124,6 +124,7 @@
  31. #define MGAOPM_DMA_GENERAL (0x00 << 2)
  32. #define MGAOPM_DMA_BLIT (0x01 << 2)
  33. #define MGAOPM_DMA_VECTOR (0x10 << 2)
  34. +#define MGAOPM_DMA_MASK (0x11 << 2)
  35. /* MACCESS register additives */
  36. #define MGAMAC_PW8 0x00
  37. diff -up xf86-video-mga-1.4.12/src/mga_storm.c.jx xf86-video-mga-1.4.12/src/mga_storm.c
  38. --- xf86-video-mga-1.4.12/src/mga_storm.c.jx 2011-06-20 11:57:31.000000000 -0400
  39. +++ xf86-video-mga-1.4.12/src/mga_storm.c 2011-06-20 12:11:51.721070061 -0400
  40. @@ -2192,6 +2192,7 @@ MGAFillSolidRectsDMA(
  41. MGAPtr pMga = MGAPTR(pScrn);
  42. XAAInfoRecPtr infoRec = pMga->AccelInfoRec;
  43. CARD32 *base = (CARD32*)pMga->ILOADBase;
  44. + CARD32 opmode;
  45. CHECK_DMA_QUIESCENT(pMga, pScrn);
  46. @@ -2207,7 +2208,8 @@ MGAFillSolidRectsDMA(
  47. if(!nBox) return;
  48. - OUTREG(MGAREG_OPMODE, MGAOPM_DMA_GENERAL);
  49. + opmode = INREG(MGAREG_OPMODE) & ~MGAOPM_DMA_MASK;
  50. + OUTREG(MGAREG_OPMODE, opmode | MGAOPM_DMA_GENERAL);
  51. while(nBox) {
  52. base[0] = DMAINDICES(MGAREG_FXBNDRY, MGAREG_YDSTLEN + MGAREG_EXEC,
  53. MGAREG_FXBNDRY, MGAREG_YDSTLEN + MGAREG_EXEC);
  54. @@ -2219,7 +2221,7 @@ MGAFillSolidRectsDMA(
  55. pBox++;
  56. base += 5; nBox -= 2;
  57. }
  58. - OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT);
  59. + OUTREG(MGAREG_OPMODE, opmode | MGAOPM_DMA_BLIT);
  60. }
  61. static void
  62. @@ -2256,9 +2258,11 @@ MGAFillSolidSpansDMA(
  63. }
  64. if(n) {
  65. + CARD32 opmode;
  66. if(n > 838860) n = 838860; /* maximum number we have room for */
  67. - OUTREG(MGAREG_OPMODE, MGAOPM_DMA_GENERAL);
  68. + opmode = INREG(MGAREG_OPMODE) | MGAOPM_DMA_MASK;
  69. + OUTREG(MGAREG_OPMODE, opmode | MGAOPM_DMA_GENERAL);
  70. while(n) {
  71. base[0] = DMAINDICES(MGAREG_FXBNDRY, MGAREG_YDSTLEN + MGAREG_EXEC,
  72. MGAREG_FXBNDRY, MGAREG_YDSTLEN + MGAREG_EXEC);
  73. @@ -2270,7 +2274,7 @@ MGAFillSolidSpansDMA(
  74. ppt++;
  75. base += 5; n -= 2;
  76. }
  77. - OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT);
  78. + OUTREG(MGAREG_OPMODE, opmode | MGAOPM_DMA_BLIT);
  79. }
  80. if(infoRec->ClipBox) {