diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 168bf614d..6fd70bd23 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6987,7 +6987,14 @@ bool FurnaceGUI::init() { logD("creating window..."); sdlWin=SDL_CreateWindow("Furnace",scrX,scrY,scrW,scrH,SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI|(scrMax?SDL_WINDOW_MAXIMIZED:0)|(fullScreen?SDL_WINDOW_FULLSCREEN_DESKTOP:0)|rend->getWindowFlags()); if (sdlWin==NULL) { - lastError=fmt::sprintf("could not open window! %s",SDL_GetError()); + const char* sdlErr=SDL_GetError(); + lastError=fmt::sprintf("could not open window! %s",sdlErr); + if (settings.renderBackend!="Software" && strcmp(sdlErr,"No matching GL pixel format available")==0) { + settings.renderBackend="Software"; + e->setConf("renderBackend","Software"); + e->saveConf(); + lastError+="\r\nfalling back to software renderer. please restart Furnace."; + } return false; }