Module: Mesa Branch: master Commit: d58a3906cba57b12035f6ec7a3da80edc6929d6f URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d58a3906cba57b12035f6ec7a3da80edc6929d6f
Author: Marek Olšák <marek.ol...@amd.com> Date: Thu Sep 8 21:02:29 2016 +0200 mesa: fix glGetFramebufferAttachmentParameteriv w/ on-demand FRONT_BACK alloc This fixes 66 CTS tests on st/mesa. Cc: 12.0 <mesa-sta...@lists.freedesktop.org> Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> --- src/mesa/main/fbobject.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 2c01526..09da6b7 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -303,9 +303,21 @@ _mesa_get_fb0_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, switch (attachment) { case GL_FRONT_LEFT: - return &fb->Attachment[BUFFER_FRONT_LEFT]; + /* Front buffers can be allocated on the first use, but + * glGetFramebufferAttachmentParameteriv must work even if that + * allocation hasn't happened yet. In such case, use the back buffer, + * which should be the same. + */ + if (fb->Attachment[BUFFER_FRONT_LEFT].Type == GL_NONE) + return &fb->Attachment[BUFFER_BACK_LEFT]; + else + return &fb->Attachment[BUFFER_FRONT_LEFT]; case GL_FRONT_RIGHT: - return &fb->Attachment[BUFFER_FRONT_RIGHT]; + /* Same as above. */ + if (fb->Attachment[BUFFER_FRONT_RIGHT].Type == GL_NONE) + return &fb->Attachment[BUFFER_BACK_RIGHT]; + else + return &fb->Attachment[BUFFER_FRONT_RIGHT]; case GL_BACK_LEFT: return &fb->Attachment[BUFFER_BACK_LEFT]; case GL_BACK_RIGHT: _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit