From 717831ea712c07e18f2c2e797c49754bf2500e5e Mon Sep 17 00:00:00 2001 From: Brian Date: Fri, 10 Aug 2007 16:24:55 -0600 Subject: [PATCH] invert Y for scissor --- src/mesa/state_tracker/st_atom_scissor.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mesa/state_tracker/st_atom_scissor.c b/src/mesa/state_tracker/st_atom_scissor.c index 05a9f3e..2bf6338 100644 --- a/src/mesa/state_tracker/st_atom_scissor.c +++ b/src/mesa/state_tracker/st_atom_scissor.c @@ -44,6 +44,7 @@ update_scissor( struct st_context *st ) { struct pipe_scissor_state scissor; const struct gl_framebuffer *fb = st->ctx->DrawBuffer; + GLint miny, maxy; scissor.minx = 0; scissor.miny = 0; @@ -66,6 +67,13 @@ 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 + */ + 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 */ st->state.scissor = scissor; /* struct copy */ -- 2.7.4