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); }
static void _g2d_drv_rectfill_set_info(G2D_HANDLE_STRUCT *handle) { G2D_RECTANGLE_FILL_STRUCT *rectFillFunc = &(handle->rectFillFunc); G2D_CANVAS_INFO_STRUCT *srcCanvas = &(rectFillFunc->srcCanvas); G2D_CANVAS_INFO_STRUCT *dstCanvas = &(handle->dstCanvas); #if defined(G2D_FPGA) G2D_WINDOW_STRUCT *dstWindow = &(handle->rectFillFunc.dstWindow); #else G2D_WINDOW_STRUCT *dstWindow = &(handle->targetClipWindow); #endif G2D_COORDINATE_STRUCT *topLeft = &(dstWindow->topLeft); G2D_COORDINATE_STRUCT *buttomRight = &(dstWindow->buttomRight); kal_uint32 width, height, pitch, srcpitch; /// destination base addr ASSERT(dstCanvas->RGBBufferAddr); //SET_G2D_LAYER_ADDR(0, (kal_uint32)(dstCanvas->RGBBufferAddr)); REG_G2D_W2M_ADDR = (kal_int32)dstCanvas->RGBBufferAddr; /// destination pitch pitch = (dstCanvas->width) * (dstCanvas->bytesPerPixel); ASSERT(((unsigned)pitch) <= 0x2000); //SET_G2D_LAYER_PITCH(0, pitch); SET_G2D_LAYER_PITCH(1, pitch); REG_G2D_W2M_PITCH = pitch; /// -2048 <= x <= 2047 ASSERT(((unsigned)((topLeft->x) + 2048)) < 4096); ASSERT(((unsigned)((topLeft->y) + 2048)) < 4096); /// destination rectangle start point(x,y) SET_G2D_W2M_OFFSET(topLeft->x, topLeft->y); SET_G2D_ROI_OFFSET(topLeft->x, topLeft->y); //SET_G2D_LAYER_OFFSET(0, 0, 0); SET_G2D_LAYER_OFFSET(1, topLeft->x, topLeft->y); width = buttomRight->x - topLeft->x + 1; height = buttomRight->y - topLeft->y + 1; /// 1 <= x <= 2048 ASSERT(((unsigned)(width - 1)) <= 2048); ASSERT(((unsigned)(height - 1)) <= 2048); /// destination rectangle width and height REG_G2D_ROI_SIZE = (width << 16) | height; //SET_G2D_LAYER_SIZE(0, dstCanvas->width, dstCanvas->height); SET_G2D_LAYER_SIZE(1, width, height); if (KAL_TRUE == rectFillFunc->overlayBufferEnable) { srcpitch = (srcCanvas->width) * (srcCanvas->bytesPerPixel); ASSERT(((unsigned)srcpitch) <= 0x2000); SET_G2D_LAYER_PITCH(1, srcpitch); SET_G2D_LAYER_ADDR(0, (kal_uint32)(srcCanvas->RGBBufferAddr)); SET_G2D_LAYER_OFFSET(0, 0, 0); SET_G2D_LAYER_SIZE(0, srcCanvas->width, srcCanvas->height); /// set src_clr_fmt bits switch(srcCanvas->colorFormat) { case G2D_COLOR_FORMAT_GRAY: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_GRAY); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_GRAY); break; case G2D_COLOR_FORMAT_RGB565: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_RGB565); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_RGB565); break; case G2D_COLOR_FORMAT_ARGB8888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_ARGB8888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_ARGB8888); break; case G2D_COLOR_FORMAT_RGB888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_RGB888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_RGB888); break; case G2D_COLOR_FORMAT_BGR888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_BGR888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_BGR888); break; case G2D_COLOR_FORMAT_PARGB8888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_PARGB8888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_PARGB8888); break; case G2D_COLOR_FORMAT_UYVY422: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_UYVY); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_UYVY); break; case G2D_COLOR_FORMAT_ARGB8565: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_ARGB8565); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_ARGB8565); break; case G2D_COLOR_FORMAT_PARGB8565: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_PARGB8565); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_PARGB8565); break; case G2D_COLOR_FORMAT_ARGB6666: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_ARGB6666); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_ARGB6666); break; case G2D_COLOR_FORMAT_PARGB6666: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_PARGB6666); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_PARGB6666); break; default: ASSERT(0); break; } } else { SET_G2D_LAYER_ADDR(0, (kal_uint32)(dstCanvas->RGBBufferAddr)); SET_G2D_LAYER_PITCH(0, pitch); SET_G2D_LAYER_OFFSET(0, 0, 0); SET_G2D_LAYER_SIZE(0, dstCanvas->width, dstCanvas->height); /// setting destination color format bits switch(dstCanvas->colorFormat) { case G2D_COLOR_FORMAT_RGB565: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_RGB565); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_RGB565); break; case G2D_COLOR_FORMAT_ARGB6666: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_ARGB6666); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_ARGB6666); break; case G2D_COLOR_FORMAT_ARGB8888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_ARGB8888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_ARGB8888); break; case G2D_COLOR_FORMAT_RGB888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_RGB888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_RGB888); break; case G2D_COLOR_FORMAT_BGR888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_BGR888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_BGR888); break; case G2D_COLOR_FORMAT_PARGB6666: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_PARGB6666); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_PARGB6666); break; case G2D_COLOR_FORMAT_PARGB8888: SET_G2D_LAYER_CON_COLOR_FORMAT(0, G2D_LX_CON_COLOR_PARGB8888); SET_G2D_LAYER_CON_COLOR_FORMAT(1, G2D_LX_CON_COLOR_PARGB8888); break; default: ASSERT(0); break; } } /// setting destination color format bits switch(dstCanvas->colorFormat) { case G2D_COLOR_FORMAT_RGB565: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_RGB565); break; case G2D_COLOR_FORMAT_ARGB6666: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_ARGB6666); 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_PARGB6666: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_PARGB6666); break; case G2D_COLOR_FORMAT_PARGB8888: SET_G2D_W2M_COLOR_FORMAT(G2D_ROI_CON_W2M_COLOR_PARGB8888); break; default: ASSERT(0); break; } if(KAL_TRUE == (rectFillFunc->srcAlphaEnable)) { ENABLE_G2D_LAYER_CON_ALPHA(1); SET_G2D_LAYER_CON_ALPHA(1, rectFillFunc->srcAlphaValue); //ENABLE_G2D_ROI_LAYER(0); ENABLE_G2D_ROI_LAYER_0; } /// Set color; SET_G2D_LAYER_RECTANGLE_FILL_COLOR(1, (kal_uint32)rectFillFunc->rectFillColor); ENABLE_G2D_ROI_LAYER(1); }