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

📄 hxfslaveport.c

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 C
📖 第 1 页 / 共 2 页
字号:

	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 + -