mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-05 22:58:04 +02:00
fix depth clears on radeon 7500 + tcl
This commit is contained in:
parent
62ba1e3537
commit
9eef7a1c13
3 changed files with 13 additions and 4 deletions
|
|
@ -744,7 +744,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init )
|
|||
* and screwing with the clear operation.
|
||||
*/
|
||||
dev_priv->depth_clear.rb3d_cntl = (RADEON_PLANE_MASK_ENABLE |
|
||||
(dev_priv->color_fmt << 10));
|
||||
(dev_priv->color_fmt << 10) |
|
||||
(1<<15));
|
||||
|
||||
dev_priv->depth_clear.rb3d_zstencilcntl =
|
||||
(dev_priv->depth_fmt |
|
||||
|
|
|
|||
|
|
@ -480,6 +480,7 @@ extern int radeon_cp_cmdbuf( struct inode *inode, struct file *filp,
|
|||
#define RADEON_CP_PACKET1_REG1_MASK 0x003ff800
|
||||
|
||||
#define RADEON_VTX_Z_PRESENT (1 << 31)
|
||||
#define RADEON_VTX_PKCOLOR_PRESENT (1 << 3)
|
||||
|
||||
#define RADEON_PRIM_TYPE_NONE (0 << 0)
|
||||
#define RADEON_PRIM_TYPE_POINT (1 << 0)
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ static void radeon_cp_dispatch_clear( drm_device_t *dev,
|
|||
radeon_emit_clip_rect( dev_priv,
|
||||
&sarea_priv->boxes[i] );
|
||||
|
||||
BEGIN_RING( 25 );
|
||||
BEGIN_RING( 28 );
|
||||
|
||||
RADEON_WAIT_UNTIL_2D_IDLE();
|
||||
|
||||
|
|
@ -448,8 +448,12 @@ static void radeon_cp_dispatch_clear( drm_device_t *dev,
|
|||
OUT_RING_REG( RADEON_SE_CNTL,
|
||||
depth_clear->se_cntl );
|
||||
|
||||
OUT_RING( CP_PACKET3( RADEON_3D_DRAW_IMMD, 10 ) );
|
||||
OUT_RING( RADEON_VTX_Z_PRESENT );
|
||||
/* Radeon 7500 doesn't like vertices without
|
||||
* color.
|
||||
*/
|
||||
OUT_RING( CP_PACKET3( RADEON_3D_DRAW_IMMD, 13 ) );
|
||||
OUT_RING( RADEON_VTX_Z_PRESENT |
|
||||
RADEON_VTX_PKCOLOR_PRESENT);
|
||||
OUT_RING( (RADEON_PRIM_TYPE_RECT_LIST |
|
||||
RADEON_PRIM_WALK_RING |
|
||||
RADEON_MAOS_ENABLE |
|
||||
|
|
@ -459,14 +463,17 @@ static void radeon_cp_dispatch_clear( drm_device_t *dev,
|
|||
OUT_RING( depth_boxes[i].ui[CLEAR_X1] );
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_Y1] );
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_DEPTH] );
|
||||
OUT_RING( 0x0 );
|
||||
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_X1] );
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_Y2] );
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_DEPTH] );
|
||||
OUT_RING( 0x0 );
|
||||
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_X2] );
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_Y2] );
|
||||
OUT_RING( depth_boxes[i].ui[CLEAR_DEPTH] );
|
||||
OUT_RING( 0x0 );
|
||||
|
||||
ADVANCE_RING();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue