diff --git a/src/intel/ds/intel_pps_driver.cc b/src/intel/ds/intel_pps_driver.cc index 031097e22df..d90ba41631f 100644 --- a/src/intel/ds/intel_pps_driver.cc +++ b/src/intel/ds/intel_pps_driver.cc @@ -17,7 +17,10 @@ #include #include -#include + +#include "dev/intel_device_info.h" +#include "perf/intel_perf.h" +#include "perf/intel_perf_query.h" #include #include @@ -140,11 +143,11 @@ bool IntelDriver::init_perfcnt() case INTEL_PERF_COUNTER_DATA_TYPE_UINT64: case INTEL_PERF_COUNTER_DATA_TYPE_UINT32: case INTEL_PERF_COUNTER_DATA_TYPE_BOOL32: - return (int64_t)counter.oa_counter_read_uint64(perf->cfg, query, &result); + return (int64_t)counter.oa_counter_read_uint64(perf->cfg, query, &perf->result); break; case INTEL_PERF_COUNTER_DATA_TYPE_DOUBLE: case INTEL_PERF_COUNTER_DATA_TYPE_FLOAT: - return counter.oa_counter_read_float(perf->cfg, query, &result); + return counter.oa_counter_read_float(perf->cfg, query, &perf->result); break; } @@ -166,7 +169,7 @@ bool IntelDriver::init_perfcnt() assert(counters.size() && "Failed to query counters"); // Clear accumulations - intel_perf_query_result_clear(&result); + intel_perf_query_result_clear(&perf->result); return true; } @@ -314,7 +317,7 @@ uint64_t IntelDriver::gpu_next() auto record_a = reinterpret_cast(records[0].data.data()); auto record_b = reinterpret_cast(records[1].data.data()); - intel_perf_query_result_accumulate_fields(&result, + intel_perf_query_result_accumulate_fields(&perf->result, &perf->query.value(), &perf->devinfo, record_a + 1, @@ -333,7 +336,7 @@ uint64_t IntelDriver::gpu_next() uint64_t IntelDriver::next() { // Reset accumulation - intel_perf_query_result_clear(&result); + intel_perf_query_result_clear(&perf->result); return gpu_next(); } diff --git a/src/intel/ds/intel_pps_driver.h b/src/intel/ds/intel_pps_driver.h index 4f0754c732a..404fc651588 100644 --- a/src/intel/ds/intel_pps_driver.h +++ b/src/intel/ds/intel_pps_driver.h @@ -9,11 +9,11 @@ #include -#include "intel_pps_perf.h" - namespace pps { +class IntelPerf; + /// @brief Variable length sequence of bytes generated by Intel Obstervation Architecture (OA) struct PerfRecord { /// Timestamp in the GPU clock domain @@ -80,9 +80,6 @@ class IntelDriver : public Driver std::unique_ptr perf; - // Accumulations are stored here - struct intel_perf_query_result result = {}; - // Gpu clock ID used to correlate GPU/CPU timestamps uint32_t clock_id = 0; }; diff --git a/src/intel/ds/intel_pps_perf.h b/src/intel/ds/intel_pps_perf.h index 2a6d93335a2..641fd4dec9d 100644 --- a/src/intel/ds/intel_pps_perf.h +++ b/src/intel/ds/intel_pps_perf.h @@ -11,9 +11,9 @@ #include #include -#include -#include -#include +#include "dev/intel_device_info.h" +#include "perf/intel_perf.h" +#include "perf/intel_perf_query.h" namespace pps { @@ -43,6 +43,9 @@ class IntelPerf struct intel_perf_context *ctx = nullptr; struct intel_perf_config *cfg = nullptr; + // Accumulations are stored here + struct intel_perf_query_result result = {}; + struct intel_device_info devinfo = {}; std::optional query = std::nullopt; diff --git a/src/intel/ds/meson.build b/src/intel/ds/meson.build index 0da1a162c6d..b518bb7d901 100644 --- a/src/intel/ds/meson.build +++ b/src/intel/ds/meson.build @@ -12,7 +12,7 @@ pps_intel_sources = [ pps_intel_lib = static_library( 'pps-intel', sources: pps_intel_sources, - include_directories: [inc_tool, inc_src, inc_include], + include_directories: [inc_tool, inc_src, inc_include, inc_intel], link_with: [libintel_perf, libintel_dev], dependencies: [dep_perfetto, dep_libdrm, idep_mesautil], cpp_args: '-std=c++17'