static void _g2d_drv_set_layer_info(g2d_layer_t *g2d_layer, int id)
{
    unsigned int layer_width  = g2d_layer->width;
    unsigned int layer_height = g2d_layer->height;
    unsigned int layer_pitch  = _g2d_get_pitch_byte(g2d_layer->pitch, g2d_layer->format);

    CLR_G2D_LAYER_CON(id);
    SET_G2D_LAYER_CON_COLOR_FORMAT(id, g2d_layer->format);
    SET_G2D_LAYER_CON_ROTATE(id, g2d_layer->transform);
    SET_G2D_LAYER_OFFSET(id, g2d_layer->offset.x, g2d_layer->offset.y);

    if (!g2d_layer->rectangle)
    {
        SET_G2D_LAYER_ADDR(id, g2d_layer->addr);
        ASSERT(((unsigned) layer_pitch) <= 0x2000);
        SET_G2D_LAYER_PITCH(id, layer_pitch);
    }
    else
    {
        ENABLE_G2D_LAYER_CON_RECT_FILL(id);
        SET_G2D_LAYER_RECTANGLE_FILL_COLOR(id, g2d_layer->rect_color);
    }

    SET_G2D_LAYER_SIZE(id, layer_width, layer_height);

    if (g2d_layer->blending)
    {
        ENABLE_G2D_LAYER_CON_ALPHA(id);
        SET_G2D_LAYER_CON_ALPHA(id, g2d_layer->const_alpha);
    }
    else
    {
        DISABLE_G2D_LAYER_CON_ALPHA(id);
    }

    ENABLE_G2D_ROI_LAYER(id);
}
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);
}
static void _g2d_drv_overlay_set_layer_info(G2D_HANDLE_STRUCT *handle)
{
   G2D_OVERLAY_STRUCT *overlayFunc = &(handle->overlayFunc);
   kal_int32 layer;

   for (layer = 0; layer < G2D_HW_OVERLAY_TOTAL_LAYER; layer++)
   {
      G2D_OVERLAY_LAYER_STRUCT *layerInfo = &(overlayFunc->layerInfo[layer]);
      G2D_WINDOW_STRUCT *layerWindow = &(layerInfo->layerWindow);
      G2D_CANVAS_INFO_STRUCT *layerCanvas = &(layerInfo->layerCanvas);

      if(KAL_TRUE == (layerInfo->layerEnable))
      {

         kal_uint32 layerWidth  = layerWindow->buttomRight.x - layerWindow->topLeft.x + 1;
         kal_uint32 layerHeight = layerWindow->buttomRight.y - layerWindow->topLeft.y + 1;
         kal_uint32 layerPitch = 0;

         CLR_G2D_LAYER_CON(layer);
         switch(layerInfo->function)
         {
            case G2D_OVERLAY_LAYER_FUNCTION_BUFFER:
            {
               layerPitch = (layerCanvas->width) * (layerCanvas->bytesPerPixel);

               if(KAL_TRUE == (layerInfo->srcKeyEnable))
               {
                  ENABLE_G2D_LAYER_CON_SRC_KEY(layer);
                  SET_G2D_LAYER_SRC_KEY(layer, layerInfo->srcKeyValue);
               }
               if(KAL_TRUE == (layerInfo->layerAlphaEnable))
               {
                  ENABLE_G2D_LAYER_CON_ALPHA(layer);
                  SET_G2D_LAYER_CON_ALPHA(layer, layerInfo->layerAlphaValue);
               }
               {
                  switch(layerCanvas->colorFormat)
                  {
                     case G2D_COLOR_FORMAT_GRAY:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_GRAY);
                     break;
                     case G2D_COLOR_FORMAT_RGB565:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_RGB565);
                     break;
                     case G2D_COLOR_FORMAT_ARGB8888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB8888);
                     break;
                     case G2D_COLOR_FORMAT_RGB888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_RGB888);
                     break;
                     case G2D_COLOR_FORMAT_BGR888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_BGR888);
                     break;
                     case G2D_COLOR_FORMAT_PARGB8888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_PARGB8888);
                     break;
                     case G2D_COLOR_FORMAT_UYVY422:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_UYVY);
                     break;
                     case G2D_COLOR_FORMAT_ARGB8565:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB8565);
                     break;
                     case G2D_COLOR_FORMAT_PARGB8565:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_PARGB8565);
                     break;
                     case G2D_COLOR_FORMAT_ARGB6666:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB6666);
                     break;
                     case G2D_COLOR_FORMAT_PARGB6666:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_PARGB6666);
                     break;
                     default:
                        ASSERT(0);
                     break;
                  }
               }
            }
            break;
            case G2D_OVERLAY_LAYER_FUNCTION_RECT:
            {
               layerPitch = (layerCanvas->width) * (layerCanvas->bytesPerPixel);

               ENABLE_G2D_LAYER_CON_RECT_FILL(layer);
               if(KAL_TRUE == (layerInfo->srcKeyEnable))
               {
                  ASSERT(0);
               }
               if(KAL_TRUE == (layerInfo->layerAlphaEnable))
               {
                  ENABLE_G2D_LAYER_CON_ALPHA(layer);
                  SET_G2D_LAYER_CON_ALPHA(layer, layerInfo->layerAlphaValue);
               }
               {
                  switch(layerCanvas->colorFormat)
                  {
                     case G2D_COLOR_FORMAT_GRAY:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_GRAY);
                     break;
                     case G2D_COLOR_FORMAT_RGB565:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_RGB565);
                     break;
                     case G2D_COLOR_FORMAT_ARGB8888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB8888);
                     break;
                     case G2D_COLOR_FORMAT_RGB888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_RGB888);
                     break;
                     case G2D_COLOR_FORMAT_BGR888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_BGR888);
                     break;
                     case G2D_COLOR_FORMAT_PARGB8888:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_PARGB8888);
                     break;
                     case G2D_COLOR_FORMAT_UYVY422:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_UYVY);
                     break;
                     case G2D_COLOR_FORMAT_ARGB8565:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB8565);
                     break;
                     case G2D_COLOR_FORMAT_PARGB8565:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_PARGB8565);
                     break;
                     case G2D_COLOR_FORMAT_ARGB6666:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB6666);
                     break;
                     case G2D_COLOR_FORMAT_PARGB6666:
                        SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_PARGB6666);
                     break;
                     default:
                        ASSERT(0);
                     break;
                  }
               }
               /// Set color;
               SET_G2D_LAYER_RECTANGLE_FILL_COLOR(layer, (kal_uint32)layerInfo->rectFillColor);
            }
            break;
            case G2D_OVERLAY_LAYER_FUNCTION_NORMAL_FONT:
            {
               layerPitch = layerCanvas->width;

               ENABLE_G2D_LAYER_CON_FONT(layer);
               if((KAL_TRUE == (layerInfo->srcKeyEnable)) || (KAL_TRUE == (layerInfo->layerAlphaEnable)))
               {
                  ASSERT(0);
               }
               ASSERT(G2D_CW_ROTATE_ANGLE_000 == (layerInfo->rotation));

               SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB8888);
               layerCanvas->colorFormat = G2D_COLOR_FORMAT_ARGB8888;
               SET_G2D_LAYER_FONT_FOREGROUND_COLOR(layer, layerInfo->foregroundColor);
            }
            break;
            case G2D_OVERLAY_LAYER_FUNCTION_AA_FONT:
            {
               layerPitch = layerCanvas->width;

               ENABLE_G2D_LAYER_CON_FONT(layer);
               SET_G2D_LAYER_CON_AA_FONT_BIT(layer, (layerInfo->fontBit) << 28);

               if((KAL_TRUE == (layerInfo->srcKeyEnable)) || (KAL_FALSE == (layerInfo->layerAlphaEnable)))
               {
                  ASSERT(0);
               }
               ENABLE_G2D_LAYER_CON_ALPHA(layer);
               SET_G2D_LAYER_CON_ALPHA(layer, 0xFF);

               ASSERT(G2D_CW_ROTATE_ANGLE_000 == (layerInfo->rotation));
               layerCanvas->colorFormat = G2D_COLOR_FORMAT_ARGB8888;
               SET_G2D_LAYER_CON_COLOR_FORMAT(layer, G2D_LX_CON_COLOR_ARGB8888);
               SET_G2D_LAYER_FONT_FOREGROUND_COLOR(layer, layerInfo->foregroundColor);
            }
            break;
            default:
              ASSERT(0);
         }
         /// rotation
         {
            switch(layerInfo->rotation)
            {
               case G2D_CW_ROTATE_ANGLE_000:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_000);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x, layerWindow->topLeft.y);
               }
               break;
               case G2D_CW_ROTATE_ANGLE_090:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_090);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x, layerWindow->topLeft.y + layerWidth - 1);
               }
               break;
               case G2D_CW_ROTATE_ANGLE_180:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_180);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x + layerWidth - 1, layerWindow->topLeft.y + layerHeight - 1);
               }
               break;
               case G2D_CW_ROTATE_ANGLE_270:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_270);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x + layerHeight - 1, layerWindow->topLeft.y);

               }
               break;
               case G2D_CW_ROTATE_ANGLE_MIRROR_000:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_MIRROR_000);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x + layerWidth - 1, layerWindow->topLeft.y);
               }
               break;
               case G2D_CW_ROTATE_ANGLE_MIRROR_090:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_MIRROR_090);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x, layerWindow->topLeft.y);
               }
               break;
               case G2D_CW_ROTATE_ANGLE_MIRROR_180:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_MIRROR_180);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x, layerWindow->topLeft.y + layerHeight - 1);
               }
               break;
               case G2D_CW_ROTATE_ANGLE_MIRROR_270:
               {
                  SET_G2D_LAYER_CON_ROTATE(layer, G2D_LX_CON_CCW_ROTATE_MIRROR_270);
                  SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x + layerHeight - 1, layerWindow->topLeft.y + layerWidth - 1);
               }
               break;
               default:
                  ASSERT(0);
               break;
            }
         }

         switch(layerCanvas->colorFormat)
         {
            case G2D_COLOR_FORMAT_GRAY:
            case G2D_COLOR_FORMAT_RGB565:
            case G2D_COLOR_FORMAT_ARGB8888:
            case G2D_COLOR_FORMAT_RGB888:
            case G2D_COLOR_FORMAT_BGR888:
            case G2D_COLOR_FORMAT_PARGB8888:
            case G2D_COLOR_FORMAT_ARGB8565:
            case G2D_COLOR_FORMAT_PARGB8565:
            case G2D_COLOR_FORMAT_ARGB6666:
            case G2D_COLOR_FORMAT_PARGB6666:
               SET_G2D_LAYER_ADDR(layer, (kal_uint32)(layerCanvas->RGBBufferAddr));
            break;
            case G2D_COLOR_FORMAT_UYVY422:
               SET_G2D_LAYER_ADDR(layer, (kal_uint32)(layerCanvas->YUVBufferAddr[0]));
            break;
            default:
               ASSERT(0);
            break;
         }

         ASSERT(((unsigned)layerPitch) <= 0x2000);
         SET_G2D_LAYER_PITCH(layer, layerPitch);

         /// This is set in rotation
         /// SET_G2D_LAYER_OFFSET(layer, layerWindow->topLeft.x, layerWindow->topLeft.y);
         SET_G2D_LAYER_SIZE(layer, layerWidth, layerHeight);
         ENABLE_G2D_ROI_LAYER(layer);
      }
   }
}