Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

70 lines
2.0 KiB

//========== Copyright © Valve Corporation, All rights reserved. ========
#if !defined( VJOBS_EDGEGEOM_JOBPARAMS_SHARED_HDR ) && defined( _PS3 )
#define VJOBS_EDGEGEOM_JOBPARAMS_SHARED_HDR
#include "ps3/spu_job_shared.h"
#include "edge/geom/edgegeom_structs.h"
struct SpuGcmEdgeGeomParams_t;
namespace job_edgegeom
{
struct JobParams_t
{
uint32 m_nFlags;
uint32 m_eaEdgeGcmControl;
uint32 m_numEdgeIndices;
uint32 m_numEdgeVertices;
EdgeGeomViewportInfo m_edgeGeomViewportInfo;
EdgeGeomLocalToWorldMatrix m_edgeGeomLocalToWorldMatrix;
uint32 m_nAdjustOutputIndices; // this gets added to the output indices, to adjust for the skipped vertices
uint32 m_uiGcmCount;
uint32 m_nLocalMemoryIndexBuffer;
uint32 m_nCmdBufferHoleBytes;
uint32 m_nQueueTag;
uint32 m_eaEdgeGeomJts;
uint32 m_eaEdgeDmaInputBase;
uint32 m_nEdgeDmaInputIdx;
uint32 m_nEdgeDmaInputVtx;
uint32 m_nEdgeDmaInputEnd;
uint32 m_nEdgeDmaIoBufferSize;
uint32 m_nExecutedOnSpu; // this must be 0xFFFF FFFF before it's executed, and the SpuId when it's executed
uint32 m_nEdgeJobId;
uint16 m_uiMarkupVersionFlags;
uint8 m_uiGcmMode;
uint8 m_uiCullFlavor;
};
struct ALIGN128 JobDescriptor_t
{
CellSpursJobHeader header;
enum { DMA_LIST_CAPACITY = 1 + 4 + 4 + 4 + 1 };
union {
uint64_t dmaList[DMA_LIST_CAPACITY];
uint64_t userData[DMA_LIST_CAPACITY];
} workArea;
// pad it so that params END exactly at the end of the structure, this leaves the maximum safety slack
// between the params and DMA list just in case the DMA list overflows
uint8 paddingToMakeJobDescriptorBigEnough[ sizeof(JobParams_t) ];
//uint8 padding[ 127 & ~( sizeof( CellSpursJobHeader ) + sizeof( uint64 ) * DMA_LIST_CAPACITY ) ];
//JobParams_t params;
}ALIGN128_POST;
inline JobParams_t * GetJobParams( void *pJob )
{
COMPILE_TIME_ASSERT( sizeof( JobDescriptor_t ) <= 896 ); // the absolute maximum for the job descriptor
return VjobGetJobParams< JobParams_t, JobDescriptor_t >( pJob );
}
}
#endif