Mesa (master): st/mesa: update comment, use st_fb_orientation()

Brian Paul brianp at kemper.freedesktop.org
Sun Jan 23 01:35:36 UTC 2011


Module: Mesa
Branch: master
Commit: 4c251b88613ae3650a7b9eb255b79a95d0c837a7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4c251b88613ae3650a7b9eb255b79a95d0c837a7

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Jan 21 17:35:08 2011 -0700

st/mesa: update comment, use st_fb_orientation()

---

 src/mesa/state_tracker/st_atom_rasterizer.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c
index f92ca13..8bcccee 100644
--- a/src/mesa/state_tracker/st_atom_rasterizer.c
+++ b/src/mesa/state_tracker/st_atom_rasterizer.c
@@ -70,14 +70,16 @@ static void update_raster_state( struct st_context *st )
    {
       raster->front_ccw = (ctx->Polygon.FrontFace == GL_CCW);
 
-      /* XXX
-       * I think the intention here is that user-created framebuffer objects
-       * use Y=0=TOP layout instead of OpenGL's normal Y=0=bottom layout.
-       * Flipping Y changes CW to CCW and vice-versa.
-       * But this is an implementation/driver-specific artifact - remove...
+      /*
+       * Gallium's surfaces are Y=0=TOP orientation.  OpenGL is the
+       * opposite.  Window system surfaces are Y=0=TOP.  Mesa's FBOs
+       * must match OpenGL conventions so FBOs use Y=0=BOTTOM.  In that
+       * case, we must invert Y and flip the notion of front vs. back.
        */
-      if (ctx->DrawBuffer && ctx->DrawBuffer->Name != 0)
+      if (st_fb_orientation(ctx->DrawBuffer) == Y_0_BOTTOM) {
+         /* Drawing to an FBO.  The viewport will be inverted. */
          raster->front_ccw ^= 1;
+      }
    }
 
    /* _NEW_LIGHT




More information about the mesa-commit mailing list