ref: fe9a6a864d1a3f34ae7dbecf803fb6803c7d8ae7
parent: 2fe30c8eb736087233409b4aea28fe36e3314517
author: Fabian Greffrath <fabian@greffrath.com>
date: Tue Dec 3 04:30:50 EST 2019
video: if renderer creation failed, try again without acceleration Currently, we enable hardware acceleration by default. If SDL fails to create a matching renderer for that, e.g. because the graphic hardware or driver do not properly support hardware acceleration, we show an error message and quit. At this point users do either complain or turn their back on our software and never come back. Whenever users complain, we recommend them to enable the force_software_renderer option and try again. However, we can do better and try again ourselves without hardware acceleration if the renderer creation failed with the default flags. If it still fails even then, we know for sure that something is really wrong.
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -1246,6 +1246,23 @@
renderer = SDL_CreateRenderer(screen, -1, renderer_flags);
+ // If we could not find a matching render driver,
+ // try again without hardware acceleration.
+
+ if (renderer == NULL && !force_software_renderer)
+ {
+ renderer_flags |= SDL_RENDERER_SOFTWARE;
+ renderer_flags &= ~SDL_RENDERER_PRESENTVSYNC;
+
+ renderer = SDL_CreateRenderer(screen, -1, renderer_flags);
+
+ // If this helped, save the setting for later.
+ if (renderer != NULL)
+ {
+ force_software_renderer = 1;
+ }
+ }
+
if (renderer == NULL)
{
I_Error("Error creating renderer for screen window: %s",