summaryrefslogtreecommitdiffstats
path: root/src/gui/opengl
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-02-22 09:19:56 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-02-22 09:19:56 +0100
commit9f33b84b0937a53e8e31e0c1e34506eecef6f2e4 (patch)
tree91e9bac96d61c08babd5b6415f276d44888e79dd /src/gui/opengl
parent4cbc7f798017d76e018dc3f04968703624b6a6cf (diff)
parentb97765efd452921f75c1d04820c4b5e9e9d49100 (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Diffstat (limited to 'src/gui/opengl')
-rw-r--r--src/gui/opengl/qopenglprogrambinarycache.cpp20
-rw-r--r--src/gui/opengl/qopenglshaderprogram.cpp8
2 files changed, 19 insertions, 9 deletions
diff --git a/src/gui/opengl/qopenglprogrambinarycache.cpp b/src/gui/opengl/qopenglprogrambinarycache.cpp
index 06373e1113..d16173df83 100644
--- a/src/gui/opengl/qopenglprogrambinarycache.cpp
+++ b/src/gui/opengl/qopenglprogrambinarycache.cpp
@@ -161,10 +161,26 @@ bool QOpenGLProgramBinaryCache::setProgramBinary(uint programId, uint blobFormat
QOpenGLExtraFunctions *funcs = QOpenGLContext::currentContext()->extraFunctions();
while (funcs->glGetError() != GL_NO_ERROR) { }
funcs->glProgramBinary(programId, blobFormat, p, blobSize);
- int err = funcs->glGetError();
+
+ GLenum err = funcs->glGetError();
+ if (err != GL_NO_ERROR) {
+ qCDebug(DBG_SHADER_CACHE, "Program binary failed to load for program %u, size %d, "
+ "format 0x%x, err = 0x%x",
+ programId, blobSize, blobFormat, err);
+ return false;
+ }
+ GLint linkStatus = 0;
+ funcs->glGetProgramiv(programId, GL_LINK_STATUS, &linkStatus);
+ if (linkStatus != GL_TRUE) {
+ qCDebug(DBG_SHADER_CACHE, "Program binary failed to load for program %u, size %d, "
+ "format 0x%x, linkStatus = 0x%x, err = 0x%x",
+ programId, blobSize, blobFormat, linkStatus, err);
+ return false;
+ }
+
qCDebug(DBG_SHADER_CACHE, "Program binary set for program %u, size %d, format 0x%x, err = 0x%x",
programId, blobSize, blobFormat, err);
- return err == 0;
+ return true;
}
#ifdef Q_OS_UNIX
diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp
index b044397f8e..1fe30f7e0e 100644
--- a/src/gui/opengl/qopenglshaderprogram.cpp
+++ b/src/gui/opengl/qopenglshaderprogram.cpp
@@ -3824,13 +3824,7 @@ bool QOpenGLShaderProgramPrivate::linkBinary()
bool needsCompile = true;
if (binCache.load(cacheKey, q->programId())) {
qCDebug(DBG_SHADER_CACHE, "Program binary received from cache");
- linkBinaryRecursion = true;
- bool ok = q->link();
- linkBinaryRecursion = false;
- if (ok)
- needsCompile = false;
- else
- qCDebug(DBG_SHADER_CACHE, "Link failed after glProgramBinary");
+ needsCompile = false;
}
bool needsSave = false;