⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perfrag.c

📁 SMDK6410 Test Code Revision 02. s3c6410 official test code, shifting all the controller functional
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************
*
* 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 + -