Skip to content
  • Alex Goins's avatar
    randr: Add ability to turn PRIME sync off · df8e8693
    Alex Goins authored and Adam Jackson's avatar Adam Jackson committed
    
    
    Adds an output parameter to disable PRIME synchronization.
    
    Output parameter is created when the user calls 'xrandr
    --setprovideroutputsource <sink> <source>' to prevent polluting output
    parameters of non-PRIME configurations.
    
    Defaults to on, so if the user wants PRIME synchronization they don't need
    to do anything.
    
    If the user wishes to disable PRIME synchronization when they first set up
    PRIME, they can run 'xrandr --output <output> --set "PRIME Synchronization"
    0' after running 'xrandr --setprovideroutputsource <sink> <source>', but
    before 'xrandr --auto'.
    
    If the user wishes to enable or disable PRIME synchronization after PRIME has
    already been set up, they can run 'xrandr --output <output> --set "PRIME
    Synchronization" <0 or 1>' at any time, xrandr will trigger a modeset, which
    will tear down and setup PRIME in the configuration they requested on CRTCs
    associated with that output.
    
    randrstr.h:
        Add central definition of the output property name.
    
    rrcrtc.c:
        Add function rrGetPixmapSharingSyncProp() to query the status of the
        output property.
    
        Add function rrSetPixmapSharingSyncProp() to set the output property.
    
        Add 'sync' parameter to rrSetupPixmapSharing(), which when false will
        use single buffering even if the required ABI functions are supported.
        Changes rrSetupPixmapSharing() to only report an error if falling back
        to single buffering when the user requested synchronization.
    
        Change RRCrtcSet() to use rrPixmapSharingSyncProp() to query the status
        of the output property and feed it into rrSetupPixmapSharing() using
        the 'sync' parameter.
    
    rrprovider.c:
        Add RR(Init/Fini)PrimeSyncProps(), functions to create and destroy the
        PRIME synchronization output property.
    
        Add a call to RRInitPrimeSyncProps() in
        ProcRRSetProviderOutputSource(), such that the output property is
        created when the user requests PRIME.
    
        Add a call to RRFiniPrimeSyncProps() in RRProviderDestroy().
    
    v1: Initial commit
    v2: Unchanged
    v3: Add /* TODO */ for handling different sources with different outputs
        Make rrSetupPixmapSharing() set the output property to 0 if it has to fall
        back, to avoid user confusion.
        Make rr(Get)PixmapSharingSyncProp() check the current value if there isn't a
        pending value
    v4: Unchanged
    v5: Unchanged
    v6: Rebase onto ToT
    v7: Unchanged
    
    Signed-off-by: default avatarAlex Goins <agoins@nvidia.com>
    df8e8693