diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-07-01 11:12:45 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-07-22 07:12:43 +0200 |
commit | f4e0dda205d2a5c69caa3a7e423ef15f6565c983 (patch) | |
tree | b121d2b27bc6374b4597d1afd7095da0bbeaf2b6 /src/gui | |
parent | 0652bdcf5e60461cd9a513d64be00b8830826fad (diff) |
rhi: gl: Fix feature version check logic
It was somewhat incorrect in a few places.
Some of these should be moved to QOpenGLFunctions/Extensions later.
Change-Id: Ibc7a6409f16ddf1ad71230671dcad558dac1b86f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/rhi/qrhigles2.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp index 22cb030c27..e56710a4bf 100644 --- a/src/gui/rhi/qrhigles2.cpp +++ b/src/gui/rhi/qrhigles2.cpp @@ -400,9 +400,9 @@ bool QRhiGles2::create(QRhi::Flags flags) caps.gles = actualFormat.renderableType() == QSurfaceFormat::OpenGLES; if (caps.gles) - caps.fixedIndexPrimitiveRestart = caps.ctxMajor >= 3; + caps.fixedIndexPrimitiveRestart = caps.ctxMajor >= 3; // ES 3.0 else - caps.fixedIndexPrimitiveRestart = caps.ctxMajor > 4 || (caps.ctxMajor == 4 && caps.ctxMinor >= 3); + caps.fixedIndexPrimitiveRestart = caps.ctxMajor > 4 || (caps.ctxMajor == 4 && caps.ctxMinor >= 3); // 4.3 if (caps.fixedIndexPrimitiveRestart) f->glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX); @@ -411,8 +411,8 @@ bool QRhiGles2::create(QRhi::Flags flags) caps.bgraInternalFormat = caps.bgraExternalFormat && caps.gles; caps.r8Format = f->hasOpenGLFeature(QOpenGLFunctions::TextureRGFormats); caps.r16Format = f->hasOpenGLExtension(QOpenGLExtensions::Sized16Formats); - caps.floatFormats = caps.ctxMajor >= 3; - caps.depthTexture = caps.ctxMajor >= 3; + caps.floatFormats = caps.ctxMajor >= 3; // 3.0 or ES 3.0 + caps.depthTexture = caps.ctxMajor >= 3; // 3.0 or ES 3.0 caps.packedDepthStencil = f->hasOpenGLExtension(QOpenGLExtensions::PackedDepthStencil); #ifdef Q_OS_WASM caps.needsDepthStencilCombinedAttach = true; @@ -421,12 +421,22 @@ bool QRhiGles2::create(QRhi::Flags flags) #endif caps.srgbCapableDefaultFramebuffer = f->hasOpenGLExtension(QOpenGLExtensions::SRGBFrameBuffer); caps.coreProfile = actualFormat.profile() == QSurfaceFormat::CoreProfile; - caps.uniformBuffers = caps.ctxMajor >= 3 && (caps.gles || caps.ctxMinor >= 1); + + if (caps.gles) + caps.uniformBuffers = caps.ctxMajor >= 3; // ES 3.0 + else + caps.uniformBuffers = caps.ctxMajor > 3 || (caps.ctxMajor == 3 && caps.ctxMinor >= 1); // 3.1 + caps.elementIndexUint = f->hasOpenGLExtension(QOpenGLExtensions::ElementIndexUint); caps.depth24 = f->hasOpenGLExtension(QOpenGLExtensions::Depth24); caps.rgba8Format = f->hasOpenGLExtension(QOpenGLExtensions::Sized8Formats); - caps.instancing = caps.ctxMajor >= 3 && (caps.gles || caps.ctxMinor >= 3); - caps.baseVertex = caps.ctxMajor >= 3 && caps.ctxMinor >= 2; + + if (caps.gles) + caps.instancing = caps.ctxMajor >= 3; // ES 3.0 + else + caps.instancing = caps.ctxMajor > 3 || (caps.ctxMajor == 3 && caps.ctxMinor >= 3); // 3.3 + + caps.baseVertex = caps.ctxMajor > 3 || (caps.ctxMajor == 3 && caps.ctxMinor >= 2); // 3.2 or ES 3.2 nativeHandlesStruct.context = ctx; |