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 + -
显示快捷键?