static void _g2d_drv_overlay_set_roi_info(G2D_HANDLE_STRUCT *handle) { G2D_OVERLAY_STRUCT *overlayFunc = &(handle->overlayFunc); G2D_WINDOW_STRUCT *roiWindow = &(handle->overlayFunc.roiWindow); /// setting the avoidance and replacement colors g2d_drv_set_replacement_colors(handle); /// setting the clipping window g2d_drv_set_clipping_window(handle); SET_G2D_ROI_OFFSET(roiWindow->topLeft.x, roiWindow->topLeft.y); SET_G2D_ROI_SIZE(roiWindow->buttomRight.x - roiWindow->topLeft.x + 1, roiWindow->buttomRight.y - roiWindow->topLeft.y + 1); #if defined(G2D_FPGA) if(KAL_TRUE == (overlayFunc->backgroundDisable)) { DISABLE_G2D_ROI_CON_BG; } else { SET_G2D_ROI_CON_BG_COLOR(overlayFunc->backgroundColor); } #else SET_G2D_ROI_CON_BG_COLOR(overlayFunc->backgroundColor); #endif if(KAL_TRUE == (overlayFunc->dstAlphaEnable)) { ENABLE_G2D_ROI_CON_ALPHA; SET_G2D_ROI_CON_ALPHA(overlayFunc->dstAlphaValue); } /// color setting is on _g2d_drv_overlay_set_dst_info //Enable Tile { #if defined(G2D_FPGA) ///if(KAL_FALSE == (handle->auto_tile_size_enable)) ///{ /// REG_G2D_ROI_CON |= G2D_ROI_CON_ENABLE_FORCE_TS_BIT; /// switch(handle->tile_size) /// { /// case G2D_TILE_SIZE_TYPE_8x8: /// REG_G2D_ROI_CON |= G2D_ROI_CON_TILE_SIZE_8x8_BIT; /// break; /// case G2D_TILE_SIZE_TYPE_16x8: /// REG_G2D_ROI_CON |= G2D_ROI_CON_TILE_SIZE_16x8_BIT; /// break; /// default: /// ASSERT(0); /// } ///} #else #endif } }
static void _g2d_drv_set_roi_info(g2d_context_t *g2d_ctx) { SET_G2D_ROI_OFFSET(g2d_ctx->dst.offset.x, g2d_ctx->dst.offset.y); SET_G2D_ROI_SIZE(g2d_ctx->dst.width, g2d_ctx->dst.height); if (g2d_ctx->flag & G2D_FLAG_AFFINE_TRANSFORM) { REG_G2D_ROI_CON |= G2D_ROI_CON_ENABLE_FORCE_TS_BIT; REG_G2D_ROI_CON |= G2D_ROI_CON_TILE_SIZE_16x8_BIT; } if (g2d_ctx->flag & G2D_FLAG_BACKGROUND_COLOR) { SET_G2D_ROI_CON_BG_COLOR(g2d_ctx->bg_color); } else { DISABLE_G2D_ROI_CON_BG; } }
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); }