nvfx: so->RING_3D: viewport
authorLuca Barbieri <luca@luca-barbieri.com>
Tue, 23 Feb 2010 14:10:05 +0000 (15:10 +0100)
committerLuca Barbieri <luca@luca-barbieri.com>
Mon, 12 Apr 2010 10:13:17 +0000 (12:13 +0200)
src/gallium/drivers/nvfx/nvfx_state_viewport.c

index ec730e3a9e982cd6bbcdba967e6898f62459e5dc..73db0984cdb5dbd3c5566f7c15708a018e6e82b2 100644 (file)
@@ -8,45 +8,41 @@
 static boolean
 nvfx_state_viewport_validate(struct nvfx_context *nvfx)
 {
+       struct nouveau_channel *chan = nvfx->screen->base.channel;
        struct pipe_viewport_state *vpt = &nvfx->viewport;
-       struct nouveau_stateobj *so;
 
-       so = so_new(2, 9, 0);
-       so_method(so, nvfx->screen->eng3d,
-                 NV34TCL_VIEWPORT_TRANSLATE_X, 8);
+       WAIT_RING(chan, 11);
        if(nvfx->render_mode == HW) {
-               so_data  (so, fui(vpt->translate[0]));
-               so_data  (so, fui(vpt->translate[1]));
-               so_data  (so, fui(vpt->translate[2]));
-               so_data  (so, fui(vpt->translate[3]));
-               so_data  (so, fui(vpt->scale[0]));
-               so_data  (so, fui(vpt->scale[1]));
-               so_data  (so, fui(vpt->scale[2]));
-               so_data  (so, fui(vpt->scale[3]));
-               so_method(so, nvfx->screen->eng3d, 0x1d78, 1);
-               so_data  (so, 1);
+               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
+               OUT_RINGf(chan, vpt->translate[0]);
+               OUT_RINGf(chan, vpt->translate[1]);
+               OUT_RINGf(chan, vpt->translate[2]);
+               OUT_RINGf(chan, vpt->translate[3]);
+               OUT_RINGf(chan, vpt->scale[0]);
+               OUT_RINGf(chan, vpt->scale[1]);
+               OUT_RINGf(chan, vpt->scale[2]);
+               OUT_RINGf(chan, vpt->scale[3]);
+               OUT_RING(chan, RING_3D(0x1d78, 1));
+               OUT_RING(chan, 1);
        } else {
-               so_data  (so, fui(0.0f));
-               so_data  (so, fui(0.0f));
-               so_data  (so, fui(0.0f));
-               so_data  (so, fui(0.0f));
-               so_data  (so, fui(1.0f));
-               so_data  (so, fui(1.0f));
-               so_data  (so, fui(1.0f));
-               so_data  (so, fui(1.0f));
-               so_method(so, nvfx->screen->eng3d, 0x1d78, 1);
-               so_data  (so, nvfx->is_nv4x ? 0x110 : 1);
+               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
+               OUT_RINGf(chan, 0.0f);
+               OUT_RINGf(chan, 0.0f);
+               OUT_RINGf(chan, 0.0f);
+               OUT_RINGf(chan, 0.0f);
+               OUT_RINGf(chan, 1.0f);
+               OUT_RINGf(chan, 1.0f);
+               OUT_RINGf(chan, 1.0f);
+               OUT_RINGf(chan, 1.0f);
+               OUT_RING(chan, RING_3D(0x1d78, 1));
+               OUT_RING(chan, nvfx->is_nv4x ? 0x110 : 1);
        }
-
-       so_ref(so, &nvfx->state.hw[NVFX_STATE_VIEWPORT]);
-       so_ref(NULL, &so);
-       return TRUE;
+       return FALSE;
 }
 
 struct nvfx_state_entry nvfx_state_viewport = {
        .validate = nvfx_state_viewport_validate,
        .dirty = {
                .pipe = NVFX_NEW_VIEWPORT | NVFX_NEW_FB | NVFX_NEW_RAST,
-               .hw = NVFX_STATE_VIEWPORT
        }
 };