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);
}