Skip to content

Cannot create renderer when compiled using nix #196

@schell

Description

@schell

I'm running into a funny error where I'm not able to create a renderer. This error only happens when building using nix (and I'm fairly new to nix so this could be a simple dependency gotcha). The same program compiled with stack builds and runs just fine. Here's the error that I'm getting:

SDLCallFailed {sdlExceptionCaller = "SDL.Video.createRenderer", sdlFunction = "SDL_CreateRenderer", sdlExceptionError = "Couldn't find matching render driver"}

And for debugging, given this code:

  let rcfg = SDL.RendererConfig
               { SDL.rendererType = SDL.AcceleratedVSyncRenderer
               , SDL.rendererTargetTexture = True
               }
  liftIO $ do
    print rcfg
    putStrLn ""
  SDL.getRenderDriverInfo
    >>= liftIO . mapM (\i -> print i >> putStrLn "")
  r <- SDL.createRenderer win (-1) rcfg
  ...

I get this output:

RendererConfig {rendererType = AcceleratedVSyncRenderer, rendererTargetTexture = True}

RendererInfo {rendererInfoName = "opengl", rendererInfoFlags = RendererConfig {rendererType = AcceleratedVSyncRenderer, rendererTargetTexture = True}, rendererInfoNumTextureFormats = 1, rendererInfoTextureFormats = [ARGB8888,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown], rendererInfoMaxTextureWidth = 0, rendererInfoMaxTextureHeight = 0}

RendererInfo {rendererInfoName = "opengles2", rendererInfoFlags = RendererConfig {rendererType = AcceleratedVSyncRenderer, rendererTargetTexture = True}, rendererInfoNumTextureFormats = 4, rendererInfoTextureFormats = [ARGB8888,ABGR8888,RGB888,BGR888,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown], rendererInfoMaxTextureWidth = 0, rendererInfoMaxTextureHeight = 0}

RendererInfo {rendererInfoName = "opengles", rendererInfoFlags = RendererConfig {rendererType = AcceleratedVSyncRenderer, rendererTargetTexture = False}, rendererInfoNumTextureFormats = 1, rendererInfoTextureFormats = [ABGR8888,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown], rendererInfoMaxTextureWidth = 0, rendererInfoMaxTextureHeight = 0}

RendererInfo {rendererInfoName = "software", rendererInfoFlags = RendererConfig {rendererType = SoftwareRenderer, rendererTargetTexture = True}, rendererInfoNumTextureFormats = 8, rendererInfoTextureFormats = [ARGB8888,ABGR8888,RGBA8888,BGRA8888,RGB888,BGR888,RGB565,RGB555,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown,Unknown], rendererInfoMaxTextureWidth = 0, rendererInfoMaxTextureHeight = 0}

Furthermore, if I try to specify that the window use OpenGL by supplying defaultWindow{ windowOpenGL = Just defaultOpenGL } I get a different error:

SDLCallFailed {sdlExceptionCaller = "SDL.Video.createRenderer", sdlFunction = "SDL_CreateRenderer", sdlExceptionError = "Invalid window"}

Thanks for any help, it's much appreciated - even just spit balling.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions