[igt-dev] [PATCH i-g-t v2 1/1] tools/intel_perf_counters: Remove libdrm dependency
Zbigniew Kempczyński
zbigniew.kempczynski at intel.com
Mon Nov 2 08:58:44 UTC 2020
On Fri, Oct 02, 2020 at 12:59:37PM +0200, Dominik Grzegorzek wrote:
> Use intel_bb / intel_buf to remove libdrm dependency.
>
> Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> tools/intel_perf_counters.c | 109 ++++++++++++++++++------------------
> 1 file changed, 56 insertions(+), 53 deletions(-)
>
> diff --git a/tools/intel_perf_counters.c b/tools/intel_perf_counters.c
> index 5824d9c1..bef66650 100644
> --- a/tools/intel_perf_counters.c
> +++ b/tools/intel_perf_counters.c
> @@ -46,9 +46,9 @@
> #include "i915_drm.h"
> #include "drmtest.h"
> #include "intel_io.h"
> -#include "intel_bufmgr.h"
> #include "intel_batchbuffer.h"
> #include "intel_chipset.h"
> +#include "intel_bufops.h"
>
> #define GEN5_COUNTER_COUNT 29
>
> @@ -298,8 +298,8 @@ const int gen7_counter_format = 5; /* 0b101 */
> int have_totals = 0;
> uint32_t *totals;
> uint32_t *last_counter;
> -static drm_intel_bufmgr *bufmgr;
> -struct intel_batchbuffer *batch;
> +static struct buf_ops *bops;
> +static struct intel_bb *ibb;
>
> /* DW0 */
> #define GEN5_MI_REPORT_PERF_COUNT ((0x26 << 23) | (3 - 2))
> @@ -327,30 +327,29 @@ static void
> gen5_get_counters(void)
> {
> int i;
> - drm_intel_bo *stats_bo;
> + struct intel_buf *stats_buf;
> uint32_t *stats_result;
>
> - stats_bo = drm_intel_bo_alloc(bufmgr, "stats", 4096, 4096);
> + stats_buf = intel_buf_create(bops, 4096, 1, 8, 0, I915_TILING_NONE,
> + I915_COMPRESSION_NONE);
> + intel_bb_add_intel_buf(ibb, stats_buf, true);
>
> - BEGIN_BATCH(6, 2);
> - OUT_BATCH(GEN5_MI_REPORT_PERF_COUNT | MI_COUNTER_SET_0);
> - OUT_RELOC(stats_bo,
> - I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
> - 0);
> - OUT_BATCH(0);
> + intel_bb_out(ibb, GEN5_MI_REPORT_PERF_COUNT | MI_COUNTER_SET_0);
> + intel_bb_emit_reloc(ibb, stats_buf->handle, I915_GEM_DOMAIN_INSTRUCTION,
> + I915_GEM_DOMAIN_INSTRUCTION, 0,
> + stats_buf->addr.offset);
> + intel_bb_out(ibb, 0);
>
> - OUT_BATCH(GEN5_MI_REPORT_PERF_COUNT | MI_COUNTER_SET_1);
> - OUT_RELOC(stats_bo,
> - I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
> - 64);
> - OUT_BATCH(0);
> + intel_bb_out(ibb, GEN5_MI_REPORT_PERF_COUNT | MI_COUNTER_SET_1);
> + intel_bb_emit_reloc(ibb, stats_buf->handle, I915_GEM_DOMAIN_INSTRUCTION,
> + I915_GEM_DOMAIN_INSTRUCTION, 64,
> + stats_buf->addr.offset);
> + intel_bb_out(ibb, 0);
>
> - ADVANCE_BATCH();
> + intel_bb_flush_blit(ibb);
>
> - intel_batchbuffer_flush(batch);
> -
> - drm_intel_bo_map(stats_bo, 0);
> - stats_result = stats_bo->virtual;
> + intel_buf_cpu_map(stats_buf, false);
> + stats_result = stats_buf->ptr;
> /* skip REPORT_ID, TIMESTAMP */
> stats_result += 3;
> for (i = 0 ; i < GEN5_COUNTER_COUNT; i++) {
> @@ -358,15 +357,15 @@ gen5_get_counters(void)
> last_counter[i] = stats_result[i];
> }
>
> - drm_intel_bo_unmap(stats_bo);
> - drm_intel_bo_unreference(stats_bo);
> + intel_buf_unmap(stats_buf);
> + intel_buf_destroy(stats_buf);
> }
>
> static void
> gen6_get_counters(void)
> {
> int i;
> - drm_intel_bo *stats_bo;
> + struct intel_buf *stats_buf;
> uint32_t *stats_result;
>
> /* Map from counter names to their index in the buffer object */
> @@ -378,49 +377,50 @@ gen6_get_counters(void)
> 31, 30, 29, 28, 27, 26, 25, 24,
> };
>
> - stats_bo = drm_intel_bo_alloc(bufmgr, "stats", 4096, 4096);
> + stats_buf = intel_buf_create(bops, 4096, 1, 8, 4096, I915_TILING_NONE,
In this case alignment doesn't matter but remember this is for stride,
not buffer size. I would change it to 0 to avoid confusion for readers.
Similar below in intel_buf_create(). Then:
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
--
Zbigniew
> + I915_COMPRESSION_NONE);
> + intel_bb_add_intel_buf(ibb, stats_buf, true);
>
> - BEGIN_BATCH(3, 1);
> - OUT_BATCH(GEN6_MI_REPORT_PERF_COUNT | (3 - 2));
> - OUT_RELOC(stats_bo,
> - I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
> - MI_COUNTER_ADDRESS_GTT);
> - OUT_BATCH(0);
> - ADVANCE_BATCH();
> + intel_bb_out(ibb, GEN6_MI_REPORT_PERF_COUNT | (3 - 2));
> + intel_bb_emit_reloc(ibb, stats_buf->handle, I915_GEM_DOMAIN_INSTRUCTION,
> + I915_GEM_DOMAIN_INSTRUCTION,
> + MI_COUNTER_ADDRESS_GTT, stats_buf->addr.offset);
> + intel_bb_out(ibb, 0);
>
> - intel_batchbuffer_flush_on_ring(batch, I915_EXEC_RENDER);
> + intel_bb_flush_render(ibb);
>
> - drm_intel_bo_map(stats_bo, 0);
> - stats_result = stats_bo->virtual;
> + intel_buf_cpu_map(stats_buf, 0);
> + stats_result = stats_buf->ptr;
> for (i = 0; i < GEN6_COUNTER_COUNT; i++) {
> totals[i] += stats_result[buffer_index[i]] - last_counter[i];
> last_counter[i] = stats_result[buffer_index[i]];
> }
>
> - drm_intel_bo_unmap(stats_bo);
> - drm_intel_bo_unreference(stats_bo);
> + intel_buf_unmap(stats_buf);
> + intel_buf_destroy(stats_buf);
> }
>
> static void
> gen7_get_counters(void)
> {
> int i;
> - drm_intel_bo *stats_bo;
> + struct intel_buf *stats_buf;
> uint32_t *stats_result;
>
> - stats_bo = drm_intel_bo_alloc(bufmgr, "stats", 4096, 4096);
> + stats_buf = intel_buf_create(bops, 4096, 1, 8, 4096, I915_TILING_NONE,
> + I915_COMPRESSION_NONE);
> + intel_bb_add_intel_buf(ibb, stats_buf, true);
>
> - BEGIN_BATCH(3, 1);
> - OUT_BATCH(GEN6_MI_REPORT_PERF_COUNT | (3 - 2));
> - OUT_RELOC(stats_bo,
> - I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, 0);
> - OUT_BATCH(0);
> - ADVANCE_BATCH();
> + intel_bb_out(ibb, GEN6_MI_REPORT_PERF_COUNT | (3 - 2));
> + intel_bb_emit_reloc(ibb, stats_buf->handle, I915_GEM_DOMAIN_INSTRUCTION,
> + I915_GEM_DOMAIN_INSTRUCTION, 0,
> + stats_buf->addr.offset);
> + intel_bb_out(ibb, 0);
>
> - intel_batchbuffer_flush_on_ring(batch, I915_EXEC_RENDER);
> + intel_bb_flush_render(ibb);
>
> - drm_intel_bo_map(stats_bo, 0);
> - stats_result = stats_bo->virtual;
> + intel_buf_cpu_map(stats_buf, false);
> + stats_result = stats_buf->ptr;
> /* skip REPORT_ID, TIMESTAMP */
> stats_result += 3;
> for (i = 0; i < GEN7_COUNTER_COUNT; i++) {
> @@ -431,8 +431,8 @@ gen7_get_counters(void)
> last_counter[i] = stats_result[i];
> }
>
> - drm_intel_bo_unmap(stats_bo);
> - drm_intel_bo_unreference(stats_bo);
> + intel_buf_unmap(stats_buf);
> + intel_buf_destroy(stats_buf);
> }
>
> #define STATS_CHECK_FREQUENCY 100
> @@ -458,9 +458,8 @@ main(int argc, char **argv)
> fd = drm_open_driver(DRIVER_INTEL);
> devid = intel_get_drm_devid(fd);
>
> - bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
> - drm_intel_bufmgr_gem_enable_reuse(bufmgr);
> - batch = intel_batchbuffer_alloc(bufmgr, devid);
> + bops = buf_ops_create(fd);
> + ibb = intel_bb_create(fd, 4096);
>
> if (IS_GEN5(devid)) {
> counter_name = gen5_counter_names;
> @@ -531,5 +530,9 @@ main(int argc, char **argv)
> free(totals);
> free(last_counter);
>
> + intel_bb_destroy(ibb);
> + buf_ops_destroy(bops);
> + close(fd);
> +
> return 0;
> }
> --
> 2.20.1
>
More information about the igt-dev
mailing list