| /**************************************************************************** |
| * |
| * Copyright (c) 2005 - 2016 by Vivante Corp. All rights reserved. |
| * |
| * The material in this file is confidential and contains trade secrets |
| * of Vivante Corporation. This is proprietary information owned by |
| * Vivante Corporation. No part of this work may be disclosed, |
| * reproduced, copied, transmitted, or used in any way for any purpose, |
| * without the express written permission of Vivante Corporation. |
| * |
| *****************************************************************************/ |
| |
| |
| #ifndef __gc_hal_raster_h_ |
| #define __gc_hal_raster_h_ |
| |
| #include "gc_hal_enum.h" |
| #include "gc_hal_types.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /******************************************************************************\ |
| ****************************** Object Declarations ***************************** |
| \******************************************************************************/ |
| |
| typedef struct _gcoBRUSH * gcoBRUSH; |
| typedef struct _gcoBRUSH_CACHE * gcoBRUSH_CACHE; |
| |
| /******************************************************************************\ |
| ******************************** gcoBRUSH Object ******************************* |
| \******************************************************************************/ |
| |
| /* Create a new solid color gcoBRUSH object. */ |
| gceSTATUS |
| gcoBRUSH_ConstructSingleColor( |
| IN gcoHAL Hal, |
| IN gctUINT32 ColorConvert, |
| IN gctUINT32 Color, |
| IN gctUINT64 Mask, |
| gcoBRUSH * Brush |
| ); |
| |
| /* Create a new monochrome gcoBRUSH object. */ |
| gceSTATUS |
| gcoBRUSH_ConstructMonochrome( |
| IN gcoHAL Hal, |
| IN gctUINT32 OriginX, |
| IN gctUINT32 OriginY, |
| IN gctUINT32 ColorConvert, |
| IN gctUINT32 FgColor, |
| IN gctUINT32 BgColor, |
| IN gctUINT64 Bits, |
| IN gctUINT64 Mask, |
| gcoBRUSH * Brush |
| ); |
| |
| /* Create a color gcoBRUSH object. */ |
| gceSTATUS |
| gcoBRUSH_ConstructColor( |
| IN gcoHAL Hal, |
| IN gctUINT32 OriginX, |
| IN gctUINT32 OriginY, |
| IN gctPOINTER Address, |
| IN gceSURF_FORMAT Format, |
| IN gctUINT64 Mask, |
| gcoBRUSH * Brush |
| ); |
| |
| /* Destroy an gcoBRUSH object. */ |
| gceSTATUS |
| gcoBRUSH_Destroy( |
| IN gcoBRUSH Brush |
| ); |
| |
| /******************************************************************************\ |
| ******************************** gcoSURF Object ******************************* |
| \******************************************************************************/ |
| |
| /* Set cipping rectangle. */ |
| gceSTATUS |
| gcoSURF_SetClipping( |
| IN gcoSURF Surface |
| ); |
| |
| /* Clear one or more rectangular areas. */ |
| gceSTATUS |
| gcoSURF_Clear2D( |
| IN gcoSURF DestSurface, |
| IN gctUINT32 RectCount, |
| IN gcsRECT_PTR DestRect, |
| IN gctUINT32 LoColor, |
| IN gctUINT32 HiColor |
| ); |
| |
| /* Draw one or more Bresenham lines. */ |
| gceSTATUS |
| gcoSURF_Line( |
| IN gcoSURF Surface, |
| IN gctUINT32 LineCount, |
| IN gcsRECT_PTR Position, |
| IN gcoBRUSH Brush, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop |
| ); |
| |
| /* Generic rectangular blit. */ |
| gceSTATUS |
| gcoSURF_Blit( |
| IN OPTIONAL gcoSURF SrcSurface, |
| IN gcoSURF DestSurface, |
| IN gctUINT32 RectCount, |
| IN OPTIONAL gcsRECT_PTR SrcRect, |
| IN gcsRECT_PTR DestRect, |
| IN OPTIONAL gcoBRUSH Brush, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN OPTIONAL gceSURF_TRANSPARENCY Transparency, |
| IN OPTIONAL gctUINT32 TransparencyColor, |
| IN OPTIONAL gctPOINTER Mask, |
| IN OPTIONAL gceSURF_MONOPACK MaskPack |
| ); |
| |
| /* Monochrome blit. */ |
| gceSTATUS |
| gcoSURF_MonoBlit( |
| IN gcoSURF DestSurface, |
| IN gctPOINTER Source, |
| IN gceSURF_MONOPACK SourcePack, |
| IN gcsPOINT_PTR SourceSize, |
| IN gcsPOINT_PTR SourceOrigin, |
| IN gcsRECT_PTR DestRect, |
| IN OPTIONAL gcoBRUSH Brush, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gctBOOL ColorConvert, |
| IN gctUINT8 MonoTransparency, |
| IN gceSURF_TRANSPARENCY Transparency, |
| IN gctUINT32 FgColor, |
| IN gctUINT32 BgColor |
| ); |
| |
| /* Filter blit. */ |
| gceSTATUS |
| gcoSURF_FilterBlit( |
| IN gcoSURF SrcSurface, |
| IN gcoSURF DestSurface, |
| IN gcsRECT_PTR SrcRect, |
| IN gcsRECT_PTR DestRect, |
| IN gcsRECT_PTR DestSubRect |
| ); |
| |
| /* Enable alpha blending engine in the hardware and disengage the ROP engine. */ |
| gceSTATUS |
| gcoSURF_EnableAlphaBlend( |
| IN gcoSURF Surface, |
| IN gctUINT8 SrcGlobalAlphaValue, |
| IN gctUINT8 DstGlobalAlphaValue, |
| IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode, |
| IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode, |
| IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode, |
| IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode, |
| IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode, |
| IN gceSURF_BLEND_FACTOR_MODE DstFactorMode, |
| IN gceSURF_PIXEL_COLOR_MODE SrcColorMode, |
| IN gceSURF_PIXEL_COLOR_MODE DstColorMode |
| ); |
| |
| /* Disable alpha blending engine in the hardware and engage the ROP engine. */ |
| gceSTATUS |
| gcoSURF_DisableAlphaBlend( |
| IN gcoSURF Surface |
| ); |
| |
| /* Copy a rectangular area with format conversion. */ |
| gceSTATUS |
| gcoSURF_CopyPixels( |
| IN gcoSURF Source, |
| IN gcoSURF Target, |
| IN gctINT SourceX, |
| IN gctINT SourceY, |
| IN gctINT TargetX, |
| IN gctINT TargetY, |
| IN gctINT Width, |
| IN gctINT Height |
| ); |
| |
| /* Read surface pixel. */ |
| gceSTATUS |
| gcoSURF_ReadPixel( |
| IN gcoSURF Surface, |
| IN gctPOINTER Memory, |
| IN gctINT X, |
| IN gctINT Y, |
| IN gceSURF_FORMAT Format, |
| OUT gctPOINTER PixelValue |
| ); |
| |
| /* Write surface pixel. */ |
| gceSTATUS |
| gcoSURF_WritePixel( |
| IN gcoSURF Surface, |
| IN gctPOINTER Memory, |
| IN gctINT X, |
| IN gctINT Y, |
| IN gceSURF_FORMAT Format, |
| IN gctPOINTER PixelValue |
| ); |
| |
| gceSTATUS |
| gcoSURF_SetDither( |
| IN gcoSURF Surface, |
| IN gctBOOL Dither |
| ); |
| |
| gceSTATUS |
| gcoSURF_Set2DSource( |
| gcoSURF Surface, |
| gceSURF_ROTATION Rotation |
| ); |
| |
| gceSTATUS |
| gcoSURF_Set2DTarget( |
| gcoSURF Surface, |
| gceSURF_ROTATION Rotation |
| ); |
| |
| /******************************************************************************\ |
| ********************************** gco2D Object ********************************* |
| \******************************************************************************/ |
| |
| /* Construct a new gco2D object. */ |
| gceSTATUS |
| gco2D_Construct( |
| IN gcoHAL Hal, |
| OUT gco2D * Hardware |
| ); |
| |
| /* Destroy an gco2D object. */ |
| gceSTATUS |
| gco2D_Destroy( |
| IN gco2D Hardware |
| ); |
| |
| /* Sets the maximum number of brushes in the brush cache. */ |
| gceSTATUS |
| gco2D_SetBrushLimit( |
| IN gco2D Hardware, |
| IN gctUINT MaxCount |
| ); |
| |
| /* Flush the brush. */ |
| gceSTATUS |
| gco2D_FlushBrush( |
| IN gco2D Engine, |
| IN gcoBRUSH Brush, |
| IN gceSURF_FORMAT Format |
| ); |
| |
| /* Program the specified solid color brush. */ |
| gceSTATUS |
| gco2D_LoadSolidBrush( |
| IN gco2D Engine, |
| IN gceSURF_FORMAT Format, |
| IN gctUINT32 ColorConvert, |
| IN gctUINT32 Color, |
| IN gctUINT64 Mask |
| ); |
| |
| gceSTATUS |
| gco2D_LoadMonochromeBrush( |
| IN gco2D Engine, |
| IN gctUINT32 OriginX, |
| IN gctUINT32 OriginY, |
| IN gctUINT32 ColorConvert, |
| IN gctUINT32 FgColor, |
| IN gctUINT32 BgColor, |
| IN gctUINT64 Bits, |
| IN gctUINT64 Mask |
| ); |
| |
| gceSTATUS |
| gco2D_LoadColorBrush( |
| IN gco2D Engine, |
| IN gctUINT32 OriginX, |
| IN gctUINT32 OriginY, |
| IN gctUINT32 Address, |
| IN gceSURF_FORMAT Format, |
| IN gctUINT64 Mask |
| ); |
| |
| /* Configure monochrome source. */ |
| gceSTATUS |
| gco2D_SetMonochromeSource( |
| IN gco2D Engine, |
| IN gctBOOL ColorConvert, |
| IN gctUINT8 MonoTransparency, |
| IN gceSURF_MONOPACK DataPack, |
| IN gctBOOL CoordRelative, |
| IN gceSURF_TRANSPARENCY Transparency, |
| IN gctUINT32 FgColor, |
| IN gctUINT32 BgColor |
| ); |
| |
| /* Configure color source. */ |
| gceSTATUS |
| gco2D_SetColorSource( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_FORMAT Format, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctBOOL CoordRelative, |
| IN gceSURF_TRANSPARENCY Transparency, |
| IN gctUINT32 TransparencyColor |
| ); |
| |
| /* Configure color source extension for full rotation. */ |
| gceSTATUS |
| gco2D_SetColorSourceEx( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_FORMAT Format, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight, |
| IN gctBOOL CoordRelative, |
| IN gceSURF_TRANSPARENCY Transparency, |
| IN gctUINT32 TransparencyColor |
| ); |
| |
| /* Configure color source. */ |
| gceSTATUS |
| gco2D_SetColorSourceAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_FORMAT Format, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight, |
| IN gctBOOL CoordRelative |
| ); |
| |
| gceSTATUS |
| gco2D_SetColorSourceN( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_FORMAT Format, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight, |
| IN gctUINT32 SurfaceNumber |
| ); |
| |
| /* Configure masked color source. */ |
| gceSTATUS |
| gco2D_SetMaskedSource( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_FORMAT Format, |
| IN gctBOOL CoordRelative, |
| IN gceSURF_MONOPACK MaskPack |
| ); |
| |
| /* Configure masked color source extension for full rotation. */ |
| gceSTATUS |
| gco2D_SetMaskedSourceEx( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_FORMAT Format, |
| IN gctBOOL CoordRelative, |
| IN gceSURF_MONOPACK MaskPack, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight |
| ); |
| |
| /* Setup the source rectangle. */ |
| gceSTATUS |
| gco2D_SetSource( |
| IN gco2D Engine, |
| IN gcsRECT_PTR SrcRect |
| ); |
| |
| /* Set clipping rectangle. */ |
| gceSTATUS |
| gco2D_SetClipping( |
| IN gco2D Engine, |
| IN gcsRECT_PTR Rect |
| ); |
| |
| /* Configure destination. */ |
| gceSTATUS |
| gco2D_SetTarget( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth |
| ); |
| |
| /* Configure destination extension for full rotation. */ |
| gceSTATUS |
| gco2D_SetTargetEx( |
| IN gco2D Engine, |
| IN gctUINT32 Address, |
| IN gctUINT32 Stride, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight |
| ); |
| |
| /* Calculate and program the stretch factors. */ |
| gceSTATUS |
| gco2D_CalcStretchFactor( |
| IN gco2D Engine, |
| IN gctINT32 SrcSize, |
| IN gctINT32 DestSize, |
| OUT gctUINT32_PTR Factor |
| ); |
| |
| gceSTATUS |
| gco2D_SetStretchFactors( |
| IN gco2D Engine, |
| IN gctUINT32 HorFactor, |
| IN gctUINT32 VerFactor |
| ); |
| |
| /* Calculate and program the stretch factors based on the rectangles. */ |
| gceSTATUS |
| gco2D_SetStretchRectFactors( |
| IN gco2D Engine, |
| IN gcsRECT_PTR SrcRect, |
| IN gcsRECT_PTR DestRect |
| ); |
| |
| /* Create a new solid color gcoBRUSH object. */ |
| gceSTATUS |
| gco2D_ConstructSingleColorBrush( |
| IN gco2D Engine, |
| IN gctUINT32 ColorConvert, |
| IN gctUINT32 Color, |
| IN gctUINT64 Mask, |
| gcoBRUSH * Brush |
| ); |
| |
| /* Create a new monochrome gcoBRUSH object. */ |
| gceSTATUS |
| gco2D_ConstructMonochromeBrush( |
| IN gco2D Engine, |
| IN gctUINT32 OriginX, |
| IN gctUINT32 OriginY, |
| IN gctUINT32 ColorConvert, |
| IN gctUINT32 FgColor, |
| IN gctUINT32 BgColor, |
| IN gctUINT64 Bits, |
| IN gctUINT64 Mask, |
| gcoBRUSH * Brush |
| ); |
| |
| /* Create a color gcoBRUSH object. */ |
| gceSTATUS |
| gco2D_ConstructColorBrush( |
| IN gco2D Engine, |
| IN gctUINT32 OriginX, |
| IN gctUINT32 OriginY, |
| IN gctPOINTER Address, |
| IN gceSURF_FORMAT Format, |
| IN gctUINT64 Mask, |
| gcoBRUSH * Brush |
| ); |
| |
| /* Clear one or more rectangular areas. */ |
| gceSTATUS |
| gco2D_Clear( |
| IN gco2D Engine, |
| IN gctUINT32 RectCount, |
| IN gcsRECT_PTR Rect, |
| IN gctUINT32 Color32, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| /* Draw one or more Bresenham lines. */ |
| gceSTATUS |
| gco2D_Line( |
| IN gco2D Engine, |
| IN gctUINT32 LineCount, |
| IN gcsRECT_PTR Position, |
| IN gcoBRUSH Brush, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| /* Draw one or more Bresenham lines based on the 32-bit color. */ |
| gceSTATUS |
| gco2D_ColorLine( |
| IN gco2D Engine, |
| IN gctUINT32 LineCount, |
| IN gcsRECT_PTR Position, |
| IN gctUINT32 Color32, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| /* Generic blit. */ |
| gceSTATUS |
| gco2D_Blit( |
| IN gco2D Engine, |
| IN gctUINT32 RectCount, |
| IN gcsRECT_PTR Rect, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| gceSTATUS |
| gco2D_Blend( |
| IN gco2D Engine, |
| IN gctUINT32 SrcCount, |
| IN gctUINT32 RectCount, |
| IN gcsRECT_PTR Rect, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| /* Batch blit. */ |
| gceSTATUS |
| gco2D_BatchBlit( |
| IN gco2D Engine, |
| IN gctUINT32 RectCount, |
| IN gcsRECT_PTR SrcRect, |
| IN gcsRECT_PTR DestRect, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| /* Stretch blit. */ |
| gceSTATUS |
| gco2D_StretchBlit( |
| IN gco2D Engine, |
| IN gctUINT32 RectCount, |
| IN gcsRECT_PTR Rect, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| /* Monochrome blit. */ |
| gceSTATUS |
| gco2D_MonoBlit( |
| IN gco2D Engine, |
| IN gctPOINTER StreamBits, |
| IN gcsPOINT_PTR StreamSize, |
| IN gcsRECT_PTR StreamRect, |
| IN gceSURF_MONOPACK SrcStreamPack, |
| IN gceSURF_MONOPACK DestStreamPack, |
| IN gcsRECT_PTR DestRect, |
| IN gctUINT32 FgRop, |
| IN gctUINT32 BgRop, |
| IN gceSURF_FORMAT DestFormat |
| ); |
| |
| gceSTATUS |
| gco2D_MonoBlitEx( |
| IN gco2D Engine, |
| IN gctPOINTER StreamBits, |
| IN gctINT32 StreamStride, |
| IN gctINT32 StreamWidth, |
| IN gctINT32 StreamHeight, |
| IN gctINT32 StreamX, |
| IN gctINT32 StreamY, |
| IN gctUINT32 FgColor, |
| IN gctUINT32 BgColor, |
| IN gcsRECT_PTR SrcRect, |
| IN gcsRECT_PTR DstRect, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop |
| ); |
| |
| /* Set kernel size. */ |
| gceSTATUS |
| gco2D_SetKernelSize( |
| IN gco2D Engine, |
| IN gctUINT8 HorKernelSize, |
| IN gctUINT8 VerKernelSize |
| ); |
| |
| /* Set filter type. */ |
| gceSTATUS |
| gco2D_SetFilterType( |
| IN gco2D Engine, |
| IN gceFILTER_TYPE FilterType |
| ); |
| |
| /* Set the filter kernel by user. */ |
| gceSTATUS |
| gco2D_SetUserFilterKernel( |
| IN gco2D Engine, |
| IN gceFILTER_PASS_TYPE PassType, |
| IN gctUINT16_PTR KernelArray |
| ); |
| |
| /* Select the pass(es) to be done for user defined filter. */ |
| gceSTATUS |
| gco2D_EnableUserFilterPasses( |
| IN gco2D Engine, |
| IN gctBOOL HorPass, |
| IN gctBOOL VerPass |
| ); |
| |
| /* Frees the temporary buffer allocated by filter blit operation. */ |
| gceSTATUS |
| gco2D_FreeFilterBuffer( |
| IN gco2D Engine |
| ); |
| |
| /* Filter blit. */ |
| gceSTATUS |
| gco2D_FilterBlit( |
| IN gco2D Engine, |
| IN gctUINT32 SrcAddress, |
| IN gctUINT SrcStride, |
| IN gctUINT32 SrcUAddress, |
| IN gctUINT SrcUStride, |
| IN gctUINT32 SrcVAddress, |
| IN gctUINT SrcVStride, |
| IN gceSURF_FORMAT SrcFormat, |
| IN gceSURF_ROTATION SrcRotation, |
| IN gctUINT32 SrcSurfaceWidth, |
| IN gcsRECT_PTR SrcRect, |
| IN gctUINT32 DestAddress, |
| IN gctUINT DestStride, |
| IN gceSURF_FORMAT DestFormat, |
| IN gceSURF_ROTATION DestRotation, |
| IN gctUINT32 DestSurfaceWidth, |
| IN gcsRECT_PTR DestRect, |
| IN gcsRECT_PTR DestSubRect |
| ); |
| |
| /* Filter blit extension for full rotation. */ |
| gceSTATUS |
| gco2D_FilterBlitEx( |
| IN gco2D Engine, |
| IN gctUINT32 SrcAddress, |
| IN gctUINT SrcStride, |
| IN gctUINT32 SrcUAddress, |
| IN gctUINT SrcUStride, |
| IN gctUINT32 SrcVAddress, |
| IN gctUINT SrcVStride, |
| IN gceSURF_FORMAT SrcFormat, |
| IN gceSURF_ROTATION SrcRotation, |
| IN gctUINT32 SrcSurfaceWidth, |
| IN gctUINT32 SrcSurfaceHeight, |
| IN gcsRECT_PTR SrcRect, |
| IN gctUINT32 DestAddress, |
| IN gctUINT DestStride, |
| IN gceSURF_FORMAT DestFormat, |
| IN gceSURF_ROTATION DestRotation, |
| IN gctUINT32 DestSurfaceWidth, |
| IN gctUINT32 DestSurfaceHeight, |
| IN gcsRECT_PTR DestRect, |
| IN gcsRECT_PTR DestSubRect |
| ); |
| |
| gceSTATUS |
| gco2D_FilterBlitEx2( |
| IN gco2D Engine, |
| IN gctUINT32_PTR SrcAddresses, |
| IN gctUINT32 SrcAddressNum, |
| IN gctUINT32_PTR SrcStrides, |
| IN gctUINT32 SrcStrideNum, |
| IN gceTILING SrcTiling, |
| IN gceSURF_FORMAT SrcFormat, |
| IN gceSURF_ROTATION SrcRotation, |
| IN gctUINT32 SrcSurfaceWidth, |
| IN gctUINT32 SrcSurfaceHeight, |
| IN gcsRECT_PTR SrcRect, |
| IN gctUINT32_PTR DestAddresses, |
| IN gctUINT32 DestAddressNum, |
| IN gctUINT32_PTR DestStrides, |
| IN gctUINT32 DestStrideNum, |
| IN gceTILING DestTiling, |
| IN gceSURF_FORMAT DestFormat, |
| IN gceSURF_ROTATION DestRotation, |
| IN gctUINT32 DestSurfaceWidth, |
| IN gctUINT32 DestSurfaceHeight, |
| IN gcsRECT_PTR DestRect, |
| IN gcsRECT_PTR DestSubRect |
| ); |
| |
| /* Enable alpha blending engine in the hardware and disengage the ROP engine. */ |
| gceSTATUS |
| gco2D_EnableAlphaBlend( |
| IN gco2D Engine, |
| IN gctUINT8 SrcGlobalAlphaValue, |
| IN gctUINT8 DstGlobalAlphaValue, |
| IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode, |
| IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode, |
| IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode, |
| IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode, |
| IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode, |
| IN gceSURF_BLEND_FACTOR_MODE DstFactorMode, |
| IN gceSURF_PIXEL_COLOR_MODE SrcColorMode, |
| IN gceSURF_PIXEL_COLOR_MODE DstColorMode |
| ); |
| |
| /* Enable alpha blending engine in the hardware. */ |
| gceSTATUS |
| gco2D_EnableAlphaBlendAdvanced( |
| IN gco2D Engine, |
| IN gceSURF_PIXEL_ALPHA_MODE SrcAlphaMode, |
| IN gceSURF_PIXEL_ALPHA_MODE DstAlphaMode, |
| IN gceSURF_GLOBAL_ALPHA_MODE SrcGlobalAlphaMode, |
| IN gceSURF_GLOBAL_ALPHA_MODE DstGlobalAlphaMode, |
| IN gceSURF_BLEND_FACTOR_MODE SrcFactorMode, |
| IN gceSURF_BLEND_FACTOR_MODE DstFactorMode |
| ); |
| |
| /* Enable alpha blending engine with Porter Duff rule. */ |
| gceSTATUS |
| gco2D_SetPorterDuffBlending( |
| IN gco2D Engine, |
| IN gce2D_PORTER_DUFF_RULE Rule |
| ); |
| |
| /* Disable alpha blending engine in the hardware and engage the ROP engine. */ |
| gceSTATUS |
| gco2D_DisableAlphaBlend( |
| IN gco2D Engine |
| ); |
| |
| /* Retrieve the maximum number of 32-bit data chunks for a single DE command. */ |
| gctUINT32 |
| gco2D_GetMaximumDataCount( |
| void |
| ); |
| |
| /* Retrieve the maximum number of rectangles, that can be passed in a single DE command. */ |
| gctUINT32 |
| gco2D_GetMaximumRectCount( |
| void |
| ); |
| |
| /* Returns the pixel alignment of the surface. */ |
| gceSTATUS |
| gco2D_GetPixelAlignment( |
| gceSURF_FORMAT Format, |
| gcsPOINT_PTR Alignment |
| ); |
| |
| /* Retrieve monochrome stream pack size. */ |
| gceSTATUS |
| gco2D_GetPackSize( |
| IN gceSURF_MONOPACK StreamPack, |
| OUT gctUINT32 * PackWidth, |
| OUT gctUINT32 * PackHeight |
| ); |
| |
| /* Flush the 2D pipeline. */ |
| gceSTATUS |
| gco2D_Flush( |
| IN gco2D Engine |
| ); |
| |
| /* Load 256-entry color table for INDEX8 source surfaces. */ |
| gceSTATUS |
| gco2D_LoadPalette( |
| IN gco2D Engine, |
| IN gctUINT FirstIndex, |
| IN gctUINT IndexCount, |
| IN gctPOINTER ColorTable, |
| IN gctBOOL ColorConvert |
| ); |
| |
| /* Enable/disable 2D BitBlt mirrorring. */ |
| gceSTATUS |
| gco2D_SetBitBlitMirror( |
| IN gco2D Engine, |
| IN gctBOOL HorizontalMirror, |
| IN gctBOOL VerticalMirror |
| ); |
| |
| /* |
| * Set the transparency for source, destination and pattern. |
| * It also enable or disable the DFB color key mode. |
| */ |
| gceSTATUS |
| gco2D_SetTransparencyAdvancedEx( |
| IN gco2D Engine, |
| IN gce2D_TRANSPARENCY SrcTransparency, |
| IN gce2D_TRANSPARENCY DstTransparency, |
| IN gce2D_TRANSPARENCY PatTransparency, |
| IN gctBOOL EnableDFBColorKeyMode |
| ); |
| |
| /* Set the transparency for source, destination and pattern. */ |
| gceSTATUS |
| gco2D_SetTransparencyAdvanced( |
| IN gco2D Engine, |
| IN gce2D_TRANSPARENCY SrcTransparency, |
| IN gce2D_TRANSPARENCY DstTransparency, |
| IN gce2D_TRANSPARENCY PatTransparency |
| ); |
| |
| /* Set the source color key. */ |
| gceSTATUS |
| gco2D_SetSourceColorKeyAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 ColorKey |
| ); |
| |
| /* Set the source color key range. */ |
| gceSTATUS |
| gco2D_SetSourceColorKeyRangeAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 ColorKeyLow, |
| IN gctUINT32 ColorKeyHigh |
| ); |
| |
| /* Set the target color key. */ |
| gceSTATUS |
| gco2D_SetTargetColorKeyAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 ColorKey |
| ); |
| |
| /* Set the target color key range. */ |
| gceSTATUS |
| gco2D_SetTargetColorKeyRangeAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 ColorKeyLow, |
| IN gctUINT32 ColorKeyHigh |
| ); |
| |
| /* Set the YUV color space mode. */ |
| gceSTATUS |
| gco2D_SetYUVColorMode( |
| IN gco2D Engine, |
| IN gce2D_YUV_COLOR_MODE Mode |
| ); |
| |
| /* Setup the source global color value in ARGB8 format. */ |
| gceSTATUS gco2D_SetSourceGlobalColorAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 Color32 |
| ); |
| |
| /* Setup the target global color value in ARGB8 format. */ |
| gceSTATUS gco2D_SetTargetGlobalColorAdvanced( |
| IN gco2D Engine, |
| IN gctUINT32 Color32 |
| ); |
| |
| /* Setup the source and target pixel multiply modes. */ |
| gceSTATUS |
| gco2D_SetPixelMultiplyModeAdvanced( |
| IN gco2D Engine, |
| IN gce2D_PIXEL_COLOR_MULTIPLY_MODE SrcPremultiplySrcAlpha, |
| IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstPremultiplyDstAlpha, |
| IN gce2D_GLOBAL_COLOR_MULTIPLY_MODE SrcPremultiplyGlobalMode, |
| IN gce2D_PIXEL_COLOR_MULTIPLY_MODE DstDemultiplyDstAlpha |
| ); |
| |
| /* Set the GPU clock cycles after which the idle engine will keep auto-flushing. */ |
| gceSTATUS |
| gco2D_SetAutoFlushCycles( |
| IN gco2D Engine, |
| IN gctUINT32 Cycles |
| ); |
| |
| #if VIVANTE_PROFILER |
| /* Read the profile registers available in the 2D engine and sets them in the profile. |
| The function will also reset the pixelsRendered counter every time. |
| */ |
| gceSTATUS |
| gco2D_ProfileEngine( |
| IN gco2D Engine, |
| OPTIONAL gcs2D_PROFILE_PTR Profile |
| ); |
| #endif |
| |
| /* Enable or disable 2D dithering. */ |
| gceSTATUS |
| gco2D_EnableDither( |
| IN gco2D Engine, |
| IN gctBOOL Enable |
| ); |
| |
| gceSTATUS |
| gco2D_SetGenericSource( |
| IN gco2D Engine, |
| IN gctUINT32_PTR Addresses, |
| IN gctUINT32 AddressNum, |
| IN gctUINT32_PTR Strides, |
| IN gctUINT32 StrideNum, |
| IN gceTILING Tiling, |
| IN gceSURF_FORMAT Format, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight |
| ); |
| |
| gceSTATUS |
| gco2D_SetGenericTarget( |
| IN gco2D Engine, |
| IN gctUINT32_PTR Addresses, |
| IN gctUINT32 AddressNum, |
| IN gctUINT32_PTR Strides, |
| IN gctUINT32 StrideNum, |
| IN gceTILING Tiling, |
| IN gceSURF_FORMAT Format, |
| IN gceSURF_ROTATION Rotation, |
| IN gctUINT32 SurfaceWidth, |
| IN gctUINT32 SurfaceHeight |
| ); |
| |
| gceSTATUS |
| gco2D_SetCurrentSourceIndex( |
| IN gco2D Engine, |
| IN gctUINT32 SrcIndex |
| ); |
| |
| gceSTATUS |
| gco2D_MultiSourceBlit( |
| IN gco2D Engine, |
| IN gctUINT32 SourceMask, |
| IN gcsRECT_PTR DestRect, |
| IN gctUINT32 RectCount |
| ); |
| |
| gceSTATUS |
| gco2D_SetROP( |
| IN gco2D Engine, |
| IN gctUINT8 FgRop, |
| IN gctUINT8 BgRop |
| ); |
| |
| gceSTATUS |
| gco2D_SetGdiStretchMode( |
| IN gco2D Engine, |
| IN gctBOOL Enable |
| ); |
| |
| gceSTATUS |
| gco2D_SetSourceTileStatus( |
| IN gco2D Engine, |
| IN gce2D_TILE_STATUS_CONFIG TSControl, |
| IN gceSURF_FORMAT CompressedFormat, |
| IN gctUINT32 ClearValue, |
| IN gctUINT32 GpuAddress |
| ); |
| |
| gceSTATUS |
| gco2D_SetTargetTileStatus( |
| IN gco2D Engine, |
| IN gce2D_TILE_STATUS_CONFIG TileStatusConfig, |
| IN gceSURF_FORMAT CompressedFormat, |
| IN gctUINT32 ClearValue, |
| IN gctUINT32 GpuAddress |
| ); |
| |
| gceSTATUS |
| gco2D_QueryU32( |
| IN gco2D Engine, |
| IN gce2D_QUERY Item, |
| OUT gctUINT32_PTR Value |
| ); |
| |
| gceSTATUS |
| gco2D_SetStateU32( |
| IN gco2D Engine, |
| IN gce2D_STATE State, |
| IN gctUINT32 Value |
| ); |
| |
| gceSTATUS |
| gco2D_SetStateArrayI32( |
| IN gco2D Engine, |
| IN gce2D_STATE State, |
| IN gctINT32_PTR Array, |
| IN gctINT32 ArraySize |
| ); |
| |
| gceSTATUS |
| gco2D_SetStateArrayU32( |
| IN gco2D Engine, |
| IN gce2D_STATE State, |
| IN gctUINT32_PTR Array, |
| IN gctINT32 ArraySize |
| ); |
| |
| gceSTATUS |
| gco2D_SetTargetRect( |
| IN gco2D Engine, |
| IN gcsRECT_PTR Rect |
| ); |
| |
| gceSTATUS |
| gco2D_Set2DEngine( |
| IN gco2D Engine |
| ); |
| |
| gceSTATUS |
| gco2D_UnSet2DEngine( |
| IN gco2D Engine |
| ); |
| |
| gceSTATUS |
| gco2D_Get2DEngine( |
| OUT gco2D * Engine |
| ); |
| |
| gceSTATUS |
| gco2D_Commit( |
| IN gco2D Engine, |
| IN gctBOOL Stall |
| ); |
| |
| gceSTATUS |
| gco2D_NatureRotateTranslation( |
| IN gctBOOL IsSrcRot, |
| IN gce2D_NATURE_ROTATION NatureRotation, |
| IN gctINT32 SrcSurfaceWidth, |
| IN gctINT32 SrcSurfaceHeight, |
| IN gctINT32 DstSurfaceWidth, |
| IN gctINT32 DstSurfaceHeight, |
| IN OUT gcsRECT_PTR SrcRect, |
| IN OUT gcsRECT_PTR DstRect, |
| OUT gceSURF_ROTATION * SrcRotation, |
| OUT gceSURF_ROTATION * DstRotation |
| ); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __gc_hal_raster_h_ */ |