• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2021 Collabora, Ltd.
3  * Author: Antonio Caggiano <antonio.caggiano@collabora.com>
4  *
5  * SPDX-License-Identifier: MIT
6  */
7 
8 #pragma once
9 
10 struct panfrost_device;
11 struct panfrost_perf;
12 
13 namespace pps
14 {
15 class PanfrostDevice
16 {
17    public:
18    PanfrostDevice(int fd);
19    ~PanfrostDevice();
20 
21    PanfrostDevice(const PanfrostDevice &) = delete;
22    PanfrostDevice &operator=(const PanfrostDevice &) = delete;
23 
24    PanfrostDevice(PanfrostDevice&&);
25    PanfrostDevice& operator=(PanfrostDevice&&);
26 
27    void *ctx = nullptr;
28    struct panfrost_device* dev = nullptr;
29 };
30 
31 class PanfrostPerf
32 {
33    public:
34    PanfrostPerf(const PanfrostDevice& dev);
35    ~PanfrostPerf();
36 
37    PanfrostPerf(const PanfrostPerf &) = delete;
38    PanfrostPerf &operator=(const PanfrostPerf &) = delete;
39 
40    PanfrostPerf(PanfrostPerf&&);
41    PanfrostPerf& operator=(PanfrostPerf&&);
42 
43    int enable() const;
44    void disable() const;
45    int dump() const;
46 
47    struct panfrost_perf *perf = nullptr;
48 };
49 
50 } // namespace pps
51