[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Xvideo acceleration: GATOS for PPC?



Michel Lanners <mlan@cpu.lu> writes:

> - Mach64/i386 without GATOS: no Xvideo (driver is broken); vlc uses 45%
>   + 16% cpu (two 'consuming' threads); X uses 25% cpu.
> - Mach64/i386 with GATOS driver: Xvideo works, vlc uses 25% (other
>   threads insignificant), X uses between 2% and 5%
> - Voodoo3/i386: Xvideo works, X around 25% and vlc around 30% (roughly)
> - Rage128/ppc: Xvideo works, X between 10% and 20%, rest consumed by
>   vlc.
>
> The Mach64 is on a Dell laptop w/ Celeron 600, the Voodoo is a PIII/666
> desktop, and the ppc is my TiBook/400.
>
> So the question is: why does X on the Dell use so little CPU, and why
> can't we achieve the same thing on ppc (the Voodoo was for comparison
> only)?

The XVideo stuff for mach64 does not work on ppc in the current X, and
using the GATOS stuff helped immensely, although I still don't have
the performance on my Lombard to play DVDs, oh well.  Before GATOS I
got about 55% frames deocded, after I get about 77% frames decoded.  I
wonder if I'd be able to get a 23% increase, without altivec?  seems
unlikely.

Oh yeah, I also pulled the endian related patch from the xfree source:

Index: atimach64.c
===================================================================
RCS file: /cvs/livid/gatos-ati/ati_xv/ati.2/atimach64.c,v
retrieving revision 1.4
diff -u -r1.4 atimach64.c
--- atimach64.c	2001/05/31 18:47:59	1.4
+++ atimach64.c	2001/08/30 13:53:19
@@ -1600,6 +1600,25 @@
          */
         switch (iDWord)
         {
+#if !defined(__hppa__)	/* no mmio instrs on hppa */
+#if X_BYTE_ORDER == X_BIG_ENDIAN
+	    case  0:  xf86WriteMmio32Be(pDst +  0, 0, *(pSrc +  0));
+	    case  1:  xf86WriteMmio32Be(pDst +  1, 0, *(pSrc +  1));
+	    case  2:  xf86WriteMmio32Be(pDst +  2, 0, *(pSrc +  2));
+	    case  3:  xf86WriteMmio32Be(pDst +  3, 0, *(pSrc +  3));
+	    case  4:  xf86WriteMmio32Be(pDst +  4, 0, *(pSrc +  4));
+	    case  5:  xf86WriteMmio32Be(pDst +  5, 0, *(pSrc +  5));
+	    case  6:  xf86WriteMmio32Be(pDst +  6, 0, *(pSrc +  6));
+	    case  7:  xf86WriteMmio32Be(pDst +  7, 0, *(pSrc +  7));
+	    case  8:  xf86WriteMmio32Be(pDst +  8, 0, *(pSrc +  8));
+	    case  9:  xf86WriteMmio32Be(pDst +  9, 0, *(pSrc +  9));
+	    case 10:  xf86WriteMmio32Be(pDst + 10, 0, *(pSrc + 10));
+	    case 11:  xf86WriteMmio32Be(pDst + 11, 0, *(pSrc + 11));
+	    case 12:  xf86WriteMmio32Be(pDst + 12, 0, *(pSrc + 12));
+	    case 13:  xf86WriteMmio32Be(pDst + 13, 0, *(pSrc + 13));
+	    case 14:  xf86WriteMmio32Be(pDst + 14, 0, *(pSrc + 14));
+	    case 15:  xf86WriteMmio32Be(pDst + 15, 0, *(pSrc + 15));
+#else
             case  0:  MMIO_OUT32(pDst +  0, 0, *(pSrc +  0));
             case  1:  MMIO_OUT32(pDst +  1, 0, *(pSrc +  1));
             case  2:  MMIO_OUT32(pDst +  2, 0, *(pSrc +  2));
@@ -1616,7 +1635,8 @@
             case 13:  MMIO_OUT32(pDst + 13, 0, *(pSrc + 13));
             case 14:  MMIO_OUT32(pDst + 14, 0, *(pSrc + 14));
             case 15:  MMIO_OUT32(pDst + 15, 0, *(pSrc + 15));
-
+#endif
+#endif
             default:    /* Muffle compiler */
                 break;
         }

-- 
Josh Huber                                   | huber@debian.org |



Reply to: