From: Emil Velikov Date: Thu, 16 May 2019 17:01:39 +0000 (+0100) Subject: egl: keep the software device at the end of the list X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2f1195753282d1176edd7b9772aad17eced24dd8;p=mesa.git egl: keep the software device at the end of the list By default, the user is likely to pick the first device so it should not be the least performant (aka software) one. v2: Drop odd comment (Marek) Suggested-by: Marek Olšák Reviewed-by: Mathias Fröhlich (v1) Reviewed-by: Marek Olšák (v1) Signed-off-by: Emil Velikov Signed-off-by: Marek Olšák --- diff --git a/src/egl/main/egldevice.c b/src/egl/main/egldevice.c index c5c9a21273a..82af1f47fed 100644 --- a/src/egl/main/egldevice.c +++ b/src/egl/main/egldevice.c @@ -293,13 +293,25 @@ _eglQueryDevicesEXT(EGLint max_devices, goto out; } + /* Push the first device (the software one) to the end of the list. + * Sending it to the user only if they've requested the full list. + * + * By default, the user is likely to pick the first device so having the + * software (aka least performant) one is not a good idea. + */ *num_devices = MIN2(num_devs, max_devices); - for (i = 0, dev = devs; i < *num_devices; i++) { + for (i = 0, dev = devs->Next; dev && i < max_devices; i++) { devices[i] = dev; dev = dev->Next; } + /* User requested the full device list, add the sofware device. */ + if (max_devices >= num_devs) { + assert(_eglDeviceSupports(devs, _EGL_DEVICE_SOFTWARE)); + devices[num_devs - 1] = devs; + } + out: mtx_unlock(_eglGlobal.Mutex);