SDL_ConvertSurface man page
SDL_ConvertSurface — Converts a surface to the same format as another surface.
SDL_Surface *SDL_ConvertSurface(SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags);
Creates a new surface of the specified format, and then copies and maps the given surface to it. If this function fails, it returns NULL.
The flags parameter is passed to SDL_CreateRGBSurface and has those semantics.
This function is used internally by SDL_DisplayFormat.
This function can only be called after SDL_Init.
Returns either a pointer to the new surface, or NULL on error.
SDL_CreateRGBSurface, SDL_DisplayFormat, SDL_PixelFormat, SDL_Surface