RenderDriverInfo lies?

Hello,
The following code does not create any window for me:

Code:

// SDL_Init, creating window and stuff
int n=SDL_GetNumRenderDrivers();
SDL_RendererInfo info;
for(int i=0;i<n;i++)
{
    SDL_GetRenderDriverInfo(i,&info);
    puts("======================");
    printf("renderer: %s\n",info.name);
    printf("ACCELERATED: ");
    if(info.flags & SDL_RENDERER_ACCELERATED)puts("YES");
    else puts("NO");
    printf("VSYNC: ");
    if(info.flags & SDL_RENDERER_PRESENTVSYNC)puts("YES");
    else puts("NO");
}

renderer=SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
if(renderer==NULL)
{
    fprintf(stderr,"SDL_CreateRenderer: %s\n",SDL_GetError());
    return 3;
}

And it outputs:

Code:======================
renderer: direct3d
ACCELERATED: YES
VSYNC: YES

renderer: opengl
ACCELERATED: YES
VSYNC: YES

renderer: software
ACCELERATED: NO
VSYNC: NO
SDL_CreateRenderer: Couldn’t find matching render driver

I have a few questions regarding this(I couldnt find anything in docs):

  1. Is this expected behaviour? Even if for some reason direct3d and opengl are not used, why it does not fall back to software renderer? It is kinda what happened in SDL 1.2 - if you could not get hardware surfaces, you got software surfaces instead.
  2. What could be possibly a reason for two first renderers to fail? I tried manually use those renderers(by passing its number instead of -1) but i get the following(for direct3d an opengl respectively):

Code:

SDL_CreateRenderer: Unable to create Direct3D interface
SDL_CreateRenderer: Couldn’t load GL function glBlendFuncSeparate: Failed loadin
g RegisterTouchWindow: Nie mo<]na odnale<Q? okre<dlonej procedury.

(the last part means “Can’t find specific procedure” in Polish).