This is for hybrid drm device use case that one drm device is only capable of display and the other is only capable of rendering.
Usage: start xserver with MS_ALL_IN_ONE=1, and configure both the display (Screen) and render (GPUScreen) drm devices using modesetting DDX, it will use Screen as display, GPUScreen as render and create only one screen. Client see only the render device and load render device's DRI driver. Server side render is also accelerated by the render device. Display device only display what render device draws. There is still one problem: DRI3 can't support page flip because client doesn't know when to create a linear pixmap for flip. Further improvement: support multi display drm devices when the render device is also capable of display. Tested on a laptop with Intel iGPU and AMD dGPU. Qiang Yu (10): modesetting: add MS_ALL_IN_ONE handling modesetting: add is_primary to mark entity type modesetting: remove unused PciInfo in modesettingRec modesetting: add render entity init and free Revert "modesetting: Delete dead drmmode_bo_for_pixmap function." dri2: refine dri2_probe_driver_name modesetting: separate render and display modesetting: use drmmode_bo_for_pixmap in ms_do_pageflip modesetting: dri2 allocate linear backbuffer modesetting: allow display node has no gbm support hw/xfree86/dri2/dri2.c | 35 ++-- hw/xfree86/drivers/modesetting/dri2.c | 33 +++- hw/xfree86/drivers/modesetting/driver.c | 240 ++++++++++++++++------- hw/xfree86/drivers/modesetting/driver.h | 9 +- hw/xfree86/drivers/modesetting/drmmode_display.c | 128 +++++++++++- hw/xfree86/drivers/modesetting/drmmode_display.h | 3 + hw/xfree86/drivers/modesetting/dumb_bo.c | 11 ++ hw/xfree86/drivers/modesetting/dumb_bo.h | 1 + hw/xfree86/drivers/modesetting/pageflip.c | 4 +- hw/xfree86/drivers/modesetting/present.c | 6 + 10 files changed, 367 insertions(+), 103 deletions(-) -- 2.7.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
