blob: c4659898d8451dd32af2343be35cd7599cc4d688 [file] [log] [blame]
Jose Fonseca9653f952015-05-19 16:32:43 +01001#pragma once
Zack Rusin3acde362011-04-06 01:11:55 -04002
José Fonseca62997b42011-11-27 15:16:34 +00003#include "trace_api.hpp"
Dan McCabec6f924e2012-06-01 13:40:05 -07004#include "apitrace.h"
Zack Rusin10fd4772011-09-14 01:45:12 -04005#include "apitracecall.h"
6
Zack Rusinf389ae82011-04-10 19:27:28 -04007#include <QThread>
José Fonsecab6d7e162012-03-26 09:49:01 +01008#include <QProcess>
Zack Rusin3acde362011-04-06 01:11:55 -04009
Zack Rusinf389ae82011-04-10 19:27:28 -040010class ApiTraceState;
Zack Rusinf389ae82011-04-10 19:27:28 -040011
James Bentonfc4f55a2012-08-08 17:09:07 +010012namespace trace { struct Profile; }
13
Zack Rusinf389ae82011-04-10 19:27:28 -040014class Retracer : public QThread
15{
16 Q_OBJECT
17public:
18 Retracer(QObject *parent=0);
19
20 QString fileName() const;
21 void setFileName(const QString &name);
22
Carl Worth7257dfc2012-08-09 08:21:42 -070023 QString remoteTarget() const;
24 void setRemoteTarget(const QString &host);
25
José Fonseca62997b42011-11-27 15:16:34 +000026 void setAPI(trace::API api);
27
Zack Rusinf389ae82011-04-10 19:27:28 -040028 bool isBenchmarking() const;
29 void setBenchmarking(bool bench);
30
31 bool isDoubleBuffered() const;
32 void setDoubleBuffered(bool db);
33
Peter Lohrmannb34c6752013-07-10 11:08:14 -040034 bool isSinglethread() const;
35 void setSinglethread(bool singlethread);
36
Corey Richardsonf3006462014-01-26 17:15:42 -050037 bool isCoreProfile() const;
38 void setCoreProfile(bool coreprofile);
39
James Bentonfc4f55a2012-08-08 17:09:07 +010040 bool isProfilingGpu() const;
41 bool isProfilingCpu() const;
42 bool isProfilingPixels() const;
43 bool isProfiling() const;
Jose Fonseca65d26052017-07-30 13:48:40 +010044 void setProfiling(bool gpu, bool cpu, bool pixels);
James Bentonfc4f55a2012-08-08 17:09:07 +010045
Gabe Dagani9ff44052017-11-28 09:30:15 -060046 bool isMsaaResolve() const;
47 void setMsaaResolve(bool resolve);
48
Zack Rusinf389ae82011-04-10 19:27:28 -040049 void setCaptureAtCallNumber(qlonglong num);
50 qlonglong captureAtCallNumber() const;
51
52 bool captureState() const;
53 void setCaptureState(bool enable);
54
Dan McCabe66dfdda2012-03-05 17:20:39 -080055 bool captureThumbnails() const;
56 void setCaptureThumbnails(bool enable);
57
Dan McCabe88938852012-06-01 13:40:04 -070058 void addThumbnailToCapture(qlonglong num);
59 void resetThumbnailsToCapture();
60
Jose Fonseca65d26052017-07-30 13:48:40 +010061 QString thumbnailCallSet();
Dan McCabeb14bda22012-06-01 13:40:06 -070062
Zack Rusinf389ae82011-04-10 19:27:28 -040063signals:
64 void finished(const QString &output);
Zack Rusined40bc62011-08-28 17:11:02 -040065 void foundState(ApiTraceState *state);
James Bentonfc4f55a2012-08-08 17:09:07 +010066 void foundProfile(trace::Profile *profile);
Jose Fonseca65d26052017-07-30 13:48:40 +010067 void foundThumbnails(const QList<QImage> &thumbnails);
Dan McCabec6f924e2012-06-01 13:40:05 -070068 void foundThumbnails(const ImageHash &thumbnails);
Zack Rusinf389ae82011-04-10 19:27:28 -040069 void error(const QString &msg);
Zack Rusin10fd4772011-09-14 01:45:12 -040070 void retraceErrors(const QList<ApiTraceError> &errors);
Zack Rusinf389ae82011-04-10 19:27:28 -040071
72protected:
Jose Fonseca010f9962016-03-05 14:45:41 +000073 virtual void run() override;
Zack Rusinf389ae82011-04-10 19:27:28 -040074
Zack Rusinf389ae82011-04-10 19:27:28 -040075private:
76 QString m_fileName;
Carl Worth7257dfc2012-08-09 08:21:42 -070077 QString m_remoteTarget;
José Fonseca62997b42011-11-27 15:16:34 +000078 trace::API m_api;
Zack Rusinf389ae82011-04-10 19:27:28 -040079 bool m_benchmarking;
80 bool m_doubleBuffered;
Peter Lohrmannb34c6752013-07-10 11:08:14 -040081 bool m_singlethread;
Corey Richardsonf3006462014-01-26 17:15:42 -050082 bool m_useCoreProfile;
Gabe Dagani9ff44052017-11-28 09:30:15 -060083 bool m_msaaResolve;
Zack Rusinf389ae82011-04-10 19:27:28 -040084 bool m_captureState;
Dan McCabe66dfdda2012-03-05 17:20:39 -080085 bool m_captureThumbnails;
Zack Rusinf389ae82011-04-10 19:27:28 -040086 qlonglong m_captureCall;
James Bentonfc4f55a2012-08-08 17:09:07 +010087 bool m_profileGpu;
88 bool m_profileCpu;
89 bool m_profilePixels;
Dan McCabe88938852012-06-01 13:40:04 -070090
91 QProcessEnvironment m_processEnvironment;
92
93 QList<qlonglong> m_thumbnailsToCapture;
Zack Rusin3acde362011-04-06 01:11:55 -040094};