Merge pull request #4914 from lat9nq/gl-warnings

bootmanager: Log and show GL_RENDERER string when GPU is insufficient
master
LC 2020-11-15 06:33:48 +07:00 committed by GitHub
commit ce718522bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 8 deletions

@ -10,6 +10,7 @@
#include <QMessageBox> #include <QMessageBox>
#include <QPainter> #include <QPainter>
#include <QScreen> #include <QScreen>
#include <QString>
#include <QStringList> #include <QStringList>
#include <QWindow> #include <QWindow>
@ -603,19 +604,33 @@ bool GRenderWindow::LoadOpenGL() {
auto context = CreateSharedContext(); auto context = CreateSharedContext();
auto scope = context->Acquire(); auto scope = context->Acquire();
if (!gladLoadGL()) { if (!gladLoadGL()) {
QMessageBox::critical(this, tr("Error while initializing OpenGL 4.3!"), QMessageBox::warning(
this, tr("Error while initializing OpenGL!"),
tr("Your GPU may not support OpenGL, or you do not have the latest graphics driver."));
return false;
}
const QString renderer =
QString::fromUtf8(reinterpret_cast<const char*>(glGetString(GL_RENDERER)));
if (!GLAD_GL_VERSION_4_3) {
LOG_ERROR(Frontend, "GPU does not support OpenGL 4.3: {}", renderer.toStdString());
QMessageBox::warning(this, tr("Error while initializing OpenGL 4.3!"),
tr("Your GPU may not support OpenGL 4.3, or you do not have the " tr("Your GPU may not support OpenGL 4.3, or you do not have the "
"latest graphics driver.")); "latest graphics driver.<br><br>GL Renderer:<br>%1")
.arg(renderer));
return false; return false;
} }
QStringList unsupported_gl_extensions = GetUnsupportedGLExtensions(); QStringList unsupported_gl_extensions = GetUnsupportedGLExtensions();
if (!unsupported_gl_extensions.empty()) { if (!unsupported_gl_extensions.empty()) {
QMessageBox::critical( QMessageBox::warning(
this, tr("Error while initializing OpenGL!"), this, tr("Error while initializing OpenGL!"),
tr("Your GPU may not support one or more required OpenGL extensions. Please ensure you " tr("Your GPU may not support one or more required OpenGL extensions. Please ensure you "
"have the latest graphics driver.<br><br>Unsupported extensions:<br>") + "have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported "
unsupported_gl_extensions.join(QStringLiteral("<br>"))); "extensions:<br>%2")
.arg(renderer)
.arg(unsupported_gl_extensions.join(QStringLiteral("<br>"))));
return false; return false;
} }
return true; return true;
@ -645,8 +660,13 @@ QStringList GRenderWindow::GetUnsupportedGLExtensions() const {
if (!GLAD_GL_ARB_depth_buffer_float) if (!GLAD_GL_ARB_depth_buffer_float)
unsupported_ext.append(QStringLiteral("ARB_depth_buffer_float")); unsupported_ext.append(QStringLiteral("ARB_depth_buffer_float"));
for (const QString& ext : unsupported_ext) if (!unsupported_ext.empty()) {
LOG_CRITICAL(Frontend, "Unsupported GL extension: {}", ext.toStdString()); LOG_ERROR(Frontend, "GPU does not support all required extensions: {}",
glGetString(GL_RENDERER));
}
for (const QString& ext : unsupported_ext) {
LOG_ERROR(Frontend, "Unsupported GL extension: {}", ext.toStdString());
}
return unsupported_ext; return unsupported_ext;
} }