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

Author: Christoph Bumiller <e0425...@student.tuwien.ac.at>
Date:   Fri Mar 29 13:50:44 2013 +0100

nvc0: use fence to check state of queries that don't write sequence

This still isn't optimal, since the fence will signal a bit late,
but better than checking on the bo, which may never be ready if it
is shared (which is likely).

---

 src/gallium/drivers/nvc0/nvc0_query.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/gallium/drivers/nvc0/nvc0_query.c 
b/src/gallium/drivers/nvc0/nvc0_query.c
index 5c4431e..cd0dacd 100644
--- a/src/gallium/drivers/nvc0/nvc0_query.c
+++ b/src/gallium/drivers/nvc0/nvc0_query.c
@@ -46,6 +46,7 @@ struct nvc0_query {
    boolean is64bit;
    uint8_t rotate;
    int nesting; /* only used for occlusion queries */
+   struct nouveau_fence *fence;
    struct nouveau_mm_allocation *mm;
 };
 
@@ -98,6 +99,7 @@ static void
 nvc0_query_destroy(struct pipe_context *pipe, struct pipe_query *pq)
 {
    nvc0_query_allocate(nvc0_context(pipe), nvc0_query(pq), 0);
+   nouveau_fence_ref(NULL, &nvc0_query(pq)->fence);
    FREE(nvc0_query(pq));
 }
 
@@ -337,13 +339,15 @@ nvc0_query_end(struct pipe_context *pipe, struct 
pipe_query *pq)
          nve4_mp_pm_query_end(nvc0, q);
       break;
    }
+   if (q->is64bit)
+      nouveau_fence_ref(nvc0->screen->base.fence.current, &q->fence);
 }
 
 static INLINE void
 nvc0_query_update(struct nouveau_client *cli, struct nvc0_query *q)
 {
    if (q->is64bit) {
-      if (!nouveau_bo_map(q->bo, NOUVEAU_BO_RD | NOUVEAU_BO_NOBLOCK, cli))
+      if (nouveau_fence_signalled(q->fence))
          q->state = NVC0_QUERY_STATE_READY;
    } else {
       if (q->data[0] == q->sequence)

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to