View | Details | Raw Unified | Return to bug 1103816
Collapse All | Expand All

(-)xorg-server-1.19.6/hw/xfree86/common/xf86Init.c (+12 lines)
Lines 297-302 xf86PrivsElevated(void) Link Here
297
    return PrivsElevated();
297
    return PrivsElevated();
298
}
298
}
299
extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
300
static void
301
xf86AutoConfigOutputDevices(void)
302
{
303
    int i;
304
305
    for (i = 0; i < xf86NumGPUScreens; i++)
306
        xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
307
}
308
299
static void
309
static void
300
TrapSignals(void)
310
TrapSignals(void)
301
{
311
{
Lines 872-877 InitOutput(ScreenInfo * pScreenInfo, int Link Here
872
    for (i = 0; i < xf86NumGPUScreens; i++)
882
    for (i = 0; i < xf86NumGPUScreens; i++)
873
        AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
883
        AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
884
    xf86AutoConfigOutputDevices();
885
874
    xf86VGAarbiterWrapFunctions();
886
    xf86VGAarbiterWrapFunctions();
875
    if (sigio_blocked)
887
    if (sigio_blocked)
876
        input_unlock();
888
        input_unlock();
(-)xorg-server-1.19.6/hw/xfree86/common/xf86platformBus.c (+3 lines)
Lines 489-494 xf86platformProbeDev(DriverPtr drvp) Link Here
489
    return foundScreen;
489
    return foundScreen;
490
}
490
}
491
extern void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master);
492
491
int
493
int
492
xf86platformAddDevice(int index)
494
xf86platformAddDevice(int index)
493
{
495
{
Lines 560-565 xf86platformAddDevice(int index) Link Here
560
   }
562
   }
561
   /* attach unbound to 0 protocol screen */
563
   /* attach unbound to 0 protocol screen */
562
   AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
564
   AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
565
   xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
563
   RRResourcesChanged(xf86Screens[0]->pScreen);
566
   RRResourcesChanged(xf86Screens[0]->pScreen);
564
   RRTellChanged(xf86Screens[0]->pScreen);
567
   RRTellChanged(xf86Screens[0]->pScreen);
(-)xorg-server-1.19.6/hw/xfree86/modes/xf86Crtc.c (+31 lines)
Lines 3462-3464 xf86DetachAllCrtc(ScrnInfoPtr scrn) Link Here
3462
            crtc->x = crtc->y = 0;
3462
            crtc->x = crtc->y = 0;
3463
        }
3463
        }
3464
}
3464
}
3465
3466
3467
void xf86AutoConfigOutputDevice(ScrnInfoPtr pScrn, ScrnInfoPtr master)
3468
{
3469
    RRProviderPtr master_provider;
3470
    RRProviderPtr slave_provider;
3471
    rrScrPrivPtr master_rp = rrGetScrPriv(master->pScreen);
3472
    rrScrPrivPtr slave_rp = rrGetScrPriv(pScrn->pScreen);
3473
3474
    if (!master_rp || !slave_rp)
3475
        return;
3476
3477
    master_provider = master_rp->provider;
3478
    slave_provider = slave_rp->provider;
3479
3480
    if (!master_provider || !slave_provider)
3481
        return;
3482
3483
    if ((master_provider->capabilities & RR_Capability_SinkOffload) &&
3484
        (slave_provider->capabilities & RR_Capability_SourceOffload)) {
3485
        /* source offload */
3486
        AttachOffloadGPU(master->pScreen, pScrn->pScreen);
3487
        slave_provider->offload_sink = master_provider;
3488
    }
3489
    if ((master_provider->capabilities & RR_Capability_SourceOutput) &&
3490
        (slave_provider->capabilities & RR_Capability_SinkOutput)) {
3491
        /* sink offload */
3492
        AttachOutputGPU(master->pScreen, pScrn->pScreen);
3493
        slave_provider->output_source = master_provider;
3494
    }
3495
}

Return to bug 1103816