nv50: move magic 0x142c stuff to after state emission
authorBen Skeggs <bskeggs@redhat.com>
Thu, 4 Mar 2010 00:55:50 +0000 (10:55 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 10 Mar 2010 06:29:59 +0000 (16:29 +1000)
src/gallium/drivers/nv50/nv50_state_validate.c
src/gallium/drivers/nv50/nv50_vbo.c

index 12e427d38b3d44109e0ff0b48d615ca0ef0454af..0f2760537274c7e7a30f1ca02e54fa99a7c3354e 100644 (file)
@@ -408,7 +408,8 @@ boolean
 nv50_state_validate(struct nv50_context *nv50, unsigned wait_dwords)
 {
        struct nouveau_channel *chan = nv50->screen->base.channel;
-       unsigned nr_relocs = 128, nr_dwords = wait_dwords + 128;
+       struct nouveau_grobj *tesla = nv50->screen->tesla;
+       unsigned nr_relocs = 128, nr_dwords = wait_dwords + 128 + 4;
        int ret, i;
 
        for (i = 0; i < validate_list_len; i++) {
@@ -466,6 +467,12 @@ nv50_state_validate(struct nv50_context *nv50, unsigned wait_dwords)
         * still.  This can cause all sorts of fun issues.
         */
        nv50_state_flush_notify(chan);
+
+       /* No idea.. */
+       BEGIN_RING(chan, tesla, 0x142c, 1);
+       OUT_RING  (chan, 0);
+       BEGIN_RING(chan, tesla, 0x142c, 1);
+       OUT_RING  (chan, 0);
        return TRUE;
 }
 
index 215dfb74fc25d84c99cee4cfe08cadf1594ac84d..c099afe212b842bb6a622282aa0f47a46bee5a61 100644 (file)
@@ -485,11 +485,6 @@ nv50_draw_arrays(struct pipe_context *pipe, unsigned mode, unsigned start,
                return;
        chan->flush_notify = nv50_state_flush_notify;
 
-       BEGIN_RING(chan, tesla, 0x142c, 1);
-       OUT_RING  (chan, 0);
-       BEGIN_RING(chan, tesla, 0x142c, 1);
-       OUT_RING  (chan, 0);
-
        BEGIN_RING(chan, tesla, NV50TCL_VERTEX_BEGIN, 1);
        OUT_RING  (chan, nv50_prim(mode));
 
@@ -692,11 +687,6 @@ nv50_draw_elements(struct pipe_context *pipe,
                return;
        chan->flush_notify = nv50_state_flush_notify;
 
-       BEGIN_RING(chan, tesla, 0x142c, 1);
-       OUT_RING  (chan, 0);
-       BEGIN_RING(chan, tesla, 0x142c, 1);
-       OUT_RING  (chan, 0);
-
        BEGIN_RING(chan, tesla, NV50TCL_VERTEX_BEGIN, 1);
        OUT_RING  (chan, nv50_prim(mode));