st/mesa: check buffer orientation in blit_copy_pixels()

Can't invert the region if copying between surfaces with different
orientations.
This commit is contained in:
Brian Paul
2011-02-18 10:18:34 -07:00
parent 0ced789a0b
commit 09f14a6086
+4 -3
View File
@@ -1188,6 +1188,7 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
!ctx->FragmentProgram.Enabled &&
!ctx->VertexProgram.Enabled &&
!ctx->Shader.CurrentFragmentProgram &&
st_fb_orientation(ctx->ReadBuffer) == st_fb_orientation(ctx->DrawBuffer) &&
ctx->DrawBuffer->_NumColorDrawBuffers == 1) {
struct st_renderbuffer *rbRead, *rbDraw;
GLint drawX, drawY;
@@ -1226,11 +1227,11 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
struct pipe_box srcBox;
/* flip src/dst position if needed */
if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP)
if (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP) {
/* both buffers will have the same orientation */
readY = ctx->ReadBuffer->Height - readY - readH;
if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP)
drawY = ctx->DrawBuffer->Height - drawY - readH;
}
u_box_2d(readX, readY, readW, readH, &srcBox);