Files
Loki Rautio 087b7e7abf Revert "Project modernization (#630)"
This code was not tested and breaks in Release builds, reverting to restore
functionality of the nightly. All in-game menus do not work and generating
a world crashes.

This reverts commit a9be52c41a.
2026-03-07 21:12:22 -06:00

137 lines
3.1 KiB
C++

#include "stdafx.h"
#include "C4JThread_SPU.h"
#include "PS3\SPU_Tasks\ChunkUpdate\ChunkRebuildData.h"
#include "PS3\SPU_Tasks\CompressedTile\CompressedTileStorage_SPU.h"
#include "PS3\SPU_Tasks\LevelRenderChunks\LevelRenderChunks.h"
#define SPURS_MAX_SPU 6
#define SPURS_PPU_THREAD_PRIORITY 2
#define SPURS_SPU_THREAD_PRIORITY 100
#define SPURS_PREFIX "Minecraft"
#define PRIMARY_PPU_THREAD_PRIORITY 1001
#define PRIMARY_PPU_THREAD_STACK_SIZE 65536
#define SPU_PRINTF_HANDLER_PRIORITY 999
static const bool sc_verbose = true;
cell::Spurs::Spurs2* C4JThread_SPU::ms_spurs2Object = NULL;
void C4JThread_SPU::initSPURS()
{
int ret;
#ifndef _CONTENT_PACKAGE
// initialize spu_printf server
ret = spu_printf_initialize(SPU_PRINTF_HANDLER_PRIORITY, 0);
if (ret)
{
std::printf("Error: spu_printf_initialize(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
std::abort();
}
#endif
// initialize SPURS attribute
cell::Spurs::SpursAttribute attribute;
ret = cell::Spurs::SpursAttribute::initialize(&attribute, SPURS_MAX_SPU - 1, SPURS_SPU_THREAD_PRIORITY, SPURS_PPU_THREAD_PRIORITY, false);
if (ret)
{
#ifndef _CONTENT_PACKAGE
std::printf("Error: cell::Spurs::SpursAttribute::initialize(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
#endif
std::abort();
}
ret = attribute.setNamePrefix(SPURS_PREFIX, std::strlen(SPURS_PREFIX));
if (ret)
{
#ifndef _CONTENT_PACKAGE
std::printf("Error: attribute.setNamePrefix(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
#endif
std::abort();
}
ret = attribute.setSpuThreadGroupType(SYS_SPU_THREAD_GROUP_TYPE_EXCLUSIVE_NON_CONTEXT);
if (ret)
{
#ifndef _CONTENT_PACKAGE
std::printf("Error: attribute.setSpuThreadGroupType(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
#endif
std::abort();
}
#ifndef _CONTENT_PACKAGE
ret = attribute.enableSpuPrintfIfAvailable();
if (ret)
{
std::printf("Error: attribute.enableSpuPrintfIfAvailable(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
std::abort();
}
#endif
// allocate memory
ms_spurs2Object = new cell::Spurs::Spurs2;
if (ms_spurs2Object == 0)
{
#ifndef _CONTENT_PACKAGE
std::printf("Error: new cell::Spurs::Spurs2\n");
std::printf("## libspurs : FAILED ##\n");
#endif
std::abort();
}
// create SPURS instance
ret = cell::Spurs::Spurs2::initialize(ms_spurs2Object, &attribute);
if (ret)
{
#ifndef _CONTENT_PACKAGE
std::printf("Error: cell::Spurs::Spurs2::initialize(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
#endif
std::abort();
}
}
void C4JThread_SPU::shutdownSPURS()
{
int ret;
// destroy SPURS instance
ret = ms_spurs2Object->finalize();
if (ret)
{
#ifndef _CONTENT_PACKAGE
std::printf("Error: spurs->finalize(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
#endif
std::abort();
}
// free memory
delete ms_spurs2Object;
#ifndef _CONTENT_PACKAGE
// finalize spu_printf server
ret = spu_printf_finalize();
if (ret)
{
std::printf("Error: spu_printf_finalize(): %#x\n", ret);
std::printf("## libspurs : FAILED ##\n");
std::abort();
}
#endif
}