st/mesa: invert scissor rect depending on FB orientation
authorBrian Paul <brianp@vmware.com>
Mon, 19 Apr 2010 16:10:41 +0000 (10:10 -0600)
committerBrian Paul <brianp@vmware.com>
Mon, 19 Apr 2010 16:10:47 +0000 (10:10 -0600)
Fixes fd.o bug 27715

src/mesa/state_tracker/st_atom_scissor.c

index 5e0c51cff0af3f273a2c922899cf005cd64813eb..56b1383ae39017ba80affd875393b2a258e73d0b 100644 (file)
@@ -72,12 +72,15 @@ update_scissor( struct st_context *st )
          scissor.minx = scissor.miny = scissor.maxx = scissor.maxy = 0;
    }
 
-   /* Now invert Y.  Pipe drivers use the convention Y=0=top for surfaces
+   /* Now invert Y if needed.
+    * Gallium drivers use the convention Y=0=top for surfaces.
     */
-   miny = fb->Height - scissor.maxy;
-   maxy = fb->Height - scissor.miny;
-   scissor.miny = miny;
-   scissor.maxy = maxy;
+   if (st_fb_orientation(fb) == Y_0_TOP) {
+      miny = fb->Height - scissor.maxy;
+      maxy = fb->Height - scissor.miny;
+      scissor.miny = miny;
+      scissor.maxy = maxy;
+   }
 
    if (memcmp(&scissor, &st->state.scissor, sizeof(scissor)) != 0) {
       /* state has changed */