Basically, your assumption "something needs to be done with the GPU"? is correct.
SDL_Surface used when rendering software. With software rendering, as saloomi2012 correctly noticed, you are using regular RAM to store image data. Thus, in most cases, you can directly access the data buffer associated with the surface, changing its contents, that is, use the CPU, therefore, the name of the software.
SDL_Texture , on the other hand, is used in hardware rendering, textures are stored in VRAM, and you do not have access to it directly, as with SDL_Surface . Rendering operations are accelerated using the GPU, using the internal OpenGL or DirectX interface (available only for Windows), which in turn uses your video hardware, hence the name of the hardware rendering.
Needless to say, hardware rendering is an order of magnitude faster than software rendering, and it should always be considered as the main option.
Petr Abdulin Sep 30 '14 at 5:30 2014-09-30 05:30
source share