Jose Fonseca | 9653f95 | 2015-05-19 16:32:43 +0100 | [diff] [blame] | 1 | #pragma once |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 2 | |
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 3 | #include "trace_api.hpp" |
Dan McCabe | c6f924e | 2012-06-01 13:40:05 -0700 | [diff] [blame] | 4 | #include "apitrace.h" |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 5 | #include "apitracecall.h" |
| 6 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 7 | #include <QThread> |
José Fonseca | b6d7e16 | 2012-03-26 09:49:01 +0100 | [diff] [blame] | 8 | #include <QProcess> |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 9 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 10 | class ApiTraceState; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 11 | |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 12 | namespace trace { struct Profile; } |
| 13 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 14 | class Retracer : public QThread |
| 15 | { |
| 16 | Q_OBJECT |
| 17 | public: |
| 18 | Retracer(QObject *parent=0); |
| 19 | |
| 20 | QString fileName() const; |
| 21 | void setFileName(const QString &name); |
| 22 | |
Carl Worth | 7257dfc | 2012-08-09 08:21:42 -0700 | [diff] [blame] | 23 | QString remoteTarget() const; |
| 24 | void setRemoteTarget(const QString &host); |
| 25 | |
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 26 | void setAPI(trace::API api); |
| 27 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 28 | bool isBenchmarking() const; |
| 29 | void setBenchmarking(bool bench); |
| 30 | |
| 31 | bool isDoubleBuffered() const; |
| 32 | void setDoubleBuffered(bool db); |
| 33 | |
Peter Lohrmann | b34c675 | 2013-07-10 11:08:14 -0400 | [diff] [blame] | 34 | bool isSinglethread() const; |
| 35 | void setSinglethread(bool singlethread); |
| 36 | |
Corey Richardson | f300646 | 2014-01-26 17:15:42 -0500 | [diff] [blame] | 37 | bool isCoreProfile() const; |
| 38 | void setCoreProfile(bool coreprofile); |
| 39 | |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 40 | bool isProfilingGpu() const; |
| 41 | bool isProfilingCpu() const; |
| 42 | bool isProfilingPixels() const; |
| 43 | bool isProfiling() const; |
Jose Fonseca | 65d2605 | 2017-07-30 13:48:40 +0100 | [diff] [blame] | 44 | void setProfiling(bool gpu, bool cpu, bool pixels); |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 45 | |
Gabe Dagani | 9ff4405 | 2017-11-28 09:30:15 -0600 | [diff] [blame] | 46 | bool isMsaaResolve() const; |
| 47 | void setMsaaResolve(bool resolve); |
| 48 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 49 | void setCaptureAtCallNumber(qlonglong num); |
| 50 | qlonglong captureAtCallNumber() const; |
| 51 | |
| 52 | bool captureState() const; |
| 53 | void setCaptureState(bool enable); |
| 54 | |
Dan McCabe | 66dfdda | 2012-03-05 17:20:39 -0800 | [diff] [blame] | 55 | bool captureThumbnails() const; |
| 56 | void setCaptureThumbnails(bool enable); |
| 57 | |
Dan McCabe | 8893885 | 2012-06-01 13:40:04 -0700 | [diff] [blame] | 58 | void addThumbnailToCapture(qlonglong num); |
| 59 | void resetThumbnailsToCapture(); |
| 60 | |
Jose Fonseca | 65d2605 | 2017-07-30 13:48:40 +0100 | [diff] [blame] | 61 | QString thumbnailCallSet(); |
Dan McCabe | b14bda2 | 2012-06-01 13:40:06 -0700 | [diff] [blame] | 62 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 63 | signals: |
| 64 | void finished(const QString &output); |
Zack Rusin | ed40bc6 | 2011-08-28 17:11:02 -0400 | [diff] [blame] | 65 | void foundState(ApiTraceState *state); |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 66 | void foundProfile(trace::Profile *profile); |
Jose Fonseca | 65d2605 | 2017-07-30 13:48:40 +0100 | [diff] [blame] | 67 | void foundThumbnails(const QList<QImage> &thumbnails); |
Dan McCabe | c6f924e | 2012-06-01 13:40:05 -0700 | [diff] [blame] | 68 | void foundThumbnails(const ImageHash &thumbnails); |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 69 | void error(const QString &msg); |
Zack Rusin | 10fd477 | 2011-09-14 01:45:12 -0400 | [diff] [blame] | 70 | void retraceErrors(const QList<ApiTraceError> &errors); |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 71 | |
| 72 | protected: |
Jose Fonseca | 010f996 | 2016-03-05 14:45:41 +0000 | [diff] [blame] | 73 | virtual void run() override; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 74 | |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 75 | private: |
| 76 | QString m_fileName; |
Carl Worth | 7257dfc | 2012-08-09 08:21:42 -0700 | [diff] [blame] | 77 | QString m_remoteTarget; |
José Fonseca | 62997b4 | 2011-11-27 15:16:34 +0000 | [diff] [blame] | 78 | trace::API m_api; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 79 | bool m_benchmarking; |
| 80 | bool m_doubleBuffered; |
Peter Lohrmann | b34c675 | 2013-07-10 11:08:14 -0400 | [diff] [blame] | 81 | bool m_singlethread; |
Corey Richardson | f300646 | 2014-01-26 17:15:42 -0500 | [diff] [blame] | 82 | bool m_useCoreProfile; |
Gabe Dagani | 9ff4405 | 2017-11-28 09:30:15 -0600 | [diff] [blame] | 83 | bool m_msaaResolve; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 84 | bool m_captureState; |
Dan McCabe | 66dfdda | 2012-03-05 17:20:39 -0800 | [diff] [blame] | 85 | bool m_captureThumbnails; |
Zack Rusin | f389ae8 | 2011-04-10 19:27:28 -0400 | [diff] [blame] | 86 | qlonglong m_captureCall; |
James Benton | fc4f55a | 2012-08-08 17:09:07 +0100 | [diff] [blame] | 87 | bool m_profileGpu; |
| 88 | bool m_profileCpu; |
| 89 | bool m_profilePixels; |
Dan McCabe | 8893885 | 2012-06-01 13:40:04 -0700 | [diff] [blame] | 90 | |
| 91 | QProcessEnvironment m_processEnvironment; |
| 92 | |
| 93 | QList<qlonglong> m_thumbnailsToCapture; |
Zack Rusin | 3acde36 | 2011-04-06 01:11:55 -0400 | [diff] [blame] | 94 | }; |