📄 hxfslaveport.c
字号:
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_SLAVEPORT);
DataToWrite = OVS;
if(pVtx1)
{
DataToWrite += OVS;
}
if(pVtx2)
{
DataToWrite += OVS;
}
HXF_PROFILER_INC_COUNTER( HXFPROFILE_COUNTER_SP_BYTES, DataToWrite);
while(SPSpace < DataToWrite)
{
if( PVRSRVAcquire3DFifoSpace(
pState->pHWState->ps3DDevData->psDevInfoUM,
pState->pHWState->psHWInfo,
&SPSpace ) != PVRSRV_OK)
{
SPSpace = 0;
return pState;
}
}
if(((((HUINT32)pSP) + DataToWrite) - pSPBase) >= MBX_TA_SP_DATA_RANGE)
{
pSP = (HUINT32*)pSPBase;
}
// Vertex 0
pSP = HXFSPWrite6(pSP, pVtx0);
// Vertex 1
if(pVtx1)
{
pSP = HXFSPWrite6(pSP, pVtx1);
}
// Vertex 2
if(pVtx2)
{
pSP = HXFSPWrite6(pSP, pVtx2);
}
// Managed reserved space.
PVRSRVRelease3DFifoSpace( pState->pHWState->ps3DDevData->psDevInfoUM, DataToWrite );
pState->SPAddr = (HUINT32)pSP;
SPSpace -= DataToWrite;
pState->SPReservedSpace = SPSpace;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_ASSEMBLE);
return pState;
#undef OVS
}
void* HXFSP7Proc_C(void* pvContext, void* pVtx0, void* pVtx1, void* pVtx2)
{
#define OVS (7*4)
MRLState* pState = (MRLState*)pvContext;
HUINT32* pSP = (HUINT32*)pState->SPAddr;
HUINT32 pSPBase = pState->SPBaseAddr;
HUINT32 SPSpace = pState->SPReservedSpace;
HUINT32 DataToWrite = 0;
HUINT32* pSrc = 0;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_SLAVEPORT);
DataToWrite = OVS;
if(pVtx1)
{
DataToWrite += OVS;
}
if(pVtx2)
{
DataToWrite += OVS;
}
HXF_PROFILER_INC_COUNTER( HXFPROFILE_COUNTER_SP_BYTES, DataToWrite);
while(SPSpace < DataToWrite)
{
if( PVRSRVAcquire3DFifoSpace(
pState->pHWState->ps3DDevData->psDevInfoUM,
pState->pHWState->psHWInfo,
&SPSpace ) != PVRSRV_OK )
{
SPSpace = 0;
return pState;
}
}
if(((((HUINT32)pSP) + (DataToWrite + 12)) - pSPBase) >= MBX_TA_SP_DATA_RANGE)
{
pSP = (HUINT32*)pSPBase;
}
// Vertex 0
pSP = HXFSPWrite7(pSP, pVtx0);
// Vertex 1
if(pVtx1)
{
pSP = HXFSPWrite7(pSP, pVtx1);
}
// Vertex 2
if(pVtx2)
{
pSP = HXFSPWrite7(pSP, pVtx2);
}
// Managed reserved space.
PVRSRVRelease3DFifoSpace( pState->pHWState->ps3DDevData->psDevInfoUM, DataToWrite );
pState->SPAddr = (HUINT32)pSP;
SPSpace -= DataToWrite;
pState->SPReservedSpace = SPSpace;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_ASSEMBLE);
return pState;
#undef OVS
}
void* HXFSP8Proc_C(void* pvContext, void* pVtx0, void* pVtx1, void* pVtx2)
{
#define OVS (8*4)
MRLState* pState = (MRLState*)pvContext;
HUINT32* pSP = (HUINT32*)pState->SPAddr;
HUINT32 pSPBase = pState->SPBaseAddr;
HUINT32 SPSpace = pState->SPReservedSpace;
HUINT32 DataToWrite = 0;
HUINT32* pSrc = 0;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_SLAVEPORT);
DataToWrite = OVS;
if(pVtx1)
{
DataToWrite += OVS;
}
if(pVtx2)
{
DataToWrite += OVS;
}
HXF_PROFILER_INC_COUNTER( HXFPROFILE_COUNTER_SP_BYTES, DataToWrite);
while(SPSpace < DataToWrite)
{
if( PVRSRVAcquire3DFifoSpace(
pState->pHWState->ps3DDevData->psDevInfoUM,
pState->pHWState->psHWInfo,
&SPSpace ) != PVRSRV_OK )
{
SPSpace = 0;
return pState;
}
}
if(((((HUINT32)pSP) + DataToWrite) - pSPBase) >= MBX_TA_SP_DATA_RANGE)
{
pSP = (HUINT32*)pSPBase;
}
// Vertex 0
pSP = HXFSPWrite8(pSP, pVtx0);
// Vertex 1
if(pVtx1)
{
pSP = HXFSPWrite8(pSP, pVtx1);
}
// Vertex 2
if(pVtx2)
{
pSP = HXFSPWrite8(pSP, pVtx2);
}
// Managed reserved space.
PVRSRVRelease3DFifoSpace( pState->pHWState->ps3DDevData->psDevInfoUM, DataToWrite );
pState->SPAddr = (HUINT32)pSP;
SPSpace -= DataToWrite;
pState->SPReservedSpace = SPSpace;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_ASSEMBLE);
return pState;
#undef OVS
}
void* HXFSP9Proc_C(void* pvContext, void* pVtx0, void* pVtx1, void* pVtx2)
{
#define OVS (9*4)
MRLState* pState = (MRLState*)pvContext;
HUINT32* pSP = (HUINT32*)pState->SPAddr;
HUINT32 pSPBase = pState->SPBaseAddr;
HUINT32 SPSpace = pState->SPReservedSpace;
HUINT32 DataToWrite = 0;
HUINT32* pSrc = 0;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_SLAVEPORT);
DataToWrite = OVS;
if(pVtx1)
{
DataToWrite += OVS;
}
if(pVtx2)
{
DataToWrite += OVS;
}
HXF_PROFILER_INC_COUNTER( HXFPROFILE_COUNTER_SP_BYTES, DataToWrite);
while(SPSpace < DataToWrite)
{
if( PVRSRVAcquire3DFifoSpace(
pState->pHWState->ps3DDevData->psDevInfoUM,
pState->pHWState->psHWInfo,
&SPSpace ) != PVRSRV_OK )
{
SPSpace = 0;
return pState;
}
}
if(((((HUINT32)pSP) + (DataToWrite+12)) - pSPBase) >= MBX_TA_SP_DATA_RANGE)
{
pSP = (HUINT32*)pSPBase;
}
// Vertex 0
pSP = HXFSPWrite9(pSP, pVtx0);
// Vertex 1
if(pVtx1)
{
pSP = HXFSPWrite9(pSP, pVtx1);
}
// Vertex 2
if(pVtx2)
{
pSP = HXFSPWrite9(pSP, pVtx2);
}
// Managed reserved space.
PVRSRVRelease3DFifoSpace( pState->pHWState->ps3DDevData->psDevInfoUM, DataToWrite );
pState->SPAddr = (HUINT32)pSP;
SPSpace -= DataToWrite;
pState->SPReservedSpace = SPSpace;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_ASSEMBLE);
return pState;
#undef OVS
}
void* HXFSP10Proc_C(void* pvContext, void* pVtx0, void* pVtx1, void* pVtx2)
{
#define OVS (10*4)
MRLState* pState = (MRLState*)pvContext;
HUINT32* pSP = (HUINT32*)pState->SPAddr;
HUINT32 pSPBase = pState->SPBaseAddr;
HUINT32 SPSpace = pState->SPReservedSpace;
HUINT32 DataToWrite = 0;
HUINT32* pSrc = 0;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_SLAVEPORT);
DataToWrite = OVS;
if(pVtx1)
{
DataToWrite += OVS;
}
if(pVtx2)
{
DataToWrite += OVS;
}
HXF_PROFILER_INC_COUNTER( HXFPROFILE_COUNTER_SP_BYTES, DataToWrite);
while(SPSpace < DataToWrite)
{
if( PVRSRVAcquire3DFifoSpace(
pState->pHWState->ps3DDevData->psDevInfoUM,
pState->pHWState->psHWInfo,
&SPSpace ) != PVRSRV_OK )
{
SPSpace = 0;
return pState;
}
}
if(((((HUINT32)pSP) + DataToWrite) - pSPBase) >= MBX_TA_SP_DATA_RANGE)
{
pSP = (HUINT32*)pSPBase;
}
// Vertex 0
pSP = HXFSPWrite10(pSP, pVtx0);
// Vertex 1
if(pVtx1)
{
pSP = HXFSPWrite10(pSP, pVtx1);
}
// Vertex 2
if(pVtx2)
{
pSP = HXFSPWrite10(pSP, pVtx2);
}
// Managed reserved space.
PVRSRVRelease3DFifoSpace( pState->pHWState->ps3DDevData->psDevInfoUM, DataToWrite );
pState->SPAddr = (HUINT32)pSP;
SPSpace -= DataToWrite;
pState->SPReservedSpace = SPSpace;
HXF_PROFILER_TRANSITION(HXFPROFILE_DRAW_ASSEMBLE);
return pState;
#undef OVS
}
#endif // HXF_HARNESS
/* ************************************************************************* *\
** ************************************************************************* **
** EOF
** ************************************************************************* **
\* ************************************************************************* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -