• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2024 Raspberry Pi Ltd
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #pragma once
7 
8 #include "common/v3d_device_info.h"
9 #include "drm-uapi/v3d_drm.h"
10 #include "perfcntrs/v3d_perfcntrs.h"
11 #include "pps/pps_driver.h"
12 
13 namespace pps
14 {
15 
16 class V3DDriver : public Driver
17 {
18 public:
19    uint64_t get_min_sampling_period_ns() override;
20    bool init_perfcnt() override;
21    void enable_counter(uint32_t counter_id) override;
22    void enable_all_counters() override;
23    void enable_perfcnt(uint64_t sampling_period_ns) override;
24    void disable_perfcnt() override;
25    bool dump_perfcnt() override;
26    uint64_t next() override;
27    uint32_t gpu_clock_id() const override;
28    uint64_t gpu_timestamp() const override;
29    bool cpu_gpu_timestamp(uint64_t &cpu_timestamp,
30                           uint64_t &gpu_timestamp) const override;
31 
32 private:
33    struct v3d_device_info devinfo;
34    struct v3d_perfcntrs *perfcntrs;
35    uint64_t last_dump_ts = 0;
36 
37    unsigned int perfmon_id;
38    uint64_t values[DRM_V3D_MAX_PERF_COUNTERS];
39 };
40 
41 } // namespace pps
42