aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main/glformats.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-04-23 22:47:55 +0200
committermarha <marha@users.sourceforge.net>2014-04-23 22:47:55 +0200
commit24fb0da18f1c44dfa1f76d8cde8efbb958aa7659 (patch)
tree76157bb2f88c9383b0824476a9e3a9f9a1bff9fa /mesalib/src/mesa/main/glformats.c
parent6876c31f186414ce975180af79902314c8cdc82a (diff)
parentd26ea2f474c48afa7d3c261572da5d85b7b62bd8 (diff)
downloadvcxsrv-24fb0da18f1c44dfa1f76d8cde8efbb958aa7659.tar.gz
vcxsrv-24fb0da18f1c44dfa1f76d8cde8efbb958aa7659.tar.bz2
vcxsrv-24fb0da18f1c44dfa1f76d8cde8efbb958aa7659.zip
Merge remote-tracking branch 'origin/released'
Conflicts: mesalib/include/GL/glext.h xorg-server/.gitignore xorg-server/glx/glxext.c
Diffstat (limited to 'mesalib/src/mesa/main/glformats.c')
-rw-r--r--mesalib/src/mesa/main/glformats.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/mesalib/src/mesa/main/glformats.c b/mesalib/src/mesa/main/glformats.c
index 77cf26337..9bb341cc0 100644
--- a/mesalib/src/mesa/main/glformats.c
+++ b/mesalib/src/mesa/main/glformats.c
@@ -1238,6 +1238,22 @@ GLenum
_mesa_error_check_format_and_type(const struct gl_context *ctx,
GLenum format, GLenum type)
{
+ /* From OpenGL 3.3 spec, page 220:
+ * "If the format is DEPTH_STENCIL, then values are taken from
+ * both the depth buffer and the stencil buffer. If there is no
+ * depth buffer or if there is no stencil buffer, then the error
+ * INVALID_OPERATION occurs. If the type parameter is not
+ * UNSIGNED_INT_24_8 or FLOAT_32_UNSIGNED_INT_24_8_REV, then the
+ * error INVALID_ENUM occurs."
+ *
+ * OpenGL ES still generates GL_INVALID_OPERATION because glReadPixels
+ * cannot be used to read depth or stencil in that API.
+ */
+ if (_mesa_is_desktop_gl(ctx) && format == GL_DEPTH_STENCIL
+ && type != GL_UNSIGNED_INT_24_8
+ && type != GL_FLOAT_32_UNSIGNED_INT_24_8_REV)
+ return GL_INVALID_ENUM;
+
/* special type-based checks (see glReadPixels, glDrawPixels error lists) */
switch (type) {
case GL_BITMAP: