Skip to content
  • Dave Airlie's avatar
    xf86: autobind GPUs to the screen · 078277e4
    Dave Airlie authored
    
    
    This is a modified version of a patch we've been carry-ing in Fedora and
    RHEL for years now. This patch automatically adds secondary GPUs to the
    master as output sink / offload source making e.g. the use of
    slave-outputs just work, with requiring the user to manually run
    "xrandr --setprovideroutputsource" before he can hookup an external
    monitor to his hybrid graphics laptop.
    
    There is one problem with this patch, which is why it was not upstreamed
    before. What to do when a secondary GPU gets detected really is a policy
    decission (e.g. one may want to autobind PCI GPUs but not USB ones) and
    as such should be under control of the Desktop Environment.
    
    Unconditionally adding autobinding support to the xserver will result
    in races between the DE dealing with the hotplug of a secondary GPU
    and the server itself dealing with it.
    
    However we've waited for years for any Desktop Environments to actually
    start doing some sort of autoconfiguration of secondary GPUs and there
    is still not a single DE dealing with this, so I believe that it is
    time to upstream this now.
    
    To avoid potential future problems if any DEs get support for doing
    secondary GPU configuration themselves, the new autobind functionality
    is made optional. Since no DEs currently support doing this themselves it
    is enabled by default. When DEs grow support for doing this themselves
    they can disable the servers autobinding through the servers cmdline or a
    xorg.conf snippet.
    
    Signed-off-by: default avatarDave Airlie <airlied@gmail.com>
    [hdegoede@redhat.com: Make configurable, fix with nvidia, submit upstream]
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarEric Anholt <eric@anholt.net>
    Reviewed-by: default avatarEmil Velikov <emil.velikov@collabora.com>
    ---
    Changes in v2:
    -Make the default enabled instead of installing a xorg.conf
     snippet which enables it unconditionally
    
    Changes in v3:
    -Handle GPUScreen autoconfig in randr/rrprovider.c, looking at
     rrScrPriv->provider, rather then in hw/xfree86/modes/xf86Crtc.c
     looking at xf86CrtcConfig->provider. This fixes the autoconfig not
     working with the nvidia binary driver
    078277e4