⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2d_engine.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
		else
			temp_mode &= ~REG_SUBMODE_CTRL_BITBLT_TRANSPARENT_BIT;

	   DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SUBMODE_CTRL_REG_ADDR | temp_mode));
		if (g2d_data->src_color_mode==G2D_SRC_16BPP_LUT_DISABLE)
    		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR | FIRE_G2D_BITBLT));
		else if (g2d_data->dest_color_mode==G2D_DEST_8BPP_LUT_DISABLE)
			DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR | (FIRE_G2D_BITBLT |FIRE_DEST_COLOR_8BPP_LUT_DIS)));
		else if (g2d_data->dest_color_mode==G2D_DEST_16BPP_LUT_ENABLE)
		{
	    	temp_mode=DRV_Reg32(G2D_SUBMODE_CTRL_REG);
	    	temp_mode |= REG_COMMON_CTRL_G2D_PALETTE_ENABLE_BIT;
	    	DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SUBMODE_CTRL_REG_ADDR | temp_mode));
    		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR | (FIRE_G2D_BITBLT |FIRE_DEST_COLOR_16BPP_LUT_EN)));
		}
		else
			ASSERT(0);
//		DISABLE_REG_G2D_ENGINE_PALETTE;
	}
	else
	{
		DISABLE_G2D_CMQ;
		DRV_WriteReg32(G2D_SRC_BASE_ADDRESS_REG,g2d_data->src_base_address);
    	DRV_WriteReg32(G2D_DEST_BASE_ADDRESS_REG,g2d_data->dest_base_address);
	   DRV_WriteReg32(G2D_SRC_PITCH_REG,g2d_data->src_pitch);
    	DRV_WriteReg32(G2D_DEST_PITCH_REG,g2d_data->dest_pitch);
	   DRV_WriteReg32(G2D_SRC_XY_REG,((g2d_data->src_x<<16)|g2d_data->src_y));
    	DRV_WriteReg32(G2D_SRC_WIDTH_HEIGHT_REG,((g2d_data->src_width<<16) | g2d_data->src_height));
  		DRV_WriteReg32(G2D_DEST_WIDTH_HEIGHT_REG,((g2d_data->dest_width<<16) | g2d_data->dest_height));
	   switch (g2d_data->bitblt_mode)
    	{
    		case BITBLT_TRANSFORM_MIRROR_ROTATE_90:
	    		DRV_WriteReg32(G2D_DEST_XY_REG,((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(g2d_data->dest_height+g2d_data->dest_y-1));
    		break;
    		case BITBLT_TRANSFORM_ROTATE_90:
    			DRV_WriteReg32(G2D_DEST_XY_REG,((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(g2d_data->dest_y));
	    	break;
    		case BITBLT_TRANSFORM_ROTATE_270:
    			DRV_WriteReg32(G2D_DEST_XY_REG,(g2d_data->dest_x<<16)|(g2d_data->dest_height+g2d_data->dest_y-1));
	    	break;
    		case BITBLT_TRANSFORM_MIRROR_ROTATE_270:
    		case BITBLT_TRANSFORM_COPY:
	    		DRV_WriteReg32(G2D_DEST_XY_REG,(g2d_data->dest_x<<16)|(g2d_data->dest_y));
    		break;
    		case BITBLT_TRANSFORM_ROTATE_180:
	    		DRV_WriteReg32(G2D_DEST_XY_REG,((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(g2d_data->dest_height+g2d_data->dest_y-1));
    		break;
	    	case BITBLT_TRANSFORM_MIRROR:
    			DRV_WriteReg32(G2D_DEST_XY_REG,((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(g2d_data->dest_y));
    		break;
	    	case BITBLT_TRANSFORM_MIRROR_ROTATE_180:
    		   DRV_WriteReg32(G2D_DEST_XY_REG,(g2d_data->dest_x<<16)|(g2d_data->dest_height+g2d_data->dest_y-1));
    		break;
    		default:
    			ASSERT(0);
    		break;
	    }
		SET_BITBLT_TRANSFORM_MODE(g2d_data->bitblt_mode);
		if (g2d_data->src_key_mode==G2D_SRC_KEY_ENABLE)
		{
			ENABLE_BITBLT_TRANSPARENT;
			DRV_WriteReg32(G2D_SRC_KEY_COLOR_REG,g2d_data->src_key_color);
		}
		else
		{
			DISABLE_BITBLT_TRANSPARENT;
		}

		if (g2d_data->src_color_mode==G2D_SRC_16BPP_LUT_DISABLE)
		{
			DISABLE_G2D_ENGINE_PALETTE;
	    	SET_G2D_BITBLT_16BPP_LUT_DISABLE;
		}
		else if (g2d_data->dest_color_mode==G2D_DEST_8BPP_LUT_DISABLE)
		{
			DISABLE_G2D_ENGINE_PALETTE;
			SET_G2D_BITBLT_8BPP_LUT_DISABLE;
		}
		else if (g2d_data->dest_color_mode==G2D_DEST_16BPP_LUT_ENABLE)
		{
			ENABLE_G2D_ENGINE_PALETTE;
			SET_G2D_BITBLT_DEST_16BPP_LUT_ENABLE;
		}
		else
			ASSERT(0);
//		DISABLE_REG_G2D_ENGINE_PALETTE;
	}
	while (G2D_ENGINE_IS_BUSY) {};
//   kal_retrieve_eg_events(g2d_event_id,G2D_COMPLETE_EVENT,KAL_OR_CONSUME,&event_group,KAL_SUSPEND);
	g2d_power_off();
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
	kal_uint16 fire_mode;
	kal_uint32 temp_mode;

	g2d_power_on();
	RESET_G2D_ENGINE;
	g2d_set_clip_window(g2d_data);
//	if (G2D_ENGINE_IS_BUSY)
	if (g2d_data->g2d_cmq_mode==KAL_TRUE)
	{
		ENABLE_G2D_CMQ;
		while (G2D_CMQ_FREE_SPACE<20){};
		ENABLE_G2D_CMQ_WRITE;
		G2D_WRITE_CMQ(G2D_CMQ_SRC_BASE_L_ADDR | (g2d_data->src_base_address & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_BASE_H_ADDR | ((g2d_data->src_base_address>>16) & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_DEST_BASE_L_ADDR | (g2d_data->dest_base_address & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_DEST_BASE_H_ADDR | ((g2d_data->dest_base_address>>16) & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_PITCH_ADDR | g2d_data->src_pitch);
		G2D_WRITE_CMQ(G2D_CMQ_DEST_PITCH_ADDR | g2d_data->dest_pitch);
		G2D_WRITE_CMQ(G2D_CMQ_SRC_Y_ADDR | ((kal_uint16)g2d_data->src_y));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_X_ADDR | ((kal_uint16) g2d_data->src_x));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_HEIGHT_ADDR | g2d_data->src_height);
		G2D_WRITE_CMQ(G2D_CMQ_SRC_WIDTH_ADDR | g2d_data->src_width);
		G2D_WRITE_CMQ(G2D_CMQ_DEST_HEIGHT_ADDR | g2d_data->dest_height);
		G2D_WRITE_CMQ(G2D_CMQ_DEST_WIDTH_ADDR | g2d_data->dest_width);
		G2D_WRITE_CMQ(G2D_CMQ_SRCKEY_COLOR_L_ADDR | (g2d_data->src_key_color & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_SRCKEY_COLOR_H_ADDR | ((g2d_data->src_key_color>>16) & 0xFFFF));
	   switch (g2d_data->bitblt_mode)
    	{
    		case BITBLT_TRANSFORM_MIRROR_ROTATE_90:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | (g2d_data->dest_y+g2d_data->dest_height-1));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | (g2d_data->dest_x+g2d_data->dest_width-1));
    		break;
    		case BITBLT_TRANSFORM_ROTATE_90:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | ((kal_uint16) g2d_data->dest_y));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | (g2d_data->dest_x+g2d_data->dest_width-1));
	    	break;
    		case BITBLT_TRANSFORM_ROTATE_270:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | (g2d_data->dest_y+g2d_data->dest_height-1));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | ((kal_uint16) g2d_data->dest_x));
	    	break;

    		case BITBLT_TRANSFORM_MIRROR_ROTATE_270:
    		case BITBLT_TRANSFORM_COPY:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | ((kal_uint16) g2d_data->dest_y));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | ((kal_uint16) g2d_data->dest_x));
    		break;
    		case BITBLT_TRANSFORM_ROTATE_180:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | (g2d_data->dest_y+g2d_data->dest_height-1));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | (g2d_data->dest_x+g2d_data->dest_width-1));
    		break;
	    	case BITBLT_TRANSFORM_MIRROR:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | ((kal_uint16) g2d_data->dest_y));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | (g2d_data->dest_x+g2d_data->dest_width-1));
    		break;
	    	case BITBLT_TRANSFORM_MIRROR_ROTATE_180:
				G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | (g2d_data->dest_y+g2d_data->dest_height-1));
				G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | ((kal_uint16) g2d_data->dest_x));
    		break;
		}
	   temp_mode=REG_G2D_SUBMODE_CTRL;
	   temp_mode &= ~REG_SUBMODE_CTRL_BITBLT_TRANSFORM_MASK;
	   temp_mode |= g2d_data->bitblt_mode;

		if (g2d_data->italic_mode==G2D_BITBLT_ITALIC_ENABLE)
			temp_mode |= REG_SUBMODE_CTRL_ITALIC_BITBLT_BIT;
		else
			temp_mode &= ~REG_SUBMODE_CTRL_ITALIC_BITBLT_BIT;

		if (g2d_data->bitblt_mode==BITBLT_TRANSFORM_COPY)
		{
			temp_mode &= ~REG_SUBMODE_CTRL_BITBLT_DIRECTION_MASK;
			temp_mode |= g2d_bitblt_direction(g2d_data);
		}
		else
			temp_mode |= BITBLT_TRANSFORM_DIRECTION_LT_CORNER;

		G2D_WRITE_CMQ(G2D_CMQ_SUBMODE_CTRL_REG_L_ADDR | (temp_mode & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_SUBMODE_CTRL_REG_H_ADDR | ((temp_mode & 0xFFFF)>>16));

		temp_mode=REG_G2D_COMM_CTRL;
		if (g2d_data->clip_mode ==G2D_CLIP_ENABLE)
			temp_mode |= REG_COMMON_CTRL_G2D_CLIP_ENABLE_BIT;
		else
			temp_mode &= ~REG_COMMON_CTRL_G2D_CLIP_ENABLE_BIT;
		if (g2d_data->src_key_mode==G2D_BITBLT_DEST_SRC_KEY_ENABLE)
			temp_mode |= REG_COMMON_CTRL_G2D_SRC_KEY_ENABLE_BIT;
		else
			temp_mode &= ~REG_COMMON_CTRL_G2D_SRC_KEY_ENABLE_BIT;

		G2D_WRITE_CMQ(G2D_CMQ_2D_COMMON_CTRL_REG_ADDR | ((kal_uint16)temp_mode))
  		G2D_WRITE_CMQ(G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR | (g2d_data->dest_color_mode)|
  						  (g2d_data->src_color_mode)| g2d_data->g2d_operation_mode);
		DISABLE_G2D_CMQ_WRITE;
		wait_cmq_start();
	}
	else
	{
		DISABLE_G2D_CMQ;
		g2d_set_clip_window(g2d_data);
		REG_G2D_SRC_BASE_ADDRESS = g2d_data->src_base_address;
    	REG_G2D_DEST_BASE_ADDRESS = g2d_data->dest_base_address;
	   REG_G2D_SRC_PITCH = g2d_data->src_pitch;
    	REG_G2D_DEST_PITCH = g2d_data->dest_pitch;
	   REG_G2D_SRC_XY = (((kal_uint16) g2d_data->src_x)<<16)|((kal_uint16)g2d_data->src_y);
    	REG_G2D_SRC_WIDTH_HEIGHT = (g2d_data->src_width<<16) | g2d_data->src_height;
    	REG_G2D_DEST_WIDTH_HEIGHT = (g2d_data->dest_width<<16) | g2d_data->dest_height;
		REG_G2D_SRC_KEY_COLOR=g2d_data->src_key_color;

	   switch (g2d_data->bitblt_mode)
    	{
    		case BITBLT_TRANSFORM_MIRROR_ROTATE_90:
	    		REG_G2D_DEST_XY = ((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(g2d_data->dest_height+g2d_data->dest_y-1);
    		break;
    		case BITBLT_TRANSFORM_ROTATE_90:
    			REG_G2D_DEST_XY = ((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(((kal_uint16) g2d_data->dest_y));
	    	break;
    		case BITBLT_TRANSFORM_ROTATE_270:
    			REG_G2D_DEST_XY = (((kal_uint16) g2d_data->dest_x)<<16)|(g2d_data->dest_height+g2d_data->dest_y-1);
	    	break;
    		case BITBLT_TRANSFORM_MIRROR_ROTATE_270:
    		case BITBLT_TRANSFORM_COPY:
	    		REG_G2D_DEST_XY = (((kal_uint16) g2d_data->dest_x)<<16)|(((kal_uint16) g2d_data->dest_y));
    		break;
    		case BITBLT_TRANSFORM_ROTATE_180:
	    		REG_G2D_DEST_XY = ((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(g2d_data->dest_height+g2d_data->dest_y-1);
    		break;
	    	case BITBLT_TRANSFORM_MIRROR:
    			REG_G2D_DEST_XY = ((g2d_data->dest_x+g2d_data->dest_width-1)<<16)|(((kal_uint16) g2d_data->dest_y));
    		break;
	    	case BITBLT_TRANSFORM_MIRROR_ROTATE_180:
    		   REG_G2D_DEST_XY = (((kal_uint16) g2d_data->dest_x)<<16)|(g2d_data->dest_height+g2d_data->dest_y-1);
    		break;
	    }
		SET_BITBLT_TRANSFORM_MODE(g2d_data->bitblt_mode);
		if (g2d_data->bitblt_mode==BITBLT_TRANSFORM_COPY)
		{
			SET_BITBLT_DIRECTION(g2d_bitblt_direction(g2d_data));
		}

		if (g2d_data->italic_mode==G2D_REC_FILL_ITALIC_ENABLE)
		{
			ENABLE_G2D_BITBLT_ITALIC_MODE;
		}
		else
		{
			DISABLE_G2D_BITBLT_ITALIC_MODE;
		}

		if (g2d_data->clip_mode ==G2D_CLIP_ENABLE)
		{
			ENABLE_G2D_ENGINE_CLIP;
		}
		else
		{
			DISABLE_G2D_ENGINE_CLIP
		}

		if (g2d_data->src_key_mode==G2D_BITBLT_DEST_SRC_KEY_ENABLE)
		{
			ENABLE_G2D_ENGINE_SRC_KEY;
		}
		else
		{
			DISABLE_G2D_ENGINE_SRC_KEY;
		}

		fire_mode=(g2d_data->src_color_mode)|(g2d_data->dest_color_mode)|g2d_data->g2d_operation_mode;
		ENABLE_G2D_ENGINE_INT;
		REG_G2D_FIRE_CTRL=fire_mode;
	}
	while (G2D_ENGINE_IS_BUSY) {};
	g2d_power_off();
#endif
#endif
}	/* g2d_bitblt() */

/*************************************************************************
* FUNCTION
*	   g2d_alpha_bitblt
*
* DESCRIPTION
*	   This function execute alpha blending operation.
*
* PARAMETERS
*    g2d_data : the parameter data structure of G2D module
*
* RETURNS
*		None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void g2d_alpha_bitblt(g2d_parameter_struct *g2d_data)
{
#ifdef __MTK_TARGET__
#if (defined (MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
	kal_uint16 temp_mode;
//	kal_uint32 event_group;

	g2d_power_on();

	g2d_set_clip_window(g2d_data);
	ENABLE_G2D_ENGINE_INT;
	if ((g2d_data->dest_width!=g2d_data->src_width)||
		 (g2d_data->dest_height!=g2d_data->src_height))
		 ASSERT(0);
	if (G2D_ENGINE_IS_BUSY)
	{
		ENABLE_G2D_CMQ;
		while (G2D_CMQ_FREE_SPACE<18)
		{};
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_BASE_L_ADDR | (g2d_data->src_base_address & 0xFFFF)));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_BASE_H_ADDR | ((g2d_data->src_base_address>>16) & 0xFFFF)));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_BASE_L_ADDR | (g2d_data->dest_base_address & 0xFFFF)));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_BASE_H_ADDR | ((g2d_data->dest_base_address>>16) & 0xFFFF)));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_PITCH_ADDR | g2d_data->src_pitch));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_PITCH_ADDR | g2d_data->dest_pitch));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_Y_ADDR | g2d_data->src_y));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_X_ADDR | g2d_data->src_x));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_Y_ADDR | g2d_data->dest_y));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_X_ADDR | g2d_data->dest_x));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_HEIGHT_ADDR | g2d_data->src_height));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_WIDTH_ADDR | g2d_data->src_width));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_HEIGHT_ADDR | g2d_data->dest_height));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_WIDTH_ADDR | g2d_data->dest_width));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SRC_ALPHA_ADDR | g2d_data->src_alpha));
		DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_DEST_ALPHA_ADDR | g2d_data->dest_alpha));
		if (g2d_data->src_color_mode==G2D_SRC_16BPP_LUT_DISABLE)
		{
			DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR | FIRE_G2D_ALPHA_BLENDING));
	   }
    	else if (g2d_data->src_color_mode==G2D_SRC_8BPP_LUT_ENABLE)
   	{

			DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_FIRE_MODE_CTRL_REG_ADDR |(FIRE_G2D_ALPHA_BLENDING|FIRE_SRC_COLOR_8BPP_LUT_EN)));
	    	temp_mode=DRV_Reg32(G2D_SUBMODE_CTRL_REG);
	    	temp_mode |= REG_COMMON_CTRL_G2D_PALETTE_ENABLE_BIT;
	    	DRV_WriteReg32(G2D_CMQ_DATA_REG,(G2D_CMQ_SUBMODE_CTRL_REG_ADDR | temp_mode));
    	}
    	else
    		ASSERT(0);
	}
	else
	{
		DISABLE_G2D_CMQ;
		DRV_WriteReg32(G2D_SRC_BASE_ADDRESS_REG, g2d_data->src_base_address);
    	DRV_WriteReg32(G2D_DEST_BASE_ADDRESS_REG,g2d_data->dest_base_address);
	   DRV_WriteReg32(G2D_SRC_PITCH_REG,g2d_data->src_pitch);
    	DRV_WriteReg32(G2D_DEST_PITCH_REG,g2d_data->dest_pitch);
	   DRV_WriteReg32(G2D_SRC_XY_REG,(g2d_data->src_x<<16)|g2d_data->src_y);
    	DRV_WriteReg32(G2D_DEST_XY_REG,(g2d_data->dest_x<<16)|g2d_data->dest_y);
	   DRV_WriteReg32(G2D_SRC_WIDTH_HEIGHT_REG,(g2d_data->src_width<<16) | g2d_data->src_height);
    	DRV_WriteReg32(G2D_DEST_WIDTH_HEIGHT_REG,(g2d_data->dest_width<<16) | g2d_data->dest_height);
		REG_G2D_SRC_ALPHA =g2d_data->src_alpha;
		REG_G2D_DEST_ALPHA =g2d_data->dest_alpha;

		if (g2d_data->src_color_mode==G2D_SRC_16BPP_LUT_DISABLE)
		{
    		SET_G2D_ALPHA_BLENDING_SRC_16BPP_LUT_DISABLE;
	   }
    	else if (g2d_data->src_color_mode==G2D_SRC_8BPP_LUT_ENABLE)
   	{
			ENABLE_G2D_ENGINE_PALETTE;
	    	SET_G2D_ALPHA_BLENDING_SRC_8BPP_LUT_ENABLE;
    	}
    	else
    		ASSERT(0);
//	    DISABLE_REG_G2D_ENGINE_PALETTE;
	}
	while (G2D_ENGINE_IS_BUSY) {};
//   kal_retrieve_eg_events(g2d_event_id,G2D_COMPLETE_EVENT,KAL_OR_CONSUME,&event_group,KAL_SUSPEND);
	g2d_power_off();
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
	kal_uint32 temp_mode;
	kal_uint16 fire_mode;

	g2d_power_on();
	RESET_G2D_ENGINE;
	g2d_set_clip_window(g2d_data);
//	if (G2D_ENGINE_IS_BUSY)
	if (g2d_data->g2d_cmq_mode==KAL_TRUE)
	{
		ENABLE_G2D_CMQ;
		while (G2D_CMQ_FREE_SPACE<20) {};
		ENABLE_G2D_CMQ_WRITE;
		G2D_WRITE_CMQ(G2D_CMQ_SRC_BASE_L_ADDR | (g2d_data->src_base_address & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_BASE_H_ADDR | ((g2d_data->src_base_address>>16) & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_DEST_BASE_L_ADDR | (g2d_data->dest_base_address & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_DEST_BASE_H_ADDR | ((g2d_data->dest_base_address>>16) & 0xFFFF));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_PITCH_ADDR | g2d_data->src_pitch);
		G2D_WRITE_CMQ(G2D_CMQ_DEST_PITCH_ADDR | g2d_data->dest_pitch);
		G2D_WRITE_CMQ(G2D_CMQ_SRC_Y_ADDR | ((kal_uint16)g2d_data->src_y));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_X_ADDR | ((kal_uint16) g2d_data->src_x));
		G2D_WRITE_CMQ(G2D_CMQ_DEST_Y_ADDR | ((kal_uint16) g2d_data->dest_y));
		G2D_WRITE_CMQ(G2D_CMQ_DEST_X_ADDR | ((kal_uint16) g2d_data->dest_x));
		G2D_WRITE_CMQ(G2D_CMQ_SRC_HEIGHT_ADDR | g2d_data->src_height);
		G2D_WRITE_CMQ(G2D_CMQ_SRC_WIDTH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -