Create a 2D software rendering context for a surface.
SDL_Renderer * SDL_CreateSoftwareRenderer(SDL_Surface * surface);
the SDL_Surface structure representing the surface where rendering is done
Returns a valid rendering context or NULL if there was an error; call SDL_GetError() for more information.
Two other API which can be used to create SDL_Renderer: SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ create a software renderer, but they are intended to be used with an SDL_Window as the final destination and not an SDL_Surface.
This function is available since SDL 2.0.0.