From e124615493f4f84d372a99ea604220a8e850dde1 Mon Sep 17 00:00:00 2001
From: cpasjuste <cpasjuste@gmail.com>
Date: Thu, 23 Apr 2020 11:16:31 +0200
Subject: switch: enable opengles2 renderer

---
 src/graphicsmanager.cpp                 | 18 +++++++++++-------
 src/progs/manaplus/actions/actions.cpp  |  2 +-
 src/render/graphics.cpp                 |  4 ++--
 src/render/mobileopenglgraphics.cpp     |  2 +-
 src/render/mobileopenglgraphics.h       |  2 +-
 src/render/modernopenglgraphics.cpp     |  2 +-
 src/render/modernopenglgraphics.h       |  2 +-
 src/render/normalopenglgraphics.cpp     |  2 +-
 src/render/normalopenglgraphics.h       |  2 +-
 src/render/opengl/mglfunctions.h        |  2 ++
 src/render/renderers.cpp                |  2 +-
 src/render/rendererslistsdl2.h          |  6 +++---
 src/render/safeopenglgraphics.cpp       |  2 +-
 src/render/safeopenglgraphics.h         |  2 +-
 src/resources/openglimagehelper.cpp     |  6 +++++-
 src/resources/safeopenglimagehelper.cpp |  2 +-
 src/resources/safeopenglimagehelper.h   |  2 +-
 17 files changed, 35 insertions(+), 25 deletions(-)

(limited to 'src')

diff --git a/src/graphicsmanager.cpp b/src/graphicsmanager.cpp
index 2bdfdac43..f45439937 100644
--- a/src/graphicsmanager.cpp
+++ b/src/graphicsmanager.cpp
@@ -186,7 +186,7 @@ int GraphicsManager::detectGraphics()
     logger->log1("enable opengl mode");
     int textureSampler = 0;
     int compressTextures = 0;
-#if !defined(ANDROID) && !defined(__native_client__)
+#if !defined(ANDROID) && !defined(__native_client__) && !defined(__SWITCH__)
     mainGraphics = new NormalOpenGLGraphics;
 #endif  // !defined(ANDROID) && !defined(__native_client__)
 
@@ -285,7 +285,7 @@ int GraphicsManager::detectGraphics()
 #define RENDER_SDL2_DEFAULT_INIT
 #endif  // USE_SDL2
 
-#if defined(ANDROID) || defined(__native_client__)
+#if defined(ANDROID) || defined(__native_client__) || defined(__SWITCH__)
 #define RENDER_NORMAL_OPENGL_INIT
 #define RENDER_MODERN_OPENGL_INIT
 #else  // defined(ANDROID) || defined(__native_client__)
@@ -307,12 +307,16 @@ int GraphicsManager::detectGraphics()
 #define RENDER_SAFE_OPENGL_INIT
 #define RENDER_GLES2_OPENGL_INIT
 #else  // defined(ANDROID)
+#ifdef __SWITCH__
+#define RENDER_SAFE_OPENGL_INIT
+#else
 #define RENDER_SAFE_OPENGL_INIT \
     imageHelper = new SafeOpenGLImageHelper; \
     surfaceImageHelper = new SurfaceImageHelper; \
     mainGraphics = new SafeOpenGLGraphics; \
     screenshortHelper = new OpenGLScreenshotHelper; \
     mUseTextureSampler = false;
+#endif
 #define RENDER_GLES2_OPENGL_INIT \
     imageHelper = new OpenGLImageHelper; \
     surfaceImageHelper = new SurfaceImageHelper; \
@@ -321,7 +325,7 @@ int GraphicsManager::detectGraphics()
     mUseTextureSampler = false;
 #endif  // defined(ANDROID)
 
-#if defined(__native_client__)
+#if defined(__native_client__) || defined(__SWITCH__)
 #define RENDER_GLES_OPENGL_INIT
 #else  // defined(__native_client__)
 #define RENDER_GLES_OPENGL_INIT \
@@ -533,7 +537,7 @@ void GraphicsManager::initGraphics()
     openGLMode = intToRenderType(config.getIntValue("opengl"));
 #ifdef USE_OPENGL
     OpenGLImageHelper::setBlur(config.getBoolValue("blur"));
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(__SWITCH__)
     SafeOpenGLImageHelper::setBlur(config.getBoolValue("blur"));
 #endif  // ANDROID
     SurfaceImageHelper::SDLSetEnableAlphaCache(
@@ -844,7 +848,7 @@ void GraphicsManager::updateTextureFormat()
         config.getBoolValue("newtextures"))
     {
         OpenGLImageHelper::setInternalTextureType(GL_RGBA);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(__SWITCH__)
         SafeOpenGLImageHelper::setInternalTextureType(GL_RGBA);
 #endif  // ANDROID
 
@@ -853,7 +857,7 @@ void GraphicsManager::updateTextureFormat()
     else
     {
         OpenGLImageHelper::setInternalTextureType(4);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(__SWITCH__)
         SafeOpenGLImageHelper::setInternalTextureType(4);
 #endif  // ANDROID
 
@@ -1462,7 +1466,7 @@ void GraphicsManager::createTextureSampler()
         }
     }
     OpenGLImageHelper::setUseTextureSampler(mUseTextureSampler);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(__SWITCH__)
     SafeOpenGLImageHelper::setUseTextureSampler(false);
 #endif  // ANDROID
 }
diff --git a/src/progs/manaplus/actions/actions.cpp b/src/progs/manaplus/actions/actions.cpp
index 3a48e5a33..a4c6a63d2 100644
--- a/src/progs/manaplus/actions/actions.cpp
+++ b/src/progs/manaplus/actions/actions.cpp
@@ -1528,7 +1528,7 @@ impHandler(dumpTests)
 
 impHandler0(dumpOGL)
 {
-#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__)
+#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) && !defined(__SWITCH__)
     NormalOpenGLGraphics::dumpSettings();
 #endif  // defined(USE_OPENGL) && !defined(ANDROID) &&
         // !defined(__native_client__)
diff --git a/src/render/graphics.cpp b/src/render/graphics.cpp
index cd88c25dd..ecc31f8f9 100644
--- a/src/render/graphics.cpp
+++ b/src/render/graphics.cpp
@@ -360,7 +360,7 @@ bool Graphics::setOpenGLMode() restrict2
         OpenGLImageHelper::mTextureSize = texSize;
         logger->log("OpenGL texture size: %d pixels (rectangle textures)",
             OpenGLImageHelper::mTextureSize);
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(__SWITCH__)
         SafeOpenGLImageHelper::mTextureType = GL_TEXTURE_RECTANGLE_ARB;
         SafeOpenGLImageHelper::mTextureSize = texSize;
 #endif  // ANDROID
@@ -370,7 +370,7 @@ bool Graphics::setOpenGLMode() restrict2
         glGetIntegerv(GL_MAX_TEXTURE_SIZE, &texSize);
         OpenGLImageHelper::mTextureType = GL_TEXTURE_2D;
         OpenGLImageHelper::mTextureSize = texSize;
-#ifndef ANDROID
+#if !defined(ANDROID) && !defined(__SWITCH__)
         SafeOpenGLImageHelper::mTextureType = GL_TEXTURE_2D;
         SafeOpenGLImageHelper::mTextureSize = texSize;
 #endif  // ANDROID
diff --git a/src/render/mobileopenglgraphics.cpp b/src/render/mobileopenglgraphics.cpp
index 250cd8969..935833e0b 100644
--- a/src/render/mobileopenglgraphics.cpp
+++ b/src/render/mobileopenglgraphics.cpp
@@ -20,7 +20,7 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#if defined(USE_OPENGL) && !defined(__native_client__)
+#if defined(USE_OPENGL) && !defined(__native_client__) && !defined(__SWITCH__)
 
 #include "render/mobileopenglgraphics.h"
 
diff --git a/src/render/mobileopenglgraphics.h b/src/render/mobileopenglgraphics.h
index 5cf018692..0496de283 100644
--- a/src/render/mobileopenglgraphics.h
+++ b/src/render/mobileopenglgraphics.h
@@ -23,7 +23,7 @@
 #ifndef RENDER_MOBILEOPENGLGRAPHICS_H
 #define RENDER_MOBILEOPENGLGRAPHICS_H
 
-#if defined(USE_OPENGL) && !defined(__native_client__)
+#if defined(USE_OPENGL) && !defined(__native_client__) && !defined(__SWITCH__)
 
 #include "localconsts.h"
 
diff --git a/src/render/modernopenglgraphics.cpp b/src/render/modernopenglgraphics.cpp
index 937255c0e..15bb1505c 100644
--- a/src/render/modernopenglgraphics.cpp
+++ b/src/render/modernopenglgraphics.cpp
@@ -20,7 +20,7 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__)
+#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) && !defined(__SWITCH__)
 
 #include "render/modernopenglgraphics.h"
 
diff --git a/src/render/modernopenglgraphics.h b/src/render/modernopenglgraphics.h
index 087dbd95d..5c3e643ab 100644
--- a/src/render/modernopenglgraphics.h
+++ b/src/render/modernopenglgraphics.h
@@ -23,7 +23,7 @@
 #ifndef RENDER_MODERNOPENGLGRAPHICS_H
 #define RENDER_MODERNOPENGLGRAPHICS_H
 
-#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__)
+#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) && !defined(__SWITCH__)
 
 #include "localconsts.h"
 
diff --git a/src/render/normalopenglgraphics.cpp b/src/render/normalopenglgraphics.cpp
index 87b6a8a2a..666ef9ef4 100644
--- a/src/render/normalopenglgraphics.cpp
+++ b/src/render/normalopenglgraphics.cpp
@@ -20,7 +20,7 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__)
+#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__native_client__) && !defined(__SWITCH__)
 
 #include "render/normalopenglgraphics.h"
 
diff --git a/src/render/normalopenglgraphics.h b/src/render/normalopenglgraphics.h
index c7866dc50..535d97f8e 100644
--- a/src/render/normalopenglgraphics.h
+++ b/src/render/normalopenglgraphics.h
@@ -23,7 +23,7 @@
 #ifndef RENDER_NORMALOPENGLGRAPHICS_H
 #define RENDER_NORMALOPENGLGRAPHICS_H
 
-#if defined USE_OPENGL && !defined ANDROID && !defined(__native_client__)
+#if defined USE_OPENGL && !defined ANDROID && !defined(__native_client__) && !defined(__SWITCH__)
 
 #include "localconsts.h"
 
diff --git a/src/render/opengl/mglfunctions.h b/src/render/opengl/mglfunctions.h
index 11b387fdb..1126b48bb 100644
--- a/src/render/opengl/mglfunctions.h
+++ b/src/render/opengl/mglfunctions.h
@@ -35,6 +35,8 @@ LOGGER_H
 #define getFunction(name) nullptr
 #elif defined __native_client__
 #define getFunction(name) glGetProcAddressREGAL(name)
+#elif defined(__SWITCH__)
+#define getFunction(name) SDL_GL_GetProcAddress(name)
 #else  // WIN32
 #define getFunction(name) glXGetProcAddress(\
     reinterpret_cast<const GLubyte*>(name))
diff --git a/src/render/renderers.cpp b/src/render/renderers.cpp
index efcad9ff2..40bb550bc 100644
--- a/src/render/renderers.cpp
+++ b/src/render/renderers.cpp
@@ -42,7 +42,7 @@ static RenderType getDefault() noexcept2
 RenderType intToRenderType(const int mode) noexcept2
 {
 #ifdef __SWITCH__
-	return RENDER_SDL2_DEFAULT;
+	return RENDER_GLES2_OPENGL;
 #endif
     if (mode < 0 || mode >= RENDER_LAST)
         return getDefault();
diff --git a/src/render/rendererslistsdl2.h b/src/render/rendererslistsdl2.h
index b13324b2d..259643295 100644
--- a/src/render/rendererslistsdl2.h
+++ b/src/render/rendererslistsdl2.h
@@ -106,7 +106,7 @@ const RenderType indexToRender[] =
 {
     RENDER_SOFTWARE,
     RENDER_SDL2_DEFAULT,
-    RENDER_MODERN_OPENGL
+    RENDER_GLES2_OPENGL
 };
 
 const char *OPENGL_NAME[] =
@@ -116,14 +116,14 @@ const char *OPENGL_NAME[] =
     // TRANSLATORS: draw backend
     N_("SDL2 default"),
     // TRANSLATORS: draw backend
-    N_("Modern OpenGL")
+    N_("OpenGL ES 2")
 };
 
 const int renderModesListSize = 3;
 
 const int renderToIndex[] =
 {
-    2,  // RENDER_SOFTWARE
+    0,  // RENDER_SOFTWARE
     2,  // RENDER_NORMAL_OPENGL
     2,  // RENDER_SAFE_OPENGL
     2,  // RENDER_GLES_OPENGL
diff --git a/src/render/safeopenglgraphics.cpp b/src/render/safeopenglgraphics.cpp
index 329ad34cb..8583ed6b5 100644
--- a/src/render/safeopenglgraphics.cpp
+++ b/src/render/safeopenglgraphics.cpp
@@ -20,7 +20,7 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#if defined USE_OPENGL && !defined ANDROID
+#if defined USE_OPENGL && !defined ANDROID && !defined(__SWITCH__)
 #include "render/safeopenglgraphics.h"
 
 #ifdef DEBUG_OPENGL
diff --git a/src/render/safeopenglgraphics.h b/src/render/safeopenglgraphics.h
index a064da020..55a1c8515 100644
--- a/src/render/safeopenglgraphics.h
+++ b/src/render/safeopenglgraphics.h
@@ -23,7 +23,7 @@
 #ifndef RENDER_SAFEOPENGLGRAPHICS_H
 #define RENDER_SAFEOPENGLGRAPHICS_H
 
-#if defined USE_OPENGL && !defined ANDROID
+#if defined USE_OPENGL && !defined ANDROID && !defined(__SWITCH__)
 
 #include "render/graphics.h"
 
diff --git a/src/resources/openglimagehelper.cpp b/src/resources/openglimagehelper.cpp
index ce7bb0ac3..557d9d0a5 100644
--- a/src/resources/openglimagehelper.cpp
+++ b/src/resources/openglimagehelper.cpp
@@ -263,13 +263,15 @@ void OpenGLImageHelper::bindTexture(const GLuint texture)
         case RENDER_GLES_OPENGL:
             MobileOpenGLGraphics::bindTexture(mTextureType, texture);
             break;
-#elif defined(__native_client__)
+#elif defined(__native_client__) || defined(__SWITCH__)
         case RENDER_NORMAL_OPENGL:
         case RENDER_MODERN_OPENGL:
         case RENDER_GLES_OPENGL:
             break;
         case RENDER_SAFE_OPENGL:
+#ifndef __SWITCH__
             SafeOpenGLGraphics::bindTexture(mTextureType, texture);
+#endif
             break;
         case RENDER_GLES2_OPENGL:
             MobileOpenGL2Graphics::bindTexture(mTextureType, texture);
@@ -336,7 +338,9 @@ Image *OpenGLImageHelper::glLoad(SDL_Surface *tmpImage,
         mUseOpenGL != RENDER_GLES_OPENGL &&
         mUseOpenGL != RENDER_GLES2_OPENGL)
     {
+#ifndef __SWITCH__
         glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+#endif
 #ifdef OPENGLERRORS
         graphicsManager.logError();
 #endif  // OPENGLERRORS
diff --git a/src/resources/safeopenglimagehelper.cpp b/src/resources/safeopenglimagehelper.cpp
index 463b89507..4d94578c6 100644
--- a/src/resources/safeopenglimagehelper.cpp
+++ b/src/resources/safeopenglimagehelper.cpp
@@ -22,7 +22,7 @@
 
 #include "resources/safeopenglimagehelper.h"
 
-#if defined(USE_OPENGL) && !defined(ANDROID)
+#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__SWITCH__)
 
 #include "graphicsmanager.h"
 
diff --git a/src/resources/safeopenglimagehelper.h b/src/resources/safeopenglimagehelper.h
index 4a2e9346b..7b2098b11 100644
--- a/src/resources/safeopenglimagehelper.h
+++ b/src/resources/safeopenglimagehelper.h
@@ -25,7 +25,7 @@
 
 #include "localconsts.h"
 
-#if defined(USE_OPENGL) && !defined(ANDROID)
+#if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__SWITCH__)
 
 #ifndef GL_TEXTURE_RECTANGLE_ARB
 #define GL_TEXTURE_RECTANGLE_ARB 0x84F5
-- 
cgit v1.2.3-70-g09d2