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.
89 lines
2.4 KiB
89 lines
2.4 KiB
//========== Copyright © Valve Corporation, All rights reserved. ========
|
|
#ifndef VJOB_SPURS_UTILS_HDR
|
|
#define VJOB_SPURS_UTILS_HDR
|
|
|
|
#ifndef _PS3
|
|
#error "This is PS3 specific header"
|
|
#endif
|
|
|
|
|
|
#include "vjobs_interface.h"
|
|
#include "ps3/vjobutils_shared.h"
|
|
|
|
#ifdef VJOBS_ON_SPURS
|
|
#include "tier0/logging.h"
|
|
#include "tier0/dbg.h"
|
|
#include "spu_printf.h"
|
|
#include "tier0/memalloc.h"
|
|
#include <cell/spurs.h>
|
|
#include <cell/spurs/system_workload.h>
|
|
using namespace ::cell::Spurs;
|
|
|
|
DECLARE_LOGGING_CHANNEL( LOG_VJOBS );
|
|
|
|
extern const char * HumanReadableCellResult( int nCellResult );
|
|
inline int CellVerify( int nResult, const char * pCmd, LoggingSeverity_t severity )
|
|
{
|
|
Assert( nResult == CELL_OK );
|
|
if( nResult != CELL_OK )
|
|
{
|
|
InternalMsg( LOG_VJOBS, severity, "Cell error %08X (%s) in\n\t%s\n", nResult, HumanReadableCellResult(nResult), pCmd );
|
|
}
|
|
return nResult;
|
|
}
|
|
|
|
inline int CellVerify2( int nResult, const char * pCmd, const char * pFile, const int nLine, LoggingSeverity_t severity )
|
|
{
|
|
Assert( nResult == CELL_OK );
|
|
if( nResult != CELL_OK )
|
|
{
|
|
InternalMsg( LOG_VJOBS, severity, "Cell error %08X (%s) in\n\t%s\n\t%s:%d", nResult, HumanReadableCellResult(nResult), pCmd, pFile, nLine );
|
|
}
|
|
return nResult;
|
|
}
|
|
|
|
#define CELL_VERIFY( CMD ) CellVerify2( CMD, #CMD, __FILE__, __LINE__, LS_ASSERT )
|
|
#define CELL_MUST_SUCCEED( CMD ) CellVerify2( CMD, #CMD, __FILE__, __LINE__, LS_ERROR )
|
|
#define CELL_MUST_SUCCEED2( CMD, DESC ) CellVerify2( CMD, DESC, __FILE__, __LINE__, LS_ERROR )
|
|
|
|
|
|
inline CellSpursJob64* NewJob64( const CellSpursJobHeader & jobHeader )
|
|
{
|
|
CellSpursJob64 * pJob = (CellSpursJob64 *)MemAlloc_AllocAligned( sizeof(CellSpursJob64), sizeof(CellSpursJob64) );
|
|
pJob->header = jobHeader;
|
|
pJob->workArea.dmaList[0] = 0;
|
|
pJob->workArea.dmaList[1] = 0;
|
|
return pJob;
|
|
};
|
|
|
|
|
|
|
|
inline CellSpursJob128* NewJob128( const CellSpursJobHeader & jobHeader )
|
|
{
|
|
CellSpursJob128 * pJob = (CellSpursJob128 *)MemAlloc_AllocAligned( sizeof(CellSpursJob128), sizeof(CellSpursJob128) );
|
|
__dcbz( pJob );
|
|
pJob->header = jobHeader;
|
|
return pJob;
|
|
};
|
|
|
|
inline CellSpursJob256* NewJob256( const CellSpursJobHeader & jobHeader )
|
|
{
|
|
CellSpursJob256 * pJob = (CellSpursJob256 *)MemAlloc_AllocAligned( sizeof(CellSpursJob256), sizeof(CellSpursJob256) );
|
|
__dcbz( pJob );
|
|
__dcbz( ((uint8*)pJob) + 128 );
|
|
pJob->header = jobHeader;
|
|
return pJob;
|
|
};
|
|
|
|
template <typename T>
|
|
inline void DeleteJob( T * pJob )
|
|
{
|
|
MemAlloc_FreeAligned( pJob );
|
|
}
|
|
|
|
|
|
#endif // VJOBS_ON_SPURS
|
|
|
|
DECLARE_LOGGING_CHANNEL(LOG_VJOBS);
|
|
|
|
#endif
|