On Tue, 2002-07-02 at 00:32, Tim Smith wrote:
> Here it is. It'll need cleaning up if it works, but it'll do as a test.

Took me quite some fiddling to get it working here, but that's mostly
due to the non-standard and not-quite-finished agpgart implementation
for Macs. Nothing to worry about, works great now (just played a couple
minutes of bzflag with it :).


Comments:

> +      fprintf( stderr, "%s( %d )\n", __FUNCTION__, clear );

s/clear/frame/ - typo, I presume.


> @@ -1189,7 +1188,11 @@ drm_buf_t *radeon_freelist_get( drm_devi
>       start = dev_priv->last_buf;
>  
>       for ( t = 0 ; t < dev_priv->usec_timeout ; t++ ) {
> +             /* Testing scratch register writeback
>               u32 done_age = RADEON_READ( RADEON_LAST_DISPATCH_REG );
> +             */
> +             u32 done_age = dev_priv->scratch[1];
> +             DRM_DEBUG("done_age = %d\n",done_age);
>               for ( i = start ; i < dma->buf_count ; i++ ) {
>                       buf = dma->buflist[i];
>                       buf_priv = buf->dev_private;

[...]

> Index: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/radeon_state.c
> ===================================================================
> RCS file: 
>/cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/radeon_state.c,v
> retrieving revision 1.17
> diff -u -3 -p -r1.17 radeon_state.c
> --- xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/radeon_state.c 27 Jun 
>2002 17:56:39 -0000      1.17
> +++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/radeon_state.c 1 Jul 
>2002 21:36:58 -0000
> @@ -1878,6 +1878,15 @@ int radeon_cp_getparam( struct inode *in
>       case RADEON_PARAM_AGP_BUFFER_OFFSET:
>               value = dev_priv->agp_buffers_offset;
>               break;
> +     case RADEON_PARAM_LAST_FRAME:
> +             value = dev_priv->scratch[0];
> +             break;
> +     case RADEON_PARAM_LAST_DISPATCH:
> +             value = dev_priv->scratch[1];
> +             break;
> +     case RADEON_PARAM_LAST_CLEAR:
> +             value = dev_priv->scratch[2];
> +             break;
>       default:
>               return -EINVAL;
>       }

The scratch register values need to be read with DRM_READ32(), which
accounts both for endianness and memory barriers. So it would be

                u32 done_age = DRM_READ32(&dev_priv->scratch[1]);

etc.


Nice work!


-- 
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
We have stuff for geeks like you.
http://thinkgeek.com/sf
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to