* [PATCH libdrm 0/2] Get active crtc list @ 2026-09-21 13:07 Arun R Murthy 2026-09-21 13:07 ` [PATCH libdrm 1/2] xf86drmMode: add drmModeGetCrtcList() to enumerate available CRTCs Arun R Murthy 2026-09-21 13:07 ` [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage Arun R Murthy 0 siblings, 2 replies; 6+ messages in thread From: Arun R Murthy @ 2026-09-21 13:07 UTC (permalink / raw) To: dri-devel Cc: intel-gfx, intel-xe, Jani Nikula, Ville Syrjälä, ankit.k.nautiyal, adarsh.g.m, Arun R Murthy drmModeGetResources() tells the system capability and not runtime availability of the hardware resource. DRM_IOCTL_MODE_GETCRTC only tells userspace which CRTCs are enabled through KMS, not which are active in hardware. A pipe can be actively scanning out without being enabled through the KMS state, so relying on GETCRTC alone would report such a CRTC as free and assignable when it is not. Add new function drmModeGetCrtcList that enumerates the crtc list. Arun R Murthy (2): xf86drmMode: add drmModeGetCrtcList() to enumerate available CRTCs tests/crtclist: add utility to inspect CRTC usage core-symbols.txt | 2 + tests/crtclist.c | 116 +++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 9 ++++ xf86drmMode.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++ xf86drmMode.h | 38 ++++++++++++++ 5 files changed, 288 insertions(+) create mode 100644 tests/crtclist.c -- 2.25.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH libdrm 1/2] xf86drmMode: add drmModeGetCrtcList() to enumerate available CRTCs 2026-09-21 13:07 [PATCH libdrm 0/2] Get active crtc list Arun R Murthy @ 2026-09-21 13:07 ` Arun R Murthy 2026-09-21 13:07 ` [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage Arun R Murthy 1 sibling, 0 replies; 6+ messages in thread From: Arun R Murthy @ 2026-09-21 13:07 UTC (permalink / raw) To: dri-devel Cc: intel-gfx, intel-xe, Jani Nikula, Ville Syrjälä, ankit.k.nautiyal, adarsh.g.m, Arun R Murthy drmModeGetResources() tells the system capability and not runtime availability of the hardware resource. DRM_IOCTL_MODE_GETCRTC only tells userspace which CRTCs are enabled through KMS, not which are active in hardware. A pipe can be actively scanning out without being enabled through the KMS state, so relying on GETCRTC alone would report such a CRTC as free and assignable when it is not. An active pipe keeps its vblank running, so reading the CRTC's vblank sequence reveals the active pipes: an active pipe's counter keeps advancing while an inactive pipe's does not. For every CRTC that GETCRTC reports as free, sample the vblank via drmCrtcGetSequence() across a single short wait and, if it advanced, flag the entry as driver_active and exclude it from count_available. The list is allocated by drmModeGetCrtcList() and released with the new drmModeFreeCrtcList(). Both symbols are exported via core-symbols.txt. The helper is a thin wrapper over the standard KMS uAPI, so it works identically on i915, xe and any other KMS driver. Assisted-by: Claude:claude-opus-4.7 Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> --- core-symbols.txt | 2 + xf86drmMode.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++ xf86drmMode.h | 38 +++++++++++++++ 3 files changed, 163 insertions(+) diff --git a/core-symbols.txt b/core-symbols.txt index 766c342d..a14add40 100644 --- a/core-symbols.txt +++ b/core-symbols.txt @@ -119,6 +119,7 @@ drmModeDirtyFB drmModeFormatModifierBlobIterNext drmModeFreeConnector drmModeFreeCrtc +drmModeFreeCrtcList drmModeFreeEncoder drmModeFreeFB drmModeFreeFB2 @@ -133,6 +134,7 @@ drmModeGetConnector drmModeGetConnectorCurrent drmModeGetConnectorTypeName drmModeGetCrtc +drmModeGetCrtcList drmModeGetEncoder drmModeGetFB drmModeGetFB2 diff --git a/xf86drmMode.c b/xf86drmMode.c index 5b5d7053..224212bb 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -35,6 +35,7 @@ #include <dirent.h> #include <unistd.h> #include <errno.h> +#include <time.h> #define memclear(s) memset(&s, 0, sizeof(s)) @@ -383,6 +384,128 @@ drm_public drmModeCrtcPtr drmModeGetCrtc(int fd, uint32_t crtcId) return r; } +drm_public drmModeCrtcListPtr drmModeGetCrtcList(int fd) +{ + drmModeResPtr res; + drmModeCrtcListPtr list; + uint64_t *seq0 = NULL; + char *probe = NULL; + int need_probe = 0; + int i; + + res = drmModeGetResources(fd); + if (!res) + return NULL; + + list = drmMalloc(sizeof(*list)); + if (!list) + goto err_res; + + list->count = res->count_crtcs; + list->count_available = 0; + + if (res->count_crtcs) { + list->crtcs = drmMalloc(res->count_crtcs * sizeof(*list->crtcs)); + if (!list->crtcs) + goto err_list; + seq0 = drmMalloc(res->count_crtcs * sizeof(*seq0)); + probe = drmMalloc(res->count_crtcs * sizeof(*probe)); + if (!seq0 || !probe) + goto err_probe; + } + + for (i = 0; i < res->count_crtcs; i++) { + drmModeCrtcInfoPtr info = &list->crtcs[i]; + drmModeCrtcPtr crtc = drmModeGetCrtc(fd, res->crtcs[i]); + + info->crtc_id = res->crtcs[i]; + info->index = i; + + if (!crtc) { + /* Unreadable CRTC: report as busy so callers don't grab it. */ + info->in_use = 1; + continue; + } + + info->buffer_id = crtc->buffer_id; + if (crtc->mode_valid) { + info->in_use = 1; + info->width = crtc->width; + info->height = crtc->height; + info->mode = crtc->mode; + } else { + /* + * GETCRTC only tells us which pipes are enabled through + * KMS, not which are active in hardware. A pipe can be + * active (scanning out) without being enabled here, and + * an active pipe keeps its vblank counter advancing. + * Snapshot the vblank sequence now and re-check it below + * to find such active pipes. + */ + uint64_t ns; + + if (!drmCrtcGetSequence(fd, info->crtc_id, &seq0[i], &ns)) { + probe[i] = 1; + need_probe = 1; + } + } + + drmModeFreeCrtc(crtc); + } + + /* + * One shared wait covers every candidate: an active pipe keeps + * advancing its vblank counter, an inactive pipe does not. 50ms + * crosses at least one vblank down to ~24Hz. + */ + if (need_probe) { + struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 }; + + nanosleep(&ts, NULL); + + for (i = 0; i < res->count_crtcs; i++) { + uint64_t seq1, ns; + + if (!probe[i]) + continue; + if (drmCrtcGetSequence(fd, list->crtcs[i].crtc_id, + &seq1, &ns)) + continue; + if (seq1 != seq0[i]) + list->crtcs[i].driver_active = 1; + } + } + + for (i = 0; i < res->count_crtcs; i++) { + if (!list->crtcs[i].in_use && !list->crtcs[i].driver_active) + list->count_available++; + } + + drmFree(probe); + drmFree(seq0); + drmModeFreeResources(res); + return list; + +err_probe: + drmFree(probe); + drmFree(seq0); + drmFree(list->crtcs); +err_list: + drmFree(list); +err_res: + drmModeFreeResources(res); + return NULL; +} + +drm_public void drmModeFreeCrtcList(drmModeCrtcListPtr ptr) +{ + if (!ptr) + return; + + drmFree(ptr->crtcs); + drmFree(ptr); +} + drm_public int drmModeSetCrtc(int fd, uint32_t crtcId, uint32_t bufferId, uint32_t x, uint32_t y, uint32_t *connectors, int count, drmModeModeInfoPtr mode) diff --git a/xf86drmMode.h b/xf86drmMode.h index 2a7156db..c634333b 100644 --- a/xf86drmMode.h +++ b/xf86drmMode.h @@ -147,6 +147,30 @@ typedef struct _drmModeCrtc { } drmModeCrtc, *drmModeCrtcPtr; +/** + * Per-CRTC availability information, produced by drmModeGetCrtcList(). + */ +typedef struct _drmModeCrtcInfo { + uint32_t crtc_id; /**< KMS object id of the CRTC */ + int index; /**< Index in drmModeRes.crtcs[]; usable for vblank high-crtc bits */ + int in_use; /**< Non-zero if userspace has a mode set on this CRTC */ + int driver_active; /**< Non-zero if the CRTC is active in hardware (its + * vblank is running) even though it is not enabled + * through KMS. GETCRTC only reports enabled pipes; + * reading the vblank counter reveals active pipes, + * which must not be treated as free. */ + uint32_t buffer_id; /**< FB currently scanned out, 0 if none */ + uint32_t width, height; /**< Active mode resolution, 0 when not in use */ + drmModeModeInfo mode; /**< Active mode; valid only when in_use is set */ +} drmModeCrtcInfo, *drmModeCrtcInfoPtr; + +typedef struct _drmModeCrtcList { + int count; /**< Total number of CRTCs on the device */ + int count_available; /**< CRTCs that are free and assignable (neither + * in_use nor driver_active) */ + drmModeCrtcInfoPtr crtcs; /**< Array of 'count' CRTC entries */ +} drmModeCrtcList, *drmModeCrtcListPtr; + typedef struct _drmModeEncoder { uint32_t encoder_id; uint32_t encoder_type; @@ -317,6 +341,20 @@ extern int drmModeDirtyFB(int fd, uint32_t bufferId, */ extern drmModeCrtcPtr drmModeGetCrtc(int fd, uint32_t crtcId); +/** + * Enumerate every CRTC on the device and report which ones are available. + * + * Convenience wrapper around drmModeGetResources() + drmModeGetCrtc() intended + * for compositors that need to discover free CRTCs. The returned list must be + * released with drmModeFreeCrtcList(). Returns NULL on error. + */ +extern drmModeCrtcListPtr drmModeGetCrtcList(int fd); + +/** + * Free a list previously returned by drmModeGetCrtcList(). + */ +extern void drmModeFreeCrtcList(drmModeCrtcListPtr ptr); + /** * Set the mode on a crtc crtcId with the given mode modeId. */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage 2026-09-21 13:07 [PATCH libdrm 0/2] Get active crtc list Arun R Murthy 2026-09-21 13:07 ` [PATCH libdrm 1/2] xf86drmMode: add drmModeGetCrtcList() to enumerate available CRTCs Arun R Murthy @ 2026-09-21 13:07 ` Arun R Murthy 2026-09-21 14:07 ` Murthy, Arun R 1 sibling, 1 reply; 6+ messages in thread From: Arun R Murthy @ 2026-09-21 13:07 UTC (permalink / raw) To: dri-devel Cc: intel-gfx, intel-xe, Jani Nikula, Ville Syrjälä, ankit.k.nautiyal, adarsh.g.m, Arun R Murthy Add a small diagnostic utility built on the new drmModeGetCrtcList() API. It prints the total number of CRTCs, how many are free vs in use, and a per-CRTC line with state, scanout framebuffer and active mode. Built like the other tests/ utilities (drmdevice, modeprint); it is a human-facing tool and is intentionally not registered as a meson test, since correctness is covered by the drmmode_crtc_list_ult suite. Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> --- tests/crtclist.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++ tests/meson.build | 9 ++++ 2 files changed, 125 insertions(+) create mode 100644 tests/crtclist.c diff --git a/tests/crtclist.c b/tests/crtclist.c new file mode 100644 index 00000000..7ac16853 --- /dev/null +++ b/tests/crtclist.c @@ -0,0 +1,116 @@ +/* + * Copyright © 2026 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* + * crtclist - inspect CRTC usage on a DRM device via drmModeGetCrtcList(). + * + * Prints the total number of CRTCs, how many are free vs in use, and a + * per-CRTC line showing state, scanout framebuffer and active mode. Useful + * for compositor bring-up to see which CRTCs are available. + * + * Usage: crtclist [/dev/dri/cardN] (defaults to the first KMS node) + */ + +#include <fcntl.h> +#include <stdio.h> +#include <unistd.h> + +#include <xf86drm.h> +#include <xf86drmMode.h> + +static int open_kms_node(void) +{ + char path[64]; + int i; + + for (i = 0; i < 16; i++) { + int fd; + + snprintf(path, sizeof(path), "/dev/dri/card%d", i); + fd = open(path, O_RDWR | O_CLOEXEC); + if (fd < 0) + continue; + if (drmIsKMS(fd)) { + printf("Using %s\n", path); + return fd; + } + close(fd); + } + return -1; +} + +int main(int argc, char **argv) +{ + drmModeCrtcListPtr list; + int fd, i; + + if (argc > 1) + fd = open(argv[1], O_RDWR | O_CLOEXEC); + else + fd = open_kms_node(); + + if (fd < 0) { + fprintf(stderr, "No accessible KMS DRM device (try running as root).\n"); + return 1; + } + + list = drmModeGetCrtcList(fd); + if (!list) { + fprintf(stderr, "drmModeGetCrtcList() failed\n"); + close(fd); + return 1; + } + + printf("Total CRTCs : %d\n", list->count); + printf("Available : %d\n", list->count_available); + printf("In use : %d\n\n", list->count - list->count_available); + + printf("%-5s %-8s %-13s %-8s %s\n", + "idx", "crtc_id", "state", "fb_id", "mode"); + printf("-------------------------------------------------------\n"); + for (i = 0; i < list->count; i++) { + drmModeCrtcInfoPtr c = &list->crtcs[i]; + const char *state; + + if (c->in_use) + state = "IN USE"; + else if (c->driver_active) + state = "ACTIVE"; + else + state = "FREE"; + + printf("%-5d %-8u %-13s %-8u ", + c->index, c->crtc_id, state, c->buffer_id); + if (c->in_use) + printf("%ux%u @ %uHz (%s)\n", + c->width, c->height, c->mode.vrefresh, + c->mode.name); + else if (c->driver_active) + printf("(active in hardware, not enabled via KMS)\n"); + else + printf("-\n"); + } + + drmModeFreeCrtcList(list); + close(fd); + return 0; +} diff --git a/tests/meson.build b/tests/meson.build index ac9e66b0..9c98bc2b 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -69,6 +69,15 @@ drmdevice = executable( install : with_install_tests, ) +crtclist = executable( + 'crtclist', + files('crtclist.c'), + include_directories : [inc_root, inc_drm], + link_with : libdrm, + c_args : libdrm_c_args, + install : with_install_tests, +) + test('hash', hash) test('drmsl', drmsl) test('drmdevice', drmdevice) -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage 2026-09-21 13:07 ` [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage Arun R Murthy @ 2026-09-21 14:07 ` Murthy, Arun R 2026-09-22 14:16 ` Michel Dänzer 0 siblings, 1 reply; 6+ messages in thread From: Murthy, Arun R @ 2026-09-21 14:07 UTC (permalink / raw) To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, Jani Nikula, Ville Syrjälä, Nautiyal, Ankit K, G M, Adarsh > -----Original Message----- > From: Murthy, Arun R <arun.r.murthy@intel.com> > Sent: Monday, September 21, 2026 6:38 PM > To: dri-devel@lists.freedesktop.org > Cc: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Jani Nikula > <jani.nikula@linux.intel.com>; Ville Syrjälä <ville.syrjala@linux.intel.com>; > Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>; G M, Adarsh > <adarsh.g.m@intel.com>; Murthy, Arun R <arun.r.murthy@intel.com> > Subject: [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage > > Add a small diagnostic utility built on the new drmModeGetCrtcList() API. It > prints the total number of CRTCs, how many are free vs in use, and a per-CRTC > line with state, scanout framebuffer and active mode. > > Built like the other tests/ utilities (drmdevice, modeprint); it is a human-facing > tool and is intentionally not registered as a meson test, since correctness is > covered by the drmmode_crtc_list_ult suite. > ULT is removed from this patch, as this utility itself should suffice. This paragraph will be removed in the next version. Thanks and Regards, Arun R Murthy ------------------- > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com> > --- > tests/crtclist.c | 116 > ++++++++++++++++++++++++++++++++++++++++++++++ > tests/meson.build | 9 ++++ > 2 files changed, 125 insertions(+) > create mode 100644 tests/crtclist.c > > diff --git a/tests/crtclist.c b/tests/crtclist.c new file mode 100644 index > 00000000..7ac16853 > --- /dev/null > +++ b/tests/crtclist.c > @@ -0,0 +1,116 @@ > +/* > + * Copyright © 2026 Intel Corporation > + * > + * Permission is hereby granted, free of charge, to any person > +obtaining a copy > + * of this software and associated documentation files (the > +"Software"), to deal > + * in the Software without restriction, including without limitation > +the rights > + * to use, copy, modify, merge, publish, distribute, sublicense, and/or > +sell > + * copies of the Software, and to permit persons to whom the Software > +is > + * furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be > +included in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > +EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > +MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO > EVENT > +SHALL THE > + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES > OR > +OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, > +ARISING FROM, > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > +DEALINGS IN THE > + * SOFTWARE. > + */ > + > +/* > + * crtclist - inspect CRTC usage on a DRM device via drmModeGetCrtcList(). > + * > + * Prints the total number of CRTCs, how many are free vs in use, and a > + * per-CRTC line showing state, scanout framebuffer and active mode. > +Useful > + * for compositor bring-up to see which CRTCs are available. > + * > + * Usage: crtclist [/dev/dri/cardN] (defaults to the first KMS node) > + */ > + > +#include <fcntl.h> > +#include <stdio.h> > +#include <unistd.h> > + > +#include <xf86drm.h> > +#include <xf86drmMode.h> > + > +static int open_kms_node(void) > +{ > + char path[64]; > + int i; > + > + for (i = 0; i < 16; i++) { > + int fd; > + > + snprintf(path, sizeof(path), "/dev/dri/card%d", i); > + fd = open(path, O_RDWR | O_CLOEXEC); > + if (fd < 0) > + continue; > + if (drmIsKMS(fd)) { > + printf("Using %s\n", path); > + return fd; > + } > + close(fd); > + } > + return -1; > +} > + > +int main(int argc, char **argv) > +{ > + drmModeCrtcListPtr list; > + int fd, i; > + > + if (argc > 1) > + fd = open(argv[1], O_RDWR | O_CLOEXEC); > + else > + fd = open_kms_node(); > + > + if (fd < 0) { > + fprintf(stderr, "No accessible KMS DRM device (try running as > root).\n"); > + return 1; > + } > + > + list = drmModeGetCrtcList(fd); > + if (!list) { > + fprintf(stderr, "drmModeGetCrtcList() failed\n"); > + close(fd); > + return 1; > + } > + > + printf("Total CRTCs : %d\n", list->count); > + printf("Available : %d\n", list->count_available); > + printf("In use : %d\n\n", list->count - list->count_available); > + > + printf("%-5s %-8s %-13s %-8s %s\n", > + "idx", "crtc_id", "state", "fb_id", "mode"); > + printf("-------------------------------------------------------\n"); > + for (i = 0; i < list->count; i++) { > + drmModeCrtcInfoPtr c = &list->crtcs[i]; > + const char *state; > + > + if (c->in_use) > + state = "IN USE"; > + else if (c->driver_active) > + state = "ACTIVE"; > + else > + state = "FREE"; > + > + printf("%-5d %-8u %-13s %-8u ", > + c->index, c->crtc_id, state, c->buffer_id); > + if (c->in_use) > + printf("%ux%u @ %uHz (%s)\n", > + c->width, c->height, c->mode.vrefresh, > + c->mode.name); > + else if (c->driver_active) > + printf("(active in hardware, not enabled via KMS)\n"); > + else > + printf("-\n"); > + } > + > + drmModeFreeCrtcList(list); > + close(fd); > + return 0; > +} > diff --git a/tests/meson.build b/tests/meson.build index ac9e66b0..9c98bc2b > 100644 > --- a/tests/meson.build > +++ b/tests/meson.build > @@ -69,6 +69,15 @@ drmdevice = executable( > install : with_install_tests, > ) > > +crtclist = executable( > + 'crtclist', > + files('crtclist.c'), > + include_directories : [inc_root, inc_drm], > + link_with : libdrm, > + c_args : libdrm_c_args, > + install : with_install_tests, > +) > + > test('hash', hash) > test('drmsl', drmsl) > test('drmdevice', drmdevice) > -- > 2.25.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage 2026-09-21 14:07 ` Murthy, Arun R @ 2026-09-22 14:16 ` Michel Dänzer 2026-09-23 4:22 ` Murthy, Arun R 0 siblings, 1 reply; 6+ messages in thread From: Michel Dänzer @ 2026-09-22 14:16 UTC (permalink / raw) To: Murthy, Arun R Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, Jani Nikula, Ville Syrjälä, Nautiyal, Ankit K, G M, Adarsh, dri-devel@lists.freedesktop.org On 9/21/26 16:07, Murthy, Arun R wrote: >> From: Murthy, Arun R <arun.r.murthy@intel.com> >> >> Add a small diagnostic utility built on the new drmModeGetCrtcList() API. It >> prints the total number of CRTCs, how many are free vs in use, and a per-CRTC >> line with state, scanout framebuffer and active mode. >> >> Built like the other tests/ utilities (drmdevice, modeprint); it is a human-facing >> tool and is intentionally not registered as a meson test, since correctness is >> covered by the drmmode_crtc_list_ult suite. >> > ULT is removed from this patch, as this utility itself should suffice. > This paragraph will be removed in the next version. Note that we use gitlab MRs for libdrm: https://gitlab.freedesktop.org/mesa/libdrm/-/merge_requests -- Earthling Michel Dänzer \ GNOME / Xwayland / Mesa developer https://redhat.com \ Libre software enthusiast ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage 2026-09-22 14:16 ` Michel Dänzer @ 2026-09-23 4:22 ` Murthy, Arun R 0 siblings, 0 replies; 6+ messages in thread From: Murthy, Arun R @ 2026-09-23 4:22 UTC (permalink / raw) To: Michel Dänzer Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, Jani Nikula, Ville Syrjälä, Nautiyal, Ankit K, G M, Adarsh, dri-devel@lists.freedesktop.org > -----Original Message----- > From: Michel Dänzer <michel.daenzer@mailbox.org> > Sent: Tuesday, September 22, 2026 7:47 PM > To: Murthy, Arun R <arun.r.murthy@intel.com> > Cc: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Jani Nikula > <jani.nikula@linux.intel.com>; Ville Syrjälä <ville.syrjala@linux.intel.com>; > Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>; G M, Adarsh > <adarsh.g.m@intel.com>; dri-devel@lists.freedesktop.org > Subject: Re: [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage > > On 9/21/26 16:07, Murthy, Arun R wrote: > >> From: Murthy, Arun R <arun.r.murthy@intel.com> > >> > >> Add a small diagnostic utility built on the new drmModeGetCrtcList() > >> API. It prints the total number of CRTCs, how many are free vs in > >> use, and a per-CRTC line with state, scanout framebuffer and active mode. > >> > >> Built like the other tests/ utilities (drmdevice, modeprint); it is a > >> human-facing tool and is intentionally not registered as a meson > >> test, since correctness is covered by the drmmode_crtc_list_ult suite. > >> > > ULT is removed from this patch, as this utility itself should suffice. > > This paragraph will be removed in the next version. > > Note that we use gitlab MRs for libdrm: > https://gitlab.freedesktop.org/mesa/libdrm/-/merge_requests > > Noted! Created MR - https://gitlab.freedesktop.org/mesa/libdrm/-/merge_requests/490 Thanks and Regards, Arun R Murthy -------------------- > -- > Earthling Michel Dänzer \ GNOME / Xwayland / Mesa developer > https://redhat.com \ Libre software enthusiast ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-23 4:22 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-09-21 13:07 [PATCH libdrm 0/2] Get active crtc list Arun R Murthy 2026-09-21 13:07 ` [PATCH libdrm 1/2] xf86drmMode: add drmModeGetCrtcList() to enumerate available CRTCs Arun R Murthy 2026-09-21 13:07 ` [PATCH libdrm 2/2] tests/crtclist: add utility to inspect CRTC usage Arun R Murthy 2026-09-21 14:07 ` Murthy, Arun R 2026-09-22 14:16 ` Michel Dänzer 2026-09-23 4:22 ` Murthy, Arun R
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox