intel/ds: isolate intel/perf from the pps-producer

Otherwise we need to include intel headers in generic code.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13831>
This commit is contained in:
Lionel Landwerlin 2021-11-09 00:33:33 +02:00 committed by Marge Bot
parent ed9116e545
commit 3d71e35857
4 changed files with 18 additions and 15 deletions

View file

@ -17,7 +17,10 @@
#include <unistd.h>
#include <i915_drm.h>
#include <intel/perf/intel_perf_query.h>
#include "dev/intel_device_info.h"
#include "perf/intel_perf.h"
#include "perf/intel_perf_query.h"
#include <pps/pps.h>
#include <pps/pps_algorithm.h>
@ -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<const drm_i915_perf_record_header *>(records[0].data.data());
auto record_b = reinterpret_cast<const drm_i915_perf_record_header *>(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();
}

View file

@ -9,11 +9,11 @@
#include <pps/pps_driver.h>
#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<IntelPerf> 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;
};

View file

@ -11,9 +11,9 @@
#include <string>
#include <vector>
#include <intel/dev/intel_device_info.h>
#include <intel/perf/intel_perf.h>
#include <intel/perf/intel_perf_query.h>
#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<struct intel_perf_query_info> query = std::nullopt;

View file

@ -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'