Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/tool/pps/pps_device.h
7097 views
1
/*
2
* Copyright © 2020 Collabora, Ltd.
3
* Author: Antonio Caggiano <[email protected]>
4
* Author: Rohan Garg <[email protected]>
5
* Author: Robert Beckett <[email protected]>
6
*
7
* SPDX-License-Identifier: MIT
8
*/
9
10
#pragma once
11
12
#include <optional>
13
#include <string>
14
#include <vector>
15
16
namespace pps
17
{
18
/// @brief Helper class for a DRM device
19
class DrmDevice
20
{
21
public:
22
/// @return The number of DRM devices available in the system
23
static uint32_t device_count();
24
25
/// @return All DRM devices available in the system
26
static std::vector<DrmDevice> create_all();
27
28
/// @return A DRM device selected by its number in the system, nullopt otherwise
29
static std::optional<DrmDevice> create(int32_t gpu_num);
30
31
/// @brief Prefer calling create instead of default constructor
32
DrmDevice() = default;
33
34
// Allow move
35
DrmDevice(DrmDevice &&);
36
DrmDevice &operator=(DrmDevice &&);
37
38
// Forbid copy
39
DrmDevice(const DrmDevice &) = delete;
40
DrmDevice &operator=(const DrmDevice &) = delete;
41
42
~DrmDevice();
43
44
/// @return Whether a device has a valid name
45
operator bool() const;
46
47
/// File descriptor of the device opened in read/write mode
48
int fd = -1;
49
int32_t gpu_num = -1;
50
std::string name = "";
51
};
52
53
} // namespace pps
54
55