aboutsummaryrefslogtreecommitdiff
path: root/driver/mali/mali_mjollnir_profiling_gator_api.h
blob: ff00d90cee78e79c1dff955ccfcff6ecbbc85a10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/**
 * Copyright (C) ARM Limited 2013-2014. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 */

#ifndef __MALI_MJOLLNIR_PROFILING_GATOR_API_H__
#define __MALI_MJOLLNIR_PROFILING_GATOR_API_H__

#ifdef __cplusplus
extern "C"
{
#endif


/*
 * The number of processor cores.  Update to suit your hardware implementation.
 */
#define MAX_NUM_FP_CORES            (4)
#define MAX_NUM_VP_CORES            (1)
#define MAX_NUM_L2_CACHE_CORES      (1)

enum counters
{
    /* Timeline activity */
    ACTIVITY_VP_0 = 0,
    ACTIVITY_FP_0,
    ACTIVITY_FP_1,
    ACTIVITY_FP_2,
    ACTIVITY_FP_3,

    /* L2 cache counters */
    COUNTER_L2_0_C0,
    COUNTER_L2_0_C1,

    /* Vertex processor counters */
    COUNTER_VP_0_C0,
    COUNTER_VP_0_C1,

    /* Fragment processor counters */
    COUNTER_FP_0_C0,
    COUNTER_FP_0_C1,
    COUNTER_FP_1_C0,
    COUNTER_FP_1_C1,
    COUNTER_FP_2_C0,
    COUNTER_FP_2_C1,
    COUNTER_FP_3_C0,
    COUNTER_FP_3_C1,

    /* EGL Software Counters */
    COUNTER_EGL_BLIT_TIME,

    /* GLES Software Counters */
    COUNTER_GLES_DRAW_ELEMENTS_CALLS,
    COUNTER_GLES_DRAW_ELEMENTS_NUM_INDICES,
    COUNTER_GLES_DRAW_ELEMENTS_NUM_TRANSFORMED,
    COUNTER_GLES_DRAW_ARRAYS_CALLS,
    COUNTER_GLES_DRAW_ARRAYS_NUM_TRANSFORMED,
    COUNTER_GLES_DRAW_POINTS,
    COUNTER_GLES_DRAW_LINES,
    COUNTER_GLES_DRAW_LINE_LOOP,
    COUNTER_GLES_DRAW_LINE_STRIP,
    COUNTER_GLES_DRAW_TRIANGLES,
    COUNTER_GLES_DRAW_TRIANGLE_STRIP,
    COUNTER_GLES_DRAW_TRIANGLE_FAN,
    COUNTER_GLES_NON_VBO_DATA_COPY_TIME,
    COUNTER_GLES_UNIFORM_BYTES_COPIED_TO_MALI,
    COUNTER_GLES_UPLOAD_TEXTURE_TIME,
    COUNTER_GLES_UPLOAD_VBO_TIME,
    COUNTER_GLES_NUM_FLUSHES,
    COUNTER_GLES_NUM_VSHADERS_GENERATED,
    COUNTER_GLES_NUM_FSHADERS_GENERATED,
    COUNTER_GLES_VSHADER_GEN_TIME,
    COUNTER_GLES_FSHADER_GEN_TIME,
    COUNTER_GLES_INPUT_TRIANGLES,
    COUNTER_GLES_VXCACHE_HIT,
    COUNTER_GLES_VXCACHE_MISS,
    COUNTER_GLES_VXCACHE_COLLISION,
    COUNTER_GLES_CULLED_TRIANGLES,
    COUNTER_GLES_CULLED_LINES,
    COUNTER_GLES_BACKFACE_TRIANGLES,
    COUNTER_GLES_GBCLIP_TRIANGLES,
    COUNTER_GLES_GBCLIP_LINES,
    COUNTER_GLES_TRIANGLES_DRAWN,
    COUNTER_GLES_DRAWCALL_TIME,
    COUNTER_GLES_TRIANGLES_COUNT,
    COUNTER_GLES_INDEPENDENT_TRIANGLES_COUNT,
    COUNTER_GLES_STRIP_TRIANGLES_COUNT,
    COUNTER_GLES_FAN_TRIANGLES_COUNT,
    COUNTER_GLES_LINES_COUNT,
    COUNTER_GLES_INDEPENDENT_LINES_COUNT,
    COUNTER_GLES_STRIP_LINES_COUNT,
    COUNTER_GLES_LOOP_LINES_COUNT,

    COUNTER_FILMSTRIP,
    COUNTER_FREQUENCY,
    COUNTER_VOLTAGE,

    NUMBER_OF_EVENTS
};

#define FIRST_ACTIVITY_EVENT    ACTIVITY_VP_0
#define LAST_ACTIVITY_EVENT     ACTIVITY_FP_3

#define FIRST_HW_COUNTER        COUNTER_L2_0_C0
#define LAST_HW_COUNTER         COUNTER_FP_3_C1

#define FIRST_SW_COUNTER        COUNTER_EGL_BLIT_TIME
#define LAST_SW_COUNTER         COUNTER_GLES_LOOP_LINES_COUNT

/* Signifies that the system is able to report voltage and frequency numbers. */
#define DVFS_REPORTED_BY_DDK 1

/**
 * Structure to pass performance counter data of a Mali core
 */
typedef struct _mali_profiling_core_counters
{
    u32 source0;
    u32 value0;
    u32 source1;
    u32 value1;
} _mali_profiling_core_counters;

/*
 * For compatibility with utgard.
 */
typedef struct _mali_profiling_l2_counter_values
{
    struct _mali_profiling_core_counters cores[MAX_NUM_L2_CACHE_CORES];
} _mali_profiling_l2_counter_values;

typedef struct _mali_profiling_mali_version
{
    u32 mali_product_id;
    u32 mali_version_major;
    u32 mali_version_minor;
    u32 num_of_l2_cores;
    u32 num_of_fp_cores;
    u32 num_of_vp_cores;
} _mali_profiling_mali_version;

extern void _mali_profiling_get_mali_version(struct _mali_profiling_mali_version *values);
extern u32 _mali_profiling_get_l2_counters(_mali_profiling_l2_counter_values *values);

/*
 * List of possible actions allowing DDK to be controlled by Streamline.
 * The following numbers are used by DDK to control the frame buffer dumping.
 */
#define FBDUMP_CONTROL_ENABLE (1)
#define FBDUMP_CONTROL_RATE (2)
#define SW_COUNTER_ENABLE      (3)
#define FBDUMP_CONTROL_RESIZE_FACTOR (4)


#ifdef __cplusplus
}
#endif

#endif /* __MALI_MJOLLNIR_PROFILING_GATOR_API_H__ */