/* SCE CONFIDENTIAL PlayStation(R)3 Programmer Tool Runtime Library 430.001 * Copyright (C) 2007 Sony Computer Entertainment Inc. * All Rights Reserved. */ /* common headers */ #include #include #include #include #include #include #include #include "Renderer_TextureUpdate.h" #include "..\Common\DmaData.h" #include static const bool sc_verbose = false; CellSpursJobContext2* g_pSpursJobContext; void CopyPPUMemory(void* pSrc, void* pDst, int size) { static const int bufferSize = 16384; char spuBuffer[bufferSize]; int dataLeft = size; char* pSrcPos = (char*)pSrc; char* pDstPos = (char*)pDst; while(dataLeft > 0) { int sizeToDma = dataLeft; if(sizeToDma > bufferSize) sizeToDma = bufferSize; DmaData_SPU::getAndWait(spuBuffer, (uintptr_t)pSrcPos, sizeToDma); DmaData_SPU::putAndWait(spuBuffer, (uintptr_t)pDstPos, sizeToDma); pSrcPos += sizeToDma; pDstPos += sizeToDma; dataLeft -= sizeToDma; } } void TextureDataUpdate(int xoffset, int yoffset, int width, int height, int pitch, void *pSrcData, void* pDstData, int level) { int colourDepth = 4; char* pTexData = (char*)pDstData; char* pSrc = (char*) pSrcData; int srcOffset = 0; int dstOffset = 0; for(int i=0; iworkArea.userData[0]; // uint32_t eaDataOut =pJob->workArea.userData[1]; Renderer_TextureUpdate_DataIn dataIn; DmaData_SPU::getAndWait(&dataIn, eaDataIn, sizeof(Renderer_TextureUpdate_DataIn)); if(sc_verbose) spu_print("Renderer_TextureDataUpdate [SPU#%u] \n", idSpu); TextureDataUpdate(dataIn.xoffset, dataIn.yoffset, dataIn.width, dataIn.height, dataIn.pitch, dataIn.pSrcData, dataIn.pDstData, dataIn.level ); if(sc_verbose) spu_print("Renderer_TextureDataUpdate [SPU#%u] exit\n", idSpu); }