[Mesa-dev] [PATCH 1/3] i965: Fix OACONTROL assertion failures on Ironlake.
Kenneth Graunke
kenneth at whitecape.org
Tue Nov 26 16:32:13 PST 2013
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 <kenneth at whitecape.org>
Cc: Eric Anholt <eric at anholt.net>
---
src/mesa/drivers/dri/i965/brw_performance_monitor.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
These are not candidates for 10.0 since AMD_performance_monitor support
landed after the branch point. They're bug fixes for master only.
diff --git a/src/mesa/drivers/dri/i965/brw_performance_monitor.c b/src/mesa/drivers/dri/i965/brw_performance_monitor.c
index 9bddd8e..ff3cb97 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);
}
/******************************************************************************/
--
1.8.4.2
More information about the mesa-dev
mailing list