Fix lockup on faster machines when drawing in multiple clip rectangles
(e.g. when part of a 3D window is obscured by another window)main
parent
bb91bc0879
commit
cc45cc0609
|
@ -477,6 +477,7 @@ extern int radeon_cp_flip( struct inode *inode, struct file *filp,
|
|||
# define RADEON_CNTL_HOSTDATA_BLT 0x00009400
|
||||
# define RADEON_CNTL_PAINT_MULTI 0x00009A00
|
||||
# define RADEON_CNTL_BITBLT_MULTI 0x00009B00
|
||||
# define RADEON_CNTL_SET_SCISSORS 0xC0001E00
|
||||
|
||||
#define RADEON_CP_PACKET_MASK 0xC0000000
|
||||
#define RADEON_CP_PACKET_COUNT_MASK 0x3fff0000
|
||||
|
|
|
@ -48,10 +48,9 @@ static inline void radeon_emit_clip_rect( drm_radeon_private_t *dev_priv,
|
|||
DRM_DEBUG( " box: x1=%d y1=%d x2=%d y2=%d\n",
|
||||
box->x1, box->y1, box->x2, box->y2 );
|
||||
|
||||
BEGIN_RING( 4 );
|
||||
OUT_RING( CP_PACKET0( RADEON_RE_TOP_LEFT, 0 ) );
|
||||
BEGIN_RING( 3 );
|
||||
OUT_RING( CP_PACKET3( RADEON_CNTL_SET_SCISSORS, 1 ));
|
||||
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();
|
||||
|
|
Loading…
Reference in New Issue