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