[4.0] Render to Frame Buffer Object.
[platform/core/uifw/dali-adaptor.git] / adaptors / base / interfaces / performance-interface.h
index 25e71fe..0732d10 100644 (file)
@@ -39,21 +39,50 @@ public:
   typedef unsigned short ContextId;   ///< Type to represent a context ID
 
   /**
-   * bitmask of logging options
+   * bitmask of statistics logging options.
+   * Used for output data like min/max/average time spent in event, update,render and custom tasks.
+   * E.g.
+   * Event, min 0.04 ms, max 5.27 ms, total (0.1 secs), avg 0.28 ms, std dev 0.73 ms
+   * Update, min 0.29 ms, max 0.91 ms, total (0.5 secs), avg 0.68 ms, std dev 0.15 ms
+   * Render, min 0.33 ms, max 0.97 ms, total (0.6 secs), avg 0.73 ms, std dev 0.17 ms
+   * TableViewInit, min 76.55 ms, max 76.55 ms, total (0.1 secs), avg 76.55 ms, std dev 0.00 ms
    */
-  enum LogLevel
+  enum StatisticsLogOptions
   {
     DISABLED             = 0,
-    ENABLED              = 1 << 0, ///< Bit 0, log all
-    LOG_UPDATE_RENDER    = 1 << 1, ///< Bit 1, log update and render times
-    LOG_EVENT_PROCESS    = 1 << 2, ///< Bit 2, log event process times
-    LOG_EVENTS_TO_KERNEL = 1 << 3  ///< Bit 3, log all events to kernel trace
+    LOG_EVERYTHING       = 1 << 0, ///< Bit 0 (1), log all statistics to the DALi log
+    LOG_UPDATE_RENDER    = 1 << 1, ///< Bit 1 (2), log update and render statistics to the DALi log
+    LOG_EVENT_PROCESS    = 1 << 2, ///< Bit 2 (4), log event task statistics to the DALi log
+    LOG_CUSTOM_MARKERS   = 1 << 3, ///< Bit 3 (8), log custom marker statistics to the DALi log
+  };
+
+  /**
+   * bitmask of time stamp output options.
+   * E.g. DALI_PERFORMANCE_TIMESTAMP_OUTPUT = 1 dali-demo
+   * Used for logging out time stamped markers for detailed analysis (see MarkerType, for the markers logged)
+   * Typical output would look like:
+   *   379.059025 (seconds), V_SYNC
+   *   379.059066 (seconds), UPDATE_START
+   *   379.059747 (seconds), UPDATE_END
+   *   379.059820 (seconds), RENDER_START
+   *   379.060708 (seconds), RENDER_END
+   *   379.075795 (seconds), V_SYNC
+   *   379.076444 (seconds), MY_CUSTOM_MARKER_START  ( customer marker using PerformanceLogger public API).
+   *   379.077353 (seconds), MY_CUSTOM_MARKER_END  ( customer marker using PerformanceLogger public API).
+   */
+  enum TimeStampOutput
+  {
+    NO_TIME_STAMP_OUTPUT         = 0,
+    OUTPUT_DALI_LOG              = 1 << 0, ///< Bit 0 (1), log markers to DALi log
+    OUTPUT_KERNEL_TRACE          = 1 << 1, ///< Bit 1 (2), log makers to kernel trace
+    OUTPUT_SYSTEM_TRACE          = 1 << 2, ///< Bit 2 (4), log markers to system trace
+    OUTPUT_NETWORK               = 1 << 3, ///< Bit 3 (8), log markers to network client
   };
 
   /**
    * enum for difference performance markers.
    * Please modify the name lookup table in performance-interface.cpp
-   * file if adding new markers.
+   * file if adding new markers (the order must match one to one).
    */
   enum MarkerType
   {
@@ -83,7 +112,7 @@ public:
   virtual ~PerformanceInterface() {};
 
   /**
-   * Add a new context with a given name
+   * @brief Add a new context with a given name
    *
    * @param[in] name The name of the context
    * @return Return the unique id for this context
@@ -91,44 +120,45 @@ public:
   virtual ContextId AddContext( const char* name ) = 0;
 
   /**
-   * Remove a context from use
+   * @brief Remove a context from use
    *
    * @param[in] contextId The ID of the context to remove
    */
   virtual void RemoveContext( ContextId contextId ) = 0;
 
   /**
-   * Add a performance marker
+   * @brief Add a performance marker
    * This function can be called from ANY THREAD.
    * The default context 0 Event/Update/Render is assumed.
-   * @param markerType performance marker type
+   * @param[in] markerType performance marker type
    */
   virtual void AddMarker( MarkerType markerType ) = 0;
 
   /**
-   * Add a performance marker
+   * @brief Add a performance marker for a used defined context
    * This function can be called from ANY THREAD.
-   * @param markerType performance marker type
-   * @param contextId The context of the marker. This must be one generated by AddContext.
+   * @param[in] markerType performance marker type
+   * @param[in] contextId The context of the marker. This must be one generated by AddContext.
    */
   virtual void AddMarker( MarkerType markerType, ContextId contextId ) = 0;
 
   /**
-   * Set the logging level and frequency
-   * @param level 0 = disabled, 1 = enabled
-   * @param logFrequency how often to log out in seconds
+   * @brief Set the logging level and frequency
+   * @param[in] StatisticsLogOptions  0 = disabled, >0 bitmask of StatisticsLogOptions
+   * @param[in] timeStampOutput 0 = disabled, > 0 bitmask of TimeStampOutput options.
+   * @param[in] logFrequency how often to log out in seconds
    */
-  virtual void SetLogging( unsigned int level, unsigned int logFrequency) = 0;
+  virtual void SetLogging( unsigned int statisticsLogOptions, unsigned int timeStampOutput, unsigned int logFrequency) = 0;
 
   /**
-   * Set the logging frequency
+   * @brief Set the logging frequency for an individual context
    *
-   * @param logFrequency how often to log out in seconds
+   * @param[in] logFrequency how often to log out in seconds
    */
   virtual void SetLoggingFrequency( unsigned int logFrequency, ContextId contextId ) = 0;
 
   /**
-   * Set logging on or off for a particular context
+   * @brief Set logging on or off for a particular context
    *
    * @param[in] enable Enable logging or not
    * @param[in] contextId The id of the context to log. This must be one generated by AddContext.