OpenGL: Add finer-grained functionality checks for NPOT textures

The GL_IMG_texture_npot extension only provides partial support for
npot textures in that it allows use of npot textures but it does not
support the GL_REPEAT texture mode (needed for tiling fill modes in the
QQ2 image element).

Adding this new finer-grained feature check allows QQ2 to still use npot
textures where GL_REPEAT is not needed with only the IMG extension
present.

A follow-up commit will make a check for this in qtdeclarative.

Change-Id: Iff3dbdb955fb334d9e32f3abd49e90ff0ed9836c
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
This commit is contained in:
Sean Harmer 2012-08-06 10:55:53 +01:00 committed by Qt by Nokia
parent 57265a20cb
commit 96bc8835eb
2 changed files with 5 additions and 3 deletions

View File

@ -265,10 +265,11 @@ static int qt_gl_resolve_features()
QOpenGLFunctions::Multisample | QOpenGLFunctions::Multisample |
QOpenGLFunctions::StencilSeparate; QOpenGLFunctions::StencilSeparate;
QOpenGLExtensionMatcher extensions; QOpenGLExtensionMatcher extensions;
if (extensions.match("GL_OES_texture_npot"))
features |= QOpenGLFunctions::NPOTTextures;
if (extensions.match("GL_IMG_texture_npot")) if (extensions.match("GL_IMG_texture_npot"))
features |= QOpenGLFunctions::NPOTTextures; features |= QOpenGLFunctions::NPOTTextures;
if (extensions.match("GL_OES_texture_npot"))
features |= QOpenGLFunctions::NPOTTextures |
QOpenGLFunctions::NPOTTextureRepeat;
return features; return features;
#elif defined(QT_OPENGL_ES) #elif defined(QT_OPENGL_ES)
int features = QOpenGLFunctions::Multitexture | int features = QOpenGLFunctions::Multitexture |

View File

@ -217,7 +217,8 @@ public:
CompressedTextures = 0x0200, CompressedTextures = 0x0200,
Multisample = 0x0400, Multisample = 0x0400,
StencilSeparate = 0x0800, StencilSeparate = 0x0800,
NPOTTextures = 0x1000 NPOTTextures = 0x1000,
NPOTTextureRepeat = 0x2000
}; };
Q_DECLARE_FLAGS(OpenGLFeatures, OpenGLFeature) Q_DECLARE_FLAGS(OpenGLFeatures, OpenGLFeature)