[Scummvm-git-logs] scummvm master -> 749c3ec9e17d6aa94c59c3f023b250776ad4ece3

aquadran aquadran at gmail.com
Mon Oct 19 04:52:40 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
749c3ec9e1 ENGINES: If backend is not capable support opengl in game do not try create opengl renderer


Commit: 749c3ec9e17d6aa94c59c3f023b250776ad4ece3
    https://github.com/scummvm/scummvm/commit/749c3ec9e17d6aa94c59c3f023b250776ad4ece3
Author: Paweł Kołodziejski (aquadran at users.sourceforge.net)
Date: 2020-10-19T06:52:31+02:00

Commit Message:
ENGINES: If backend is not capable support opengl in game do not try create opengl renderer

Changed paths:
    engines/grim/grim.cpp
    engines/myst3/gfx.cpp
    engines/stark/gfx/driver.cpp
    engines/wintermute/base/base_game.cpp


diff --git a/engines/grim/grim.cpp b/engines/grim/grim.cpp
index 7be37ba45c..9c5540c13a 100644
--- a/engines/grim/grim.cpp
+++ b/engines/grim/grim.cpp
@@ -275,9 +275,13 @@ GfxBase *GrimEngine::createRenderer(int screenW, int screenH) {
 		initGraphics(screenW, screenH, nullptr);
 	}
 
+#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
+	bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
+#endif
+
 #if defined(USE_OPENGL_GAME)
 	// Check the OpenGL context actually supports shaders
-	if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
+	if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
 		matchingRendererType = Graphics::kRendererTypeOpenGL;
 	}
 #endif
@@ -289,12 +293,12 @@ GfxBase *GrimEngine::createRenderer(int screenW, int screenH) {
 
 	GfxBase *renderer = nullptr;
 #if defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
-	if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
+	if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
 		renderer = CreateGfxOpenGLShader();
 	}
 #endif
 #if defined(USE_OPENGL_GAME) && !defined(USE_GLES2)
-	if (matchingRendererType == Graphics::kRendererTypeOpenGL) {
+	if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGL) {
 		renderer = CreateGfxOpenGL();
 	}
 #endif
diff --git a/engines/myst3/gfx.cpp b/engines/myst3/gfx.cpp
index 0833c49427..0935745020 100644
--- a/engines/myst3/gfx.cpp
+++ b/engines/myst3/gfx.cpp
@@ -209,9 +209,13 @@ Renderer *createRenderer(OSystem *system) {
 		initGraphics(width, height, nullptr);
 	}
 
+#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
+	bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
+#endif
+
 #if defined(USE_OPENGL_GAME)
 	// Check the OpenGL context actually supports shaders
-	if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
+	if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
 		matchingRendererType = Graphics::kRendererTypeOpenGL;
 	}
 #endif
@@ -222,12 +226,12 @@ Renderer *createRenderer(OSystem *system) {
 	}
 
 #if defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
-	if (matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
+	if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGLShaders) {
 		return CreateGfxOpenGLShader(system);
 	}
 #endif
 #if defined(USE_OPENGL_GAME) && !defined(USE_GLES2)
-	if (matchingRendererType == Graphics::kRendererTypeOpenGL) {
+	if (backendCapableOpenGL && matchingRendererType == Graphics::kRendererTypeOpenGL) {
 		return CreateGfxOpenGL(system);
 	}
 #endif
diff --git a/engines/stark/gfx/driver.cpp b/engines/stark/gfx/driver.cpp
index 218c543368..4cce2b8cad 100644
--- a/engines/stark/gfx/driver.cpp
+++ b/engines/stark/gfx/driver.cpp
@@ -36,16 +36,22 @@ namespace Stark {
 namespace Gfx {
 
 Driver *Driver::create() {
-#if defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
+	Driver *driver = nullptr;
+#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
 	initGraphics3d(kOriginalWidth, kOriginalHeight);
 
-	if (OpenGLContext.shadersSupported) {
-		return new OpenGLSDriver();
-	} else {
-		error("Your system does not have the required OpenGL capabilities");
-	}
-#endif // defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
+	bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
 
+	if (backendCapableOpenGL) {
+		if (OpenGLContext.shadersSupported) {
+			driver = new OpenGLSDriver();
+		} else {
+			error("Your system does not have the required OpenGL capabilities");
+		}
+	}
+#endif
+	if (driver)
+		return driver;
 	error("No renderers have been found for this game");
 }
 
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index a17cc1fd2e..424b413e32 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -84,6 +84,9 @@
 #ifdef ENABLE_WME3D
 #include "graphics/renderer.h"
 #include "engines/util.h"
+#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
+#include "graphics/opengl/context.h"
+#endif
 #endif
 
 namespace Wintermute {
@@ -501,16 +504,27 @@ bool BaseGame::initialize2() { // we know whether we are going to be accelerated
 #ifdef ENABLE_WME3D
 	initGraphics3d(_settings->getResWidth(), _settings->getResHeight());
 
+#if defined(USE_OPENGL_GAME) || defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
+	bool backendCapableOpenGL = g_system->hasFeature(OSystem::kFeatureOpenGLForGame);
+#endif
+
 	Common::String rendererConfig = ConfMan.get("renderer");
 	Graphics::RendererType desiredRendererType = Graphics::parseRendererTypeCode(rendererConfig);
 
+#if defined(USE_OPENGL_GAME)
+	// Check the OpenGL context actually supports shaders
+	if (backendCapableOpenGL && desiredRendererType == Graphics::kRendererTypeOpenGLShaders && !OpenGLContext.shadersSupported) {
+		desiredRendererType = Graphics::kRendererTypeOpenGL;
+	}
+#endif
+
 #if defined(USE_OPENGL_SHADERS) || defined(USE_GLES2)
-	if (desiredRendererType == Graphics::kRendererTypeOpenGLShaders) {
+	if (backendCapableOpenGL && desiredRendererType == Graphics::kRendererTypeOpenGLShaders) {
 		_renderer3D = makeOpenGL3DShaderRenderer(this);
 	}
 #endif // defined(USE_GLES2) || defined(USE_OPENGL_SHADERS)
 #if defined(USE_OPENGL_GAME)
-	if (desiredRendererType == Graphics::kRendererTypeOpenGL) {
+	if (backendCapableOpenGL && desiredRendererType == Graphics::kRendererTypeOpenGL) {
 		_renderer3D = makeOpenGL3DRenderer(this);
 	}
 #endif // defined(USE_OPENGL)




More information about the Scummvm-git-logs mailing list