aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKim Motoyoshi Kalland <kim.kalland@nokia.com>2012-07-03 16:05:13 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-04 11:57:06 +0200
commit1d7471d93b4463657f2721074f2a63a12ea18752 (patch)
tree33c6b1db9e0aaf33e375eb36c117b7ef9326de99 /src
parent937bccd0e108e41eee55489d13af86f1683cfb73 (diff)
Let ShaderEffectSource use same multisample count as GL context.
Change-Id: I9b772a2c405c2fab13dfee3527212117de16e9c0 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickshadereffectsource.cpp18
-rw-r--r--src/quick/items/qquickshadereffectsource_p.h2
2 files changed, 12 insertions, 8 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
index 71a0aafe4b..3f36c86d0c 100644
--- a/src/quick/items/qquickshadereffectsource.cpp
+++ b/src/quick/items/qquickshadereffectsource.cpp
@@ -140,7 +140,7 @@ QQuickShaderEffectTexture::QQuickShaderEffectTexture(QQuickItem *shaderSource)
, m_live(true)
, m_recursive(false)
, m_dirtyTexture(true)
- , m_multisamplingSupportChecked(false)
+ , m_multisamplingChecked(false)
, m_multisampling(false)
, m_grab(false)
{
@@ -316,11 +316,15 @@ void QQuickShaderEffectTexture::grab()
if (!m_fbo || m_fbo->size() != m_size || m_fbo->format().internalTextureFormat() != m_format
|| (!m_fbo->format().mipmap() && m_mipmap))
{
- if (!m_multisamplingSupportChecked) {
- QList<QByteArray> extensions = QByteArray((const char *)glGetString(GL_EXTENSIONS)).split(' ');
- m_multisampling = extensions.contains("GL_EXT_framebuffer_multisample")
- && extensions.contains("GL_EXT_framebuffer_blit");
- m_multisamplingSupportChecked = true;
+ if (!m_multisamplingChecked) {
+ if (m_context->glContext()->format().samples() <= 1) {
+ m_multisampling = false;
+ } else {
+ QList<QByteArray> extensions = QByteArray((const char *)glGetString(GL_EXTENSIONS)).split(' ');
+ m_multisampling = extensions.contains("GL_EXT_framebuffer_multisample")
+ && extensions.contains("GL_EXT_framebuffer_blit");
+ }
+ m_multisamplingChecked = true;
}
if (m_multisampling) {
// Don't delete the FBO right away in case it is used recursively.
@@ -329,7 +333,7 @@ void QQuickShaderEffectTexture::grab()
QOpenGLFramebufferObjectFormat format;
format.setInternalTextureFormat(m_format);
- format.setSamples(8);
+ format.setSamples(m_context->glContext()->format().samples());
m_secondaryFbo = new QOpenGLFramebufferObject(m_size, format);
m_depthStencilBuffer = m_context->depthStencilBufferForFbo(m_secondaryFbo);
} else {
diff --git a/src/quick/items/qquickshadereffectsource_p.h b/src/quick/items/qquickshadereffectsource_p.h
index 3fae06f723..7c339a2642 100644
--- a/src/quick/items/qquickshadereffectsource_p.h
+++ b/src/quick/items/qquickshadereffectsource_p.h
@@ -147,7 +147,7 @@ private:
uint m_live : 1;
uint m_recursive : 1;
uint m_dirtyTexture : 1;
- uint m_multisamplingSupportChecked : 1;
+ uint m_multisamplingChecked : 1;
uint m_multisampling : 1;
uint m_grab : 1;
};