summaryrefslogtreecommitdiff
path: root/src/backends/native/meta-gpu-kms.c
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2019-01-29 18:33:00 +0100
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2019-06-20 13:31:55 +0000
commit15a2ccd21bd90cc8386b27895d6ae5d89745cc44 (patch)
tree81d3f4f96cb9cef05e569aa124b3d09aab796aed /src/backends/native/meta-gpu-kms.c
parentfef5753a194d11b90b7785548ed897c9b6be6257 (diff)
downloadmutter-15a2ccd21bd90cc8386b27895d6ae5d89745cc44.tar.gz
kms: Add CRTC representation
Add MetaKmsCrtc to represent a CRTC on the associated device. Change MetaCrtcKms to use the ones discovered by the KMS abstraction. It still reads the resources handed over by MetaGpuKms, but eventually it will use only MetaKmsCrtc. MetaKmsCrtc is a type of object that is usable both from an impl task and from outside. All the API exposed via the non-private header is expected to be accessible from outside of the meta-kms namespace. https://gitlab.gnome.org/GNOME/mutter/issues/548 https://gitlab.gnome.org/GNOME/mutter/merge_requests/525
Diffstat (limited to 'src/backends/native/meta-gpu-kms.c')
-rw-r--r--src/backends/native/meta-gpu-kms.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/backends/native/meta-gpu-kms.c b/src/backends/native/meta-gpu-kms.c
index 0128f767f..12e820abe 100644
--- a/src/backends/native/meta-gpu-kms.c
+++ b/src/backends/native/meta-gpu-kms.c
@@ -706,21 +706,23 @@ init_crtcs (MetaGpuKms *gpu_kms,
MetaKmsResources *resources)
{
MetaGpu *gpu = META_GPU (gpu_kms);
+ MetaKmsDevice *kms_device = gpu_kms->kms_device;
+ GList *l;
GList *crtcs;
- unsigned int i;
crtcs = NULL;
- for (i = 0; i < (unsigned int) resources->resources->count_crtcs; i++)
+ for (l = meta_kms_device_get_crtcs (kms_device); l; l = l->next)
{
+ MetaKmsCrtc *kms_crtc = l->data;
+ int crtc_idx;
drmModeCrtc *drm_crtc;
MetaCrtc *crtc;
+ crtc_idx = meta_kms_crtc_get_idx (kms_crtc);
drm_crtc = drmModeGetCrtc (gpu_kms->fd,
- resources->resources->crtcs[i]);
-
- crtc = meta_create_kms_crtc (gpu_kms, drm_crtc, i);
-
+ resources->resources->crtcs[crtc_idx]);
+ crtc = meta_create_kms_crtc (gpu_kms, kms_crtc, drm_crtc);
drmModeFreeCrtc (drm_crtc);
crtcs = g_list_append (crtcs, crtc);