From 2f1195753282d1176edd7b9772aad17eced24dd8 Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Thu, 16 May 2019 18:01:39 +0100 Subject: [PATCH] egl: keep the software device at the end of the list MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/egl/main/egldevice.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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); -- 2.30.2