summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>2019-12-03 16:12:03 +0200
committerDylan Baker <dylan@pnwbakers.com>2019-12-04 13:41:07 -0800
commit4399795fbd5cb305a1f1335248163f075a7933d6 (patch)
tree503627fe44eb6802f0bdb18fb8363ef7a967cfc2
parentd362ba77ce870cec0d8ee88f29ef8fe2a7d5d964 (diff)
downloadmesa-4399795fbd5cb305a1f1335248163f075a7933d6.tar.gz
mesa-4399795fbd5cb305a1f1335248163f075a7933d6.tar.bz2
mesa-4399795fbd5cb305a1f1335248163f075a7933d6.zip
intel/perf: set read buffer len to 0 to identify empty buffer
We always add an empty buffer in the list when creating the query. Let's set the len appropriately so that we can recognize it when we read OA reports up to the end of a query. We were using an 0 timestamp value associated with the empty buffer and incorrectly assuming this was a valid value. In turn that led to not reading enough reports and resulted in deltas added to our counter values which should have been discarded because those would be flagged for a different context. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: <mesa-stable@lists.freedesktop.org> Reviewed-by: Mark Janes <mark.a.janes@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (cherry picked from commit 9d0a5c817ce21adabeda5153035b30609e2862b2)
-rw-r--r--src/intel/perf/gen_perf.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/intel/perf/gen_perf.c b/src/intel/perf/gen_perf.c
index 6221af3d0f1..7073afe8f44 100644
--- a/src/intel/perf/gen_perf.c
+++ b/src/intel/perf/gen_perf.c
@@ -1460,8 +1460,8 @@ get_free_sample_buf(struct gen_perf_context *perf_ctx)
exec_node_init(&buf->link);
buf->refcount = 0;
- buf->len = 0;
}
+ buf->len = 0;
return buf;
}
@@ -1978,7 +1978,8 @@ read_oa_samples_until(struct gen_perf_context *perf_ctx,
exec_list_get_tail(&perf_ctx->sample_buffers);
struct oa_sample_buf *tail_buf =
exec_node_data(struct oa_sample_buf, tail_node, link);
- uint32_t last_timestamp = tail_buf->last_timestamp;
+ uint32_t last_timestamp =
+ tail_buf->len == 0 ? start_timestamp : tail_buf->last_timestamp;
while (1) {
struct oa_sample_buf *buf = get_free_sample_buf(perf_ctx);