📄 fgl.h
字号:
//// Copyright (c) Samsung Electronics. Co. LTD. All rights reserved.///*++THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OFANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TOTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR APARTICULAR PURPOSE.*//** * @file fgl.h * @brief This is the header file for fgl library. * @version 1.5 */#if !defined(__FIMG_H__)#define __FIMG_H__#include "fglconfig.h"#if defined __cplusplusextern "C" {#endif/**************************************************************************** * Typedefs ****************************************************************************/typedef unsigned int FGL_BOOL;typedef unsigned int FG_BOOL;/**************************************************************************** * Defines ****************************************************************************/#define FGL_TRUE (1==1)#define FGL_FALSE (!(FGL_TRUE))#define FGL_NULL ((void*)0)#define FGL_ZERO 0#define FGL_ONE 1#if 0#define NO_ERROR 0#define ERROR -1#define NOT_SUPPORTED -2 /* test not supported by this config */#endif/* Vertex/Pixel Shader */#define BUILD_SHADER_VERSION(major, minor) (0xFFFF0000 | (((minor)&0xFF)<<8) | ((major) & 0xFF))#define VERTEX_SHADER_MAGIC (((('V')&0xFF)<<0)|((('S')&0xFF)<<8)|(((' ')&0xFF)<<16)|(((' ')&0xFF)<<24))#define PIXEL_SHADER_MAGIC (((('P')&0xFF)<<0)|((('S')&0xFF)<<8)|(((' ')&0xFF)<<16)|(((' ')&0xFF)<<24))#define SHADER_VERSION BUILD_SHADER_VERSION(3,0)#define SET_BIT(n) (1<<n)#define FIMG_3DSE_V121 0x01020100#define FIMG_3DSE_V150 0x01050000#define FIMG_3DSE_V200 0x02000000/**************************************************************************** * Macros ****************************************************************************//** GLOBAL REGISTER PIPELINE STATE BIT POSITION */#define FGL_PIPESTATE_HOSTFIFO_BIT (0)#define FGL_PIPESTATE_HI_BIT (1)#define FGL_PIPESTATE_HI2VS_BIT (2)#define FGL_PIPESTATE_VC_BIT (3)#define FGL_PIPESTATE_VS_BIT (4)#define FGL_PIPESTATE_PE_BIT (8)#define FGL_PIPESTATE_TSE_BIT (9)#define FGL_PIPESTATE_RA_BIT (10)#define FGL_PIPESTATE_PS0_BIT (12)#define FGL_PIPESTATE_PS1_BIT (13)#define FGL_PIPESTATE_PF0_BIT (16)#define FGL_PIPESTATE_PF1_BIT (17)#define FGL_PIPESTATE_CCACHE0_BIT (18)#define FGL_PIPESTATE_CCACHE1_BIT (19)#define FGL_PIPESTATE_HOSTFIFO (1)#define FGL_PIPESTATE_HI (1 << FGL_PIPESTATE_HI_BIT)#define FGL_PIPESTATE_HI2VS (1 << FGL_PIPESTATE_HI2VS_BIT)#define FGL_PIPESTATE_VC (1 << FGL_PIPESTATE_VC_BIT)#define FGL_PIPESTATE_VS (1 << FGL_PIPESTATE_VS_BIT)#define FGL_PIPESTATE_PE (1 << FGL_PIPESTATE_PE_BIT)#define FGL_PIPESTATE_TSE (1 << FGL_PIPESTATE_TSE_BIT)#define FGL_PIPESTATE_RA (1 << FGL_PIPESTATE_RA_BIT)#define FGL_PIPESTATE_PS0 (1 << FGL_PIPESTATE_PS0_BIT)#define FGL_PIPESTATE_PS1 (1 << FGL_PIPESTATE_PS1_BIT)#define FGL_PIPESTATE_PF0 (1 << FGL_PIPESTATE_PF0_BIT)#define FGL_PIPESTATE_PF1 (1 << FGL_PIPESTATE_PF1_BIT)#define FGL_PIPESTATE_CCACHE0 (1 << FGL_PIPESTATE_CCACHE0_BIT)#define FGL_PIPESTATE_CCACHE1 (1 << FGL_PIPESTATE_CCACHE1_BIT)//FGL_PIPESTATE_X_TILL_Y = or of bits in [X,Y) including X, excluding Y#define FGL_PIPESTATE_HI_TILL_PE (FGL_PIPESTATE_HOSTFIFO \ | FGL_PIPESTATE_HI \ | FGL_PIPESTATE_HI2VS \ | FGL_PIPESTATE_VC \ | FGL_PIPESTATE_VS )#define FGL_PIPESTATE_HI_TILL_PS (FGL_PIPESTATE_HOSTFIFO \ | FGL_PIPESTATE_HI \ | FGL_PIPESTATE_HI2VS \ | FGL_PIPESTATE_VC \ | FGL_PIPESTATE_VS \ | FGL_PIPESTATE_PE \ | FGL_PIPESTATE_TSE \ | FGL_PIPESTATE_RA ) #ifndef _FIMG_PIPELINE_SINGLE #define FGL_PIPESTATE_PS (FGL_PIPESTATE_PS0 \ | FGL_PIPESTATE_PS1) #define FGL_PIPESTATE_PF (FGL_PIPESTATE_PF0 \ | FGL_PIPESTATE_PF1) #define FGL_PIPESTATE_CCACHE (FGL_PIPESTATE_CCACHE0 \ | FGL_PIPESTATE_CCACHE1)#else // _FIMG_PIPELINE_SINGLE #define FGL_PIPESTATE_CCACHE FGL_PIPESTATE_CCACHE0 #define FGL_PIPESTATE_PS FGL_PIPESTATE_PS0 #define FGL_PIPESTATE_PF FGL_PIPESTATE_PF0#endif // _FIMG_PIPELINE_SINGLE#define FGL_PIPESTATE_ALL (FGL_PIPESTATE_HOSTFIFO \ | FGL_PIPESTATE_HI \ | FGL_PIPESTATE_HI2VS \ | FGL_PIPESTATE_VC \ | FGL_PIPESTATE_VS \ | FGL_PIPESTATE_PE \ | FGL_PIPESTATE_TSE \ | FGL_PIPESTATE_RA \ | FGL_PIPESTATE_PS \ | FGL_PIPESTATE_PF)// for Blend#define FGL_PIPESTATE_ALL_WITH_CCACHE (FGL_PIPESTATE_HOSTFIFO \ | FGL_PIPESTATE_HI \ | FGL_PIPESTATE_HI2VS \ | FGL_PIPESTATE_VC \ | FGL_PIPESTATE_VS \ | FGL_PIPESTATE_PE \ | FGL_PIPESTATE_TSE \ | FGL_PIPESTATE_RA \ | FGL_PIPESTATE_PS \ | FGL_PIPESTATE_PF \ | FGL_PIPESTATE_CCACHE)/** GLOBAL REGISTER CACHE STATE BIT POSITION */#define FGL_CACHECTL_FLUSH_ZCACHE0 (1)#define FGL_CACHECTL_FLUSH_ZCACHE1 (1 << 1)#define FGL_CACHECTL_FLUSH_CCACHE0 (1 << 4)#define FGL_CACHECTL_FLUSH_CCACHE1 (1 << 5)#define FGL_CACHECTL_CLEAR_TCACHE0 (1 << 8)#define FGL_CACHECTL_CLEAR_TCACHE1 (1 << 9)#define FGL_CACHECTL_CLEAR_VTCACHE (1 << 12)#ifndef _FIMG_PIPELINE_SINGLE #define FGL_CACHECTL_FLUSH_ZCACHE (FGL_CACHECTL_FLUSH_ZCACHE0 \ | FGL_CACHECTL_FLUSH_ZCACHE1) #define FGL_CACHECTL_FLUSH_CCACHE (FGL_CACHECTL_FLUSH_CCACHE0 \ | FGL_CACHECTL_FLUSH_CCACHE1) #define FGL_CACHECTL_CLEAR_TCACHE (FGL_CACHECTL_CLEAR_TCACHE0 \ | FGL_CACHECTL_CLEAR_TCACHE1)#else // _FIMG_PIPELINE_SINGLE #define FGL_CACHECTL_FLUSH_ZCACHE FGL_CACHECTL_FLUSH_ZCACHE0 #define FGL_CACHECTL_FLUSH_CCACHE FGL_CACHECTL_FLUSH_CCACHE0// #define FGL_CACHECTL_CLEAR_TCACHE FGL_CACHECTL_CLEAR_TCACHE0// Texture cache always 2 bit-checked #define FGL_CACHECTL_CLEAR_TCACHE (FGL_CACHECTL_CLEAR_TCACHE0 \ | FGL_CACHECTL_CLEAR_TCACHE1)#endif // _FIMG_PIPELINE_SINGLE#define FGL_CACHECTL_INIT_ALL (FGL_CACHECTL_FLUSH_ZCACHE \ | FGL_CACHECTL_FLUSH_CCACHE \ | FGL_CACHECTL_CLEAR_TCACHE \ | FGL_CACHECTL_CLEAR_VTCACHE)/**************************************************************************** * Enumerated types ****************************************************************************/typedef enum FGL_ErrorTag{ FGL_ERR_UNKNOWN = 0, FGL_ERR_NO_ERROR, FGL_ERR_INVALID_PARAMETER, FGL_ERR_INVALID_PRIMITIVE, FGL_ERR_INVALID_WIDTH, FGL_ERR_INVALID_HEIGHT, FGL_ERR_INVALID_SIZE, FGL_ERR_INVALID_VALUE, FGL_ERR_INVALID_SHADER_CODE, FGL_ERR_STATUS_BUSY, FGL_ERR_NO_SUPPORT} FGL_Error;typedef enum FGL_CacheClearFlagsTag{ FGL_CLEAR_DEPTH_CACHE = 3, FGL_CLEAR_COLOR_CACHE = (3 << 4), FGL_CLEAR_TEX_CACHE = (3 << 8), FGL_CLEAR_VTXTEX_CACHE = (1 << 12)} FGL_CacheClearFlags;typedef enum FGL_ResetFlagsTag{ FGL_RESET_TEX_UNIT = SET_BIT(0), FGL_RESET_PERFRAG_UNIT = SET_BIT(1), FGL_RESET_PIXEL_SHADER = SET_BIT(1), FGL_RESET_RASTER_UNIT = SET_BIT(2), FGL_RESET_SETUP_ENGINE = SET_BIT(3), FGL_RESET_GEOM_ENGINE = SET_BIT(4), FGL_RESET_VERTEX_SHADER = SET_BIT(5), FGL_RESET_HOST_INTERFACE = SET_BIT(7)} FGL_ResetFlags;#if TARGET_FIMG_VERSION == _FIMG3DSE_VER_2_0typedef enum FGL_ExeStateTag{ FGL_EXESTATE_IDLE = 0, FGL_EXESTATE_SFRAD = (1), FGL_EXESTATE_SFRAI = (1 << 2), FGL_EXESTATE_VBWR0 = (1 << 3), FGL_EXESTATE_INDEX = (1 << 6), FGL_EXESTATE_INDEXAI = (1 << 7), FGL_EXESTATE_INIT = (1 << 24), FGL_EXESTATE_LOAD = (1 << 25), FGL_EXESTATE_DECD = (1 << 26), FGL_EXESTATE_INTR = (1 << 27)} FGL_ExeState;#endif// Host Interfacetypedef enum FGL_IndexDataTypeTag{ FGL_INDEX_DATA_UINT = 0x80, FGL_INDEX_DATA_USHORT = 0x81, FGL_INDEX_DATA_UBYTE = 0x83} FGL_IndexDataType;typedef enum FGL_AttribDataTypeTag{ FGL_ATTRIB_DATA_BYTE = 0, FGL_ATTRIB_DATA_SHORT, FGL_ATTRIB_DATA_INT, FGL_ATTRIB_DATA_FIXED, FGL_ATTRIB_DATA_UBYTE, FGL_ATTRIB_DATA_USHORT, FGL_ATTRIB_DATA_UINT, FGL_ATTRIB_DATA_FLOAT, FGL_ATTRIB_DATA_NBYTE, FGL_ATTRIB_DATA_NSHORT, FGL_ATTRIB_DATA_NINT, FGL_ATTRIB_DATA_NFIXED, FGL_ATTRIB_DATA_NUBYTE, FGL_ATTRIB_DATA_NUSHORT, FGL_ATTRIB_DATA_NUINT} FGL_AttribDataType;typedef enum FGL_AttribCompOrderTag{ FGL_ATTRIB_ORDER_1ST = 0, FGL_ATTRIB_ORDER_2ND, FGL_ATTRIB_ORDER_3RD, FGL_ATTRIB_ORDER_4TH} FGL_AttribCompOrder;#if TARGET_FIMG_VERSION == _FIMG3DSE_VER_2_0typedef enum FGL_AddrModeTag{ FGL_ADDR_MODE_MEMORY_CACHEABLE = 0, FGL_ADDR_MODE_VB, FGL_ADDR_MODE_MEMORY_NON_CACHEABLE} FGL_AddrMode;typedef enum FGL_VBSizeModeTag{ FGL_NO_VB_8K_PREVC = 0, FGL_2K_VB_6K_PREVC, FGL_4K_VB_4K_PREVC, FGL_6K_VB_2K_PREVC} FGL_VBSizeMode;#endif// Vertex Shader typedef enum FGL_AttribTableIdxTag{ FGL_INPUT_ATTRIB_IDX0, FGL_INPUT_ATTRIB_IDX1, FGL_INPUT_ATTRIB_IDX2, FGL_OUTPUT_ATTRIB_IDX0, FGL_OUTPUT_ATTRIB_IDX1, FGL_OUTPUT_ATTRIB_IDX2} FGL_AttribTableIdx;// Primitive Enginetypedef enum FGL_PrimitiveTag{ FGL_PRIM_TRIANGLES, FGL_PRIM_TRIANGLE_FAN, FGL_PRIM_TRIANGLE_STRIP, FGL_PRIM_LINES, FGL_PRIM_LINE_LOOP, FGL_PRIM_LINE_STRIP, FGL_PRIM_POINTS, FGL_PRIM_POINT_SPRITE} FGL_Primitive;typedef enum FGL_ShadingTag{ FGL_SHADING_FLAT, FGL_SHADING_SMOOTH} FGL_Shading;// Raster Enginetypedef enum FGL_SampleTag{ FGL_SAMPLE_CENTER, FGL_SAMPLE_LEFTTOP} FGL_Sample;typedef enum FGL_DepthOffsetParamTag { FGL_DEPTH_OFFSET_FACTOR, FGL_DEPTH_OFFSET_UNITS, FGL_DEPTH_OFFSET_R} FGL_DepthOffsetParam;typedef enum FGL_FaceTag{ FGL_FACE_BACK, FGL_FACE_FRONT, FGL_FACE_RESERVED, FGL_FACE_FRONT_AND_BACK = 3} FGL_Face;typedef enum FGL_LodCoeffTag{ FGL_LODCOEFF_DISABLE, FGL_LODCOEFF_ENABLE_LOD, FGL_LODCOEFF_ENABLE_DDX, FGL_LODCOEFF_ENABLE_DDX_LOD, FGL_LODCOEFF_ENABLE_DDY, FGL_LODCOEFF_ENABLE_DDY_LOD, FGL_LODCOEFF_ENABLE_DDY_DDX, FGL_LODCOEFF_ENABLE_ALL} FGL_LodCoeff;// Texture Unitstypedef enum FGL_TexTypeTag{ FGL_TEX_2D = 1, FGL_TEX_CUBE, FGL_TEX_3D} FGL_TexType;typedef enum FGL_TexelFormatTag{ FGL_TEXEL_ARGB1555, FGL_TEXEL_RGB565, FGL_TEXEL_ARGB4444, FGL_TEXEL_DEPTH24, FGL_TEXEL_IA88, FGL_TEXEL_I8, FGL_TEXEL_ARGB8888, FGL_TEXEL_1BPP, FGL_TEXEL_2BPP, FGL_TEXEL_4BPP, FGL_TEXEL_8BPP, FGL_TEXEL_S3TC, FGL_TEXEL_Y1VY0U, FGL_TEXEL_VY1UY0, FGL_TEXEL_Y1UY0V, FGL_TEXEL_UY1VY0} FGL_TexelFormat;typedef enum FGL_PaletteFormatTag{ FGL_PALETTE_ARGB1555, FGL_PALETTE_RGB565, FGL_PALETTE_ARGB4444, FGL_PALETTE_ARGB8888} FGL_PaletteFormat;typedef enum FGL_TexWrapModeTag{ FGL_TEX_WRAP_REPEAT, FGL_TEX_WRAP_FLIP, FGL_TEX_WRAP_CLAMP} FGL_TexWrapMode;typedef enum FGL_CKeySelTag{ FGL_CKEY_DISABLE, FGL_CKEY_SEL1, FGL_CKEY_DISABLE2, FGL_CKEY_SEL2 = 3} FGL_CKeySel;typedef enum FGL_MipMapFilterTag{ FGL_FILTER_DISABLE, FGL_FILTER_NEAREST, FGL_FILTER_LINEAR} FGL_MipMapFilter;typedef enum FGL_TexSizeTag { FGL_TEX_SIZE_1P, FGL_TEX_SIZE_2P, FGL_TEX_SIZE_4P, FGL_TEX_SIZE_8P, FGL_TEX_SIZE_16P, FGL_TEX_SIZE_32P, FGL_TEX_SIZE_64P, FGL_TEX_SIZE_128P, FGL_TEX_SIZE_256P,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -