diff options
Diffstat (limited to 'shared-core/radeon_state.c')
| -rw-r--r-- | shared-core/radeon_state.c | 25 | 
1 files changed, 17 insertions, 8 deletions
diff --git a/shared-core/radeon_state.c b/shared-core/radeon_state.c index 8c1a4065..b4478019 100644 --- a/shared-core/radeon_state.c +++ b/shared-core/radeon_state.c @@ -174,6 +174,14 @@ static __inline__ int radeon_check_and_fixup_packets(drm_radeon_private_t *  		}  		break; +	case R200_EMIT_VAP_CTL: { +			RING_LOCALS; +			BEGIN_RING(2); +			OUT_RING_REG(RADEON_SE_TCL_STATE_FLUSH, 0); +			ADVANCE_RING(); +		} +		break; +  	case RADEON_EMIT_RB3D_COLORPITCH:  	case RADEON_EMIT_RE_LINE_PATTERN:  	case RADEON_EMIT_SE_LINE_WIDTH: @@ -201,7 +209,6 @@ static __inline__ int radeon_check_and_fixup_packets(drm_radeon_private_t *  	case R200_EMIT_TCL_LIGHT_MODEL_CTL_0:  	case R200_EMIT_TFACTOR_0:  	case R200_EMIT_VTX_FMT_0: -	case R200_EMIT_VAP_CTL:  	case R200_EMIT_MATRIX_SELECT_0:  	case R200_EMIT_TEX_PROC_CTL_2:  	case R200_EMIT_TCL_UCP_VERT_BLEND_CTL: @@ -861,7 +868,7 @@ static void radeon_cp_dispatch_clear(drm_device_t * dev,  		 */  		dev_priv->sarea_priv->ctx_owner = 0; -		if ((dev_priv->flags & CHIP_HAS_HIERZ) +		if ((dev_priv->flags & RADEON_HAS_HIERZ)  		    && (flags & RADEON_USE_HIERZ)) {  			/* FIXME : reverse engineer that for Rx00 cards */  			/* FIXME : the mask supposedly contains low-res z values. So can't set @@ -906,7 +913,7 @@ static void radeon_cp_dispatch_clear(drm_device_t * dev,  		for (i = 0; i < nbox; i++) {  			int tileoffset, nrtilesx, nrtilesy, j;  			/* it looks like r200 needs rv-style clears, at least if hierz is not enabled? */ -			if ((dev_priv->flags & CHIP_HAS_HIERZ) +			if ((dev_priv->flags & RADEON_HAS_HIERZ)  			    && !(dev_priv->microcode_version == UCODE_R200)) {  				/* FIXME : figure this out for r200 (when hierz is enabled). Or  				   maybe r200 actually doesn't need to put the low-res z value into @@ -990,7 +997,7 @@ static void radeon_cp_dispatch_clear(drm_device_t * dev,  		}  		/* TODO don't always clear all hi-level z tiles */ -		if ((dev_priv->flags & CHIP_HAS_HIERZ) +		if ((dev_priv->flags & RADEON_HAS_HIERZ)  		    && (dev_priv->microcode_version == UCODE_R200)  		    && (flags & RADEON_USE_HIERZ))  			/* r100 and cards without hierarchical z-buffer have no high-level z-buffer */ @@ -1262,9 +1269,9 @@ static void radeon_cp_dispatch_swap(drm_device_t * dev)  		DRM_DEBUG("dispatch swap %d,%d-%d,%d\n", x, y, w, h); -		BEGIN_RING(7); +		BEGIN_RING(9); -		OUT_RING(CP_PACKET3(RADEON_CNTL_BITBLT_MULTI, 5)); +		OUT_RING(CP_PACKET0(RADEON_DP_GUI_MASTER_CNTL, 0));  		OUT_RING(RADEON_GMC_SRC_PITCH_OFFSET_CNTL |  			 RADEON_GMC_DST_PITCH_OFFSET_CNTL |  			 RADEON_GMC_BRUSH_NONE | @@ -1276,6 +1283,7 @@ static void radeon_cp_dispatch_swap(drm_device_t * dev)  		/* Make this work even if front & back are flipped:  		 */ +		OUT_RING(CP_PACKET0(RADEON_SRC_PITCH_OFFSET, 1));  		if (dev_priv->current_page == 0) {  			OUT_RING(dev_priv->back_pitch_offset);  			OUT_RING(dev_priv->front_pitch_offset); @@ -1284,6 +1292,7 @@ static void radeon_cp_dispatch_swap(drm_device_t * dev)  			OUT_RING(dev_priv->back_pitch_offset);  		} +		OUT_RING(CP_PACKET0(RADEON_SRC_X_Y, 2));  		OUT_RING((x << 16) | y);  		OUT_RING((x << 16) | y);  		OUT_RING((w << 16) | h); @@ -3031,9 +3040,9 @@ static int radeon_cp_getparam(DRM_IOCTL_ARGS)  		break;  	case RADEON_PARAM_CARD_TYPE: -		if (dev_priv->flags & CHIP_IS_PCIE) +		if (dev_priv->flags & RADEON_IS_PCIE)  			value = RADEON_CARD_PCIE; -		else if (dev_priv->flags & CHIP_IS_AGP) +		else if (dev_priv->flags & RADEON_IS_AGP)  			value = RADEON_CARD_AGP;  		else  			value = RADEON_CARD_PCI;  | 
