mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-05-29 12:53:12 +02:00
Merge pull request #7428 from zzmp/fix/clear-qml-gl
Clear GL error before initializing qml to avoid mystery crash
This commit is contained in:
commit
d372ca47ad
5 changed files with 13 additions and 13 deletions
|
@ -44,12 +44,6 @@ bool OffscreenGLCanvas::create(QOpenGLContext* sharedContext) {
|
|||
return true;
|
||||
}
|
||||
|
||||
qWarning() << "GL Version: " << QString((const char*) glGetString(GL_VERSION));
|
||||
qWarning() << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION));
|
||||
qWarning() << "GL Vendor: " << QString((const char*) glGetString(GL_VENDOR));
|
||||
qWarning() << "GL Renderer: " << QString((const char*) glGetString(GL_RENDERER));
|
||||
qWarning() << "Failed to create OffscreenGLCanvas";
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -187,6 +187,15 @@ bool OffscreenQmlRenderThread::event(QEvent *e) {
|
|||
void OffscreenQmlRenderThread::setupFbo() {
|
||||
using namespace oglplus;
|
||||
_textures.setSize(_size);
|
||||
|
||||
// Before making any ogl calls, clear any outstanding errors
|
||||
// FIXME: Something upstream is polluting the context with a GL_INVALID_ENUM,
|
||||
// likely from glewExperimental = true
|
||||
GLenum err = glGetError();
|
||||
if (err != GL_NO_ERROR) {
|
||||
qDebug() << "Clearing outstanding GL error to set up QML FBO:" << glewGetErrorString(err);
|
||||
}
|
||||
|
||||
_depthStencil.reset(new Renderbuffer());
|
||||
Context::Bound(Renderbuffer::Target::Renderbuffer, *_depthStencil)
|
||||
.Storage(
|
||||
|
|
|
@ -87,18 +87,15 @@ void GLBackend::init() {
|
|||
static std::once_flag once;
|
||||
std::call_once(once, [] {
|
||||
qCDebug(gpulogging) << "GL Version: " << QString((const char*) glGetString(GL_VERSION));
|
||||
|
||||
qCDebug(gpulogging) << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION));
|
||||
|
||||
qCDebug(gpulogging) << "GL Vendor: " << QString((const char*) glGetString(GL_VENDOR));
|
||||
|
||||
qCDebug(gpulogging) << "GL Renderer: " << QString((const char*) glGetString(GL_RENDERER));
|
||||
|
||||
glewExperimental = true;
|
||||
GLenum err = glewInit();
|
||||
glGetError();
|
||||
glGetError(); // clear the potential error from glewExperimental
|
||||
if (GLEW_OK != err) {
|
||||
/* Problem: glewInit failed, something is seriously wrong. */
|
||||
// glewInit failed, something is seriously wrong.
|
||||
qCDebug(gpulogging, "Error: %s\n", glewGetErrorString(err));
|
||||
}
|
||||
qCDebug(gpulogging, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
|
||||
|
|
|
@ -30,7 +30,7 @@ bool OculusBaseDisplayPlugin::isSupported() const {
|
|||
void OculusBaseDisplayPlugin::customizeContext() {
|
||||
glewExperimental = true;
|
||||
GLenum err = glewInit();
|
||||
glGetError();
|
||||
glGetError(); // clear the potential error from glewExperimental
|
||||
Parent::customizeContext();
|
||||
}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ void OpenVrDisplayPlugin::customizeContext() {
|
|||
std::call_once(once, []{
|
||||
glewExperimental = true;
|
||||
GLenum err = glewInit();
|
||||
glGetError();
|
||||
glGetError(); // clear the potential error from glewExperimental
|
||||
});
|
||||
Parent::customizeContext();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue