perfetto: Create a common MesaRenderpassIncrementalState.

... and explain what its role is.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22350>
This commit is contained in:
Emma Anholt
2023-04-05 15:58:17 -07:00
committed by Marge Bot
parent 82656de029
commit dd81420ef1
6 changed files with 26 additions and 25 deletions
+1 -5
View File
@@ -109,12 +109,8 @@ static uint64_t last_suspend_count;
static uint64_t gpu_max_timestamp;
static uint64_t gpu_timestamp_offset;
struct TuRenderpassIncrementalState {
bool was_cleared = true;
};
struct TuRenderpassTraits : public perfetto::DefaultDataSourceTraits {
using IncrementalStateType = TuRenderpassIncrementalState;
using IncrementalStateType = MesaRenderpassIncrementalState;
};
class TuRenderpassDataSource : public MesaRenderpassDataSource<TuRenderpassDataSource,
@@ -22,12 +22,8 @@ static uint64_t next_clock_sync_ns; /* cpu time of next clk sync */
*/
static uint64_t sync_gpu_ts;
struct FdRenderpassIncrementalState {
bool was_cleared = true;
};
struct FdRenderpassTraits : public perfetto::DefaultDataSourceTraits {
using IncrementalStateType = FdRenderpassIncrementalState;
using IncrementalStateType = MesaRenderpassIncrementalState;
};
class FdRenderpassDataSource : public MesaRenderpassDataSource<FdRenderpassDataSource, FdRenderpassTraits> {
+1 -5
View File
@@ -50,12 +50,8 @@ static const struct {
}
};
struct SIRenderpassIncrementalState {
bool was_cleared = true;
};
struct SIRenderpassTraits : public perfetto::DefaultDataSourceTraits {
using IncrementalStateType = SIRenderpassIncrementalState;
using IncrementalStateType = MesaRenderpassIncrementalState;
};
class SIRenderpassDataSource : public MesaRenderpassDataSource<SIRenderpassDataSource,
+1 -5
View File
@@ -105,12 +105,8 @@ static const struct {
},
};
struct IntelRenderpassIncrementalState {
bool was_cleared = true;
};
struct IntelRenderpassTraits : public perfetto::DefaultDataSourceTraits {
using IncrementalStateType = IntelRenderpassIncrementalState;
using IncrementalStateType = MesaRenderpassIncrementalState;
};
class IntelRenderpassDataSource : public MesaRenderpassDataSource<IntelRenderpassDataSource,
+1 -5
View File
@@ -20,12 +20,8 @@
#include "panvk_tracepoints_perfetto.h"
#include "panvk_utrace.h"
struct PanVKRenderpassIncrementalState {
bool was_cleared = true;
};
struct PanVKRenderpassTraits : public perfetto::DefaultDataSourceTraits {
using IncrementalStateType = PanVKRenderpassIncrementalState;
using IncrementalStateType = MesaRenderpassIncrementalState;
};
class PanVKRenderpassDataSource
+21
View File
@@ -27,6 +27,27 @@
#include "util/perf/u_trace.h"
#include "util/ralloc.h"
/**
* Struct tracking state during a perfetto packet sequence
*
* Sometimes perfetto loses state, and starts a new packet sequence to
* recover. One common example is when you start perfetto tracing after the
* driver is up and running -- all perfetto trace packets had been skipped
* until tracing started.
*
* When we're in a new sequence, we need to detect it (in the form of a new
* struct created with was_cleared set), and emit all the driver setup packets
* before emitting any tracing that might reference the one-time state
* packets.
*
* Note that incremental state structs are stored in TLS in perfetto, so you
* will have more than one per data source, but it also means it's owned for
* access by a trace context through tctx.GetIncrementalState().
*/
struct MesaRenderpassIncrementalState {
bool was_cleared = true;
};
using perfetto::DataSource;
template <typename DataSourceType, typename DataSourceTraits>
class MesaRenderpassDataSource