diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e8b26e254..1ddf6c1581 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,8 @@ option(ANDROID "Enables a build for Android" OFF) option(USE_EGL "Enables EGL OpenGL Interface" OFF) option(USE_X11 "Enables X11 Support" ON) option(USE_WAYLAND "Enables Wayland Support" OFF) -option(USE_GLES "Enables GLES And EGL, disables OGL" OFF) +option(USE_GLES "Enables GLES2 And EGL, disables OGL" OFF) +option(USE_GLES3 "Enables GLES3 and EGL" OFF) option(DISABLE_WX "Disable wxWidgets (use CLI interface)" OFF) option(FASTLOG "Enable all logs" OFF) @@ -261,11 +262,19 @@ endif() # For now GLES and EGL are tied to each other. # Enabling GLES also disables the OpenGL plugin. -if(USE_GLES) - message("GLES rendering enabled") - add_definitions(-DUSE_GLES=1) - add_definitions(-DUSE_EGL=1) +if(USE_GLES3) + message("GLES3 rendering enabled") + add_definitions(-DUSE_GLES=1 -DUSE_EGL=1 -DUSE_GLES3=1) + include_directories(Externals/GLES3) set(USE_EGL True) + set(USE_GLES True) +else() + if(USE_GLES) + message("GLES2 rendering enabled. OpenGL disabled") + add_definitions(-DUSE_GLES=1) + add_definitions(-DUSE_EGL=1) + set(USE_EGL True) + endif() endif() # For now Wayland and EGL are tied to each other. # The alternative would be an shm path diff --git a/Source/Core/Common/Src/VideoBackendBase.cpp b/Source/Core/Common/Src/VideoBackendBase.cpp index 8db4e2ff79..99bce01156 100644 --- a/Source/Core/Common/Src/VideoBackendBase.cpp +++ b/Source/Core/Common/Src/VideoBackendBase.cpp @@ -9,7 +9,7 @@ #include "../../../Plugins/Plugin_VideoDX9/Src/VideoBackend.h" #include "../../../Plugins/Plugin_VideoDX11/Src/VideoBackend.h" #endif -#ifndef USE_GLES +#if !defined(USE_GLES) || USE_GLES3 #include "../../../Plugins/Plugin_VideoOGL/Src/VideoBackend.h" #endif #include "../../../Plugins/Plugin_VideoSoftware/Src/VideoBackend.h" @@ -45,7 +45,7 @@ void VideoBackend::PopulateList() if (IsGteVista()) g_available_video_backends.push_back(backends[0] = new DX11::VideoBackend); #endif -#ifndef USE_GLES +#if !defined(USE_GLES) || USE_GLES3 g_available_video_backends.push_back(backends[1] = new OGL::VideoBackend); #endif g_available_video_backends.push_back(backends[3] = new SW::VideoSoftware); diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index d0ad3c615d..5474083132 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -217,7 +217,7 @@ endif() set(LIBS bdisasm inputcommon videosoftware sfml-network) -if(NOT USE_GLES) +if(NOT USE_GLES OR USE_GLES3) set(LIBS ${LIBS} videoogl) endif() diff --git a/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp b/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp index aa26c40b6f..6c12c1156c 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp @@ -52,7 +52,11 @@ bool cInterfaceEGL::Create(void *&window_handle) EGL_BLUE_SIZE, 8, EGL_DEPTH_SIZE, 24, #ifdef USE_GLES +#ifdef USE_GLES3 + EGL_RENDERABLE_TYPE, (1 << 6) /* EGL_OPENGL_ES3_BIT */, +#else EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, +#endif #else EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, #endif diff --git a/Source/Plugins/CMakeLists.txt b/Source/Plugins/CMakeLists.txt index 7dfdbaca83..3a58c3aab1 100644 --- a/Source/Plugins/CMakeLists.txt +++ b/Source/Plugins/CMakeLists.txt @@ -1,4 +1,4 @@ -if(NOT USE_GLES) +if(NOT USE_GLES OR USE_GLES3) add_subdirectory(Plugin_VideoOGL) endif() add_subdirectory(Plugin_VideoSoftware)