Sakura-IT / SonnetAmiga

Reimplementation of WarpOS supporting Sonnet Crescendo 7200 and other PowerPC PCI cards (mirror of CVS development repository).
MIT License
39 stars 3 forks source link

Graphics data can overwrite PPC code/data #23

Closed DvdBoon closed 8 years ago

DvdBoon commented 8 years ago

When not having a lot of gfx memory (read: voodoo card) and playing the Quake II intro (which is rather big) PPC code and/or data residing in Sonnet memory gets overwritten if you let the intro play long enough. This does not happen on a Radeon card with 256MB.

I'm guessing that the graphics driver assumes it has all $2005 memory for itself. And that allocating memory for bitmaps does not go through the normal memory allocation functions but through P96 or CGX.

Will look into it.

rkujawa commented 8 years ago

I believe pci.library has VoodooMem and RadeonMem environment variables (both in EnvArc:Mediator/), which are supposed to limit how much memory will Picasso96 use.

DvdBoon commented 8 years ago

Seeing how things get overwritten, I think it is the other way around. Those variables indicate how much memory is NOT available for system memory. I already raised RadeonMem to 32MB but still see screens getting allocated beyond the 32MB. Plenty of memory in a Radeon so it doesn't clash as it does with the Voodoo.

rkujawa commented 8 years ago

These variables existed long before Elbox started supporting using graphics card memory as system memory.

Since you have the Mediator, you can check the bundled CD. There you will find some files with documentation (AmigaGuide format if I remember correctly), one of these explains how this variable works. Of course, it might lie or be outdated, one could only be 100% sure after further reverse engineering of pci.library.

DvdBoon commented 8 years ago

Yes, now I remember. They are there to leave some space for 'DMA' memory for spider and/or fastethernet (1 or 2 MB).

togflops commented 8 years ago

I thought the way it works is this for a 16MB Voodoo: Voodoomem=12 Voodoo uses 12mb for display buffer Spiderbuf=1 1MB for Spider USB buffer Leaving 3MB as Amiga PCI RAM

DvdBoon commented 8 years ago

This was probable a stack overflow problem as a result of the memory release problems as I haven't seen it anymore after the fix.