📄 perfrag.c
字号:
/******************************************************************************
*
* NAME : fimg_device.c
* TITLE : FIMG-3DSE ver1.0 Low Level API
* AUTHOR : Thomas, Kim
* CREATED : 29 Mar 2006
*
* COPYRIGHT : Copyright(c) 2005 by Samsung Electronics Limited. All rights
* reserved. No part of this software, either material or
* conceptual may be copied or distributed, transmitted,
* transcribed, stored in a retrieval system or translated into
* any human or computer language in any form by any means,
* electronic, mechanical, manual or other-wise, or disclosed
* to third parties without the express written permission of
* Samsung Electronics. Semiconductor Business, System LSI
* Division, Mobile Solution Development, Graphics IP Team
* in AP.
*
* DESCRIPTION :
*
* PLATFORM : ALL
* HISTORY : 29 Mar 2006 created
* CVS
* $RCSfile: fimg_pf.c,v $
* $Revision: 1.3 $
* $Author: cheolkyoo.kim $
* $Date: 2006/05/08 05:39:30 $
* $Locker: $
*
* $Source: C:/CVS/CVSrepository/FIMG-3DSE_SW/fimg3dse_fpga/fimg3d/device/fimg_pf.c,v $
* $State: Exp $
* $Log: fimg_pf.c,v $
* Revision 1.3 2006/05/08 05:39:30 cheolkyoo.kim
* no message
*
* Revision 1.2 2006/04/13 10:56:31 cheolkyoo.kim
* Replace FG_TRUE with FGL_TRUE.
*
* Revision 1.1 2006/04/05 03:13:16 cheolkyoo.kim
* Initial update per-fragment block's register-level API.
*
*****************************************************************************/
/*****************************************************************************
INCLUDES
*****************************************************************************/
#include "fgl.h"
#include "macros.h"
#include "register.h"
/*****************************************************************************
DEFINES
*****************************************************************************/
#define FGL_PF_UNIT_VALIDATOR ( \
FGL_PF_SCISSOR | \
FGL_PF_ALPHA | \
FGL_PF_STENCIL | \
FGL_PF_DEPTH | \
FGL_PF_BLENDING | \
FGL_PF_LOGICALOP \
)
#define FGL_COMPARE_FUNC_VALIDATOR ( \
(1 << FGL_COMP_NEVER) | \
(1 << FGL_COMP_ALWAYS) | \
(1 << FGL_COMP_LESS) | \
(1 << FGL_COMP_LEQUAL) | \
(1 << FGL_COMP_EQUAL) | \
(1 << FGL_COMP_GREATER) | \
(1 << FGL_COMP_GEQUAL) | \
(1 << FGL_COMP_NOTEQUAL) \
)
/* STENCIL */
#define FGL_FACE_VALIDATOR ( \
(1 << FGL_FACE_BACK) | \
(1 << FGL_FACE_FRONT) | \
(1 << FGL_FACE_FRONT_AND_BACK) \
)
#define FGL_STENCIL_OP_VALIDATOR ( \
(1 << FGL_ACT_KEEP) | \
(1 << FGL_ACT_ZERO) | \
(1 << FGL_ACT_REPLACE) | \
(1 << FGL_ACT_INCR) | \
(1 << FGL_ACT_DECR) | \
(1 << FGL_ACT_INVERT) | \
(1 << FGL_ACT_INCRWRAP) | \
(1 << FGL_ACT_DECRWRAP) \
)
/* BLEND */
#define FGL_BLEND_FUNC_VALIDATOR ( \
(1 << FGL_BLEND_ZERO) | \
(1 << FGL_BLEND_ONE) | \
(1 << FGL_BLEND_SRC_COLOR) | \
(1 << FGL_BLEND_ONE_MINUS_SRC_COLOR) | \
(1 << FGL_BLEND_DST_COLOR) | \
(1 << FGL_BLEND_ONE_MINUS_DST_COLOR) | \
(1 << FGL_BLEND_SRC_ALPHA) | \
(1 << FGL_BLEND_ONE_MINUS_SRC_ALPHA) | \
(1 << FGL_BLEND_DST_ALPHA) | \
(1 << FGL_BLEND_ONE_MINUS_DST_ALPHA) | \
(1 << FGL_BLEND_CONSTANT_COLOR) | \
(1 << FGL_BLEND_ONE_MINUS_CONSTANT_COLOR) | \
(1 << FGL_BLEND_CONSTANT_ALPHA) | \
(1 << FGL_BLEND_ONE_MINUS_CONSTANT_ALPHA) | \
(1 << FGL_BLEND_SRC_ALPHA_SATURATE) \
)
#define FGL_BLEND_EQUA_VALIDATOR ( \
(1 << FGL_EQ_ADD) | \
(1 << FGL_EQ_SUBTRACT) | \
(1 << FGL_EQ_REV_SUBTRACT) | \
(1 << FGL_EQ_MIN) | \
(1 << FGL_EQ_MAX) \
)
/* LOGICAL OP */
#define FGL_LOGIC_OP_VALIDATOR ( \
(1 << FGL_OP_CLEAR) | \
(1 << FGL_OP_AND) | \
(1 << FGL_OP_AND_REVERSE) | \
(1 << FGL_OP_COPY) | \
(1 << FGL_OP_AND_INVERTED) | \
(1 << FGL_OP_NOOP) | \
(1 << FGL_OP_XOR) | \
(1 << FGL_OP_OR) | \
(1 << FGL_OP_NOR) | \
(1 << FGL_OP_EQUIV) | \
(1 << FGL_OP_INVERT) | \
(1 << FGL_OP_OR_REVERSE) | \
(1 << FGL_OP_COPY_INVERTED) | \
(1 << FGL_OP_OR_INVERTED) | \
(1 << FGL_OP_NAND) | \
(1 << FGL_OP_SET) \
)
#define FGL_PIXEL_FORMAT_VALIDATOR ( \
(1 << FGL_PIXEL_RGB555) | \
(1 << FGL_PIXEL_RGB565) | \
(1 << FGL_PIXEL_ARGB4444) | \
(1 << FGL_PIXEL_ARGB1555) | \
(1 << FGL_PIXEL_ARGB0888) | \
(1 << FGL_PIXEL_ARGB8888) \
)
/* Definitions used to detect enum ranges for expression validation */
/* Per-fragment */
#define PF_UNIT_VALID(enable) \
FGL_VALID_BITFIELD(enable, FGL_PF_UNIT_VALIDATOR)
/* Scissor reference value is an 11 bit field */
#define SCISSOR_REF_VALUE_VALID(scissorref) (scissorref < SCISSOR_MAX_SIZE)
#define ALPHA_COMPARE_FUNC_VALID(compfunc) \
FGL_ENUM_IN_SET(compfunc, FGL_COMPARE_FUNC_VALIDATOR)
/* Alpha reference value is an 8 bit field */
#define ALPHA_REF_VALUE_VALID(alpharef) (alpharef < 0x100)
/* Stencil reference value is an 8 bit field */
#define STENCIL_REF_VALUE_VALID(stencilref) (stencilref < 0x100)
#define STENCIL_FACE_VALID(face) \
FGL_ENUM_IN_SET(face, FGL_FACE_VALIDATOR)
#define STENCIL_OP_VALID(stencilop) \
FGL_ENUM_IN_SET(stencilop, FGL_STENCIL_OP_VALIDATOR)
#define STENCIL_COMPARE_FUNC_VALID(stencilfunc) \
FGL_ENUM_IN_SET(stencilfunc, FGL_COMPARE_FUNC_VALIDATOR)
/* Stencil mask value is an 8 bit field */
#define STENCIL_MASK_VALID(stencilmask) (stencilmask < 0x100)
#define DEPTH_COMPARE_FUNC_VALID(compfunc) \
FGL_ENUM_IN_SET(compfunc, FGL_COMPARE_FUNC_VALIDATOR)
#define BLEND_EQUATION_VALID(equa) \
FGL_ENUM_IN_SET(equa, FGL_BLEND_EQUA_VALIDATOR)
#define BLEND_SOURCE_FUNC_VALID(srcfunc) \
FGL_ENUM_IN_SET(srcfunc, FGL_BLEND_FUNC_VALIDATOR)
#define BLEND_DEST_FUNC_VALID(dstfunc) \
FGL_ENUM_IN_SET(dstfunc, FGL_BLEND_FUNC_VALIDATOR)
#define BLEND_SOURCE_ALPHA_FUNC_VALID(srcalphafunc) \
FGL_ENUM_IN_SET(srcalphafunc, FGL_BLEND_FUNC_VALIDATOR)
#define BLEND_DEST_ALPHA_FUNC_VALID(dstalphafunc) \
FGL_ENUM_IN_SET(dstalphafunc, FGL_BLEND_FUNC_VALIDATOR)
#define LOGIC_OP_FUNC_VALID(opcode) \
FGL_ENUM_IN_SET(opcode, FGL_LOGIC_OP_VALIDATOR)
#define PIXEL_FORMAT_VALID(format) \
FGL_ENUM_IN_SET(format, FGL_PIXEL_FORMAT_VALIDATOR)
/* Alpha constant alpha value is an 8 bit field */
#define ALPHA_THRESHOLD_VALUE_VALID(threshold) (threshold < 0x100)
/* Alpha constant alpha value is an 8 bit field */
#define ALPHA_CONSTANT_VALUE_VALID(constalpha) (constalpha < 0x100)
/*****************************************************************************
TYPEDEFS
*****************************************************************************/
/*****************************************************************************
CONSTANT MACRO
*****************************************************************************/
/*****************************************************************************
FUNCTION MACRO
*****************************************************************************/
/*****************************************************************************
TYPEDEFS
*****************************************************************************/
/*****************************************************************************
ENUMS
*****************************************************************************/
/*****************************************************************************
EXTERN
*****************************************************************************/
/*****************************************************************************
NON_STATIC GLOBALS
*****************************************************************************/
/*****************************************************************************
STATIC GLOBALS
*****************************************************************************/
/* The single FIMG device */
/* The FIMG device global variable */
/* structure declarations */
/* in some sort of meaningful order but, If defining large numbers of
essentially-independent utility functions, consider alphabetical order */
/* Internal Functions */
/* Functions */
// Per-fragment Unit Low-level API
/*****************************************************************************
* FUNCTIONS: fglEnablePerFragUnit
* SYNOPSIS: This function enables and disables various per-fragment capabilities:
* scissor test, alpha test, stencil test, depth test, blending
* and logical operation.
* PARAMETERS: [IN] unit: a enum value indicating an per-fragment capability.
* [IN] enable: a boolean value to enable or disable.
* RETURNS: FGL_ERR_NO_ERROR - if successful.
* FGL_ERR_INVALID_PARAMETER - unit was not one of the values listed
* in the FGL_PerFragUnit
* ERRNO: FGL_ERR_NO_ERROR 1
* FGL_ERR_INVALID_PARAMETER 3
*****************************************************************************/
FGL_Error
fglEnablePerFragUnit( FGL_PerFragUnit unit, FGL_BOOL enable )
{
FGL_Error ret = FGL_ERR_UNKNOWN;
FGL_BOOL bValidUnit = FGL_FALSE;
unsigned int nUnitEnableVal = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -