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

Author: Christoph Bumiller <[email protected]>
Date:   Wed Jul 29 00:35:12 2009 +0200

nv50: use correct scissor reg

---

 src/gallium/drivers/nv50/nv50_screen.c         |    4 ++++
 src/gallium/drivers/nv50/nv50_state_validate.c |   23 ++++++++++++++++-------
 2 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_screen.c 
b/src/gallium/drivers/nv50/nv50_screen.c
index ce8f906..349619d 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -417,6 +417,10 @@ nv50_screen_create(struct pipe_winsys *ws, struct 
nouveau_device *dev)
        so_method(so, screen->tesla, 0x1234, 1);
        so_data  (so, 1);
 
+       /* activate first scissor rectangle */
+       so_method(so, screen->tesla, NV50TCL_SCISSOR_ENABLE, 1);
+       so_data  (so, 1);
+
        so_emit(chan, so);
        so_ref (so, &screen->static_init);
        so_ref (NULL, &so);
diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c 
b/src/gallium/drivers/nv50/nv50_state_validate.c
index d313e9d..03aed81 100644
--- a/src/gallium/drivers/nv50/nv50_state_validate.c
+++ b/src/gallium/drivers/nv50/nv50_state_validate.c
@@ -119,12 +119,18 @@ nv50_state_validate_fb(struct nv50_context *nv50)
        so_method(so, tesla, NV50TCL_VIEWPORT_HORIZ, 2);
        so_data  (so, w << 16);
        so_data  (so, h << 16);
-       so_method(so, tesla, 0x0e04, 2);
+       /* set window scissor rectangle to window extents */
+       so_method(so, tesla, NV50TCL_SCISSOR_HORIZ, 2);
        so_data  (so, w << 16);
        so_data  (so, h << 16);
-       so_method(so, tesla, 0xdf8, 2);
+       /* set window lower left corner */
+       so_method(so, tesla, NV50TCL_WINDOW_LEFT, 2);
        so_data  (so, 0);
        so_data  (so, h);
+       /* set screen scissor rectangle */
+       so_method(so, tesla, NV50TCL_SCREEN_SCISSOR_HORIZ, 2);
+       so_data  (so, w << 16);
+       so_data  (so, h << 16);
 
        so_ref(so, &nv50->state.fb);
        so_ref(NULL, &so);
@@ -233,13 +239,16 @@ nv50_state_validate(struct nv50_context *nv50)
                nv50->state.scissor_enabled = rast->scissor;
 
                so = so_new(3, 0);
-               so_method(so, tesla, 0x0ff4, 2);
+               so_method(so, tesla, NV50TCL_SCISSOR_HORIZ, 2);
                if (nv50->state.scissor_enabled) {
-                       so_data(so, ((s->maxx - s->minx) << 16) | s->minx);
-                       so_data(so, ((s->maxy - s->miny) << 16) | s->miny);
+                       /* the hw has y = 0 = bottom here */
+                       unsigned top = nv50->framebuffer.height - s->miny;
+                       unsigned bottom = nv50->framebuffer.height - s->maxy;
+                       so_data(so, (s->maxx << 16) | s->minx);
+                       so_data(so, (top << 16) | bottom);
                } else {
-                       so_data(so, (8192 << 16));
-                       so_data(so, (8192 << 16));
+                       so_data(so, (nv50->framebuffer.width << 16));
+                       so_data(so, (nv50->framebuffer.height << 16));
                }
                so_ref(so, &nv50->state.scissor);
                so_ref(NULL, &so);

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to