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:
@@ -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> {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user