2
* Copyright © 2013 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU Lesser General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Alexandros Frantzis <alexandros.frantzis@canonical.com>
19
#ifndef MIR_GRAPHICS_MESA_REAL_KMS_DISPLAY_CONFIGURATION_H_
20
#define MIR_GRAPHICS_MESA_REAL_KMS_DISPLAY_CONFIGURATION_H_
22
#include "kms_display_configuration.h"
24
#include <xf86drmMode.h>
33
class RealKMSDisplayConfiguration : public KMSDisplayConfiguration
36
RealKMSDisplayConfiguration(int drm_fd);
37
RealKMSDisplayConfiguration(RealKMSDisplayConfiguration const& conf);
38
RealKMSDisplayConfiguration& operator=(RealKMSDisplayConfiguration const& conf);
40
void for_each_card(std::function<void(DisplayConfigurationCard const&)> f) const;
41
void for_each_output(std::function<void(DisplayConfigurationOutput const&)> f) const;
42
void configure_output(DisplayConfigurationOutputId id, bool used,
43
geometry::Point top_left, size_t mode_index, MirPowerMode power_mode);
45
uint32_t get_kms_connector_id(DisplayConfigurationOutputId id) const;
46
size_t get_kms_mode_index(DisplayConfigurationOutputId id, size_t conf_mode_index) const;
50
void add_or_update_output(DRMModeResources const& resources, drmModeConnector const& connector);
51
std::vector<DisplayConfigurationOutput>::iterator find_output_with_id(DisplayConfigurationOutputId id);
52
std::vector<DisplayConfigurationOutput>::const_iterator find_output_with_id(DisplayConfigurationOutputId id) const;
55
DisplayConfigurationCard card;
56
std::vector<DisplayConfigurationOutput> outputs;
63
#endif /* MIR_GRAPHICS_MESA_REAL_KMS_DISPLAY_CONFIGURATION_H_ */