On Sat, 28 Jan 2006 11:25:50 +0100, Andreas Jaeger wrote:
"Martin Bickel" <mbickel@asc-hq.org> writes:
Hello,
I've encountered an extremely degraded performance for all SDL based applications / games on 10.1 Beta1. Drawing the application window is so slow that one can watch it being drawn from top to bottom.
Is this a issue of our slow fontconfig? Please test the updated RPM that I announced,
No, unfortunately not. Installing the new fontconfig didn't help. To demonstrate and reproduce the problem, I've made the attached test program (build instructions included). It just makes simple screen updates for 20 seconds without drawing anything. Debian unstable, X.org 6.9.0 with radeon driver, SDL 1.2.9, x86-64: 230 fps SuSE 10.1 beta 1, X.org 6.9.0-9 with radeon driver, SDL 1.2.9, x86-64: 2 fps !!! So 2 fps is the upper limit that _any_ SDL-based 2D-applications will reach on SuSE 10.1. And most games and emulators included in SuSE are based on SDL. I suggest to get some more results from different installations to see if this problem is specific to my setup or common. Regards, Martin Bickel /* prerequisite packages: SDL SDL-dev to compile: g++ -I/usr/X11R6/include -I/usr/include/SDL -D_REENTRANT -c testfps.cpp g++ -o testfps testfps.o -lm -lSDL -lpthread */ #include <stdio.h> #include <stdlib.h> #include "SDL.h" int main() { /* Initialize SDL */ if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); exit(1); } atexit(SDL_Quit); int video_bpp; const SDL_VideoInfo *info = SDL_GetVideoInfo(); if ( info->vfmt->BitsPerPixel > 8 ) { video_bpp = info->vfmt->BitsPerPixel; } else { video_bpp = 16; fprintf(stderr, "forced 16 bpp mode\n"); } SDL_Surface *screen; if ( (screen=SDL_SetVideoMode(1000,700,video_bpp,SDL_SWSURFACE)) == NULL ) { fprintf(stderr, "Couldn't set video mode: %s\n", SDL_GetError()); exit(2); } int time = 20; Uint32 ticks1 = SDL_GetTicks(); Uint32 ticks2; int frames = 0; do { SDL_UpdateRect(screen, 0, 0, 0, 0); ++frames; ticks2 = SDL_GetTicks(); } while ( ticks2 - ticks1 < time * 1000 ); printf("%d fps\n", frames / time ); return(0); }