summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEirik Aavitsland <[email protected]>2024-02-07 11:28:27 +0100
committerQt Cherry-pick Bot <[email protected]>2024-02-12 06:45:26 +0000
commit4615010fdbc16aa5be24c6d3988bfea1602a3f42 (patch)
tree95623eefda880cf17534fd58fa5eed2696ec5622
parent9b06bcb33a0db380e8bb44d178dc3befe9100960 (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. Change-Id: I9a004331513179a3f840a007af0418d14e7f5dff Reviewed-by: Laszlo Agocs <[email protected]> (cherry picked from commit b0056f052d842150305d59a3ced280e1885a8619) Reviewed-by: Qt Cherry-pick Bot <[email protected]> (cherry picked from commit 6ae9a8441e35ff36a7a0d53e7d0dfc2de094854d) (cherry picked from commit 4b77494bfb1353f3dd54894bf6ce38c5816a527c)
-rw-r--r--src/opengl/qopenglframebufferobject.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/opengl/qopenglframebufferobject.cpp b/src/opengl/qopenglframebufferobject.cpp
index 9a8bdc07adf..2a0437e2369 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;