lazily initialize SDL surface buffer

This saves a good bit of heap space when not using SDL_LockSurface / SDL_UnlockSurface.