st/mesa: fix glCopyPixels bugs/crashes when src region need clipping
[mesa.git] / src / gallium / drivers / nv40 / nv40_query.c
index 7874aedd428ae61e79c47107a3f9b33b865d5a22..8ed4a67dd03b2f69885e92a9d2baf138493028b5 100644 (file)
@@ -41,6 +41,9 @@ nv40_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
 {
        struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_query *q = nv40_query(pq);
+       struct nv40_screen *screen = nv40->screen;
+       struct nouveau_channel *chan = screen->base.channel;
+       struct nouveau_grobj *curie = screen->curie;
 
        assert(q->type == PIPE_QUERY_OCCLUSION_COUNTER);
 
@@ -57,10 +60,10 @@ nv40_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
                assert(0);
        nouveau_notifier_reset(nv40->screen->query, q->object->start);
 
-       BEGIN_RING(curie, NV40TCL_QUERY_RESET, 1);
-       OUT_RING  (1);
-       BEGIN_RING(curie, NV40TCL_QUERY_UNK17CC, 1);
-       OUT_RING  (1);
+       BEGIN_RING(chan, curie, NV40TCL_QUERY_RESET, 1);
+       OUT_RING  (chan, 1);
+       BEGIN_RING(chan, curie, NV40TCL_QUERY_UNK17CC, 1);
+       OUT_RING  (chan, 1);
 
        q->ready = FALSE;
 }
@@ -70,11 +73,14 @@ nv40_query_end(struct pipe_context *pipe, struct pipe_query *pq)
 {
        struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_query *q = nv40_query(pq);
+       struct nv40_screen *screen = nv40->screen;
+       struct nouveau_channel *chan = screen->base.channel;
+       struct nouveau_grobj *curie = screen->curie;
 
-       BEGIN_RING(curie, NV40TCL_QUERY_GET, 1);
-       OUT_RING  ((0x01 << NV40TCL_QUERY_GET_UNK24_SHIFT) |
+       BEGIN_RING(chan, curie, NV40TCL_QUERY_GET, 1);
+       OUT_RING  (chan, (0x01 << NV40TCL_QUERY_GET_UNK24_SHIFT) |
                   ((q->object->start * 32) << NV40TCL_QUERY_GET_OFFSET_SHIFT));
-       FIRE_RING(NULL);
+       FIRE_RING(chan);
 }
 
 static boolean