static void _g2d_drv_overlay_set_dst_info(G2D_HANDLE_STRUCT *handle) { G2D_CANVAS_INFO_STRUCT *dstCanvas = &(handle->dstCanvas); G2D_COORDINATE_STRUCT *dstCoordiante = &(handle->overlayFunc.dstCoordiante); kal_uint32 pitch; /// destination base addr ASSERT(dstCanvas->RGBBufferAddr); SET_G2D_W2M_ADDR((kal_int32)dstCanvas->RGBBufferAddr); /// destination pitch pitch = (dstCanvas->width) * (dstCanvas->bytesPerPixel); ASSERT(((unsigned)pitch) <= 0x2000); SET_G2D_W2M_PITCH(pitch); /// -2048 <= x <= 2047 ASSERT(((unsigned)((dstCoordiante->x) + 2048)) < 4096); ASSERT(((unsigned)((dstCoordiante->y) + 2048)) < 4096); /// destination rectangle start point(x,y) SET_G2D_W2M_OFFSET(dstCoordiante->x, dstCoordiante->y); /// setting destination color format bits switch(dstCanvas->colorFormat) { case G2D_COLOR_FORMAT_GRAY: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_GRAY); break; case G2D_COLOR_FORMAT_RGB565: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_RGB565); break; case G2D_COLOR_FORMAT_ARGB8888: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_ARGB8888); break; case G2D_COLOR_FORMAT_RGB888: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_RGB888); break; case G2D_COLOR_FORMAT_BGR888: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_BGR888); break; case G2D_COLOR_FORMAT_PARGB8888: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_PARGB8888); break; case G2D_COLOR_FORMAT_ARGB8565: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_ARGB8565); break; case G2D_COLOR_FORMAT_PARGB8565: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_PARGB8565); break; case G2D_COLOR_FORMAT_ARGB6666: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_ARGB6666); break; case G2D_COLOR_FORMAT_PARGB6666: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_PARGB6666); break; default: ASSERT(0); break; } }
static void _g2d_drv_set_dst_info(g2d_context_t *g2d_ctx) { unsigned int pitch; // 2 byte aligned for RGB565, 4 byte aligned for ARGB8888 SET_G2D_W2M_ADDR(g2d_ctx->dst.addr); // destination pitch pitch = _g2d_get_pitch_byte(g2d_ctx->dst.pitch, g2d_ctx->dst.format); ASSERT(((unsigned) pitch) <= 0x2000); SET_G2D_W2M_PITCH(pitch); // destination rectangle start point(x,y) ASSERT(((unsigned)((g2d_ctx->dst.offset.x) + 2048)) < 4096); ASSERT(((unsigned)((g2d_ctx->dst.offset.y) + 2048)) < 4096); SET_G2D_W2M_OFFSET(g2d_ctx->dst.offset.x, g2d_ctx->dst.offset.y); // setting destination color format bits SET_G2D_W2M_COLOR_FORMAT(g2d_ctx->dst.format); }