From da07e1b6837616ef101d1374dbff322694d6a7d9 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 26 Nov 2013 16:32:13 -0800 Subject: [PATCH] i965: Fix OACONTROL assertion failures on Ironlake. I guarded half of the callers to start/stop_oa_counters with generation checks, but missed the other half (which were added later). OACONTROL doesn't exist on Ironlake, so we better not write it. Also, there's no need---Ironlake's performance counters are always running. This patch moves the generation checks into start/stop_oa_counters, rather than requiring the caller to do them. Fixes assertion failures in Piglit's AMD_performance_monitor/measure. Signed-off-by: Kenneth Graunke Reviewed-by: Eric Anholt --- src/mesa/drivers/dri/i965/brw_performance_monitor.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_performance_monitor.c b/src/mesa/drivers/dri/i965/brw_performance_monitor.c index 9bddd8edf89..ff3cb97b1e1 100644 --- a/src/mesa/drivers/dri/i965/brw_performance_monitor.c +++ b/src/mesa/drivers/dri/i965/brw_performance_monitor.c @@ -642,6 +642,8 @@ start_oa_counters(struct brw_context *brw) /* Pick the counter format which gives us all the counters. */ switch (brw->gen) { + case 5: + return; /* Ironlake counters are always running. */ case 6: counter_format = 1; /* 0b001 */ break; @@ -667,6 +669,10 @@ start_oa_counters(struct brw_context *brw) static void stop_oa_counters(struct brw_context *brw) { + /* Ironlake counters never stop. */ + if (brw->gen == 5) + return; + BEGIN_BATCH(3); OUT_BATCH(MI_LOAD_REGISTER_IMM | (3 - 2)); OUT_BATCH(OACONTROL); @@ -1367,8 +1373,7 @@ brw_perf_monitor_new_batch(struct brw_context *brw) if (brw->perfmon.oa_users == 0) return; - if (brw->gen >= 6) - start_oa_counters(brw); + start_oa_counters(brw); /* Make sure bookend_bo has enough space for a pair of snapshots. * If not, "wrap" the BO: gather up any results so far, and start from @@ -1405,8 +1410,7 @@ brw_perf_monitor_finish_batch(struct brw_context *brw) emit_bookend_snapshot(brw); - if (brw->gen >= 6) - stop_oa_counters(brw); + stop_oa_counters(brw); } /******************************************************************************/ -- 2.30.2