Skip to content

Commit

Permalink
Merge pull request #5826 from JonnyH/WIP/add-option-to-prefer-GLES-wh…
Browse files Browse the repository at this point in the history
…en-using-EGL

Add "PreferGLES" option to EGL GLInterface
  • Loading branch information
leoetlino committed Jul 31, 2017
2 parents 141fb0f + 0fbd0ca commit ca49de8
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 8 deletions.
48 changes: 40 additions & 8 deletions Source/Core/Common/GL/GLInterface/EGL.cpp
Expand Up @@ -9,6 +9,7 @@

#include "Common/GL/GLInterface/EGL.h"
#include "Common/Logging/Log.h"
#include "Core/Config/GraphicsSettings.h"

#ifndef EGL_KHR_create_context
#define EGL_KHR_create_context 1
Expand Down Expand Up @@ -47,6 +48,7 @@ void cInterfaceEGL::DetectMode()
{
if (s_opengl_mode != GLInterfaceMode::MODE_DETECT)
return;
bool preferGLES = Config::Get(Config::GFX_PREFER_GLES);

EGLint num_configs;
bool supportsGL = false, supportsGLES2 = false, supportsGLES3 = false;
Expand Down Expand Up @@ -98,15 +100,45 @@ void cInterfaceEGL::DetectMode()
delete[] config;
}

if (supportsGL)
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
else if (supportsGLES3)
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES3;
else if (supportsGLES2)
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES2;
if (preferGLES)
{
if (supportsGLES3)
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES3;
else if (supportsGLES2)
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES2;
else if (supportsGL)
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
}
else
{
if (supportsGL)
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
else if (supportsGLES3)
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES3;
else if (supportsGLES2)
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES2;
}

if (s_opengl_mode == GLInterfaceMode::MODE_DETECT) // Errored before we found a mode
s_opengl_mode = GLInterfaceMode::MODE_OPENGL; // Fall back to OpenGL
if (s_opengl_mode == GLInterfaceMode::MODE_OPENGL)
{
INFO_LOG(VIDEO, "Using OpenGL");
}
else if (s_opengl_mode == GLInterfaceMode::MODE_OPENGLES3)
{
INFO_LOG(VIDEO, "Using OpenGL|ES 3");
}
else if (s_opengl_mode == GLInterfaceMode::MODE_OPENGLES2)
{
INFO_LOG(VIDEO, "Using OpenGL|ES 2");
}
else if (s_opengl_mode == GLInterfaceMode::MODE_DETECT)
{
// Errored before we found a mode
ERROR_LOG(VIDEO, "Error: Failed to detect OpenGL flavour, falling back to OpenGL");
// This will fail to create a context, as it'll try to use the same attribs we just failed to
// find a matching config with
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
}
}

// Create rendering window.
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/Core/Config/GraphicsSettings.cpp
Expand Up @@ -101,6 +101,8 @@ const ConfigInfo<bool> GFX_SW_DUMP_TEV_TEX_FETCHES{{System::GFX, "Settings", "SW
const ConfigInfo<int> GFX_SW_DRAW_START{{System::GFX, "Settings", "SWDrawStart"}, 0};
const ConfigInfo<int> GFX_SW_DRAW_END{{System::GFX, "Settings", "SWDrawEnd"}, 100000};

const ConfigInfo<bool> GFX_PREFER_GLES{{System::GFX, "Settings", "PreferGLES"}, false};

// Graphics.Enhancements

const ConfigInfo<bool> GFX_ENHANCE_FORCE_FILTERING{{System::GFX, "Enhancements", "ForceFiltering"},
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/Core/Config/GraphicsSettings.h
Expand Up @@ -75,6 +75,8 @@ extern const ConfigInfo<bool> GFX_SW_DUMP_TEV_TEX_FETCHES;
extern const ConfigInfo<int> GFX_SW_DRAW_START;
extern const ConfigInfo<int> GFX_SW_DRAW_END;

extern const ConfigInfo<bool> GFX_PREFER_GLES;

// Graphics.Enhancements

extern const ConfigInfo<bool> GFX_ENHANCE_FORCE_FILTERING;
Expand Down

0 comments on commit ca49de8

Please sign in to comment.