Я только что скопировал из Интернета пример совместного использования SDL2 и Cairo, но, похоже, форматы данных SDL2 и Cairo различаются по типу:
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *window = SDL_CreateWindow("CIAO", 100, 100, 600, 800, NULL);
SDL_Renderer *renderer = SDL_GetRenderer(window);
SDL_Texture *texture = SDL_CreateTexture(renderer,
SDL_PIXELFORMAT_ARGB8888,
SDL_TEXTUREACCESS_STREAMING,
100,100);
void *pixels;
int pitch;
SDL_LockTexture(texture, NULL, &pixels /* here requires, &pitch);
cairo_surface_t *cairo_surface = cairo_image_surface_create_for_data(
pixels, /* Here: (void*) incompatible with (unsigned char*) */
CAIRO_FORMAT_ARGB32,
100, 100 , pitch);
paint(cairo_create(cairo_surface)); //
SDL_UnlockTexture(texture);