blob: 07b8e725f29aacddb936cb10e4cbaad9b74b5f30 [file] [log] [blame]
/****************************************************************************
*
* Copyright (C) 2005 - 2014 by Vivante Corp.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the license, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*****************************************************************************/
#ifndef __gc_hal_statistics_h_
#define __gc_hal_statistics_h_
#define VIV_STAT_ENABLE_STATISTICS 0
/* Toal number of frames for which the frame time is accounted. We have storage
to keep frame times for last this many frames.
*/
#define VIV_STAT_FRAME_BUFFER_SIZE 30
/*
Total number of frames sampled for a mode. This means
# of frames for HZ Current : VIV_STAT_EARLY_Z_SAMPLE_FRAMES
# of frames for HZ Switched : VIV_STAT_EARLY_Z_SAMPLE_FRAMES
+
--------------------------------------------------------
: (2 * VIV_STAT_EARLY_Z_SAMPLE_FRAMES) frames needed
IMPORTANT: This total must be smaller than VIV_STAT_FRAME_BUFFER_SIZE
*/
#define VIV_STAT_EARLY_Z_SAMPLE_FRAMES 7
#define VIV_STAT_EARLY_Z_LATENCY_FRAMES 2
/* Multiplication factor for previous Hz off mode. Make it more than 1.0 to advertise HZ on.*/
#define VIV_STAT_EARLY_Z_FACTOR (1.05f)
/* Defines the statistical data keys monitored by the statistics module */
typedef enum _gceSTATISTICS
{
gcvFRAME_FPS = 1,
}
gceSTATISTICS;
/* HAL statistics information. */
typedef struct _gcsSTATISTICS_EARLYZ
{
gctUINT switchBackCount;
gctUINT nextCheckPoint;
gctBOOL disabled;
}
gcsSTATISTICS_EARLYZ;
/* HAL statistics information. */
typedef struct _gcsSTATISTICS
{
gctUINT64 frameTime[VIV_STAT_FRAME_BUFFER_SIZE];
gctUINT64 previousFrameTime;
gctUINT frame;
gcsSTATISTICS_EARLYZ earlyZ;
}
gcsSTATISTICS;
/* Add a frame based data into current statistics. */
void
gcfSTATISTICS_AddData(
IN gceSTATISTICS Key,
IN gctUINT Value
);
/* Marks the frame end and triggers statistical calculations and decisions.*/
void
gcfSTATISTICS_MarkFrameEnd (
void
);
/* Sets whether the dynmaic HZ is disabled or not .*/
void
gcfSTATISTICS_DisableDynamicEarlyZ (
IN gctBOOL Disabled
);
#endif /*__gc_hal_statistics_h_ */