r600: don't enable depth test if there is no depth buffer
[mesa.git] / src / gallium / drivers / nv40 / nv40_query.c
index 57f39cfab0cbfe8e343b876beb9a90a95bf16c62..8ed4a67dd03b2f69885e92a9d2baf138493028b5 100644 (file)
@@ -29,11 +29,10 @@ nv40_query_create(struct pipe_context *pipe, unsigned query_type)
 static void
 nv40_query_destroy(struct pipe_context *pipe, struct pipe_query *pq)
 {
-       struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_query *q = nv40_query(pq);
 
        if (q->object)
-               nv40->nvws->res_free(&q->object);
+               nouveau_resource_free(&q->object);
        FREE(q);
 }
 
@@ -42,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);
 
@@ -50,18 +52,18 @@ nv40_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
         * the existing query to notify completion, but it could be better.
         */
        if (q->object) {
-               uint64 tmp;
+               uint64_t tmp;
                pipe->get_query_result(pipe, pq, 1, &tmp);
        }
 
-       if (nv40->nvws->res_alloc(nv40->screen->query_heap, 1, NULL, &q->object))
+       if (nouveau_resource_alloc(nv40->screen->query_heap, 1, NULL, &q->object))
                assert(0);
-       nv40->nvws->notifier_reset(nv40->screen->query, q->object->start);
+       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;
 }
@@ -71,40 +73,43 @@ 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
 nv40_query_result(struct pipe_context *pipe, struct pipe_query *pq,
-                 boolean wait, uint64 *result)
+                 boolean wait, uint64_t *result)
 {
        struct nv40_context *nv40 = nv40_context(pipe);
        struct nv40_query *q = nv40_query(pq);
-       struct nouveau_winsys *nvws = nv40->nvws;
 
        assert(q->object && q->type == PIPE_QUERY_OCCLUSION_COUNTER);
 
        if (!q->ready) {
                unsigned status;
 
-               status = nvws->notifier_status(nv40->screen->query,
-                                              q->object->start);
+               status = nouveau_notifier_status(nv40->screen->query,
+                                                q->object->start);
                if (status != NV_NOTIFY_STATE_STATUS_COMPLETED) {
                        if (wait == FALSE)
                                return FALSE;
-                       nvws->notifier_wait(nv40->screen->query, q->object->start,
-                                           NV_NOTIFY_STATE_STATUS_COMPLETED,
-                                           0);
+                       nouveau_notifier_wait_status(nv40->screen->query,
+                                             q->object->start,
+                                             NV_NOTIFY_STATE_STATUS_COMPLETED,
+                                             0);
                }
 
-               q->result = nvws->notifier_retval(nv40->screen->query,
-                                                 q->object->start);
+               q->result = nouveau_notifier_return_val(nv40->screen->query,
+                                                       q->object->start);
                q->ready = TRUE;
-               nvws->res_free(&q->object);
+               nouveau_resource_free(&q->object);
        }
 
        *result = q->result;