Textures won't have any noticeable effect on main RAM usage. The PVR does not support swapping textures in and out of video RAM while rendering a scene. Everything has to be loaded into video at the start of rendering, and you can't touch them until rendering completes. So there's no reason for textures to be using main RAM. The only time it would make sense is for a 2D game where you load additional frames on the fly.When all the missing textures, assets and effects get added back in it will likely bump the RAM back up over 16MB.
What do you mean? That all the textures of the whole GTA3 world will have to be loaded into the RAM at once? Also what about the rest aspects of the game?Textures won't have any noticeable effect on main RAM usage. The PVR does not support swapping textures in and out of video RAM while rendering a scene. Everything has to be loaded into video at the start of rendering, and you can't touch them until rendering completes. So there's no reason for textures to be using main RAM. The only time it would make sense is for a 2D game where you load additional frames on the fly.
No, you don't have to have everything loaded at once. Look at Shenmue, Jet * Radio, or Soul Reaver. I'm saying textures don't add to main RAM pressure on the DC, because there's little reason to store them there.What do you mean? That all the textures of the whole GTA3 world will have to be loaded into the RAM at once? Also what about the rest aspects of the game?
PS2 does this to get around its tiny amount of video RAM:
Begin frame
Copy texture from main RAM to video RAM
Draw polygons using texture
Copy another texture from main RAM to video RAM
Draw polygons using other texture
Copy yet another texture from main RAM to video RAM
Draw polygons using other other texture
End frame
Textures won't have any noticeable effect on main RAM usage. The PVR does not support swapping textures in and out of video RAM while rendering a scene. Everything has to be loaded into video at the start of rendering, and you can't touch them until rendering completes. So there's no reason for textures to be using main RAM. The only time it would make sense is for a 2D game where you load additional frames on the fly.
I guess point I'm really trying to get at is that you can't compare 16MB of main RAM on the DC to 32MB on the PS2, because the PS2 has to burn a lot of it's main RAM storing textures. The DC pretty much has to store it's textures in video RAM, plus it has more compact textures with it's texture compression, so it effectively has more main RAM than the numbers suggest.
That's just a turn of phrase. Everyone here appreciates PS2 was designed different and operates differently.That's not some cheat that developers come up over the years, that's how PS2 was designed to work, so it's not really a 'work around'
Streaming performance - in terms of sustained linear read - peaks at 1.8 MB/s on the outer edge of the disk on DC, so it's a little above 1/3 of the PS2's peak read rate.
Still a sizeable difference, but not bad from the DC.
The biggest challenge for streaming in a open world game isn't sustained linear read rate, but transfer rates when access times are accounted for. This is more complicated than just a single figure, where things like how fast the laser head can move (and perhaps re-focus), and even how fast the disk is physically rotating become important factors.
I've got some of the DC developer docs which have some info on the GD-Rom drive, but I've yet to find the equivalent for PS2, so I can't really compare them in this regard yet. I expect they'd be fairly similar, with maybe a negligibly lower rotational latency for the Dreamcast (~3000 rpm for DC vs ~2900 rpm for PS2) but a practical advantage for PS2 coming from data being more densely packed.
Edit: and with BluRay being so much higher capacity you could potentially duplicate key assets across the disk to reduce access times, but you'd need to carefully think out how you would do this.
PSP stored textures in main ram, so a fairer comparison would be 32MB vs 16MB + ~6MB, so 32MB vs about 22MB. Still an advantage for the PSP, but I think PSP used CLUT textures like PS2. In practice, this would have closed at least some of the 32MB vs ~22MB gap, potentially quite a bit.
Peak transfer rate of the GD-Rom was 1.8 MB/s, so a bit faster than PSP's UMD. Transfer rates for the GD-ROM were actually in the range between 900KB/s on the inner edge of the high density area (the part where games were stored) to 1.8MB/s on the outer. So an x2 difference between fastest and slowest - typically it's larger than this for an optical drive, but GD-Rom uses the slowest innermost section of the disk for none game purposes.
But I suspect a bigger problem for UMD than linear read rate are its reportedly awful access times. If you needed to read from somewhere else on the disk, it was slow to get there and start reading again and that represents dead time that slows down loading. The more often you have to move between different locations, the more you suffer. In the case of Crazy Taxi on PSP struggling when also streaming music off the UMD, I think there's a good chance that's primarily because of poor access times as the head moves repeatedly between game data and music data.
But I suppose that makes sense. The DC's GD-Rom drive was physically much bigger, could use vastly more power, could spin the disk much much faster (greatly lowering rotational latency), and almost certainly could move its read head across the surface of the disk faster.
For anyone that's interested, here is the GD-Rom outline page from Dreamcast developer docs:
View attachment 11610
Maybe I'm doing the math wrong, but I do not misremember optimal Dreamcast load times being 4-8seconds MAX for an entire level load. Unoptimized obviously took longer (looking at you Soldier of Fortune and Half Life). But the assumed worst case scenario of 1MegaByte per second transfer speed from the GD-ROM, divided by 30 frames per second is 34.13 KiloBytes per Frame or 34949.12 bytes per Frame. Last I checked a standard texture mapped polygon weighs 40bytes each. So 34949.12 / 40 equals 873.73 polygons per frame. That's 26,211 polys per second that can stream from the unoptimal GD-ROM.
Is it being asserted that the PS2, which has typical load times of over 12 seconds, can and has effectively streamed over 130,000 texture mapped polygons per second from it's DVD/CD-rom Drive (25k * 5)? Is it also being claimed that without this amount of data being streamed, consistently every frame, that GTAIII cannot run at the level of the PS2 game?
There's no high quality compression format, just one VQ option. VQ on the DC takes the uncompressed texture and reduces it by 1/8th, then adds an overhead of up to 2KB on top for the codebook (which is like a fancy palette, but tiles instead of a single color). You can use a smaller codebook size if the overhead is too much, but it also reduces the quality of the compressed texture. For a 16BPP texture, and ignoring codebook size, you end up with a size of 16BPP/8=2BPP. The only real texture format with a size of 4BPP is uncompressed 16 color.
You can VQ compress any texture format, including formats with alpha, normal maps, 8BPP, and 4BPP, which are all 1/8th the size of the original plus codebook overhead. A compressed 1024x1024 4BPP texture without mipmaps would be 66KB. But there's a hardware bug when both mipmaps and texture filtering are enabled for palettized VQ (see the attached screenshots here, you might want to zoom in), and the quality for 4BPP VQ is poor, which uniquely becomes becomes far, far worse, when mipmaps are enabled, for reasons I won't bother to fully explain right now (short explanation is that the tile shape is no longer contiguous or consistent,) so they aren't as easy to use as you'd hope.
The official PVR driver/texture compressor handled small codebooks in a weird, over-complicated, and inflexible way, with only a few sizes/mipmap combinations having small codebooks, and always with a fixed size, but they aren't hardware limitations. The official compressor also didn't seem to be able to handle non-square textures, but the hardware handles them fine if you aren't using mipmaps. No commercial game ever took advantage of compressed 8BPP or 4BPP because a compressor didn't exist for them then.
I seem to remember that allocating 1MB of PS2s EDRAM to textures was quite popular.
So how much main RAM would you need to use to cache that? 4MB?
If anything, having to keep more in VRAM on DC is wasteful.
Maybe I'm doing the math wrong, but I do not misremember optimal Dreamcast load times being 4-8seconds MAX for an entire level load. Unoptimized obviously took longer (looking at you Soldier of Fortune and Half Life). But the assumed worst case scenario of 1MegaByte per second transfer speed from the GD-ROM, divided by 30 frames per second is 34.13 KiloBytes per Frame or 34949.12 bytes per Frame. Last I checked a standard texture mapped polygon weighs 40bytes each. So 34949.12 / 40 equals 873.73 polygons per frame. That's 26,211 polys per second that can stream from the unoptimal GD-ROM.
Is it being asserted that the PS2, which has typical load times of over 12 seconds, can and has effectively streamed over 130,000 texture mapped polygons per second from it's DVD/CD-rom Drive (25k * 5)? Is it also being claimed that without this amount of data being streamed, consistently every frame, that GTAIII cannot run at the level of the PS2 game?
That's not some cheat that developers come up over the years, that's how PS2 was designed to work, so it's not really a 'work around'
But, looking at GTA3 I don't think PS2 is using that much main RAM for textures. If at all.
I seem to remember that allocating 1MB of PS2s EDRAM to textures was quite popular.
So how much main RAM would you need to use to cache that? 4MB?
If anything, having to keep more in VRAM on DC is wasteful.
There's more to graphics than just textures, DC has a very limited amount of RAM and a slow streaming speed, so keeping things in main RAM as a buffer to make up for lack of streaming speed would likely need to take place.
Do you have a source for that? Any actual numbers?
It's weird how the PS2 works.
Basically they keep 1.3 MB to 1.5 MB CACHE open in vram for textures that will be used for the frame.
These are being sent from main ram.
PS2 has 3 paths to send these textures of I remember right.
To some extent they have to be synchronized or something will stall( geometry /texture).
Looking at some charts a few years ago they claimed the ps2 actually has better bandwidth throughput in submitting 16 bit/24bit color textures than its usual 4 bit/8bit color it used( it's a big difference).
Problem is vram is too small regardless to take advantage so they stick to 8bit/4bit textures.
That's a lot of times they broke bigger textures into smaller textures/tiles.
I don't pretend to know how much they dedicated in main ram for textures but if 1.5mb is reserved in vram to hold just what's visible it's probably more than we think for the rest of the scene.
For gta3 if anything they are trying to get rid of those in-between buffers and make textures native so they can just shove it in the vram as they are loaded along with the models/ animation ( which go to the main ram).