On Wed, Sep 5, 2012 at 4:22 PM, Paul Berry <stereotype...@gmail.com> wrote: > From the GL 4.3 spec, section 18.3.1 "Blitting Pixel Rectangles": > > If SAMPLE_BUFFERS for either the read framebuffer or draw > framebuffer is greater than zero, no copy is performed and an > INVALID_OPERATION error is generated if the dimensions of the > source and destination rectangles provided to BlitFramebuffer are > not identical, or if the formats of the read and draw framebuffers > are not identical. > > It is not clear from the spec whether "dimensions" should mean both > sign and magnitude, or just magnitude. > > Previously, Mesa interpreted "dimensions" as meaning both sign and > magnitude, so any multisampled blit that attempted to flip the image > in the X and/or Y direction would fail. > > However, Y flips are likely to be commonplace in OpenGL applications > that have been ported from DirectX applications, as a result of the > fact that DirectX and OpenGL differ in their orientation of the Y > axis. Furthermore, at least one commercial driver (nVidia) permits Y > filps, and L4D2 relies on them being permitted. So it seems prudent > for Mesa to permit them. > > This patch changes Mesa to allow both X and Y flips, since there is no > language in the spec to indicate that X and Y flips should be treated > differently. > > NOTE: This is a candidate for stable release branches. > --- > src/mesa/main/fbobject.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c > index 59a5ec3..abc9d83 100644 > --- a/src/mesa/main/fbobject.c > +++ b/src/mesa/main/fbobject.c > @@ -2979,8 +2979,8 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, > GLint srcX1, GLint srcY1, > /* extra checks for multisample copies... */ > if (readFb->Visual.samples > 0 || drawFb->Visual.samples > 0) { > /* src and dest region sizes must be the same */ > - if (srcX1 - srcX0 != dstX1 - dstX0 || > - srcY1 - srcY0 != dstY1 - dstY0) { > + if (abs(srcX1 - srcX0) != abs(dstX1 - dstX0) || > + abs(srcY1 - srcY0) != abs(dstY1 - dstY0)) { > _mesa_error(ctx, GL_INVALID_OPERATION, > "glBlitFramebufferEXT(bad src/dst multisample region > sizes)"); > return; > -- > 1.7.7.6 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Reviewed-by: Anuj Phogat <anuj.pho...@gmail.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev