forked from marazmista/radeon-profile
/
radeon_profile.h
275 lines (255 loc) · 9.69 KB
/
radeon_profile.h
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
#ifndef RADEON_PROFILE_H
#define RADEON_PROFILE_H
#include "gpu.h"
#include "daemonComm.h"
#include "execbin.h"
#include "rpevent.h"
#include "components/rpplot.h"
#include "components/pieprogressbar.h"
#include "components/topbarcomponents.h"
#include "daemonComm.h"
#include <QMainWindow>
#include <QString>
#include <QVector>
#include <QSystemTrayIcon>
#include <QEvent>
#include <QTreeWidgetItem>
#include <QProcessEnvironment>
#include <QList>
#include <QListWidgetItem>
#include <QButtonGroup>
#include <QXmlStreamWriter>
#define minFanStepTemperature 0
#define maxFanStepTemperature 100
#define minFanStepSpeed 0
#define maxFanStepSpeed 100
#define appVersion 20190311
namespace Ui {
class radeon_profile;
}
class radeon_profile : public QMainWindow
{
Q_OBJECT
enum ItemValues {
PROFILE_NAME,
BINARY,
BINARY_PARAMS,
ENV_SETTINGS,
LOG_FILE,
LOG_FILE_DATE_APPEND
};
enum OcSeriesType {
CORE_FREQUENCY,
CORE_VOLTAGE,
MEM_FREQUENCY,
MEM_VOLTAGE
};
enum AxisType {
FREQUENCY,
VOLTAGE
};
public:
explicit radeon_profile(QWidget *parent = 0);
~radeon_profile();
static DaemonComm dcomm;
private slots:
void timerEvent();
void iconActivated(QSystemTrayIcon::ActivationReason reason);
void forceAuto();
void forceLow();
void forceHigh();
void setBattery();
void setBalanced();
void setPerformance();
void resetMinMax();
void gpuChanged();
void closeEvent(QCloseEvent *e);
void closeFromTray();
void on_spin_timerInterval_valueChanged(double arg1);
void refreshBtnClicked();
void on_cb_stats_clicked(bool checked);
void copyGlxInfoToClipboard();
void copyConnectorsToClipboard();
void resetStats();
void on_cb_alternateRow_clicked(bool checked);
void on_chProfile_clicked();
void on_btn_cancel_clicked();
void on_btn_addExecProfile_clicked();
void on_list_vaules_itemClicked(QListWidgetItem *item);
void on_list_variables_itemClicked(QListWidgetItem *item);
void on_btn_modifyExecProfile_clicked();
void on_btn_ok_clicked();
void on_btn_removeExecProfile_clicked();
void on_btn_selectBinary_clicked();
void on_btn_selectLog_clicked();
void on_cb_manualEdit_clicked(bool checked);
void on_btn_runExecProfile_clicked();
void on_btn_viewOutput_clicked();
void btnBackToProfilesClicked();
void on_list_execProfiles_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_tabs_execOutputs_tabCloseRequested(int index);
void on_btn_pwmFixedApply_clicked();
void on_btn_pwmFixed_clicked();
void on_btn_pwmAuto_clicked();
void on_btn_pwmProfile_clicked();
void setPowerLevelFromCombo();
void on_btn_fanInfo_clicked();
void on_btn_addFanStep_clicked();
void on_btn_removeFanStep_clicked();
void on_list_fanSteps_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_btn_applyOverclock_clicked();
void on_btn_activateFanProfile_clicked();
void on_btn_removeFanProfile_clicked();
void on_btn_saveFanProfile_clicked();
void on_btn_saveAsFanProfile_clicked();
void fanProfileMenuActionClicked(QAction *a);
void on_btn_addEvent_clicked();
void on_list_events_itemChanged(QTreeWidgetItem *item, int column);
void on_btn_eventsInfo_clicked();
void on_btn_modifyEvent_clicked();
void on_btn_removeEvent_clicked();
void on_btn_revokeEvent_clicked();
void on_list_events_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_btn_saveAll_clicked();
void setPowerLevel(int level);
void on_btn_configurePlots_clicked();
void on_btn_applySavePlotsDefinitons_clicked();
void on_btn_addPlotDefinition_clicked();
void on_btn_removePlotDefinition_clicked();
void on_btn_modifyPlotDefinition_clicked();
void on_list_plotDefinitions_itemChanged(QTreeWidgetItem *item, int column);
void on_list_plotDefinitions_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_slider_timeRange_valueChanged(int value);
void on_cb_daemonData_clicked(bool checked);
void pauseRefresh(bool checked);
void on_btn_general_clicked();
void on_slider_freqSclk_valueChanged(int value);
void on_slider_freqMclk_valueChanged(int value);
void on_group_freq_toggled(bool arg1);
void on_btn_configureTopbar_clicked();
void on_btn_setPlotsBackground_clicked();
void createFanProfileListaAndGraph(const QString &profile);
void on_list_coreStates_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_list_memStates_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_btn_applyOcTable_clicked();
void on_btn_resetOcTable_clicked();
void setEnabledChangeEvent() { enableChangeEvent = true; };
void on_btn_setOcRanges_clicked();
void on_btn_saveOcProfile_clicked();
void on_btn_saveOcProfileAs_clicked();
void createOcProfileListsAndGraph(const QString &arg1);
void on_btn_removeOcProfile_clicked();
void powerCapValueChange(int arg1);
void percentOverclockToggled(bool toggle);
void ocProfilesMenuActionClicked(QAction* action);
void daemonConnected();
void daemonDisconnected();
private:
struct CurrentStateInfo {
PowerProfiles profile;
ForcePowerLevels powerLevel;
short fanIndex;
QString fanProfileName;
};
QSystemTrayIcon *icon_tray;
QAction *refreshWhenHidden;
QTimer *timer;
gpu device;
QList<ExecBin*> execsRunning;
FanProfileSteps currentFanProfile;
QMap<QString, FanProfileSteps> fanProfiles;
QMap<QString, OCProfile> ocProfiles;
QMap<QString, RPEvent> events;
QMap<QString, unsigned int> pmStats;
unsigned int counter_ticks, counter_statsTick;
short hysteresisRelativeTepmerature;
bool enableChangeEvent;
QButtonGroup group_pwm, group_Dpm;
CurrentStateInfo *savedState;
PlotManager plotManager;
TopbarManager topbarManager;
QChartView *chartView_fan, *chartView_oc;
QList<TopbarItem*> topBarItems;
QList<ValueID> keysInCurrentGpuList;
Ui::radeon_profile *ui;
void setupTrayIcon();
void refreshTooltip();
QMenu* createDpmMenu();
void changeEvent(QEvent *event);
void saveConfig();
void loadConfig();
void doTheStats();
void updateStatsTable();
void addRuntmeWidgets();
void refreshGpuData();
void refreshGraphs();
void setupUiEnabledFeatures(const DriverFeatures &features, const GPUDataContainer &data);
void loadVariables();
void updateExecLogs();
void createOcProfileGraph();
void loadFanProfiles();
int askNumber(const int value, const int min, const int max, const QString label);
void makeFanProfilePlot();
void refreshUI();
void connectSignals();
void setCurrentFanProfile(const QString &profileName);
void adjustFanSpeed();
FanProfileSteps stepsListToMap();
void addTreeWidgetItem(QTreeWidget * parent, const QString &leftColumn, const QString &rightColumn);
void createFanProfilesMenu(const bool rebuildMode = false);
void markFanProfileUnsaved(bool unsaved);
void checkEvents();
void activateEvent(const RPEvent &rpe);
void saveRpevents(QXmlStreamWriter &xml);
void loadRpevent(const QXmlStreamReader &xml);
void revokeEvent();
void hideEventControls(bool hide);
void saveExecProfiles(QXmlStreamWriter &xml);
void loadExecProfile(const QXmlStreamReader &xml);
void saveFanProfiles(QXmlStreamWriter &xml);
void loadFanProfile(QXmlStreamReader &xml);
void savePlotSchemas(QXmlStreamWriter &xml);
void loadPlotSchemas(QXmlStreamReader &xml);
void saveTopbarItemsSchemas(QXmlStreamWriter &xml);
void loadTopbarItemsSchemas(const QXmlStreamReader &xml);
void writePlotAxisSchemaToXml(QXmlStreamWriter &xml, const QString side, const PlotAxisSchema &pas);
void loadPlotAxisSchema(const QXmlStreamReader &xml, PlotAxisSchema &pas);
void createDefaultFanProfile();
void loadExecProfiles();
void setupUiElements();
void createPlots();
void modifyPlotSchema(const QString &name);
void createCurrentGpuDataListItems();
void fillConnectors();
void fillModInfo();
bool askConfirmation(const QString title, const QString question);
void createDefaultTopbar();
void showWindow();
void addFanStep (int temperature, int fanSpeed);
QMenu* createGeneralMenu();
PlotInitialValues figureOutInitialScale(const PlotDefinitionSchema &pds);
void applyOc();
void setupPlot(const PlotDefinitionSchema &pds);
QString createCurrentMinMaxString(const ValueID idCurrent, const ValueID idMin, const ValueID idMax);
QString createCurrentMinMaxString(const QString ¤t, const QString &min, const QString &max);
void addDpmButtons();
void createFanProfileGraph();
void createOcGraphSeriesFromList(const QTreeWidget *list, QLineSeries *seriesClocks, QLineSeries *seriesVoltages);
void adjustState(QTreeWidgetItem *item, const OCRange &frequencyRange, const OCRange &voltageRange);
void saveOcProfiles(QXmlStreamWriter &xml);
void loadOcProfile(QXmlStreamReader &xml);
OCProfile createOcProfile();
void setCurrentOcProfile(const QString &name);
void loadListFromOcProfile(const FVTable &table, QTreeWidget *list);
void createOcProfilesMenu(const bool rebuildMode = false);
int findCurrentMenuIndex(QMenu *menu, const QString &name);
void loadDefaultOcTables(const DriverFeatures &features);
void setupDeviceDependantUiElements();
void enableUiControls(bool enable);
void restoreFanState();
void addPowerMethodToTrayMenu(const DriverFeatures &features);
void initializeDevice();
void configureDaemonPostDeviceInit();
void configureDaemonPreDeviceInit();
};
#endif // RADEON_PROFILE_H