PDA

View Full Version : Slowdown on Linux



Stoney
02-05-2006, 10:16 AM
Hi, it's me again, I'm now using Linux Ubuntu 5.10 (http://www.ubuntu.com). My goal is to have my SDL-based engine at nearly the speed as in Windows (well, 30 FPS are the minimum; the basic examples of my engine ran at over 120 FPS on my machine).
My computer:
- 1000 MHz
- 128 MB RAM
- NVidia GeForce 2 GTS (32 MB)

I've installed the nvidia-glx-legacy driver from the Ubuntu repository and it seems to work: I get a NVidia-logo at startup and the glxgears application is working at over 1200 FPS. This Frozen-Bubble game (from KDE) is also running at high speed.

But the compiled examples from my engine only show 8 to 13 FPS. I compiled it with Kylix 3 Open Edition and emulated a few examples with WINE 0.9.12. Both resulted in these low FPS.

Logger says:


*** ERROR *** : @ 12:04:58 MSG : Initialization IN : No video modes available!

STATUS INFO : @ 12:04:58 MSG : Information IN : Video memory: 0 KB

STATUS INFO : @ 12:04:58 MSG : Information IN : Device: Software



My code:


[...]
if SDL_Init&#40;SDL_INIT_VIDEO&#41; <> 0 then
begin
if Log <> nil then LogError&#40;'Initialization', 'Could not initialize SDL&#58; ' + SDL_GetError&#41;;
Finalize;
end;

If Log <> Nil Then
Begin
Modes &#58;= SDL_ListModes&#40;nil, SDL_FULLSCREEN or SDL_HWSURFACE or SDL_SWSURFACE or SDL_ANYFORMAT&#41;;
If Modes = PPSDL_Rect&#40;0&#41; Then
Begin
LogError&#40;'Initialization', 'No video modes available!'&#41;;
End Else
Begin
&#123;TMP_X &#58;= @Modes;
for i &#58;= 0 to Modes&#91;i&#93; - 1 do LogStatus&#40; Format&#40; ' %d x %d', &#91; Modes&#91;i&#93;.w, Modes&#91;i&#93;.h &#93; &#41; &#41;; &#125; //This is commented, because it hadn't worked
End;
End;

if VideoInfo = nil then
begin
if Log <> nil then LogError&#40;'Initialization', 'Could not collect system info -> Application terminated. Error&#58; ' + SDL_GetError&#41;;
Finalize;
end;

if VideoInfo.hw_available <> 0 then FFlags &#58;= FFlags or SDL_HWSURFACE
else FFlags &#58;= FFlags or SDL_SWSURFACE;

if Log <> nil then LogStatus&#40;'Information', 'Video memory&#58; '+IntToStr&#40;VideoInfo.video_mem&#41;+ ' KB'&#41;;
if VideoInfo.blit_hw <> 0 then
begin
FFlags &#58;= FFlags or SDL_HWACCEL;
if Log <> nil then LogStatus&#40;'Information', 'Device&#58; Hardware accelerated'&#41;;
end else
begin
if Log <> nil then LogStatus&#40;'Information', 'Device&#58; Software'&#41;;
end;

&#91;...&#93;



Is there a special way of getting SDL working with some more FPS? Or have I made something wrong?

savage
18-10-2006, 01:33 PM
Hi Stoney,
Only just spotted this thread now. I hope you managed to get an answer or solve it.

jasonf
18-10-2006, 01:41 PM
I had a performance problem under Linux, it sort-of went away when I dropped my Desktop resolution to 16Bit.

I think it must be an XWindows thing or an nVidia driver thing.

Never had the same problems under Windows.

technomage
18-10-2006, 08:00 PM
Nvidia does recommend that you run the X windows in 16 bit not 32 under linux. I remember reading that somewhere.

WILL
18-10-2006, 08:10 PM
Sounds like a serious problem with X Windows...