Something with streaming

This commit is contained in:
Shinovon 2026-05-12 08:00:13 +05:00
parent e3ad2108f1
commit 6992f313a9
5 changed files with 37 additions and 30 deletions

View file

@ -85,8 +85,6 @@ int32 islandLODcomSub;
int32 islandLODsubInd;
int32 islandLODsubCom;
#define STREAMING_MEM_SIZE (10 * 1024 * 1024)
bool
CStreamingInfo::GetCdPosnAndSize(uint32 &posn, uint32 &size)
{
@ -221,19 +219,13 @@ CStreaming::Init2(void)
#ifdef GTA_PC
#define MB (1024*1024)
#ifdef __SYMBIAN32__
extern bool moreVram;
if (moreVram) {
extern size_t _dwMemAvailPhys;
ms_memoryAvailable = (_dwMemAvailPhys - 10*MB)/2;
if(ms_memoryAvailable < 10*MB)
ms_memoryAvailable = 10*MB;
} else
ms_memoryAvailable = STREAMING_MEM_SIZE;
extern size_t streamingMemSize;
ms_memoryAvailable = streamingMemSize;
#else
extern size_t _dwMemAvailPhys;
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
if (ms_memoryAvailable < 10 * MB)
ms_memoryAvailable = 10 * MB;
extern size_t _dwMemAvailPhys;
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
if (ms_memoryAvailable < 10 * MB)
ms_memoryAvailable = 10 * MB;
#endif
desiredNumVehiclesLoaded = 12;
if(desiredNumVehiclesLoaded > MAXVEHICLESLOADED)
@ -647,7 +639,9 @@ CStreaming::ConvertBufferToObject(int8 *buf, int32 streamId)
if(ms_aInfoForModel[streamId].m_loadState != STREAMSTATE_STARTED){
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED;
#ifndef USE_CUSTOM_ALLOCATOR
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
if(streamId < STREAM_OFFSET_TXD) {
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
}
#endif
}
@ -713,7 +707,9 @@ CStreaming::FinishLoadingLargeFile(int8 *buf, int32 streamId)
ms_aInfoForModel[streamId].m_loadState = STREAMSTATE_LOADED; // only done if success on PS2
#ifndef USE_CUSTOM_ALLOCATOR
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
if(streamId < STREAM_OFFSET_TXD) {
ms_memoryUsed += ms_aInfoForModel[streamId].GetCdSize() * CDSTREAM_SECTOR_SIZE;
}
#endif
if(!success){
@ -959,7 +955,9 @@ CStreaming::RemoveModel(int32 id)
#ifdef USE_CUSTOM_ALLOCATOR
UpdateMemoryUsed();
#else
ms_memoryUsed -= ms_aInfoForModel[id].GetCdSize()*CDSTREAM_SECTOR_SIZE;
if (id < STREAM_OFFSET_TXD) {
ms_memoryUsed -= ms_aInfoForModel[id].GetCdSize()*CDSTREAM_SECTOR_SIZE;
}
#endif
}
@ -2701,17 +2699,12 @@ CStreaming::MakeSpaceFor(int32 size)
#define MB (1024 * 1024)
if(ms_memoryAvailable == 0) {
#ifdef __SYMBIAN32__
extern bool moreVram;
if (moreVram) {
extern size_t _dwMemAvailPhys;
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
if(ms_memoryAvailable < 10 * MB) ms_memoryAvailable = 10 * MB;
} else
ms_memoryAvailable = STREAMING_MEM_SIZE;
extern size_t streamingMemSize;
ms_memoryAvailable = streamingMemSize;
#else
extern size_t _dwMemAvailPhys;
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
if (ms_memoryAvailable < 10 * MB) ms_memoryAvailable = 10 * MB;
extern size_t _dwMemAvailPhys;
ms_memoryAvailable = (_dwMemAvailPhys - 10 * MB) / 2;
if (ms_memoryAvailable < 10 * MB) ms_memoryAvailable = 10 * MB;
#endif
}
#undef MB

View file

@ -532,6 +532,8 @@ CreateTxdImageForVideoCard()
// only works for textures that are not yet loaded
// so let's hope that is the case for all
rw::gl3::needToReadBackTextures = true;
#elif defined RW_GLES1
rw::gl1::needToReadBackTextures = true;
#endif
#ifdef DISABLE_VSYNC_ON_TEXTURE_CONVERSION
@ -582,6 +584,8 @@ CreateTxdImageForVideoCard()
CStreaming::RemoveTxd(i);
#ifdef RW_GL3
rw::gl3::needToReadBackTextures = false;
#elif defined RW_GLES1
rw::gl1::needToReadBackTextures = false;
#endif
return false;
}
@ -617,6 +621,8 @@ CreateTxdImageForVideoCard()
#ifdef RW_GL3
rw::gl3::needToReadBackTextures = false;
#elif defined RW_GLES1
rw::gl1::needToReadBackTextures = false;
#endif
if (!pDir->WriteDirFile("models\\txd.dir")) {

View file

@ -49,6 +49,7 @@ psGlobalType psGlobal;
uint32 gGameState = 0;
long _dwOperatingSystemVersion = 0;
uint32 _dwMemAvailPhys = 0;
size_t streamingMemSize;
static EGLDisplay eglDisplay;
static EGLContext eglContext;
@ -526,6 +527,13 @@ public:
VersionInfo::TPlatformVersion platformVersion;
VersionInfo::GetVersion(platformVersion);
moreVram = platformVersion.iMajorVersion == 5 && platformVersion.iMinorVersion >= 4;
if (moreVram) {
streamingMemSize = 12 * 1024 * 1024;
} else {
streamingMemSize = 10 * 1024 * 1024;
}
#else
streamingMemSize = 8 * 1024 * 1024;
#endif
TSize size = Size();