WIP: Multi gpu pixman support
This is a WIP patch implementing support for multiple drm devices when using the pixman renderer. A new config option "multi-drm" is introduced in the drm backend. When specified, the backend will try to use all available drm devices found.
Tested with: weston --multi-drm --use-pixman --backend=drm-backend.so on a dual-GPU desktop, each GPU connected to a single display.
-
A new struct drm_dev stores the drm-device specific fields. The drm_backend keeps a wl_list of these devices.
-
structs drm_head, drm_output have a pointer to the appropriate drm_device.
-
capabilities (atomic modesetting, clock setting, cursor width and height, universal planes, aspect ratio) are backend-global and have to be set after checking the respective cap on all drm devices.
-
Should cursor width and height be drm-specific? What other drm_backend struct fields should be drm-device specific?
-
There is code in the patch concerning gl-renderer/egl/gbm but of course it does not work yet with the multi-drm option. The question is whether the approach this patch takes will be suitable for supporting gl or other renderers in the future.
Again this is RFC/WIP, to see if this approach is sane to continue developing. Comments welcome. Formatting and style are not thoroughly checked, and comments are still sparse, apologies.