From ec79c05cbfb7c68fbef7447e1744423c00f26654 Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Tue, 19 Nov 2013 21:17:19 -0800 Subject: [PATCH] mesa: Implement GL_FRAMEBUFFER_ATTACHMENT_LAYERED query. From section 6.1.18 (Renderbuffer Object Queries) of the GL 3.2 spec, under the heading "If the value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is TEXTURE, then": If pname is FRAMEBUFFER_ATTACHMENT_LAYERED, then params will contain TRUE if an entire level of a three-dimesional texture, cube map texture, or one-or two-dimensional array texture is attached. Otherwise, params will contain FALSE. Fixes piglit tests: - spec/!OpenGL 3.2/layered-rendering/framebuffer-layered-attachments - spec/!OpenGL 3.2/layered-rendering/framebuffertexture-defaults Cc: "10.0" Reviewed-by: Chris Forbes v2: Don't include "EXT" in the error message, since this query only makes sensen in context versions that have adopted glGetFramebufferAttachmentParameteriv(). Reviewed-by: Ian Romanick --- src/mesa/main/fbobject.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index dd131078327..36506272932 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -2964,6 +2964,18 @@ _mesa_GetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, " invalid FBO attachment structure"); } return; + case GL_FRAMEBUFFER_ATTACHMENT_LAYERED: + if (!_mesa_has_geometry_shaders(ctx)) { + goto invalid_pname_enum; + } else if (att->Type == GL_TEXTURE) { + *params = att->Layered; + } else if (att->Type == GL_NONE) { + _mesa_error(ctx, err, + "glGetFramebufferAttachmentParameteriv(pname)"); + } else { + goto invalid_pname_enum; + } + return; default: goto invalid_pname_enum; } -- 2.30.2