kms: Add MetaKmsMode abstraction

This contains a copy of a drmModeModeInfo, describing a mode. It also
has an unused pointer to the impl device it is associated with. It'll
later be used to get a blob ID for the mode.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1488>
This commit is contained in:
Jonas Ådahl
2020-06-04 17:12:34 +02:00
committed by Marge Bot
parent 22b926eea7
commit f0d3201dab
10 changed files with 157 additions and 13 deletions

View File

@@ -30,6 +30,7 @@
#include "backends/meta-crtc.h"
#include "backends/native/meta-kms-connector.h"
#include "backends/native/meta-kms-mode.h"
#include "backends/native/meta-kms-utils.h"
#include "backends/native/meta-crtc-kms.h"
#include "backends/native/meta-crtc-mode-kms.h"
@@ -240,17 +241,19 @@ init_output_modes (MetaOutputInfo *output_info,
GError **error)
{
const MetaKmsConnectorState *connector_state;
GList *l;
int i;
connector_state = meta_kms_connector_get_current_state (kms_connector);
output_info->preferred_mode = NULL;
output_info->n_modes = connector_state->n_modes;
output_info->n_modes = g_list_length (connector_state->modes);
output_info->modes = g_new0 (MetaCrtcMode *, output_info->n_modes);
for (i = 0; i < connector_state->n_modes; i++)
for (l = connector_state->modes, i = 0; l; l = l->next, i++)
{
drmModeModeInfo *drm_mode = &connector_state->modes[i];
MetaKmsMode *kms_mode = l->data;
const drmModeModeInfo *drm_mode = meta_kms_mode_get_drm_mode (kms_mode);
MetaCrtcMode *crtc_mode;
crtc_mode = meta_gpu_kms_get_mode_from_drm_mode (gpu_kms, drm_mode);