mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-25 06:00:06 +01:00
xfree86: attempt to autoconfig gpu slave devices (v3)
This allows us to skip the screen section, the first Device section will get assigned to the screen, any remaining ones will get assigned to the GPUDevice sections for the screen. v2: fix the skipping unsuitable screen logic (Aaron) v3: fix segfault if not conf file (me, 5s after sending v2) Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
3b6930c5d0
commit
69e4b8e602
1 changed files with 26 additions and 5 deletions
|
|
@ -1825,13 +1825,34 @@ configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
|
|||
screenp->device = NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < conf_screen->num_gpu_devices; i++) {
|
||||
screenp->gpu_devices[i] = xnfcalloc(1, sizeof(GDevRec));
|
||||
if (configDevice(screenp->gpu_devices[i], conf_screen->scrn_gpu_devices[i], TRUE, TRUE)) {
|
||||
screenp->gpu_devices[i]->myScreenSection = screenp;
|
||||
if (conf_screen->num_gpu_devices == 0 && xf86configptr->conf_device_lst) {
|
||||
XF86ConfDevicePtr sdevice = xf86configptr->conf_device_lst->list.next;
|
||||
|
||||
for (i = 0; i < MAX_GPUDEVICES; i++) {
|
||||
if (!sdevice)
|
||||
break;
|
||||
|
||||
FIND_SUITABLE (XF86ConfDevicePtr, sdevice, conf_screen->scrn_gpu_devices[i]);
|
||||
if (!conf_screen->scrn_gpu_devices[i])
|
||||
break;
|
||||
screenp->gpu_devices[i] = xnfcalloc(1, sizeof(GDevRec));
|
||||
if (configDevice(screenp->gpu_devices[i], conf_screen->scrn_gpu_devices[i], TRUE, TRUE)) {
|
||||
screenp->gpu_devices[i]->myScreenSection = screenp;
|
||||
}
|
||||
sdevice = conf_screen->scrn_gpu_devices[i]->list.next;
|
||||
}
|
||||
screenp->num_gpu_devices = i;
|
||||
|
||||
} else {
|
||||
for (i = 0; i < conf_screen->num_gpu_devices; i++) {
|
||||
screenp->gpu_devices[i] = xnfcalloc(1, sizeof(GDevRec));
|
||||
if (configDevice(screenp->gpu_devices[i], conf_screen->scrn_gpu_devices[i], TRUE, TRUE)) {
|
||||
screenp->gpu_devices[i]->myScreenSection = screenp;
|
||||
}
|
||||
}
|
||||
screenp->num_gpu_devices = conf_screen->num_gpu_devices;
|
||||
}
|
||||
screenp->num_gpu_devices = conf_screen->num_gpu_devices;
|
||||
|
||||
screenp->options = conf_screen->scrn_option_lst;
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue