From 9d736e8b8baeeacad9cfa94edd18adfcaf000029 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 5 Mar 2023 15:10:44 +0100 Subject: [PATCH] Drop ENABLE_GLES option ENABLE_GLES predates forking Irrlicht. Its primary use was to distinguish Irrlicht-ogles from upstream version as Minetest could be compiled with either. That's not necessary anymore and gets in the way sometimes. --- README.md | 1 - android/native/jni/Android.mk | 1 - builtin/settingtypes.txt | 6 ------ src/CMakeLists.txt | 4 ---- src/client/camera.cpp | 6 ------ src/client/guiscalingfilter.cpp | 2 -- src/client/renderingengine.cpp | 9 +------- src/client/shader.cpp | 37 +++++++++++++-------------------- src/client/tile.cpp | 9 +------- src/client/tile.h | 8 ++----- src/cmake_config.h.in | 1 - src/defaultsettings.cpp | 3 --- src/gui/guiEngine.cpp | 24 ++++++++++----------- src/gui/guiEngine.h | 4 ++-- 14 files changed, 33 insertions(+), 82 deletions(-) diff --git a/README.md b/README.md index e3b752f9e..62d97c846 100644 --- a/README.md +++ b/README.md @@ -256,7 +256,6 @@ General options and their default values: ENABLE_CURL=ON - Build with cURL; Enables use of online mod repo, public serverlist and remote media fetching via http ENABLE_CURSES=ON - Build with (n)curses; Enables a server side terminal (command line option: --terminal) ENABLE_GETTEXT=ON - Build with Gettext; Allows using translations - ENABLE_GLES=OFF - Enable extra support code for OpenGL ES (requires support by IrrlichtMt) ENABLE_LEVELDB=ON - Build with LevelDB; Enables use of LevelDB map backend ENABLE_POSTGRESQL=ON - Build with libpq; Enables use of PostgreSQL map backend (PostgreSQL 9.5 or greater recommended) ENABLE_REDIS=ON - Build with libhiredis; Enables use of Redis map backend diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk index b2a8b3d6a..474dbd50c 100644 --- a/android/native/jni/Android.mk +++ b/android/native/jni/Android.mk @@ -103,7 +103,6 @@ LOCAL_MODULE := Minetest LOCAL_CFLAGS += \ -DJSONCPP_NO_LOCALE_SUPPORT \ -DHAVE_TOUCHSCREENGUI \ - -DENABLE_GLES=1 \ -DUSE_CURL=1 \ -DUSE_SOUND=1 \ -DUSE_LEVELDB=0 \ diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 9d4de64d9..58168fa25 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -230,12 +230,6 @@ fall_bobbing_amount (Fall bobbing factor) float 0.03 0.0 100.0 [**Camera] -# Camera 'near clipping plane' distance in nodes, between 0 and 0.25 -# Only works on GLES platforms. Most users will not need to change this. -# Increasing can reduce artifacting on weaker GPUs. -# 0.1 = Default, 0.25 = Good value for weaker tablets. -near_plane (Near plane) float 0.1 0 0.25 - # Field of view in degrees. fov (Field of view) int 72 45 160 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index afe008395..a00690b28 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -109,10 +109,6 @@ if(BUILD_CLIENT AND ENABLE_SOUND) endif() endif() -# TODO: this should be removed one day, we can enable it unconditionally -option(ENABLE_GLES "Enable extra support code for OpenGL ES" FALSE) -mark_as_advanced(ENABLE_GLES) - option(ENABLE_TOUCH "Enable Touchscreen support" FALSE) if(ENABLE_TOUCH) add_definitions(-DHAVE_TOUCHSCREENGUI) diff --git a/src/client/camera.cpp b/src/client/camera.cpp index 13ca7aa5c..dce94495b 100644 --- a/src/client/camera.cpp +++ b/src/client/camera.cpp @@ -599,13 +599,7 @@ void Camera::updateViewingRange() { f32 viewing_range = g_settings->getFloat("viewing_range"); - // Ignore near_plane setting on all other platforms to prevent abuse -#if ENABLE_GLES - m_cameranode->setNearValue(rangelim( - g_settings->getFloat("near_plane"), 0.0f, 0.25f) * BS); -#else m_cameranode->setNearValue(0.1f * BS); -#endif m_draw_control.wanted_range = std::fmin(adjustDist(viewing_range, getFovMax()), 4000); if (m_draw_control.range_all) { diff --git a/src/client/guiscalingfilter.cpp b/src/client/guiscalingfilter.cpp index 42508259f..fda525e3f 100644 --- a/src/client/guiscalingfilter.cpp +++ b/src/client/guiscalingfilter.cpp @@ -119,7 +119,6 @@ video::ITexture *guiScalingResizeCached(video::IVideoDriver *driver, (u32)destrect.getHeight())); imageScaleNNAA(srcimg, srcrect, destimg); -#if ENABLE_GLES // Some platforms are picky about textures being powers of 2, so expand // the image dimensions to the next power of 2, if necessary. if (!driver->queryFeature(video::EVDF_TEXTURE_NPOT)) { @@ -131,7 +130,6 @@ video::ITexture *guiScalingResizeCached(video::IVideoDriver *driver, destimg->drop(); destimg = po2img; } -#endif // Convert the scaled image back into a texture. scaled = driver->addTexture(scalename, destimg); diff --git a/src/client/renderingengine.cpp b/src/client/renderingengine.cpp index 1392b5567..74151423f 100644 --- a/src/client/renderingengine.cpp +++ b/src/client/renderingengine.cpp @@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "render/factory.h" #include "inputhandler.h" #include "gettext.h" +#include "filesys.h" #include "../gui/guiSkin.h" #if !defined(_WIN32) && !defined(__APPLE__) && !defined(__ANDROID__) && \ @@ -51,10 +52,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #endif -#if ENABLE_GLES -#include "filesys.h" -#endif - RenderingEngine *RenderingEngine::s_singleton = nullptr; const float RenderingEngine::BASE_BLOOM_STRENGTH = 1.0f; @@ -136,12 +133,10 @@ RenderingEngine::RenderingEngine(IEventReceiver *receiver) #ifdef __ANDROID__ params.PrivateData = porting::app_global; #endif -#if ENABLE_GLES // there is no standardized path for these on desktop std::string rel_path = std::string("client") + DIR_DELIM + "shaders" + DIR_DELIM + "Irrlicht"; params.OGLES2ShaderPath = (porting::path_share + DIR_DELIM + rel_path + DIR_DELIM).c_str(); -#endif m_device = createDeviceEx(params); driver = m_device->getVideoDriver(); @@ -289,10 +284,8 @@ static bool getWindowHandle(irr::video::IVideoDriver *driver, HWND &hWnd) const video::SExposedVideoData exposedData = driver->getExposedVideoData(); switch (driver->getDriverType()) { -#if ENABLE_GLES case video::EDT_OGLES1: case video::EDT_OGLES2: -#endif case video::EDT_OPENGL: hWnd = reinterpret_cast(exposedData.OpenGLWin32.HWnd); break; diff --git a/src/client/shader.cpp b/src/client/shader.cpp index ccecb22c3..ce662b41d 100644 --- a/src/client/shader.cpp +++ b/src/client/shader.cpp @@ -229,14 +229,12 @@ class MainShaderConstantSetter : public IShaderConstantSetter CachedVertexShaderSetting m_perspective_zbias_vertex; CachedPixelShaderSetting m_perspective_zbias_pixel; -#if ENABLE_GLES // Modelview matrix CachedVertexShaderSetting m_world_view; // Texture matrix CachedVertexShaderSetting m_texture; // Normal matrix CachedVertexShaderSetting m_normal; -#endif public: MainShaderConstantSetter() : @@ -256,11 +254,9 @@ public: , m_perspective_bias1_pixel("xyPerspectiveBias1") , m_perspective_zbias_vertex("zPerspectiveBias") , m_perspective_zbias_pixel("zPerspectiveBias") -#if ENABLE_GLES , m_world_view("mWorldView") , m_texture("mTexture") , m_normal("mNormal") -#endif {} ~MainShaderConstantSetter() = default; @@ -283,21 +279,21 @@ public: worldViewProj *= worldView; m_world_view_proj.set(*reinterpret_cast(worldViewProj.pointer()), services); -#if ENABLE_GLES - core::matrix4 texture = driver->getTransform(video::ETS_TEXTURE_0); - m_world_view.set(*reinterpret_cast(worldView.pointer()), services); - m_texture.set(*reinterpret_cast(texture.pointer()), services); + if (driver->getDriverType() == video::EDT_OGLES2) { + core::matrix4 texture = driver->getTransform(video::ETS_TEXTURE_0); + m_world_view.set(*reinterpret_cast(worldView.pointer()), services); + m_texture.set(*reinterpret_cast(texture.pointer()), services); - core::matrix4 normal; - worldView.getTransposed(normal); - sanity_check(normal.makeInverse()); - float m[9] = { - normal[0], normal[1], normal[2], - normal[4], normal[5], normal[6], - normal[8], normal[9], normal[10], - }; - m_normal.set(m, services); -#endif + core::matrix4 normal; + worldView.getTransposed(normal); + sanity_check(normal.makeInverse()); + float m[9] = { + normal[0], normal[1], normal[2], + normal[4], normal[5], normal[6], + normal[8], normal[9], normal[10], + }; + m_normal.set(m, services); + } // Set uniforms for Shadow shader if (ShadowRenderer *shadow = RenderingEngine::get_shadow_renderer()) { @@ -628,10 +624,7 @@ ShaderInfo ShaderSource::generateShader(const std::string &name, video::IGPUProgrammingServices *gpu = driver->getGPUProgrammingServices(); // Create shaders header - bool use_gles = false; -#if ENABLE_GLES - use_gles = driver->getDriverType() == video::EDT_OGLES2; -#endif + bool use_gles = driver->getDriverType() == video::EDT_OGLES2; std::stringstream shaders_header; shaders_header << std::noboolalpha diff --git a/src/client/tile.cpp b/src/client/tile.cpp index 14fc316e7..8421465c4 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include +#include #include "util/string.h" #include "util/container.h" #include "util/thread.h" @@ -617,9 +618,7 @@ u32 TextureSource::generateTexture(const std::string &name) video::ITexture *tex = NULL; if (img != NULL) { -#if ENABLE_GLES img = Align2Npot2(img, driver); -#endif // Create texture from resulting image tex = driver->addTexture(name.c_str(), img); guiScalingCache(io::path(name.c_str()), driver, img); @@ -819,9 +818,7 @@ void TextureSource::rebuildTexture(video::IVideoDriver *driver, TextureInfo &ti) // shouldn't really need to be done, but can't hurt std::set source_image_names; video::IImage *img = generateImage(ti.name, source_image_names); -#if ENABLE_GLES img = Align2Npot2(img, driver); -#endif // Create texture from resulting image video::ITexture *t = NULL; if (img) { @@ -1055,8 +1052,6 @@ video::IImage* TextureSource::generateImage(const std::string &name, std::set -#endif - class IGameDef; struct TileSpec; struct TileDef; +namespace irr { namespace video { class IVideoDriver; } } + typedef std::vector Palette; /* @@ -133,9 +131,7 @@ public: IWritableTextureSource *createTextureSource(); -#if ENABLE_GLES video::IImage *Align2Npot2(video::IImage *image, video::IVideoDriver *driver); -#endif enum MaterialType{ TILE_MATERIAL_BASIC, diff --git a/src/cmake_config.h.in b/src/cmake_config.h.in index 17b70e268..19fb6d4a1 100644 --- a/src/cmake_config.h.in +++ b/src/cmake_config.h.in @@ -28,7 +28,6 @@ #cmakedefine01 USE_SPATIAL #cmakedefine01 USE_SYSTEM_GMP #cmakedefine01 USE_REDIS -#cmakedefine01 ENABLE_GLES #cmakedefine01 HAVE_ENDIAN_H #cmakedefine01 CURSES_HAVE_CURSES_H #cmakedefine01 CURSES_HAVE_NCURSES_H diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index ed9363a72..f7a32ee2e 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -186,9 +186,6 @@ void set_default_settings() settings->setDefault("fps_max_unfocused", "20"); settings->setDefault("viewing_range", "190"); settings->setDefault("client_mesh_chunk", "1"); -#if ENABLE_GLES - settings->setDefault("near_plane", "0.1"); -#endif settings->setDefault("screen_w", "1024"); settings->setDefault("screen_h", "600"); settings->setDefault("autosave_screensize", "true"); diff --git a/src/gui/guiEngine.cpp b/src/gui/guiEngine.cpp index 54157c792..941ebe754 100644 --- a/src/gui/guiEngine.cpp +++ b/src/gui/guiEngine.cpp @@ -38,10 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "client/fontengine.h" #include "client/guiscalingfilter.h" #include "irrlicht_changes/static_text.h" - -#if ENABLE_GLES #include "client/tile.h" -#endif /******************************************************************************/ @@ -59,11 +56,15 @@ void TextDestGuiEngine::gotText(const std::wstring &text) /******************************************************************************/ MenuTextureSource::~MenuTextureSource() { - for (const std::string &texture_to_delete : m_to_delete) { - const char *tname = texture_to_delete.c_str(); - video::ITexture *texture = m_driver->getTexture(tname); - m_driver->removeTexture(texture); + u32 before = m_driver->getTextureCount(); + + for (const auto &it: m_to_delete) { + m_driver->removeTexture(it); } + m_to_delete.clear(); + + infostream << "~MenuTextureSource() before cleanup: "<< before + << " after: " << m_driver->getTextureCount() << std::endl; } /******************************************************************************/ @@ -75,7 +76,7 @@ video::ITexture *MenuTextureSource::getTexture(const std::string &name, u32 *id) if (name.empty()) return NULL; -#if ENABLE_GLES + // return if already loaded video::ITexture *retval = m_driver->findTexture(name.c_str()); if (retval) return retval; @@ -86,12 +87,11 @@ video::ITexture *MenuTextureSource::getTexture(const std::string &name, u32 *id) image = Align2Npot2(image, m_driver); retval = m_driver->addTexture(name.c_str(), image); - m_to_delete.insert(name); image->drop(); + + if (retval) + m_to_delete.push_back(retval); return retval; -#else - return m_driver->getTexture(name.c_str()); -#endif } /******************************************************************************/ diff --git a/src/gui/guiEngine.h b/src/gui/guiEngine.h index 2f182ca81..a95bb3085 100644 --- a/src/gui/guiEngine.h +++ b/src/gui/guiEngine.h @@ -111,8 +111,8 @@ public: private: /** driver to get textures from */ video::IVideoDriver *m_driver = nullptr; - /** set of texture names to delete */ - std::set m_to_delete; + /** set of textures to delete */ + std::vector m_to_delete; }; /** GUIEngine specific implementation of OnDemandSoundFetcher */