Jose Fonseca | 9653f95 | 2015-05-19 16:32:43 +0100 | [diff] [blame] | 1 | #pragma once |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 2 | |
| 3 | #include <QAbstractTableModel> |
| 4 | #include "trace_profiler.hpp" |
| 5 | |
| 6 | struct ProfileTableRow |
| 7 | { |
James Benton | 56ad11c | 2012-08-16 13:44:19 +0100 | [diff] [blame] | 8 | ProfileTableRow(unsigned no) |
| 9 | : program(no), |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 10 | uses(0), |
| 11 | gpuTime(0), |
| 12 | cpuTime(0), |
| 13 | pixels(0), |
| 14 | longestGpu(0), |
| 15 | longestCpu(0), |
| 16 | longestPixel(0) |
| 17 | { |
| 18 | } |
| 19 | |
| 20 | unsigned program; |
| 21 | qulonglong uses; |
| 22 | qulonglong gpuTime; |
| 23 | qulonglong cpuTime; |
| 24 | qulonglong pixels; |
| 25 | |
James Benton | 4c4896f | 2012-08-22 12:11:37 +0100 | [diff] [blame] | 26 | const trace::Profile::Call* longestGpu; |
| 27 | const trace::Profile::Call* longestCpu; |
| 28 | const trace::Profile::Call* longestPixel; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 29 | }; |
| 30 | |
| 31 | class ProfileTableModel : public QAbstractTableModel |
| 32 | { |
| 33 | Q_OBJECT |
| 34 | |
| 35 | public: |
| 36 | ProfileTableModel(QObject *parent = NULL); |
| 37 | |
| 38 | void setProfile(trace::Profile* profile); |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 39 | |
James Benton | b70a86a | 2012-08-28 18:41:43 +0100 | [diff] [blame] | 40 | void selectNone(); |
| 41 | void selectProgram(unsigned program); |
| 42 | void selectTime(int64_t start, int64_t end); |
| 43 | |
| 44 | int getRowIndex(unsigned program) const; |
| 45 | unsigned getProgram(const QModelIndex & index) const; |
James Benton | 4c4896f | 2012-08-22 12:11:37 +0100 | [diff] [blame] | 46 | const trace::Profile::Call* getJumpCall(const QModelIndex & index) const; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 47 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 48 | virtual int rowCount(const QModelIndex & parent) const override; |
| 49 | virtual int columnCount(const QModelIndex & parent) const override; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 50 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 51 | virtual QVariant data(const QModelIndex &index, int role) const override; |
| 52 | virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const override; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 53 | |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 54 | virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 55 | |
| 56 | private: |
| 57 | void updateModel(); |
| 58 | ProfileTableRow* getRow(unsigned program); |
| 59 | |
| 60 | private: |
| 61 | QList<ProfileTableRow> m_rowData; |
| 62 | trace::Profile *m_profile; |
| 63 | int64_t m_timeMin; |
| 64 | int64_t m_timeMax; |
| 65 | int m_sortColumn; |
| 66 | Qt::SortOrder m_sortOrder; |
| 67 | }; |
| 68 | |