This is a major API feature release!
First, the following bugs are fixed:
Fixed potential BeOS audio-related crash
Fixed crash when resetting the video mode in DirectX
Fixed errors compiling with the SparcWorks compiler
Fixed problem with buggy Metro-X X11 server
Fixed 8-bit audio on Solaris with dbri hardware
Fixed alarm clock problem with Solaris pthreads
Fixed BeOS compilation problem
Now the good stuff.
SDL 0.9.6 now supports full hardware acceleration for double-buffering!
It also supports a sane way of checking to see what kind of hardware
acceleration is available. This allows you to know when to put the
video surface in hardware to take advantage of acceleration.
For examples on how to do this, see the new test programs 'testvideo’
In brief, here are the new API changes:
Added a fast rectangle fill function: SDL_FillRect() (This is hardware accelerated where possible) Addition of a useful function for getting info on the video hardware: const SDL_VideoInfo *SDL_GetVideoInfo(void) This function replaces SDL_GetDisplayFormat(). Support for double-buffering: Use the SDL_DOUBLEBUF flag in SDL_SetVideoMode() Update the screen with a new function: SDL_Flip() SDL_AllocSurface() takes two new flags: SDL_SRCCOLORKEY means that the surface will be used for colorkey blits and if the hardware supports hardware acceleration of colorkey blits between two surfaces in video memory, to place the surface in video memory if possible, otherwise it will be placed in system memory. SDL_SRCALPHA means that the surface will be used for alpha blits and if the hardware supports hardware acceleration of alpha blits between two surfaces in video memory, to place the surface in video memory if possible, otherwise it will be placed in system memory. SDL_HWSURFACE now means that the surface will be created with the same format as the display surface, since having surfaces in video memory is only useful for fast blitting to the screen, and you can't blit surfaces with different surface formats in video memory.
Again, take a look at the testsprite test program to see how to maximize
the speed of your sprite animation and use all available hardware acceleration.
Oh, the new HTML documentation has been updated with the API changes,
as well as new documentation for the CD-ROM API, but I don’t think the
video examples are up to date. I’m going to remove any examples using
SDL_GetDisplayFormat(), and add an example showing the available hardware.
The double-buffering works on DirectX and X11 DGA.