diff options
author | Gunnar Sletta <gunnar.sletta@digia.com> | 2013-11-05 09:32:35 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-06 00:35:43 +0100 |
commit | e7fd798af001e2c4e323f5ae90e4e994f12ccf33 (patch) | |
tree | 187075073cef76485fa55cb7b2d0158a97877a49 | |
parent | 0cdf2a8023473e03121fc99194182a3fb86dd6aa (diff) |
Disable threaded rendering for Intel HD 3000 cards.
Task-number: QTBUG-34492
Change-Id: I1848cde3fb9517679fd54a7170ed5bee40880edc
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
-rw-r--r-- | src/plugins/platforms/xcb/qglxintegration.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp index 2c418cbebe..4ac4cf21ab 100644 --- a/src/plugins/platforms/xcb/qglxintegration.cpp +++ b/src/plugins/platforms/xcb/qglxintegration.cpp @@ -411,6 +411,16 @@ bool QGLXContext::isValid() const bool QGLXContext::m_queriedDummyContext = false; bool QGLXContext::m_supportsThreading = true; + +// If this list grows to any significant size, change it a +// proper string table and make the implementation below use +// binary search. +static const char *qglx_threadedgl_blacklist[] = { + "Chromium", // QTBUG-32225 (initialization fails) + "Mesa DRI Intel(R) Sandybridge Mobile", // QTBUG-34492 (flickering in fullscreen) + 0 +}; + void QGLXContext::queryDummyContext() { if (m_queriedDummyContext) @@ -428,10 +438,14 @@ void QGLXContext::queryDummyContext() context.makeCurrent(&surface); const char *renderer = (const char *) glGetString(GL_RENDERER); - if (QByteArray(renderer).contains("Chromium")) - m_supportsThreading = false; - else - m_supportsThreading = true; + + m_supportsThreading = true; + for (int i = 0; qglx_threadedgl_blacklist[i]; ++i) { + if (strstr(renderer, qglx_threadedgl_blacklist[i]) != 0) { + m_supportsThreading = false; + break; + } + } } bool QGLXContext::supportsThreading() |