Thu, 17 Feb 2011 12:03:48 -0800Allow the application to explicitly request a software renderer.
Sam Lantinga [Thu, 17 Feb 2011 12:03:48 -0800] rev 5337
Allow the application to explicitly request a software renderer.

Thu, 17 Feb 2011 09:26:15 -0800Our minimum Windows version is Windows 2000, so it's okay to directly call InitializeCriticalSectionAndSpinCount()..
Sam Lantinga [Thu, 17 Feb 2011 09:26:15 -0800] rev 5336
Our minimum Windows version is Windows 2000, so it's okay to directly call InitializeCriticalSectionAndSpinCount()..

Thu, 17 Feb 2011 09:13:12 -0800Fixed bug 1128
Sam Lantinga [Thu, 17 Feb 2011 09:13:12 -0800] rev 5335
Fixed bug 1128

Patrick Baggett 2011-02-16 22:58:33 PST

This enhancement is for both x86/x64 Windows.

The SDL implementation of mutexes uses the Win32 API interprocess
synchronization primitive called a "Mutex". This implementation is subpar
because it has a much higher overhead than an intraprocess mutex. The exact
technical details are below, but my tests have shown that for reasonably high
contention (10 threads on 4 physical cores), it has 13x higher overhead than
the Win32 CriticalSection API.

If this enhancement is accepted, I will write a patch to implement SDL mutexes
using the critical section API, which should dramatically reduce overhead and
improve scalability.


-- Tech details --
Normally, Win32 Mutexes are used across process boundaries to synchronize
separate processes. In order to lock or unlock them, a user->kernel space
transition is necessary, even in the uncontented case on a single CPU machine.
Win32 CriticalSection objects can only be used within the same process virtual
address space and thus to lock one, does not require a user->kernel space
transition for the uncontended case, and additionally may spin a short while
before going into kernel wait. This small spin allows a thread to obtain the
lock if the mutex is released shortly after the thread starts spinning, in
effect bypassing the overhead of user->kernel space transition which has higher
overhead than the spinning itself.

Thu, 17 Feb 2011 02:31:50 -0800Fixed bug #1090 (SDL_BlitCopyOverlap() assumes memcpy() operates in order) SDL-1.2
Sam Lantinga [Thu, 17 Feb 2011 02:31:50 -0800] rev 5334
Fixed bug #1090 (SDL_BlitCopyOverlap() assumes memcpy() operates in order)

The much more complete fix is in SDL 1.3, but this is a band-aid that will fix the bug for 1.2.

Thu, 17 Feb 2011 02:23:48 -0800Implemented OpenGL ES RenderClear()
Sam Lantinga [Thu, 17 Feb 2011 02:23:48 -0800] rev 5333
Implemented OpenGL ES RenderClear()

Thu, 17 Feb 2011 02:18:41 -0800Fixed warnings about unused variables and so forth.
Sam Lantinga [Thu, 17 Feb 2011 02:18:41 -0800] rev 5332
Fixed warnings about unused variables and so forth.

Thu, 17 Feb 2011 02:17:38 -0800Fixed SDL_RenderClear() if the render driver doesn't implement it.
Sam Lantinga [Thu, 17 Feb 2011 02:17:38 -0800] rev 5331
Fixed SDL_RenderClear() if the render driver doesn't implement it.

Thu, 17 Feb 2011 02:16:30 -0800Fixed crash when drawing non-textured primitives
Sam Lantinga [Thu, 17 Feb 2011 02:16:30 -0800] rev 5330
Fixed crash when drawing non-textured primitives

Wed, 16 Feb 2011 20:19:02 -0800Updated deployment target to iPhone/iPad 3.2, and added dependencies on SDL for the demos.
Sam Lantinga [Wed, 16 Feb 2011 20:19:02 -0800] rev 5329
Updated deployment target to iPhone/iPad 3.2, and added dependencies on SDL for the demos.

Wed, 16 Feb 2011 17:17:21 -0800Fixed bug 1122 (spinlock fails to compile with -march=armv4t)
Sam Lantinga [Wed, 16 Feb 2011 17:17:21 -0800] rev 5328
Fixed bug 1122 (spinlock fails to compile with -march=armv4t)