Save any value of the kernel non-desktop property in the xf86Output
structure to avoid non-desktop outputs in the default configuration.

[Also bump randrproto requirement to a version that defines
RR_PROPERTY_NON_DESKTOP - ajax]

Signed-off-by: Keith Packard <[email protected]>
Reviewed-by: Adam Jackson <[email protected]>
---
 src/drmmode_display.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 746e52a..b0fc7ea 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1980,6 +1980,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
        drmModePropertyBlobPtr path_blob = NULL;
        char name[32];
        int i;
+       Bool nonDesktop = FALSE;
        const char *s;
 
        koutput =
@@ -1989,6 +1990,10 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
                return 0;
 
        path_blob = koutput_get_prop_blob(pAMDGPUEnt->fd, koutput, "PATH");
+       i = koutput_get_prop_idx(pAMDGPUEnt->fd, koutput, DRM_MODE_PROP_RANGE, 
RR_PROPERTY_NON_DESKTOP);
+       if (i >= 0)
+               nonDesktop = koutput->prop_values[i] != 0;
+
 
        kencoders = calloc(sizeof(drmModeEncoderPtr), koutput->count_encoders);
        if (!kencoders) {
@@ -2021,6 +2026,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
                        drmmode_output = output->driver_private;
                        drmmode_output->output_id = mode_res->connectors[num];
                        drmmode_output->mode_output = koutput;
+                       output->non_desktop = nonDesktop;
                        for (i = 0; i < koutput->count_encoders; i++) {
                                drmModeFreeEncoder(kencoders[i]);
                        }
@@ -2064,6 +2070,7 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr 
drmmode, drmModeResPtr mode_r
        output->interlaceAllowed = TRUE;
        output->doubleScanAllowed = TRUE;
        output->driver_private = drmmode_output;
+       output->non_desktop = nonDesktop;
 
        output->possible_crtcs = 0xffffffff;
        for (i = 0; i < koutput->count_encoders; i++) {
-- 
2.16.2

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to