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