mesa: use _mesa_delete_query in drivers
[mesa.git] / src / mesa / drivers / dri / i965 / brw_queryobj.c
index f667f55b6bfe33a1305888be90b1a5617450c32d..c48f85392759dec332b31a3499659e287df11b18 100644 (file)
  * needs.
  */
 #include "main/imports.h"
+#include "main/queryobj.h"
 
 #include "brw_context.h"
 #include "brw_defines.h"
 #include "brw_state.h"
 #include "intel_batchbuffer.h"
 
-uint64_t
-brw_timebase_scale(struct brw_context *brw, uint64_t gpu_timestamp)
-{
-   const struct gen_device_info *devinfo = &brw->screen->devinfo;
-
-   return (1000000000ull * gpu_timestamp) / devinfo->timestamp_frequency;
-}
-
 /* As best we know currently, the Gen HW timestamps are 36bits across
  * all platforms, which we need to account for when calculating a
  * delta to measure elapsed time.
@@ -134,7 +127,7 @@ brw_queryobj_get_results(struct gl_context *ctx,
                         struct brw_query_object *query)
 {
    struct brw_context *brw = brw_context(ctx);
-   const struct gen_device_info *devinfo = &brw->screen->devinfo;
+   UNUSED const struct gen_device_info *devinfo = &brw->screen->devinfo;
 
    int i;
    uint64_t *results;
@@ -164,12 +157,12 @@ brw_queryobj_get_results(struct gl_context *ctx,
        * Subtract the two and convert to nanoseconds.
        */
       query->Base.Result = brw_raw_timestamp_delta(brw, results[0], results[1]);
-      query->Base.Result = brw_timebase_scale(brw, query->Base.Result);
+      query->Base.Result = gen_device_info_timebase_scale(devinfo, query->Base.Result);
       break;
 
    case GL_TIMESTAMP:
       /* The query BO contains a single timestamp value in results[0]. */
-      query->Base.Result = brw_timebase_scale(brw, results[0]);
+      query->Base.Result = gen_device_info_timebase_scale(devinfo, results[0]);
 
       /* Ensure the scaled timestamp overflows according to
        * GL_QUERY_COUNTER_BITS
@@ -247,7 +240,7 @@ brw_delete_query(struct gl_context *ctx, struct gl_query_object *q)
    struct brw_query_object *query = (struct brw_query_object *)q;
 
    brw_bo_unreference(query->bo);
-   free(query);
+   _mesa_delete_query(ctx, q);
 }
 
 /**
@@ -261,7 +254,7 @@ brw_begin_query(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct brw_context *brw = brw_context(ctx);
    struct brw_query_object *query = (struct brw_query_object *)q;
-   const struct gen_device_info *devinfo = &brw->screen->devinfo;
+   UNUSED const struct gen_device_info *devinfo = &brw->screen->devinfo;
 
    assert(devinfo->gen < 6);
 
@@ -287,7 +280,8 @@ brw_begin_query(struct gl_context *ctx, struct gl_query_object *q)
        * the system was doing other work, such as running other applications.
        */
       brw_bo_unreference(query->bo);
-      query->bo = brw_bo_alloc(brw->bufmgr, "timer query", 4096, 4096);
+      query->bo =
+         brw_bo_alloc(brw->bufmgr, "timer query", 4096, BRW_MEMZONE_OTHER);
       brw_write_timestamp(brw, query->bo, 0);
       break;
 
@@ -333,7 +327,7 @@ brw_end_query(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct brw_context *brw = brw_context(ctx);
    struct brw_query_object *query = (struct brw_query_object *)q;
-   const struct gen_device_info *devinfo = &brw->screen->devinfo;
+   UNUSED const struct gen_device_info *devinfo = &brw->screen->devinfo;
 
    assert(devinfo->gen < 6);
 
@@ -387,7 +381,8 @@ brw_end_query(struct gl_context *ctx, struct gl_query_object *q)
 static void brw_wait_query(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct brw_query_object *query = (struct brw_query_object *)q;
-   const struct gen_device_info *devinfo = &brw_context(ctx)->screen->devinfo;
+   UNUSED const struct gen_device_info *devinfo =
+      &brw_context(ctx)->screen->devinfo;
 
    assert(devinfo->gen < 6);
 
@@ -405,7 +400,7 @@ static void brw_check_query(struct gl_context *ctx, struct gl_query_object *q)
 {
    struct brw_context *brw = brw_context(ctx);
    struct brw_query_object *query = (struct brw_query_object *)q;
-   const struct gen_device_info *devinfo = &brw->screen->devinfo;
+   UNUSED const struct gen_device_info *devinfo = &brw->screen->devinfo;
 
    assert(devinfo->gen < 6);
 
@@ -435,7 +430,7 @@ static void
 ensure_bo_has_space(struct gl_context *ctx, struct brw_query_object *query)
 {
    struct brw_context *brw = brw_context(ctx);
-   const struct gen_device_info *devinfo = &brw->screen->devinfo;
+   UNUSED const struct gen_device_info *devinfo = &brw->screen->devinfo;
 
    assert(devinfo->gen < 6);
 
@@ -449,7 +444,7 @@ ensure_bo_has_space(struct gl_context *ctx, struct brw_query_object *query)
          brw_queryobj_get_results(ctx, query);
       }
 
-      query->bo = brw_bo_alloc(brw->bufmgr, "query", 4096, 1);
+      query->bo = brw_bo_alloc(brw->bufmgr, "query", 4096, BRW_MEMZONE_OTHER);
       query->last_index = 0;
    }
 }
@@ -529,7 +524,8 @@ brw_query_counter(struct gl_context *ctx, struct gl_query_object *q)
    assert(q->Target == GL_TIMESTAMP);
 
    brw_bo_unreference(query->bo);
-   query->bo = brw_bo_alloc(brw->bufmgr, "timestamp query", 4096, 4096);
+   query->bo =
+      brw_bo_alloc(brw->bufmgr, "timestamp query", 4096, BRW_MEMZONE_OTHER);
    brw_write_timestamp(brw, query->bo, 0);
 
    query->flushed = false;
@@ -544,6 +540,7 @@ static uint64_t
 brw_get_timestamp(struct gl_context *ctx)
 {
    struct brw_context *brw = brw_context(ctx);
+   const struct gen_device_info *devinfo = &brw->screen->devinfo;
    uint64_t result = 0;
 
    switch (brw->screen->hw_has_timestamp) {
@@ -560,7 +557,7 @@ brw_get_timestamp(struct gl_context *ctx)
    }
 
    /* Scale to nanosecond units */
-   result = brw_timebase_scale(brw, result);
+   result = gen_device_info_timebase_scale(devinfo, result);
 
    /* Ensure the scaled timestamp overflows according to
     * GL_QUERY_COUNTER_BITS.  Technically this isn't required if