diff mbox

[RFC,03/11] sync: add timestamps to sync_pts

Message ID 1338939956-17312-4-git-send-email-konkers@android.com
State New
Headers show

Commit Message

Erik Gilling June 5, 2012, 11:45 p.m. UTC
When profiling performance, knowing when various points in the graphics
pipeline finished is very useful.

Signed-off-by: Erik Gilling <konkers@android.com>
---
 drivers/base/sync.c  |    5 +++++
 include/linux/sync.h |    5 +++++
 2 files changed, 10 insertions(+), 0 deletions(-)
diff mbox

Patch

diff --git a/drivers/base/sync.c b/drivers/base/sync.c
index 4a8604b..ea0b664 100644
--- a/drivers/base/sync.c
+++ b/drivers/base/sync.c
@@ -155,12 +155,17 @@  void sync_pt_free(struct sync_pt *pt)
 /* call with pt->parent->active_list_lock held */
 static int _sync_pt_has_signaled(struct sync_pt *pt)
 {
+	int old_status = pt->status;
+
 	if (!pt->status)
 		pt->status = pt->parent->ops->has_signaled(pt);
 
 	if (!pt->status && pt->parent->destroyed)
 		pt->status = -ENOENT;
 
+	if (pt->status != old_status)
+		pt->timestamp = ktime_get();
+
 	return pt->status;
 }
 
diff --git a/include/linux/sync.h b/include/linux/sync.h
index 2e7ee55..b9ee821 100644
--- a/include/linux/sync.h
+++ b/include/linux/sync.h
@@ -16,6 +16,7 @@ 
 #include <linux/types.h>
 #ifdef __KERNEL__
 
+#include <linux/ktime.h>
 #include <linux/list.h>
 #include <linux/spinlock.h>
 #include <linux/wait.h>
@@ -92,6 +93,8 @@  struct sync_timeline {
  * @fence:		sync_fence to which the sync_pt belongs
  * @pt_list:		membership in sync_fence.pt_list_head
  * @status:		1: signaled, 0:active, <0: error
+ * @timestamp:		time which sync_pt status transitioned from active to
+ *			  singaled or error.
  */
 struct sync_pt {
 	struct sync_timeline		*parent;
@@ -104,6 +107,8 @@  struct sync_pt {
 
 	/* protected by parent->active_list_lock */
 	int			status;
+
+	ktime_t			timestamp;
 };
 
 /**