static void flush_imgs(struct mdp_blit_req *req, struct ppp_regs *regs,
		       struct file *src_file, struct file *dst_file)
{
#ifdef CONFIG_ANDROID_PMEM
	uint32_t src0_len, src1_len, dst0_len, dst1_len;

	if (!(req->flags & MDP_BLIT_NON_CACHED)) {
		/* flush src images to memory before dma to mdp */
		get_len(&req->src, &req->src_rect, regs->src_bpp, &src0_len,
			&src1_len);
		flush_pmem_file(src_file, req->src.offset, src0_len);
		if (IS_PSEUDOPLNR(req->src.format))
			flush_pmem_file(src_file, req->src.offset + src0_len,
					src1_len);

		/* flush dst images */
		get_len(&req->dst, &req->dst_rect, regs->dst_bpp, &dst0_len,
			&dst1_len);
		flush_pmem_file(dst_file, req->dst.offset, dst0_len);
		if (IS_PSEUDOPLNR(req->dst.format))
			flush_pmem_file(dst_file, req->dst.offset + dst0_len,
					dst1_len);
	}
#endif
}
Exemple #2
0
static uint32_t get_chroma_base(struct mdp_img *img, uint32_t base,
				uint32_t bpp)
{
	uint32_t addr = 0;

	if (IS_PSEUDOPLNR(img->format))
		addr = base + (img->width * img->height * bpp);
	return addr;
}
Exemple #3
0
static void get_len(struct mdp_img *img, struct mdp_rect *rect, uint32_t bpp,
		    uint32_t *len0, uint32_t *len1)
{
	*len0 = IMG_LEN(rect->h, img->width, rect->w, bpp);
	if (IS_PSEUDOPLNR(img->format))
		*len1 = *len0/Y_TO_CRCB_RATIO(img->format);
	else
		*len1 = 0;
}
Exemple #4
0
static uint32_t get_chroma_offset(struct mdp_img *img,
				  struct mdp_rect *rect, uint32_t bpp)
{
#ifndef CONFIG_MSM_MDP31
	uint32_t compress_v = Y_TO_CRCB_RATIO(img->format);
	uint32_t compress_h = 2;
	uint32_t offset = 0;

	if (IS_PSEUDOPLNR(img->format)) {
		offset = (rect->x / compress_h) * compress_h;
		offset += rect->y == 0 ? 0 :
			  ((rect->y + 1) / compress_v) * img->width;
		offset *= bpp;
	}
	return offset;
#else
	return 0;
#endif
}