mesa: Generate GL_INVALID_VALUE in framebuffer_texture when layer < 0
authorFredrik Höglund <fredrik@kde.org>
Sat, 9 May 2015 13:31:45 +0000 (15:31 +0200)
committerFredrik Höglund <fredrik@kde.org>
Thu, 14 May 2015 13:48:12 +0000 (15:48 +0200)
Signed-off-by: Fredrik Höglund <fredrik@kde.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Cc: "10.4 10.5" <mesa-stable@lists.freedesktop.org>
src/mesa/main/fbobject.c

index 4524e51e4c03e91dcf7e352e5caef06cc06ca4a6..20a4e86007cf424741258c59a0b20e4a305f84d0 100644 (file)
@@ -2668,6 +2668,18 @@ framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target,
          return;
       }
 
+      /* Page 306 (page 328 of the PDF) of the OpenGL 4.5 (Core Profile)
+       * spec says:
+       *
+       *    "An INVALID_VALUE error is generated if texture is non-zero
+       *     and layer is negative."
+       */
+      if (zoffset < 0) {
+         _mesa_error(ctx, GL_INVALID_VALUE,
+                     "glFramebufferTexture%s(layer %u < 0)", caller, zoffset);
+         return;
+      }
+
       if (texObj->Target == GL_TEXTURE_3D) {
          const GLuint maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1);
          if (zoffset >= maxSize) {