On Monday 01 Jul 2002 9:06 pm, Michel Dänzer scribed numinously:"
> On Mon, 2002-07-01 at 21:28, Tim Smith wrote:
> > -   BEGIN_RING( 4 );
> > -   OUT_RING( CP_PACKET0( RADEON_RE_TOP_LEFT, 0 ) );
> > -   OUT_RING( (box->y1 << 16) | box->x1 );
> > -   OUT_RING( CP_PACKET0( RADEON_RE_WIDTH_HEIGHT, 0 ) );
> > -/* OUT_RING( ((box->y2 - 1) << 16) | (box->x2 - 1) );*/
> > -   OUT_RING( (box->y2 << 16) | box->x2 );
> > -   ADVANCE_RING();
> > +        BEGIN_RING( 3 );
> > +        OUT_RING( CP_PACKET3( RADEON_CCE_SET_SCISSORS, 1 ));
> > +        OUT_RING( (box->y1 << 16) | box->x1 );
> > +        OUT_RING( (box->y2 << 16) | box->x2 );
> > +        ADVANCE_RING();
>
> Add Jacek's fix to use the commented out variant with -1, and it's
> perfect! :) Or does the command account for that? Either way, great job.

As far as I can tell, the command simply causes the CCE to put the same 
register writes on the command FIFO itself. However, it gets to manage its 
own state better while doing that because it knows what's going on, rather 
than having to recognise a write to RE_TOP_LEFT and put itself into a 
different state waiting for a write to RE_WIDTH_HEIGHT to happen (eek!).

I wondered about that commented-out line. I assumed (yeah, I know :-) that 
it was there because someone was trying different things, and left the one 
that didn't work commented out. The question I presume being whether the 
rectangle is bottom-right inclusive of bottom-right exclusive. I think it's 
inclusive, myself (unlike normal drawing of rectangles when you specify a 
bottom-right corner; I think they want you to use width/height) because 
otherwise it would be possible to have a screen whose bottom right lines 
could never be included in the clipping rectangle; you could put a pixel at 
0x1FFF, 0x1FFF, but never set up a clipping rectangle that allowed it to be 
drawn. Also, the screen seems correct as-is; if the bottom/right were being 
specified too wide, I would expect the top left of my menus to be 
overwritten, which would be quite obvious as they're bevelled. Am I missing 
something?

> Also, 'CCE' makes me think of a Rage128, the Radeon engine is usually
> called 'CP', and the existing commands in the file are simply called
> RADEON_CNTL_* .

Oops. Cut 'n' paste -itis. Yes, call it RADEON_CNTL_SET_SCISSORS. Much more 
sensible. The way I read the docs, the CP reads the command FIFO (as 
opposed to PIO mode where you manipulate the registers directly), and the 
CCE reads the ring buffer and feeds the command FIFO.

-- 
Tim Smith ([EMAIL PROTECTED])
It's the frost. Sometimes it makes the blade stick.



-------------------------------------------------------
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

Reply via email to