diff options
| author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2024-02-07 11:28:27 +0100 |
|---|---|---|
| committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-02-09 22:24:52 +0000 |
| commit | 4b77494bfb1353f3dd54894bf6ce38c5816a527c (patch) | |
| tree | 70f91b62b2b46440576ae757b8e1b4474bd64a80 /src/opengl/qopenglframebufferobject.cpp | |
| parent | 9125f37017766892478b3da282f2700228be0b81 (diff) | |
Refix invalid glTexImage2D operation in FramebufferObject
A recent change fixed the texture format parameter to be RGB instead
of RGBA for opaque internal formats. However, this broke the RGB10
case, since the pixel type is then GL_UNSIGNED_INT_2_10_10_10_REV. The
doc says:
"GL_INVALID_OPERATION is generated if type is [...]
GL_UNSIGNED_INT_2_10_10_10_REV [...] and format is neither GL_RGBA nor
GL_BGRA."
https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml
This modifies ba9e57d65f15c935632b0ad22db0bead9a7d5f90.
Pick-to: 6.5
Change-Id: I9a004331513179a3f840a007af0418d14e7f5dff
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
(cherry picked from commit b0056f052d842150305d59a3ced280e1885a8619)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 6ae9a8441e35ff36a7a0d53e7d0dfc2de094854d)
Diffstat (limited to 'src/opengl/qopenglframebufferobject.cpp')
| -rw-r--r-- | src/opengl/qopenglframebufferobject.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/opengl/qopenglframebufferobject.cpp b/src/opengl/qopenglframebufferobject.cpp index 75dc8d901e7..5c8f769d399 100644 --- a/src/opengl/qopenglframebufferobject.cpp +++ b/src/opengl/qopenglframebufferobject.cpp @@ -553,12 +553,14 @@ void QOpenGLFramebufferObjectPrivate::initTexture(int idx) bool isOpaque = false; switch (color.internalFormat) { case GL_RGB8: - case GL_RGB10: case GL_RGB16: case GL_RGB16F: case GL_RGB32F: isOpaque = true; break; + case GL_RGB10: + // opaque but the pixel type (INT_2_10_10_10) has alpha and so requires RGBA texture format + break; } const GLuint textureFormat = isOpaque ? GL_RGB : GL_RGBA; |
