[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