Re: [Dri-devel] Re: r128 PPC patches

2002-07-18 Thread Benjamin Herrenschmidt

AGP has become very stable here since the radeon driver doesn't update
the ring write pointer in ADVANCE_RING() but in the new COMMIT_RING().
Seems updating it 'too often' is no good, for whatever 'too often' may
mean.

I hate that. It should be fully stable or I would consider it
unuseable :(

On my side, I've temporarily given up trying to understand what was
going on. Does anybody have useful contacts at ATI that could help ?

I have 2 possible ideas:

 - Some athlon-like cache aliasing issues, though I don't think PPCs
do that aggressive prefetch accross page boundaries

 - Some magic skew value to set in the chip to compensate for some
bus arbitration issues when mixing AGP master transfers and PCI slave
transfers. Or maybe just disabling some of the AGP features like
Fast Write...

Ben.



---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Re: r128 PPC patches

2002-07-18 Thread Michel Dänzer

On Thu, 2002-07-18 at 18:20, Benjamin Herrenschmidt wrote: 
 AGP has become very stable here since the radeon driver doesn't update
 the ring write pointer in ADVANCE_RING() but in the new COMMIT_RING().
 Seems updating it 'too often' is no good, for whatever 'too often' may
 mean.
 
 I hate that. It should be fully stable or I would consider it
 unuseable :(

Define 'fully stable' - no crash to infinity and beyond? ;) I can run for
days without crashes on this TiBook, I consider that quite good.

 On my side, I've temporarily given up trying to understand what was
 going on. Does anybody have useful contacts at ATI that could help ?
 
 I have 2 possible ideas:
 
  - Some athlon-like cache aliasing issues, though I don't think PPCs
 do that aggressive prefetch accross page boundaries

And in that case, I'd expect the problem to be (mostly) independent from
driver changes.

  - Some magic skew value to set in the chip to compensate for some
 bus arbitration issues when mixing AGP master transfers and PCI slave
 transfers. Or maybe just disabling some of the AGP features like
 Fast Write...

Something like that seems much more likely to me, seeing as throttling
the ring write pointer updates helps a great deal.


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast



---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Re: r128 PPC patches

2002-07-17 Thread Leif Delgass

On Tue, 16 Jul 2002, Leif Delgass wrote:

  These look very good to me, I'll commit them. Leif, can you verify they
  don't break x86? I'd be very surprised, but it wouldn't be the first
  time. :)
 
 I'll give these a try once I've updated my tree, I was testing from 
 binaries before.

The changes don't seem to break anything on x86.  I tried with and without 
the texutil.c changes.

-- 
Leif Delgass 
http://www.retinalburn.net



---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Re: r128 PPC patches

2002-07-17 Thread Michel Dänzer

On Wed, 2002-07-17 at 16:50, Leif Delgass wrote:
 On Tue, 16 Jul 2002, Leif Delgass wrote:
 
   These look very good to me, I'll commit them. Leif, can you verify they
   don't break x86? I'd be very surprised, but it wouldn't be the first
   time. :)
  
  I'll give these a try once I've updated my tree, I was testing from 
  binaries before.
 
 The changes don't seem to break anything on x86.  I tried with and without 
 the texutil.c changes.

Thanks for testing. I've cleaned up the patch slightly to better fit
into the existing code and added a kludge for HOST_BIG_ENDIAN_EN:

http://www.penguinppc.org/~daenzer/DRI/r128-dri-endianness.diff

Henry, if this works for you, I'll commit it.


-- 
Earthling Michel Dänzer (MrCooper)/ Debian GNU/Linux (powerpc) developer
XFree86 and DRI project member   /  CS student, Free Software enthusiast



---
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel



Re: [Dri-devel] Re: r128 PPC patches

2002-07-17 Thread Henry Worth


 I applied and retested it, looks good. One pedantic little change to 
 the diff
 that I missed is attached, it might avoid future problems.

Another version to fix a typo.

Henry


--- r128-dri-endianness.diff.orig   Wed Jul 17 12:02:48 2002
+++ r128-dri-endianness.diffWed Jul 17 12:03:34 2002
 -120,7 +120,7 
 -} while (0)
 +#define VERT_SET_RGBA( v, c )   \
 +  do {\
-+ r128_color_t *vc = (r128_color_t *)v-ui[coloroffset]; \
++ r128_color_t *vc = (r128_color_t *)(v)-ui[coloroffset]; \
 + vc-blue  = (c)[2];  \
 + vc-green = (c)[1];  \
 + vc-red   = (c)[0];  \



Re: [Dri-devel] Re: r128 PPC patches

2002-07-16 Thread Leif Delgass

On 17 Jul 2002, Michel Dänzer wrote:

 On Wed, 2002-07-17 at 02:10, Henry Worth wrote:
  
  Attached are patches for r128 on ppc. Rather little change to the r128 code
  was needed once I gave up on the char arrays for the vertex colors, and
  embraced the hw specific ordered named fields provided in the *_color_t
  provided by t_dd_vertex.h.
  
  1) Revert PACK*LE from texutil.c as per previous emails.
 
 Thank you for breaking the radeon and mach64 drivers on big endian
 machines. ;) We've got to find a better solution here, I must confess I
 still don't understand how it can not work with PACK*LE though. Maybe
 the HOST_BIG_ENDIAN_EN bit in the DP_DATATYPE register (set in
 R128EngineInit() in the 2D driver) is interfering, causing the texture
 data to be byte-swapped in the HOST_DATA registers? If so, your changes
 should not be really correct for 16 bit anyway. I've been there while
 playing with the various possibilities of fixing endianness in the
 radeon driver, it looked mostly good but e.g. the floor texture in
 armagetron showed the problem.

I don't have r128 docs, so I'm not sure if it's analogous, but for mach64
we don't set HOST_BIG_ENDIAN_ENABLE in HOST_CNTL, and as far as I know the
DDX doesn't either, so that could make the difference.
 
  2) t_dd_vbtmp.h has color assignments in the emit functions that use
  char arrays for non-RGBA without attention to endiness. Changed
  to use the correctly ordered named fields from the t_dd_vertex.h 
  definition
  of the hw vertex color_t. Added VERTEX_COLOR_T macro so hw
  driver can pass in its hw vertex *_color_t; so the assignments can be
  made in correct order. Added macro definition to *_vb.c of the
  various drivers.
  
  3) Changed r128_tris.c VERT_* macros for t_dd_tritmp.h to use
  the named fields instead of an char array.
  
  4) Added some casts to r128_ioctl.c to eliminate compile warnings.
 
 These look very good to me, I'll commit them. Leif, can you verify they
 don't break x86? I'd be very surprised, but it wouldn't be the first
 time. :)

I'll give these a try once I've updated my tree, I was testing from 
binaries before.

-- 
Leif Delgass 
http://www.retinalburn.net




---
This sf.net email is sponsored by: Jabber - The world's fastest growing
real-time communications platform! Don't just IM. Build it in!
http://www.jabber.com/osdn/xim
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel