Michel Lanners <[EMAIL PROTECTED]> 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 | [EMAIL PROTECTED] |