#include "PerlinNoise_SPU.h" #include "..\Common\DmaData.h" #include int64_t lfloor(double v) { int64_t i = (int64_t) v; return v < i ? i - 1 : i; } // // class PPUStoreArray // { // static const int sc_cacheSize = 1024; // double m_localCache[sc_cacheSize]; // double* m_pDataPPU; // int m_cachePos; // int m_ppuPos; // // public: // PPUStoreArray(uintptr_t pDataPPU) { m_pDataPPU = (double*)pDataPPU; m_cachePos = 0; m_ppuPos = 0; flush();} // // void store(int val) // { // m_localCache[m_cachePos] = val; // m_cachePos++; // if(m_cachePos >= sc_cacheSize) // flush(); // } // // void flush() // { // if(m_cachePos > 0) // { // // dma the local cache back to PPU and start again // // spu_print("DMAing %d bytes from 0x%08x(SPU) to 0x%08x(PPU)\n",(int)( m_cachePos*sizeof(int)), (int)m_localCache, (int)&m_pDataPPU[m_ppuPos]); // DmaData_SPU::put(m_localCache, (uintptr_t)&m_pDataPPU[m_ppuPos], DmaData_SPU::roundUpDMASize(m_cachePos*sizeof(double))); // m_ppuPos += m_cachePos; // m_cachePos = 0; // } // for(int i=0;i