Exemplo n.º 1
0
void ge2dgen_post_release_src2buf(ge2d_context_t *wq, unsigned buffer)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);

    ge2d_cmd_cfg->src2_buffer = buffer;
    ge2d_cmd_cfg->release_flag |= RELEASE_SRC2_BUFFER;
}
Exemplo n.º 2
0
static void inline _bitblt(ge2d_context_t *wq,
            int src_x, int src_y, int w, int h,
            int dst_x, int dst_y, int block)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);

    ge2d_cmd_cfg->src1_x_start = src_x;
    ge2d_cmd_cfg->src1_x_end   = src_x+w-1;
    ge2d_cmd_cfg->src1_y_start = src_y;
    ge2d_cmd_cfg->src1_y_end   = src_y+h-1;

    ge2d_cmd_cfg->dst_x_start = dst_x;
    ge2d_cmd_cfg->dst_x_end   = dst_x+w-1;
    ge2d_cmd_cfg->dst_y_start = dst_y;
    ge2d_cmd_cfg->dst_y_end   = dst_y+h-1;

    ge2d_cmd_cfg->sc_hsc_en = 0;
    ge2d_cmd_cfg->sc_vsc_en = 0;
    ge2d_cmd_cfg->hsc_rpt_p0_num = 0;
    ge2d_cmd_cfg->vsc_rpt_l0_num = 0;
    ge2d_cmd_cfg->hsc_div_en = 0;

    ge2d_cmd_cfg->color_blend_mode = OPERATION_LOGIC;
    ge2d_cmd_cfg->color_logic_op   = LOGIC_OPERATION_COPY;
    ge2d_cmd_cfg->alpha_blend_mode = OPERATION_LOGIC;
    ge2d_cmd_cfg->alpha_logic_op   = LOGIC_OPERATION_COPY;
    ge2d_cmd_cfg->wait_done_flag   = block;

    ge2d_wq_add_work(wq);
}
Exemplo n.º 3
0
static void inline _fillrect(ge2d_context_t *wq,
              int x, int y, int w, int h, unsigned color, int blk)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);
            
    ge2dgen_src_color(wq, color);

    ge2d_cmd_cfg->src1_x_start = x;
    ge2d_cmd_cfg->src1_x_end   = x+w-1;
    ge2d_cmd_cfg->src1_y_start = y;
    ge2d_cmd_cfg->src1_y_end   = y+h-1;

    ge2d_cmd_cfg->dst_x_start  = x;
    ge2d_cmd_cfg->dst_x_end    = x+w-1;
    ge2d_cmd_cfg->dst_y_start  = y;
    ge2d_cmd_cfg->dst_y_end    = y+h-1;

    ge2d_cmd_cfg->sc_hsc_en = 0;
    ge2d_cmd_cfg->sc_vsc_en = 0;
    ge2d_cmd_cfg->hsc_rpt_p0_num = 0;
    ge2d_cmd_cfg->vsc_rpt_l0_num = 0;
    ge2d_cmd_cfg->hsc_div_en = 0; 

    ge2d_cmd_cfg->src1_fill_color_en = 1;

    ge2d_cmd_cfg->color_blend_mode = OPERATION_LOGIC;
    ge2d_cmd_cfg->color_logic_op   = LOGIC_OPERATION_COPY;  
    ge2d_cmd_cfg->alpha_blend_mode = OPERATION_LOGIC;
    ge2d_cmd_cfg->alpha_logic_op   = LOGIC_OPERATION_COPY; 
    ge2d_cmd_cfg->wait_done_flag   = 1;

    ge2d_wq_add_work(wq);
}
Exemplo n.º 4
0
void ge2dgen_cb(ge2d_context_t *wq, int (*cmd_cb)(unsigned), unsigned param)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);

    ge2d_cmd_cfg->cmd_cb = cmd_cb;
    ge2d_cmd_cfg->cmd_cb_param = param;
    ge2d_cmd_cfg->release_flag |= RELEASE_CB;
}
Exemplo n.º 5
0
void ge2dgen_rendering_dir(ge2d_context_t *wq,
                           int src_x_dir, int src_y_dir,
                           int dst_x_dir, int dst_y_dir,
                           int dst_xy_swap)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);

    ge2d_cmd_cfg->src1_x_rev = src_x_dir;
    ge2d_cmd_cfg->src1_y_rev = src_y_dir;
    ge2d_cmd_cfg->dst_x_rev  = dst_x_dir;
    ge2d_cmd_cfg->dst_y_rev  = dst_y_dir;
    ge2d_cmd_cfg->dst_xy_swap  =  dst_xy_swap;
}
Exemplo n.º 6
0
static void inline _bitblt_noalpha(ge2d_context_t *wq,
                    int src_x, int src_y, int w, int h,
                    int dst_x, int dst_y, int block)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);
    ge2d_dp_gen_t *dp_gen_cfg = ge2d_wq_get_dp_gen(wq);

    if(dp_gen_cfg->alu_const_color != 0xff)
    {
	dp_gen_cfg->alu_const_color = 0xff;
	wq->config.update_flag |= UPDATE_DP_GEN;
    }
    ge2d_cmd_cfg->src1_x_start = src_x;
    ge2d_cmd_cfg->src1_x_end   = src_x+w-1;
    ge2d_cmd_cfg->src1_y_start = src_y;
    ge2d_cmd_cfg->src1_y_end   = src_y+h-1;

    ge2d_cmd_cfg->dst_x_start  = dst_x;
    ge2d_cmd_cfg->dst_x_end    = dst_x+w-1;
    ge2d_cmd_cfg->dst_y_start  = dst_y;
    ge2d_cmd_cfg->dst_y_end    = dst_y+h-1;

    ge2d_cmd_cfg->sc_hsc_en = 0;
    ge2d_cmd_cfg->sc_vsc_en = 0;
    ge2d_cmd_cfg->hsc_rpt_p0_num = 0;
    ge2d_cmd_cfg->vsc_rpt_l0_num = 0;
    ge2d_cmd_cfg->hsc_div_en = 0;

    ge2d_cmd_cfg->color_blend_mode = OPERATION_LOGIC;
    ge2d_cmd_cfg->color_logic_op   = LOGIC_OPERATION_COPY;
    ge2d_cmd_cfg->alpha_blend_mode = OPERATION_LOGIC;
    ge2d_cmd_cfg->alpha_logic_op   = LOGIC_OPERATION_SET;
    ge2d_cmd_cfg->wait_done_flag   = block;

    ge2d_wq_add_work(wq);
}
Exemplo n.º 7
0
void ge2dgen_post_release_src2canvas(ge2d_context_t *wq)
{
    ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(wq);

    ge2d_cmd_cfg->release_flag |= RELEASE_SRC2_CANVAS;
}
int	dev_ge2d_cmd(ge2d_context_t *context ,int  cmd,src_dst_info_t  *info)
{
	ge2d_cmd_t *ge2d_cmd_cfg = ge2d_wq_get_cmd(context);
	ge2d_config_t	*cfg=&context->config;
	rectangle_t *src=&info->src_rect,*dst=&info->dst_rect;
	unsigned int color=info->color;

	ge2d_cmd_cfg->sc_hsc_en = 0;
	ge2d_cmd_cfg->sc_vsc_en = 0;
	ge2d_cmd_cfg->hsc_rpt_p0_num = 0;
	ge2d_cmd_cfg->vsc_rpt_l0_num = 0;
	ge2d_cmd_cfg->hsc_div_en = 0; 
	switch (cmd)
	{	
		case	CMD_FILLRECT:
		cfg->src1_data.def_color=color;
		ge2d_cmd_cfg->dst_x_start  = dst->x;
    		ge2d_cmd_cfg->dst_x_end    = dst->x+dst->w-1;
    		ge2d_cmd_cfg->dst_y_start  = dst->y;
    		ge2d_cmd_cfg->dst_y_end    = dst->y+dst->h-1;

		ge2d_cmd_cfg->src1_x_start  = ge2d_cmd_cfg->dst_x_start;
    		ge2d_cmd_cfg->src1_x_end    = ge2d_cmd_cfg->dst_x_end ;
    		ge2d_cmd_cfg->src1_y_start= ge2d_cmd_cfg->dst_y_start ;
    		ge2d_cmd_cfg->src1_y_end= ge2d_cmd_cfg->dst_y_end;

    		ge2d_cmd_cfg->src1_fill_color_en = 1;
		break;
		case	CMD_BITBLT:
		ge2d_cmd_cfg->src1_x_start = src->x;
    		ge2d_cmd_cfg->src1_x_end   = src->x+src->w-1;
    		ge2d_cmd_cfg->src1_y_start = src->y;
    		ge2d_cmd_cfg->src1_y_end   = src->y+src->h-1;

    		ge2d_cmd_cfg->dst_x_start = dst->x;
    		ge2d_cmd_cfg->dst_x_end   = dst->x+src->w-1;
    		ge2d_cmd_cfg->dst_y_start = dst->y;
    		ge2d_cmd_cfg->dst_y_end   = dst->y+src->h-1;
		
		break;
		case	CMD_STRETCH_BLIT:
              ge2d_cmd_cfg->src1_x_start = src->x;
              ge2d_cmd_cfg->src1_x_end   = src->x+src->w-1;
              ge2d_cmd_cfg->src1_y_start = src->y;
              ge2d_cmd_cfg->src1_y_end   = src->y+src->h-1;
          
              ge2d_cmd_cfg->dst_x_start  = dst->x;
              ge2d_cmd_cfg->dst_x_end    = dst->x+dst->w-1;
              ge2d_cmd_cfg->dst_y_start  = dst->y;
              ge2d_cmd_cfg->dst_y_end    = dst->y+dst->h-1;
          
              ge2d_cmd_cfg->sc_hsc_en = 1;
              ge2d_cmd_cfg->sc_vsc_en = 1;
              ge2d_cmd_cfg->hsc_rpt_p0_num = 1;
              ge2d_cmd_cfg->vsc_rpt_l0_num = 1;
              ge2d_cmd_cfg->hsc_div_en = 1; 
                     

    		break;	
	}
	ge2d_cmd_cfg->color_blend_mode = OPERATION_LOGIC;
    	ge2d_cmd_cfg->color_logic_op   = LOGIC_OPERATION_COPY;  
    	ge2d_cmd_cfg->alpha_blend_mode = OPERATION_LOGIC;
    	ge2d_cmd_cfg->alpha_logic_op   = LOGIC_OPERATION_COPY; 
	ge2d_set_src1_data(&cfg->src1_data);
	ge2d_set_src1_gen(&cfg->src1_gen);
	ge2d_set_src2_dst_data(&cfg->src2_dst_data);	
	ge2d_set_src2_dst_gen(&cfg->src2_dst_gen);
	ge2d_set_dp_gen(&cfg->dp_gen);
	ge2d_set_src1_scale_coef(FILTER_TYPE_TRIANGLE, FILTER_TYPE_TRIANGLE);
		
	ge2d_set_cmd(ge2d_cmd_cfg);
	ge2d_wait_done();
	memset(ge2d_cmd_cfg,0,sizeof(ge2d_cmd_t));
	return 0;
}