diff --git a/src/platform/qt/DisplayGL.cpp b/src/platform/qt/DisplayGL.cpp index 896f3acaf..7a4f73858 100644 --- a/src/platform/qt/DisplayGL.cpp +++ b/src/platform/qt/DisplayGL.cpp @@ -802,7 +802,7 @@ void PainterGL::performDraw() { m_backend->postFrame(m_backend, m_buffer); } m_backend->drawFrame(m_backend); - if (m_showOSD && m_messagePainter) { + if (m_showOSD && m_messagePainter && !glContextHasBug(OpenGLBug::IG4ICD_CRASH)) { m_painter.begin(m_paintDev.get()); m_messagePainter->paint(&m_painter); m_painter.end(); diff --git a/src/platform/qt/OpenGLBug.cpp b/src/platform/qt/OpenGLBug.cpp index df007c1cb..089d7d754 100644 --- a/src/platform/qt/OpenGLBug.cpp +++ b/src/platform/qt/OpenGLBug.cpp @@ -31,6 +31,17 @@ bool glContextHasBug(OpenGLBug bug) { case OpenGLBug::GLTHREAD_BLOCKS_SWAP: return version.contains(" Mesa "); + case OpenGLBug::IG4ICD_CRASH: +#ifdef Q_OS_WIN + if (vendor != "Intel") { + return false; + } + if (renderer == "Intel Pineview Platform") { + return true; + } +#endif + return false; + default: return false; } diff --git a/src/platform/qt/OpenGLBug.h b/src/platform/qt/OpenGLBug.h index 5b5bc7736..f63fe282e 100644 --- a/src/platform/qt/OpenGLBug.h +++ b/src/platform/qt/OpenGLBug.h @@ -10,6 +10,7 @@ namespace QGBA { enum class OpenGLBug { CROSS_THREAD_FLUSH, // mgba.io/i/2761 GLTHREAD_BLOCKS_SWAP, // mgba.io/i/2767 + IG4ICD_CRASH, // mgba.io/i/2136 }; bool glContextHasBug(OpenGLBug);