Skip to content

Commit 933411e

Browse files
committed
add software renderer fallback also
1 parent 9c0fbfc commit 933411e

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

src/sdl/window.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,28 @@ window::window(const std::string& title,
7474

7575
// try using the default
7676
// if that fails, try opengl
77+
// and if that fails, try software
7778
PLAIN_LOG << "Available renderers: " << utils::join(video::get_available_renderers(), " ");
7879
if(!SDL_CreateRendererWithProperties(props)) {
79-
PLAIN_LOG << "Failed to create default renderer, checking for opengl";
80+
PLAIN_LOG << "Trying opengl renderer after failing to create default renderer with error: " << SDL_GetError();
8081

8182
if(utils::contains(video::get_available_renderers(), "opengl")) {
8283
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");
8384

8485
if(!SDL_CreateRendererWithProperties(props)) {
85-
throw exception("Failed to create an opengl SDL_Renderer object as a fallback.", true);
86+
PLAIN_LOG << "Trying software renderer after failing to create opengl renderer with error: " << SDL_GetError();
87+
88+
if(utils::contains(video::get_available_renderers(), "software")) {
89+
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "software");
90+
91+
if(!SDL_CreateRendererWithProperties(props)) {
92+
throw exception("Failed to create software renderer.", true);
93+
}
94+
}
8695
}
8796

8897
PLAIN_LOG << "Failed to create default renderer but created fallback opengl renderer";
8998
} else {
90-
PLAIN_LOG << "Available renderers: " << utils::join(video::get_available_renderers(), " ");
9199
throw exception("Failed to create default renderer and opengl fallback isn't supported.", true);
92100
}
93101
}

0 commit comments

Comments
 (0)