Add "PreferGLES" option to EGL GLInterface
This makes the EGL interface select OpenGL|ES contexts over "desktop" OpenGL ones. Possibly not useful for anyone outside my own debugging, but you never know
This commit is contained in:
parent
8292d378ea
commit
0fbd0cab6a
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "Common/GL/GLInterface/EGL.h"
|
#include "Common/GL/GLInterface/EGL.h"
|
||||||
#include "Common/Logging/Log.h"
|
#include "Common/Logging/Log.h"
|
||||||
|
#include "Core/Config/GraphicsSettings.h"
|
||||||
|
|
||||||
#ifndef EGL_KHR_create_context
|
#ifndef EGL_KHR_create_context
|
||||||
#define EGL_KHR_create_context 1
|
#define EGL_KHR_create_context 1
|
||||||
|
@ -47,6 +48,7 @@ void cInterfaceEGL::DetectMode()
|
||||||
{
|
{
|
||||||
if (s_opengl_mode != GLInterfaceMode::MODE_DETECT)
|
if (s_opengl_mode != GLInterfaceMode::MODE_DETECT)
|
||||||
return;
|
return;
|
||||||
|
bool preferGLES = Config::Get(Config::GFX_PREFER_GLES);
|
||||||
|
|
||||||
EGLint num_configs;
|
EGLint num_configs;
|
||||||
bool supportsGL = false, supportsGLES2 = false, supportsGLES3 = false;
|
bool supportsGL = false, supportsGLES2 = false, supportsGLES3 = false;
|
||||||
|
@ -98,15 +100,45 @@ void cInterfaceEGL::DetectMode()
|
||||||
delete[] config;
|
delete[] config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
if (supportsGL)
|
||||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
|
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
|
||||||
else if (supportsGLES3)
|
else if (supportsGLES3)
|
||||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES3;
|
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES3;
|
||||||
else if (supportsGLES2)
|
else if (supportsGLES2)
|
||||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES2;
|
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES2;
|
||||||
|
}
|
||||||
|
|
||||||
if (s_opengl_mode == GLInterfaceMode::MODE_DETECT) // Errored before we found a mode
|
if (s_opengl_mode == GLInterfaceMode::MODE_OPENGL)
|
||||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGL; // Fall back to 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.
|
// Create rendering window.
|
||||||
|
|
|
@ -87,6 +87,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_START{{System::GFX, "Settings", "SWDrawStart"}, 0};
|
||||||
const ConfigInfo<int> GFX_SW_DRAW_END{{System::GFX, "Settings", "SWDrawEnd"}, 100000};
|
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
|
// Graphics.Enhancements
|
||||||
|
|
||||||
const ConfigInfo<bool> GFX_ENHANCE_FORCE_FILTERING{{System::GFX, "Enhancements", "ForceFiltering"},
|
const ConfigInfo<bool> GFX_ENHANCE_FORCE_FILTERING{{System::GFX, "Enhancements", "ForceFiltering"},
|
||||||
|
|
|
@ -68,6 +68,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_START;
|
||||||
extern const ConfigInfo<int> GFX_SW_DRAW_END;
|
extern const ConfigInfo<int> GFX_SW_DRAW_END;
|
||||||
|
|
||||||
|
extern const ConfigInfo<bool> GFX_PREFER_GLES;
|
||||||
|
|
||||||
// Graphics.Enhancements
|
// Graphics.Enhancements
|
||||||
|
|
||||||
extern const ConfigInfo<bool> GFX_ENHANCE_FORCE_FILTERING;
|
extern const ConfigInfo<bool> GFX_ENHANCE_FORCE_FILTERING;
|
||||||
|
|
Loading…
Reference in New Issue