[SDL] glSDL backend
david at olofson.net
Fri Jan 7 10:37:22 PST 2005
On Friday 07 January 2005 18.20, Koshmaar wrote:
> Hmmm, I assumed that SWSURFACE's exist in system memory, and
> hardware ones, in video card's. If it's not true with glSDL (as I'm
> thinking now) then forgot what I've written :-]
glSDL is a bit odd in that regard. *All* surfaces (except for the
display surface) are basically s/w surfaces. A so called h/w surface
in glSDL is effectively a s/w surface with one or more textures bound
to it. When you lock/modify/unlock such a surface, glSDL invalidates
the texture(s), so that they're re-uploaded before they're used
again. Blitting from one surface to another is just a s/w ==> s/w
blit, followed by an invalidation of the target surface's textures.
* surface ==> surface blits are fast (all in system RAM),
* ...surface ==> surface blits cannot be accelerated by
glSDL, so blending and stuff still relies on the CPU.
* surface ==> display blits are extremely fast, except
possibly the first blit after a texture invalidation.
* display ==> surface and display ==> display blits can
be pretty slow, since they usually involve CPU driven
transfers to/from VRAM. (Driver dependent.)
* Modifying the display surface directly is *extremely*
slow, since glSDL will have to read all pixels from
VRAM when you lock, and write them all back when you
unlock. It doesn't help that there is no API for
locking only part of a surface. (Sam threw in an
extension for that in some version, but it was backed
out again for several reasons. I believe one of them
is that this feature is completely irrelevant to most
backends, and is therefore hard to use correctly. Also,
it's safer, more accurate and more efficient to do it
on the application side.)
* Unlike the DDraw backend, glSDL does not lose surfaces.
It may lose textures, but you'll never know, as they're
re-uploaded as soon as you blit to the screen again.
//David Olofson - Programmer, Composer, Open Source Advocate
.- Audiality -----------------------------------------------.
| Free/Open Source audio engine for games and multimedia. |
| MIDI, modular synthesis, real time effects, scripting,... |
`-----------------------------------> http://audiality.org -'
--- http://olofson.net --- http://www.reologica.se ---
More information about the SDL