diff --git a/libs/ui/dialogs/kis_dlg_preferences.h b/libs/ui/dialogs/kis_dlg_preferences.h
--- a/libs/ui/dialogs/kis_dlg_preferences.h
+++ b/libs/ui/dialogs/kis_dlg_preferences.h
@@ -270,6 +270,9 @@
protected Q_SLOTS:
void slotUseOpenGLToggled(bool isChecked);
+private:
+ void updateOpenGLWarning(bool useOpenGL);
+
public:
};
diff --git a/libs/ui/dialogs/kis_dlg_preferences.cc b/libs/ui/dialogs/kis_dlg_preferences.cc
--- a/libs/ui/dialogs/kis_dlg_preferences.cc
+++ b/libs/ui/dialogs/kis_dlg_preferences.cc
@@ -841,6 +841,8 @@
cmbRenderer->setCurrentIndex(0);
#endif
+ lblWarnOpenGL->hide();
+
#ifdef Q_OS_WIN
if (!(KisOpenGL::getSupportedOpenGLRenderers() &
(KisOpenGL::RendererDesktopGL | KisOpenGL::RendererAngle))) {
@@ -897,6 +899,7 @@
chkChannelsAsColor->setChecked(cfg.showSingleChannelAsColor());
chkHidePopups->setChecked(cfg.hidePopups());
+ updateOpenGLWarning(grpOpenGL->isChecked());
connect(grpOpenGL, SIGNAL(toggled(bool)), SLOT(slotUseOpenGLToggled(bool)));
KoColor gridColor(KoColorSpaceRegistry::instance()->rgb8());
@@ -964,6 +967,27 @@
chkUseTextureBuffer->setEnabled(isChecked);
chkDisableVsync->setEnabled(isChecked);
cmbFilterMode->setEnabled(isChecked);
+ updateOpenGLWarning(isChecked);
+}
+
+void DisplaySettingsTab::updateOpenGLWarning(bool useOpenGL)
+{
+ if (useOpenGL) {
+ QString warnings = KisOpenGL::getWarnings();
+ if (warnings.size() > 0) {
+ const QString warningTriangle = "" +
+ QString(QChar(0xA0, 0x26)) + "";
+ lblWarnOpenGL->setWordWrap(true);
+ lblWarnOpenGL->setText("
" + warningTriangle + " | | " +
+ "Canvas Graphics Acceleration probably won't work correctly on your machine (" + warnings + "). " +
+ "If you experience any problems, please turn it off. |
");
+ lblWarnOpenGL->show();
+ } else {
+ lblWarnOpenGL->hide();
+ }
+ } else {
+ lblWarnOpenGL->hide();
+ }
}
//---------------------------------------------------------------------------------------------------
diff --git a/libs/ui/forms/wdgdisplaysettings.ui b/libs/ui/forms/wdgdisplaysettings.ui
--- a/libs/ui/forms/wdgdisplaysettings.ui
+++ b/libs/ui/forms/wdgdisplaysettings.ui
@@ -181,7 +181,7 @@
true
- -
+
-
@@ -214,7 +214,7 @@
- -
+
-
<html><head/><body><p>Try to disable vsync for Krita. This makes painting more responsive. Uncheck only when experiencing crashes with some GPU/driver combinations.</p></body></html>
@@ -227,7 +227,7 @@
- -
+
-
@@ -243,7 +243,7 @@
- -
+
-
@@ -256,16 +256,26 @@
- -
+
-
Renderer (needs restart):
- -
+
-
+ -
+
+
+
+
+
+ 8
+
+
+
diff --git a/libs/ui/opengl/kis_opengl.h b/libs/ui/opengl/kis_opengl.h
--- a/libs/ui/opengl/kis_opengl.h
+++ b/libs/ui/opengl/kis_opengl.h
@@ -82,6 +82,8 @@
/// Check for OpenGL
static bool hasOpenGL();
+ static QString getWarnings();
+
/**
* @brief supportsFilter
* @return True if OpenGL provides fence sync methods.
diff --git a/libs/ui/opengl/kis_opengl.cpp b/libs/ui/opengl/kis_opengl.cpp
--- a/libs/ui/opengl/kis_opengl.cpp
+++ b/libs/ui/opengl/kis_opengl.cpp
@@ -79,14 +79,21 @@
bool isSupportedVersion() const {
return
#ifdef Q_OS_OSX
- ((glMajorVersion * 100 + glMinorVersion) >= 302
- && !rendererString.toLower().contains("amd")
- && !rendererString.toLower().contains("radeon"))
+ (glMajorVersion * 100 + glMinorVersion) >= 302
#else
(glMajorVersion >= 3 && (supportsDeprecatedFunctions || isOpenGLES)) ||
((glMajorVersion * 100 + glMinorVersion) == 201)
#endif
- ;
+ ;
+ }
+
+ QString getWarnings() const {
+#ifdef Q_OS_OSX
+ if (rendererString.toLower().contains("amd") || rendererString.toLower().contains("radeon")) {
+ return "detected an unsupported AMD/Radeon GPU";
+ }
+#endif
+ return "";
}
bool supportsLoD() const {
@@ -600,3 +607,8 @@
{
return openGLCheckResult->isSupportedVersion();
}
+
+QString KisOpenGL::getWarnings()
+{
+ return openGLCheckResult->getWarnings();
+}