mesa: Add an error condition in glGetFramebufferAttachmentParameteriv()

From the OpenGL 4.4 spec page 275:
  "If pname is FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE, param will
   contain the format of components of the specified attachment,
   one of FLOAT, INT, UNSIGNED_INT, SIGNED_NORMALIZED, or
   UNSIGNED_NORMALIZED for floating-point, signed integer,
   unsigned integer, signed normalized fixedpoint, or unsigned
   normalized fixed-point components respectively. If no data
   storage or texture image has been specified for the attachment,
   param will contain NONE. This query cannot be performed for a
   combined depth+stencil attachment, since it does not have a
   single format."

Fixes Khronos CTS test: packed_depth_stencil_parameters.test

Khronos Bug# 9170
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Anuj Phogat 2014-03-11 17:04:11 -07:00
parent 7cb3bbf2cd
commit bd1880dfe8

View file

@ -2770,6 +2770,19 @@ _mesa_GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment,
}
if (attachment == GL_DEPTH_STENCIL_ATTACHMENT) {
if (pname == GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) {
/* This behavior is first specified in OpenGL 4.4 specification.
*
* From the OpenGL 4.4 spec page 275:
* "This query cannot be performed for a combined depth+stencil
* attachment, since it does not have a single format."
*/
_mesa_error(ctx, GL_INVALID_OPERATION,
"glGetFramebufferAttachmentParameteriv("
"GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"
" is invalid for depth+stencil attachment)");
return;
}
/* the depth and stencil attachments must point to the same buffer */
const struct gl_renderbuffer_attachment *depthAtt, *stencilAtt;
depthAtt = get_attachment(ctx, buffer, GL_DEPTH_ATTACHMENT);