pingus-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Pingus-Devel] Memory consumption in pingus 0.7.2


From: usb
Subject: Re: [Pingus-Devel] Memory consumption in pingus 0.7.2
Date: Wed, 30 Jul 2008 23:19:26 +0200

I've just got latest version from svn.
Large memory leak seem to be solved, I can pass 1st level now. Some memory seem to be returned to the system after level is completed. But I still have following problems: 1. After level1 is completed OK, I can not go to level2, when I click on it, game says 'locked'. What could be wrong ? 2. I wanted to make a clean build and executed scons -c. After that executing scons configure complain s that libboost_signals nor found and there is following log in config.log:
scons: Configure: Checking for C++ library boost_signals...
scons: Configure: ".sconf_temp/conftest_0.cpp" is up to date.
scons: Configure: The original builder output was:
 |.sconf_temp/conftest_0.cpp <-
 |  |
 |  |
 |  |#include "boost/signals.hpp"
 |  |
 |  |int
 |  |main() {
 |  |
 |  |return 0;
 |  |}
 |  |
 |
ccache /usr/local/cross/gcc-3.3.4_glibc-2.3.2/bin/arm-linux-gcc -o .sconf_temp/conftest_0.o -c -mcpu=arm920 -O2 -ffunction-sections -fdata-sections -Darm -DCPU=arm -I/home/serg/devel/Libraries/Pingus-devel/../../Arch/arm/include -I/home/serg/devel/Libraries/Pingus-devel/../../Arch/arm/../../TT -I/home/serg/devel/Libraries/Pingus-devel/../../Arch/arm/../../TTMP -I. -Isrc .sconf_temp/conftest_0.cpp
arm-linux-gcc: .sconf_temp/conftest_0.cpp: No such file or directory
arm-linux-gcc: no input files

I checked .sconf_temp and there is no conftest_0.cpp. For some reason it is not created. I swear I have boost, it was compiling today ok and configure was OK week ago...
What could be wrong ?

Sincerely,

Serg

----- Original Message ----- From: "Ingo Ruhnke" <address@hidden>
To: <address@hidden>; <address@hidden>
Sent: Monday, July 21, 2008 7:40 PM
Subject: Re: [Pingus-Devel] Memory consumption in pingus 0.7.2


On Sun, Jul 20, 2008 at 12:23 PM,  <address@hidden> wrote:
==> I've got the latest version. src/ut8_iterator.hpp did not wanted to
comiple beciuse of <stdint.h> include was missing.

Ok, added that.

Unfortunately, svn version does not react on -g options. I changed def
resultions back to 640*480 in globaps.hpp and pingus_main.

Fixed that.

    Current version runs but kernel is out of memory on the first level
already. So it this respect it's worse than prev version.

There was a big leak left, I closed that one, try again.

==> my system doe snot have any GPU. Only framebuffer. Does this means that level map is kept twice anyway? If yes, please let me know where to look for
the second copy.

In ground_map.cpp the MapTile class, "Sprite sprite" is the video
surface, while "Surface surface" is the one in software. However
Sprite is optimized for the Display and in a different color format
then Surface, so you can't just blit on it with the current blitter,
which assume 32bit RGBA for most part.

A workable approach might be to get rid of all the Surfaces after the
Sprites have been created, thus freeing the memory. And then when the
Surface is modified, copy it back from video-memory/format to software
and only then keep it for the rest of the level. That way only tiles
that are modified are kept in memory twice, which are much less then
the whole level. A function that converts a Sprite back into a Surface
also would fit well enough into the current API.

And is it possible to make the map smaller?

Only with a level editor. I have thought about adding a
(levelsize-small) tag to the level format, to define a minimum
required levelsize for the levels, but not sure if that is worth the
effort, since the levels are already sparsely allocated (except the
collision map), so a bigger level isn't really all that much bigger in
memory, since its mostly empty space.

What is --tile-size game parameter? is it possible to reduce memory
consumption with it ? Ireied --tile-size 24 and it did not help...

The level is split up into tiles, tilesize gives you that size. Larger
tilesizes means more memory is spend, smaller ones mean less, since
the tiles fit closer to the level. However when it gets to small the
tile overhead gets to big and memory usage increases again. I don't
think you can safe much memory with it. The current default value
however is basically randomly selected, not benchmarked, so there
might be a better size, however the saving will be tiny.

* the whole screenstack is kept in memory, so the menu background and
such are kept in memory even when not visible
==> I do not think it's too much and I feel optimizing this will be a lot of pain. Probably it's easier to conventrate on double map storage cleanup...

It shouldn't be to hard to do and gives you 6MB free space.

--
WWW: http://pingus.seul.org/~grumbel/
Blog: http://grumbel.blogspot.com/
JabberID: xmpp:address@hidden
ICQ: 59461927






reply via email to

[Prev in Thread] Current Thread [Next in Thread]