mirror of
https://github.com/love2d/love.git
synced 2026-08-16 16:20:42 +02:00
Work around certain buggy Vivante GPU drivers on Android
love2d/love-android#204
This commit is contained in:
@@ -124,6 +124,20 @@ bool OpenGL::initContext()
|
|||||||
if (!gladLoadGLLoader(LOVEGetProcAddress))
|
if (!gladLoadGLLoader(LOVEGetProcAddress))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
initVendor();
|
||||||
|
|
||||||
|
bugs = {};
|
||||||
|
|
||||||
|
if (GLAD_ES_VERSION_3_0 && !GLAD_ES_VERSION_3_1)
|
||||||
|
{
|
||||||
|
const char *device = (const char *) glGetString(GL_RENDERER);
|
||||||
|
if (getVendor() == VENDOR_VIVANTE && strstr(device, "Vivante GC7000UL"))
|
||||||
|
bugs.brokenGLES3 = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bugs.brokenGLES3)
|
||||||
|
GLAD_ES_VERSION_3_0 = false;
|
||||||
|
|
||||||
if (GLAD_VERSION_3_2)
|
if (GLAD_VERSION_3_2)
|
||||||
{
|
{
|
||||||
GLint profileMask = 0;
|
GLint profileMask = 0;
|
||||||
@@ -134,9 +148,6 @@ bool OpenGL::initContext()
|
|||||||
coreProfile = false;
|
coreProfile = false;
|
||||||
|
|
||||||
initOpenGLFunctions();
|
initOpenGLFunctions();
|
||||||
initVendor();
|
|
||||||
|
|
||||||
bugs = {};
|
|
||||||
|
|
||||||
#if defined(LOVE_WINDOWS) || defined(LOVE_LINUX)
|
#if defined(LOVE_WINDOWS) || defined(LOVE_LINUX)
|
||||||
// See the comments in OpenGL.h.
|
// See the comments in OpenGL.h.
|
||||||
|
|||||||
@@ -184,6 +184,13 @@ public:
|
|||||||
**/
|
**/
|
||||||
bool brokenSRGB;
|
bool brokenSRGB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Some Android graphics drivers claim to support GLES3.0 but have bugs
|
||||||
|
* with certain aspects that users expect to work. For example:
|
||||||
|
* https://github.com/love2d/love-android/issues/204
|
||||||
|
**/
|
||||||
|
bool brokenGLES3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Other bugs which have workarounds that don't use conditional code at
|
* Other bugs which have workarounds that don't use conditional code at
|
||||||
* the moment:
|
* the moment:
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ GLSL.FUNCTIONS = [[
|
|||||||
#if __VERSION__ >= 300 || defined(GL_OES_texture_3D)
|
#if __VERSION__ >= 300 || defined(GL_OES_texture_3D)
|
||||||
precision lowp sampler3D;
|
precision lowp sampler3D;
|
||||||
#endif
|
#endif
|
||||||
#if __VERSION__ >= 300
|
#if __VERSION__ >= 300 && !defined(LOVE_GLSL1_ON_GLSL3)
|
||||||
precision lowp sampler2DShadow;
|
precision lowp sampler2DShadow;
|
||||||
precision lowp samplerCubeShadow;
|
precision lowp samplerCubeShadow;
|
||||||
precision lowp sampler2DArrayShadow;
|
precision lowp sampler2DArrayShadow;
|
||||||
|
|||||||
Reference in New Issue
Block a user