Add GLSL version 110 on Intel with compat profiles
The Windows Intel drivers reject shader sources without a version directive in 3.2+ compatibility profiles. This is odd but can be worked around by adding #version 110 (which should be the default...) Change-Id: I1ccac41b80121e6423d4f8964d03dda52a433296 Task-number: QTBUG-55733 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
This commit is contained in:
parent
158781ff25
commit
a95d103bd2
@ -516,16 +516,26 @@ bool QOpenGLShader::compileSourceCode(const char *source)
|
||||
|
||||
QVarLengthArray<const char *, 5> sourceChunks;
|
||||
QVarLengthArray<GLint, 5> sourceChunkLengths;
|
||||
QOpenGLContext *ctx = QOpenGLContext::currentContext();
|
||||
|
||||
if (versionDirectivePosition.hasPosition()) {
|
||||
// Append source up to #version directive
|
||||
// Append source up to and including the #version directive
|
||||
sourceChunks.append(source);
|
||||
sourceChunkLengths.append(GLint(versionDirectivePosition.position));
|
||||
} else {
|
||||
// QTBUG-55733: Intel on Windows with Compatibility profile requires a #version always
|
||||
if (ctx->format().profile() == QSurfaceFormat::CompatibilityProfile) {
|
||||
const char *vendor = reinterpret_cast<const char *>(ctx->functions()->glGetString(GL_VENDOR));
|
||||
if (vendor && !strcmp(vendor, "Intel")) {
|
||||
static const char version110[] = "#version 110\n";
|
||||
sourceChunks.append(version110);
|
||||
sourceChunkLengths.append(GLint(sizeof(version110)) - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The precision qualifiers are useful on OpenGL/ES systems,
|
||||
// but usually not present on desktop systems.
|
||||
QOpenGLContext *ctx = QOpenGLContext::currentContext();
|
||||
const QSurfaceFormat currentSurfaceFormat = ctx->format();
|
||||
QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(QOpenGLContext::currentContext());
|
||||
if (currentSurfaceFormat.renderableType() == QSurfaceFormat::OpenGL
|
||||
|
Loading…
Reference in New Issue
Block a user