debug.c

来自「Lido PXA270平台开发板的最新BSP,包括源代码」· C语言 代码 · 共 2,713 行 · 第 1/5 页

C
2,713
字号
		{
			pszCKCtlState = "Use CK 0";
			break;
		}

		case MBX1_ISPTSPCTL_CK1SEL:
		{
			pszCKCtlState = "Use CK 1";
			break;
		}

		case MBX1_ISPTSPCTL_CKDISABLE:
		{
			pszCKCtlState = "CK Disabled";
			break;
		}
		
		default:
		{
			pszCKCtlState = "CK Disabled";
			break;
		}
	}

	return pszCKCtlState;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPPassCount
    
 PURPOSE	: Decodes the pass-count in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The number of passes
*****************************************************************************/
PSTR DBGDecodeISPTSPPassCount(DWORD	dwISPTSPCtl)
{
	DWORD	dwPasses;
	PSTR	pszPasses;

	dwPasses = (dwISPTSPCtl & (~MBX1_ISPTSPCTL_NUMPASSESCLRMASK)) >>
			   MBX1_ISPTSPCTL_NUMPASSESSHIFT;
	switch (dwPasses)
	{
		case 0:
		{
			pszPasses = "0 (untextured)";
			break;
		}

		case 1:
		{
			pszPasses = "1 (textured)";
			break;
		}

		case 2:
		{
			pszPasses = "2 (textured)";
			break;
		}

		case 3:
		{
			pszPasses = "3 (textured)";
			break;
		}

		case 4:
		{
			pszPasses = "4 (textured)";
			break;
		}

		default:
		{
			pszPasses = "Invalid";
			break;
		}
	}

	return pszPasses;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPUVCount
    
 PURPOSE	: Decodes the UV-count in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The number of UV coordinate sets
*****************************************************************************/
PSTR DBGDecodeISPTSPUVCount(DWORD dwISPTSPCtl)
{
	DWORD	dwUVCount;
	PSTR	pszUVs;

	dwUVCount = (dwISPTSPCtl & (~MBX1_ISPTSPCTL_UVCOUNTCLRMASK)) >> 
				MBX1_ISPTSPCTL_UVCOUNTSHIFT;

	switch (dwUVCount)
	{
		case 0:
		{
			pszUVs = "1 layer";
			break;
		}

		case 1:
		{
			pszUVs = "2 layers";
			break;
		}

		default:
		{
			pszUVs = "Invalid";
			break;
		}
	}

	return pszUVs;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPObjType
    
 PURPOSE	: Decodes the object-type in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The object-type
*****************************************************************************/
PSTR DBGDecodeISPTSPObjType(DWORD dwISPTSPCtl)
{
	DWORD	dwObjTypeCtl;
	PSTR	pszObjType;

	dwObjTypeCtl = dwISPTSPCtl & (~MBX1_ISPTSPCTL_OBJTYPECLRMASK);
	switch	(dwObjTypeCtl)
	{
		case MBX1_ISPTSPCTL_OBJTYPE_OPAQUE:
		{
			pszObjType = "Opaque";
			break;
		}

		case MBX1_ISPTSPCTL_OBJTYPE_PSTRANS:
		{
			pszObjType = "Trans (PS)";
			break;
		}

		case MBX1_ISPTSPCTL_OBJTYPE_PSPT:
		{
			pszObjType = "Punchthrough (PS)";
			break;
		}

		case MBX1_ISPTSPCTL_OBJTYPE_VIEWPORT:
		{
			pszObjType = "Viewport";
			break;
		}

		case MBX1_ISPTSPCTL_OBJTYPE_FASTPT:
		{
			pszObjType = "Punchthrough (Fast)";
			break;
		}

		default:
		{
			pszObjType = "Invalid";
			break;
		}
	}

	return pszObjType;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPViewportMaskBit
    
 PURPOSE	: Decodes the viepwort-mask state bit in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The state of the viewport-mask bit
*****************************************************************************/
PSTR DBGDecodeISPTSPViewportMaskBit(DWORD dwISPTSPCtl)
{
	PSTR	pszState;

	if	(dwISPTSPCtl & MBX1_ISPTSPCTL_VIEWPORTMASK)
	{
		pszState = "VP-mask set";
	}
	else
	{
		pszState = "VP-mask clear";
	}

	return pszState;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPDepthCompareMode
    
 PURPOSE	: Decodes the depth-compare mode in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The decoded depth-compare mode
*****************************************************************************/
PSTR DBGDecodeISPTSPDepthCompareMode(DWORD dwISPTSPCtl)
{
	DWORD	dwDCModeCtl;
	PSTR	pszMode;

	dwDCModeCtl = dwISPTSPCtl & (~MBX1_ISPTSPCTL_DCMPMODECLRMASK);
	switch	(dwDCModeCtl)
	{
		case MBX1_ISPTSPCTL_DCMPMODENEVER:
		{
			pszMode = "Never";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODELT:
		{
			pszMode = "LessThan";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODEEQ:
		{
			pszMode = "Equal";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODELE:
		{
			pszMode = "LessOrEqual";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODEGT:
		{
			pszMode = "GreaterThan";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODENE:
		{
			pszMode = "NotEqual";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODEGE:
		{
			pszMode = "GreaterOrEaual";
			break;
		}

		case MBX1_ISPTSPCTL_DCMPMODEALWAYS:
		{
			pszMode = "Always";
			break;
		}

		default:
		{
			pszMode = "Invalid";
			break;
		}
	}

	return pszMode;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPTagWriteCtl
    
 PURPOSE	: Decodes the tag-write control in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The decoded tag-write control
*****************************************************************************/
PSTR DBGDecodeISPTSPTagWriteCtl(DWORD dwISPTSPCtl)
{
	PSTR	pszState;

	if	(dwISPTSPCtl & MBX1_ISPTSPCTL_TAGWDISABLE)
	{
		pszState = "TAG-write disabled";	
	}
	else
	{
		pszState = "TAG-write enabled";	
	}

	return pszState;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPDepthWriteCtl
    
 PURPOSE	: Decodes the depth-write control in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The decoded depth-write control
*****************************************************************************/
PSTR DBGDecodeISPTSPDepthWriteCtl(DWORD dwISPTSPCtl)
{
	PSTR	pszState;

	if	(dwISPTSPCtl & MBX1_ISPTSPCTL_DWDISABLE)
	{
		pszState = "Depth-write disabled";	
	}
	else
	{
		pszState = "Depth-write enabled";	
	}

	return pszState;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPVtxOrderCtl
    
 PURPOSE	: Decodes the vertex-ordering control in the ISP/TSP control word

 PARAMETERS	: dwISPTSPCtl	- The control word to decode
  
 RETURNS	: PSTR			- The decoded vertex-order control
*****************************************************************************/
PSTR DBGDecodeISPTSPVtxOrderCtl(DWORD dwISPTSPCtl)
{
	DWORD	dwVtxOrderCtl;
	PSTR	pszVtxOrder;

	dwVtxOrderCtl = dwISPTSPCtl & MBX1_ISPTSPCTL_VTXORDERCLRMASK;
	switch	(dwVtxOrderCtl)
	{
		case MBX1_ISPTSPCTL_VTXORDERSTRIP:
		{
			pszVtxOrder = "Strip ordering";
			break;
		}

		case MBX1_ISPTSPCTL_VTXORDERFAN:
		{
			pszVtxOrder = "Fan ordering";
			break;
		}

		default:
		{
			pszVtxOrder = "Invalid";
			break;
		}
	}

	return pszVtxOrder;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeISPTSPWord
    
 PURPOSE	: Decode a ISP/TSP control word to the PDUMP and/or DEBUG text
			  output streams

 PARAMETERS	: dwISPTSPCtl	- The ISP/TSP control word to decode
  
 RETURNS	: void
*****************************************************************************/
void DBGDecodeISPTSPWord(LPD3DM_CONTEXT psContext, DWORD dwISPTSPCtl)
{
#if defined(FIX_HW_PRN_145)
	DWORD	dwBlendOpModeCtl;

	DBGDecodePF(psContext, "---- ISP/TSP word (0x%8.8lX)", dwISPTSPCtl);
	dwBlendOpModeCtl = dwISPTSPCtl & (~MBX1_ISPTSPCTL_BLENDOPMODECLRMASK);

	if(dwBlendOpModeCtl == MBX1_ISPTSPCTL_BLENDOPMODELOGICALOP)
#else
	DBGDecodePF(psContext, "---- ISP/TSP word (0x%8.8lX)", dwISPTSPCtl);

	if(!(dwISPTSPCtl & MBX1_ISPTSPCTL_LOGICALOPDISABLE))
#endif
	{
		DBGDecodePF(psContext, "--               Logical Op: %s", DBGDecodeISPTSPLogicalOp(dwISPTSPCtl));
	}
	else
	{
		DBGDecodePF(psContext, "--                Src-blend: %s", DBGDecodeISPTSPSrcBlendCtl(dwISPTSPCtl));
		DBGDecodePF(psContext, "--               Dest-blend: %s", DBGDecodeISPTSPDestBlendCtl(dwISPTSPCtl));
	}
	DBGDecodePF(psContext, "--            Blend-op mode: %s", DBGDecodeISPTSPBlendModeCtl(dwISPTSPCtl));
	DBGDecodePF(psContext, "--            Offset colour: %s", DBGDecodeISPTSPOffsetCtl(dwISPTSPCtl));
	DBGDecodePF(psContext, "--               Shade-mode: %s", DBGDecodeISPTSPGouraudCtl(dwISPTSPCtl));
	DBGDecodePF(psContext, "--            Colour-keying: %s", DBGDecodeISPTSPColourKeyCtl(dwISPTSPCtl));
	DBGDecodePF(psContext, "--               Pass count: %s", DBGDecodeISPTSPPassCount(dwISPTSPCtl));
	DBGDecodePF(psContext, "--                 UV count: %s", DBGDecodeISPTSPUVCount(dwISPTSPCtl));
	DBGDecodePF(psContext, "--              Object type: %s", DBGDecodeISPTSPObjType(dwISPTSPCtl));
	DBGDecodePF(psContext, "--  Viewport mask-state bit: %s", DBGDecodeISPTSPViewportMaskBit(dwISPTSPCtl));
	DBGDecodePF(psContext, "--       Depth-compare mode: %s", DBGDecodeISPTSPDepthCompareMode(dwISPTSPCtl));
	DBGDecodePF(psContext, "--                TAG-write: %s", DBGDecodeISPTSPTagWriteCtl(dwISPTSPCtl));
	DBGDecodePF(psContext, "--              Depth-write: %s", DBGDecodeISPTSPDepthWriteCtl(dwISPTSPCtl));
	DBGDecodePF(psContext, "--          Vertex-ordering: %s", DBGDecodeISPTSPVtxOrderCtl(dwISPTSPCtl));
}

/*****************************************************************************
 FUNCTION	: DBGDecodeTSPObjAlphaCmpMode
    
 PURPOSE	: Decodes the alpha-compare mode in a TSP per-obj control-word

 PARAMETERS	: dwTSPObjCtl	- The TSP per-obj word to decode
  
 RETURNS	: PSTR			- The decoded alpha-compare mode
*****************************************************************************/
PSTR DBGDecodeTSPObjAlphaCmpMode(DWORD dwTSPObjCtl)
{
	PSTR	pszAlphaCmpMode;
	DWORD	dwAlphaCmpMode;

	dwAlphaCmpMode = dwTSPObjCtl & (~MBX1_TSPOBJ_ALPHACMPCLRMASK);
	switch (dwAlphaCmpMode)
	{
		case MBX1_TSPOBJ_ACMPMODENEVER:
		{
			pszAlphaCmpMode = "Never";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODELT:
		{
			pszAlphaCmpMode = "LessThan";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODEEQ:
		{
			pszAlphaCmpMode = "Equal";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODELE:
		{
			pszAlphaCmpMode = "LessOrEqual";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODEGT:
		{
			pszAlphaCmpMode = "GreaterThan";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODENE:
		{
			pszAlphaCmpMode = "NotEqual";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODEGE:
		{
			pszAlphaCmpMode = "GreaterOrEqual";
			break;
		}

		case MBX1_TSPOBJ_ACMPMODEALWAYS:
		{
			pszAlphaCmpMode = "Always";
			break;
		}

		default:
		{
			pszAlphaCmpMode = "Invalid";
			break;
		}
	}

	return pszAlphaCmpMode;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeTSPObjAlphaRef
    
 PURPOSE	: Decodes the alpha-reference value in a TSP-per obj control word

 PARAMETERS	: dwTSPObjCtl	- The TSP per-obj word to decode
  
 RETURNS	: PSTR			- The decoded alpha-reference value
*****************************************************************************/
PSTR DBGDecodeTSPObjAlphaRef(DWORD dwTSPObjCtl)
{
	static char	pszAlphaRef[5];
	DWORD			dwAlphaRef;

	dwAlphaRef = (dwTSPObjCtl & (~MBX1_TSPOBJ_ALPHAREFCLRMASK)) >>
				 MBX1_TSPOBJ_ALPHAREFSHIFT;

	sprintf(pszAlphaRef, "0x%02X", dwAlphaRef);

	return pszAlphaRef;
}

/*****************************************************************************
 FUNCTION	: DBGDecodeTSPObjFactorColour
    
 PURPOSE	: Decodes the factor-colour in the TSP-per obj control-word

 PARAMETERS	: dwTSPObjCtl	- The TSP per-obj word to decode
  
 RETURNS	: PSTR			- The decoded factor-colour
*****************************************************************************/
PSTR DBGDecodeTSPObjFactorColour(DWORD dwTSPObjCtl)
{
	static char	pszFactorColour[20];
	DWORD			dwFactorA;
	DWORD			dwFactorR;
	DWORD			dwFactorG;
	DWORD			dwFactorB;

	dwFactorA = (dwTSPObjCtl & (~MBX1_TSPOBJ_FACTORAMASK)) >> 
				MBX1_TSPOBJ_FACTORASHIFT;
	dwFactorA = (255 * dwFactorA) / 
				((~MBX1_TSPOBJ_FACTORAMASK) >> MBX1_TSPOBJ_FACTORASHIFT);

	dwFactorR = (dwTSPObjCtl & (~MBX1_TSPOBJ_FACTORRMASK)) >> 
				MBX1_TSPOBJ_FACTORRSHIFT;
	dwFactorR = (255 * dwFactorR) / 
				((~MBX1_TSPOBJ_FACTORRMASK) >> MBX1_TSPOBJ_FACTORRSHIFT);

	dwFactorG = (dwTSPObjCtl & (~MBX1_TSPOBJ_FACTORGMASK)) >> 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?