diff --git a/lib/kwinglplatform.cpp b/lib/kwinglplatform.cpp index 1adc83a2b3..ef790ac57e 100644 --- a/lib/kwinglplatform.cpp +++ b/lib/kwinglplatform.cpp @@ -710,6 +710,10 @@ void GLPlatform::detect() m_limitedGLSL = m_supportsGLSL && m_chipClass < I965; } + + // Loose binding is broken with Gallium drivers in Mesa 7.10 + if (isGalliumDriver() && mesaVersion() >= kVersionNumber(7, 10)) + m_looseBinding = false; } static void print(const QString &label, const QString &setting) @@ -829,6 +833,11 @@ bool GLPlatform::isMesaDriver() const return mesaVersion() > 0; } +bool GLPlatform::isGalliumDriver() const +{ + return galliumVersion() > 0; +} + bool GLPlatform::isRadeon() const { return m_chipClass >= R100 && m_chipClass <= UnknownRadeon; diff --git a/lib/kwinglplatform.h b/lib/kwinglplatform.h index 0769912065..0228d6522d 100644 --- a/lib/kwinglplatform.h +++ b/lib/kwinglplatform.h @@ -218,6 +218,11 @@ public: */ bool isMesaDriver() const; + /** + * Returns true if the driver is a Gallium driver, and false otherwise. + */ + bool isGalliumDriver() const; + /** * Returns true if the GPU is a Radeon GPU, and false otherwise. */