/* * Copyright © 2021 Collabora, Ltd. * Author: Antonio Caggiano * * SPDX-License-Identifier: MIT */ #pragma once struct panfrost_device; struct panfrost_perf; namespace pps { class PanfrostDevice { public: PanfrostDevice(int fd); ~PanfrostDevice(); PanfrostDevice(const PanfrostDevice &) = delete; PanfrostDevice &operator=(const PanfrostDevice &) = delete; PanfrostDevice(PanfrostDevice&&); PanfrostDevice& operator=(PanfrostDevice&&); void *ctx = nullptr; struct panfrost_device* dev = nullptr; }; class PanfrostPerf { public: PanfrostPerf(const PanfrostDevice& dev); ~PanfrostPerf(); PanfrostPerf(const PanfrostPerf &) = delete; PanfrostPerf &operator=(const PanfrostPerf &) = delete; PanfrostPerf(PanfrostPerf&&); PanfrostPerf& operator=(PanfrostPerf&&); int enable() const; void disable() const; int dump() const; struct panfrost_perf *perf = nullptr; }; } // namespace pps