Hi all,
It seems that the X11 support in Angband is unbearably slow these days, especially at large window sizes -- it's not "flicker", you can literally watch it redraw the dungeon screen when it's maximized. Rather than any specific thing I think this may simply be a case of the port doing everything synchronously and painting every little thing using individual calls to Xlib rather than just generating a bitmap in-memory and blitting it using a single to XRenderImage (or whatever it's called).
So, why don't I just use the SDL port? The blocker for me is that it doesn't support multiple windows(*). It also has some behavior which seems odd to me UI-wise, but that's minor compared to the lack of multi-window support.
It's been annoying me so much that I was seriously considering an attempt at fixing it(**). I see two options: 1) Using something like Cairo in the X11 module and using that to render everything to an in-memory surface and blitting it in a single Xlib/Xrender/whatever call, or 2) Adding a port to a different game library than SDL.
I was looking around for SDL alternatives and happened upon the Allegro game library. Does anyone have any experience with that? I implemented a little demo and the API seems pretty sensible and easy to use, and crucially, it does support multiple OS-level windows.
I guess this my question to the current developer cabal: Which of these options do you think would be a) most likely to actually make it into Vanilla, and b) the easiest in terms of code?
(*) I realize that multi-window support has been promised for the in-development SDL 1.3 (which has later been renamed SDL 2.x) for ages. However none of the Linux distros which I'm aware of ship anything later than 1.2.x, and I have absolutely no idea how close 2.x is to release. Given the length of time we've been waiting already, I'm not holding my breath.
(**) If this happens, it's at least a few months out -- too busy and worn-out to do any serious hacking at the moment.
It seems that the X11 support in Angband is unbearably slow these days, especially at large window sizes -- it's not "flicker", you can literally watch it redraw the dungeon screen when it's maximized. Rather than any specific thing I think this may simply be a case of the port doing everything synchronously and painting every little thing using individual calls to Xlib rather than just generating a bitmap in-memory and blitting it using a single to XRenderImage (or whatever it's called).
So, why don't I just use the SDL port? The blocker for me is that it doesn't support multiple windows(*). It also has some behavior which seems odd to me UI-wise, but that's minor compared to the lack of multi-window support.
It's been annoying me so much that I was seriously considering an attempt at fixing it(**). I see two options: 1) Using something like Cairo in the X11 module and using that to render everything to an in-memory surface and blitting it in a single Xlib/Xrender/whatever call, or 2) Adding a port to a different game library than SDL.
I was looking around for SDL alternatives and happened upon the Allegro game library. Does anyone have any experience with that? I implemented a little demo and the API seems pretty sensible and easy to use, and crucially, it does support multiple OS-level windows.
I guess this my question to the current developer cabal: Which of these options do you think would be a) most likely to actually make it into Vanilla, and b) the easiest in terms of code?
(*) I realize that multi-window support has been promised for the in-development SDL 1.3 (which has later been renamed SDL 2.x) for ages. However none of the Linux distros which I'm aware of ship anything later than 1.2.x, and I have absolutely no idea how close 2.x is to release. Given the length of time we've been waiting already, I'm not holding my breath.
(**) If this happens, it's at least a few months out -- too busy and worn-out to do any serious hacking at the moment.
Comment