blob: 2558725bc83af925cd24bf41356259eeb733c865 [file] [log] [blame]
/****************************************************************************
*
* The MIT License (MIT)
*
* Copyright (c) 2014 - 2020 Vivante Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*****************************************************************************
*
* The GPL License (GPL)
*
* Copyright (C) 2014 - 2020 Vivante Corporation
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*****************************************************************************
*
* Note: This software is released under dual MIT and GPL licenses. A
* recipient may use this file under the terms of either the MIT license or
* GPL License. If you wish to use only one license not the other, you can
* indicate your decision by deleting one of the above license notices in your
* version of this file.
*
*****************************************************************************/
#ifndef __gc_hal_engine_vg_h_
#define __gc_hal_engine_vg_h_
#ifdef __cplusplus
extern "C" {
#endif
#include "shared/gc_hal_types.h"
/******************************************************************************\
******************************** VG Structures *******************************
\******************************************************************************/
/**
** @ingroup gcoVG
**
** @brief Definition of the color ramp used by the gradient paints.
**
** The gcsCOLOR_RAMP structure defines the layout of one single color inside
** a color ramp which is used by gradient paints.
*/
typedef struct _gcsCOLOR_RAMP
{
/** Value for the color stop. */
gctFLOAT stop;
/** Red color channel value for the color stop. */
gctFLOAT red;
/** Green color channel value for the color stop. */
gctFLOAT green;
/** Blue color channel value for the color stop. */
gctFLOAT blue;
/** Alpha color channel value for the color stop. */
gctFLOAT alpha;
}
gcsCOLOR_RAMP, * gcsCOLOR_RAMP_PTR;
/**
** @ingroup gcoVG
**
** @brief Definition of the color ramp used by the gradient paints in fixed form.
**
** The gcsCOLOR_RAMP structure defines the layout of one single color inside
** a color ramp which is used by gradient paints.
*/
typedef struct _gcsFIXED_COLOR_RAMP
{
/** Value for the color stop. */
gctFIXED_POINT stop;
/** Red color channel value for the color stop. */
gctFIXED_POINT red;
/** Green color channel value for the color stop. */
gctFIXED_POINT green;
/** Blue color channel value for the color stop. */
gctFIXED_POINT blue;
/** Alpha color channel value for the color stop. */
gctFIXED_POINT alpha;
}
gcsFIXED_COLOR_RAMP, * gcsFIXED_COLOR_RAMP_PTR;
/**
** @ingroup gcoVG
**
** @brief Rectangle structure used by the gcoVG object.
**
** This structure defines the layout of a rectangle. Make sure width and
** height are larger than 0.
*/
typedef struct _gcsVG_RECT * gcsVG_RECT_PTR;
typedef struct _gcsVG_RECT
{
/** Left location of the rectangle. */
gctINT x;
/** Top location of the rectangle. */
gctINT y;
/** Width of the rectangle. */
gctINT width;
/** Height of the rectangle. */
gctINT height;
}
gcsVG_RECT;
/**
** @ingroup gcoVG
**
** @brief Path command buffer attribute structure.
**
** The gcsPATH_BUFFER_INFO structure contains the specifics about
** the layout of the path data command buffer.
*/
typedef struct _gcsPATH_BUFFER_INFO * gcsPATH_BUFFER_INFO_PTR;
typedef struct _gcsPATH_BUFFER_INFO
{
gctUINT reservedForHead;
gctUINT reservedForTail;
}
gcsPATH_BUFFER_INFO;
/**
** @ingroup gcoVG
**
** @brief Definition of the path data container structure.
**
** The gcsPATH structure defines the layout of the path data container.
*/
typedef struct _gcsPATH_DATA * gcsPATH_DATA_PTR;
typedef struct _gcsPATH_DATA
{
/* Data container in command buffer format. */
gcsCMDBUFFER data;
/* Path data type. */
gcePATHTYPE dataType;
}
gcsPATH_DATA;
/******************************************************************************\
********************************* gcoHAL Object ********************************
\******************************************************************************/
/* Query path data storage attributes. */
gceSTATUS
gcoHAL_QueryPathStorage(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
OUT gcsPATH_BUFFER_INFO_PTR Information
);
/* Associate a completion signal with the command buffer. */
gceSTATUS
gcoHAL_AssociateCompletion(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcsPATH_DATA_PTR PathData
);
/* Release the current command buffer completion signal. */
gceSTATUS
gcoHAL_DeassociateCompletion(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcsPATH_DATA_PTR PathData
);
/* Verify whether the command buffer is still in use. */
gceSTATUS
gcoHAL_CheckCompletion(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcsPATH_DATA_PTR PathData
);
/* Wait until the command buffer is no longer in use. */
gceSTATUS
gcoHAL_WaitCompletion(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcsPATH_DATA_PTR PathData
);
/* Flush the pixel cache. */
gceSTATUS
gcoHAL_Flush(
#if gcdGC355_PROFILER
IN gcoHAL Hal,
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth
#else
IN gcoHAL Hal
#endif
);
/* Split a harwdare address into pool and offset. */
gceSTATUS
gcoHAL_SplitAddress(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT32 Address,
OUT gcePOOL * Pool,
OUT gctUINT32 * Offset
);
/* Combine pool and offset into a harwdare address. */
gceSTATUS
gcoHAL_CombineAddress(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcePOOL Pool,
IN gctUINT32 Offset,
OUT gctUINT32 * Address
);
/* Schedule to free linear video memory allocated. */
gceSTATUS
gcoHAL_ScheduleVideoMemory(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT32 Node
);
/* Free linear video memory allocated with gcoHAL_AllocateLinearVideoMemory. */
gceSTATUS
gcoHAL_FreeVideoMemory(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT32 Node,
IN gctBOOL asynchroneous
);
/* Query command buffer attributes. */
gceSTATUS
gcoHAL_QueryCommandBuffer(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
OUT gcsCOMMAND_BUFFER_INFO_PTR Information
);
/* Allocate and lock linear video memory. */
gceSTATUS
gcoHAL_AllocateLinearVideoMemory(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT Size,
IN gctUINT Alignment,
IN gcePOOL Pool,
OUT gctUINT32 * Node,
OUT gctUINT32 * Address,
OUT gctPOINTER * Memory
);
/* Align the specified size accordingly to the hardware requirements. */
gceSTATUS
gcoHAL_GetAlignedSurfaceSize(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceSURF_TYPE Type,
IN OUT gctUINT32_PTR Width,
IN OUT gctUINT32_PTR Height
);
gceSTATUS
gcoHAL_ReserveTask(
IN gcoHAL Hal,
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceBLOCK Block,
IN gctUINT TaskCount,
IN gctUINT32 Bytes,
OUT gctPOINTER * Memory
);
/******************************************************************************\
********************************** gcoVG Object ********************************
\******************************************************************************/
/** @defgroup gcoVG gcoVG
**
** The gcoVG object abstracts the VG hardware pipe.
*/
#if gcdGC355_PROFILER
void
gcoVG_ProfilerEnableDisable(
IN gcoVG Vg,
IN gctUINT enableGetAPITimes,
IN gctFILE apiTimeFile
);
void
gcoVG_ProfilerTreeDepth(
IN gcoVG Vg,
IN gctUINT TreeDepth
);
void
gcoVG_ProfilerSetStates(
IN gcoVG Vg,
IN gctUINT treeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth
);
#endif
gctBOOL
gcoVG_IsMaskSupported(
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceSURF_FORMAT Format
);
gctBOOL
gcoVG_IsTargetSupported(
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceSURF_FORMAT Format
);
gctBOOL
gcoVG_IsImageSupported(
#if gcdGC355_PROFILER
IN gcoVG Vg,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceSURF_FORMAT Format
);
gctUINT8 gcoVG_PackColorComponent(
#if gcdGC355_PROFILER
gcoVG Vg,
gctUINT TreeDepth,
gctUINT saveLayerTreeDepth,
gctUINT varTreeDepth,
#endif
gctFLOAT Value
);
gceSTATUS
gcoVG_Construct(
IN gcoHAL Hal,
OUT gcoVG * Vg
);
gceSTATUS
gcoVG_Destroy(
IN gcoVG Vg
#if gcdGC355_PROFILER
,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth
#endif
);
void
gcoVG_SetTesselationSize(
IN gcoVG Vg,
IN gctUINT Width,
IN gctUINT Height
);
gceSTATUS
gcoVG_SetTarget(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Target,
IN gceORIENTATION orientation
);
gceSTATUS
gcoVG_UnsetTarget(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Surface
);
gceSTATUS
gcoVG_SetUserToSurface(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT UserToSurface[9]
);
gceSTATUS
gcoVG_SetSurfaceToImage(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT SurfaceToImage[9]
);
gceSTATUS
gcoVG_EnableMask(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctBOOL Enable
);
gceSTATUS
gcoVG_SetMask(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Mask
);
gceSTATUS
gcoVG_UnsetMask(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Surface
);
gceSTATUS
gcoVG_FlushMask(
IN gcoVG Vg
#if gcdGC355_PROFILER
,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth
#endif
);
gceSTATUS
gcoVG_EnableScissor(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctBOOL Enable
);
gceSTATUS
gcoVG_SetScissor(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctSIZE_T RectangleCount,
IN gcsVG_RECT_PTR Rectangles
);
gceSTATUS
gcoVG_EnableColorTransform(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctBOOL Enable
);
gceSTATUS
gcoVG_SetColorTransform(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT ColorTransform[8]
);
gceSTATUS
gcoVG_SetTileFillColor(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT Red,
IN gctFLOAT Green,
IN gctFLOAT Blue,
IN gctFLOAT Alpha
);
gceSTATUS
gcoVG_SetSolidPaint(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT8 Red,
IN gctUINT8 Green,
IN gctUINT8 Blue,
IN gctUINT8 Alpha
);
gceSTATUS
gcoVG_SetLinearPaint(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT Constant,
IN gctFLOAT StepX,
IN gctFLOAT StepY
);
gceSTATUS
gcoVG_SetRadialPaint(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT LinConstant,
IN gctFLOAT LinStepX,
IN gctFLOAT LinStepY,
IN gctFLOAT RadConstant,
IN gctFLOAT RadStepX,
IN gctFLOAT RadStepY,
IN gctFLOAT RadStepXX,
IN gctFLOAT RadStepYY,
IN gctFLOAT RadStepXY
);
gceSTATUS
gcoVG_SetPatternPaint(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctFLOAT UConstant,
IN gctFLOAT UStepX,
IN gctFLOAT UStepY,
IN gctFLOAT VConstant,
IN gctFLOAT VStepX,
IN gctFLOAT VStepY,
IN gctBOOL Linear
);
gceSTATUS
gcoVG_SetColorRamp(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF ColorRamp,
IN gceTILE_MODE ColorRampSpreadMode
);
gceSTATUS
gcoVG_SetPattern(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctINT32 width,
IN gctINT32 height,
IN gcoSURF Pattern,
IN gceTILE_MODE TileMode,
IN gceIMAGE_FILTER Filter
);
gceSTATUS
gcoVG_SetImageMode(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceVG_IMAGE Mode
);
gceSTATUS
gcoVG_SetBlendMode(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceVG_BLEND Mode
);
gceSTATUS
gcoVG_SetRenderingQuality(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceRENDER_QUALITY Quality
);
gceSTATUS
gcoVG_SetFillRule(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceFILL_RULE FillRule
);
gceSTATUS
gcoVG_FinalizePath(
IN gcoVG Vg,
IN gcsPATH_DATA_PTR PathData
);
gceSTATUS
gcoVG_Clear(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctINT X,
IN gctINT Y,
IN gctINT Width,
IN gctINT Height
);
gceSTATUS
gcoVG_DrawPath(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcsPATH_DATA_PTR PathData,
IN gctFLOAT Scale,
IN gctFLOAT Bias,
#if gcdMOVG
IN gctUINT32 Width,
IN gctUINT32 Height,
IN gctFLOAT *Bounds,
#endif
IN gctBOOL SoftwareTesselation
);
gceSTATUS
gcoVG_DrawImage(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gceORIENTATION orientation,
IN gcoSURF Source,
IN gcsPOINT_PTR SourceOrigin,
IN gcsPOINT_PTR TargetOrigin,
IN gcsSIZE_PTR SourceSize,
IN gctINT SourceX,
IN gctINT SourceY,
IN gctINT TargetX,
IN gctINT TargetY,
IN gctINT Width,
IN gctINT Height,
IN gctBOOL Mask,
IN gctBOOL isDrawImage
);
gceSTATUS
gcoVG_TesselateImage(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Image,
IN gcsVG_RECT_PTR Rectangle,
IN gceIMAGE_FILTER Filter,
IN gctBOOL Mask,
#if gcdMOVG
IN gctBOOL SoftwareTesselation,
IN gceVG_BLEND BlendMode,
IN gctINT Width,
IN gctINT Height
#else
IN gctBOOL SoftwareTesselation
#endif
);
gceSTATUS
gcoVG_DrawSurfaceToImage(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Image,
IN const gcsVG_RECT_PTR SrcRectangle,
IN const gctFLOAT DstBounds[4],
IN const gctFLOAT DstPoints[8],
IN const gctFLOAT ImgMatrix[9],
IN const gctFLOAT RectMatrix[9],
IN gceIMAGE_FILTER Filter,
IN gctBOOL Mask,
IN gctBOOL FirstTime
#if gcdMOVG
,
IN gctINT TSWidth,
IN gctINT TSHeight
#endif
);
gceSTATUS
gcoVG_DrawSurfaceToImageMasked(
IN gcoVG Vg,
IN gcoSURF Image,
IN gcsVG_RECT_PTR SrcRect,
IN gctINT X,
IN gctINT Y,
IN gctINT Width,
IN gctINT Height,
IN const gctFLOAT Matrix[9]
);
gceSTATUS
gcoVG_Blit(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Source,
IN gcoSURF Target,
IN gcsVG_RECT_PTR SrcRect,
IN gcsVG_RECT_PTR TrgRect,
IN gceIMAGE_FILTER Filter,
IN gceVG_BLEND Mode
);
gceSTATUS
gcoVG_ColorMatrix(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Source,
IN gcoSURF Target,
IN const gctFLOAT * Matrix,
IN gceCHANNEL ColorChannels,
IN gctBOOL FilterLinear,
IN gctBOOL FilterPremultiplied,
IN gcsPOINT_PTR SourceOrigin,
IN gcsPOINT_PTR TargetOrigin,
IN gctINT Width,
IN gctINT Height
);
gceSTATUS
gcoVG_SeparableConvolve(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Source,
IN gcoSURF Target,
IN gctINT KernelWidth,
IN gctINT KernelHeight,
IN gctINT ShiftX,
IN gctINT ShiftY,
IN const gctINT16 * KernelX,
IN const gctINT16 * KernelY,
IN gctFLOAT Scale,
IN gctFLOAT Bias,
IN gceTILE_MODE TilingMode,
IN gctFLOAT_PTR FillColor,
IN gceCHANNEL ColorChannels,
IN gctBOOL FilterLinear,
IN gctBOOL FilterPremultiplied,
IN gcsPOINT_PTR SourceOrigin,
IN gcsPOINT_PTR TargetOrigin,
IN gcsSIZE_PTR SourceSize,
IN gctINT Width,
IN gctINT Height
);
gceSTATUS
gcoVG_GaussianBlur(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gcoSURF Source,
IN gcoSURF Target,
IN gctFLOAT StdDeviationX,
IN gctFLOAT StdDeviationY,
IN gceTILE_MODE TilingMode,
IN gctFLOAT_PTR FillColor,
IN gceCHANNEL ColorChannels,
IN gctBOOL FilterLinear,
IN gctBOOL FilterPremultiplied,
IN gcsPOINT_PTR SourceOrigin,
IN gcsPOINT_PTR TargetOrigin,
IN gcsSIZE_PTR SourceSize,
IN gctINT Width,
IN gctINT Height
);
gceSTATUS
gcoVG_EnableDither(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctBOOL Enable
);
/* Color Key States. */
gceSTATUS
gcoVG_SetColorKey(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gcsPROFILERFUNCNODE *DList,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT32* Values,
IN gctBOOL * Enables
);
/* Index Color States. */
gceSTATUS
gcoVG_SetColorIndexTable(
IN gcoVG Vg,
#if gcdGC355_PROFILER
IN gcsPROFILERFUNCNODE *DList,
IN gctUINT TreeDepth,
IN gctUINT saveLayerTreeDepth,
IN gctUINT varTreeDepth,
#endif
IN gctUINT32* Values,
IN gctINT32 Count
);
gceSTATUS
gcoVG_SetYUV2RGBStdCust(
IN gcoVG Vg,
IN gctBOOL YUV2RGBStdCust
);
gceSTATUS
gcoVG_SetYUV2RGB(
IN gcoVG Vg,
IN gctFLOAT *coef,
IN gctFLOAT *offset,
IN gctBOOL *cfg
);
gceSTATUS
gcoVG_SetRGB2YUVParameters(
IN gcoVG Vg,
IN gctFLOAT *coef,
IN gctFLOAT *offset,
IN gctBOOL *cfg
);
/* VG RS feature support: YUV format conversion. */
gceSTATUS
gcoVG_Resolve(
IN gcoVG Vg,
IN gcoSURF Source,
IN gcoSURF Target,
IN gctINT SX,
IN gctINT SY,
IN gctINT DX,
IN gctINT DY,
IN gctINT Width,
IN gctINT Height,
IN gctINT Src_uv,
IN gctINT Src_standard,
IN gctINT Dst_uv,
IN gctINT Dst_standard,
IN gctINT Dst_alpha,
IN gctBOOL Dst_standard_cust
);
#ifdef __cplusplus
}
#endif
#endif /* __gc_hal_vg_h_ */