[Mesa-dev] [PATCH 7/8] egl: keep the software device at the end of the list

Emil Velikov emil.l.velikov at gmail.com
Thu May 16 17:01:39 UTC 2019


From: Emil Velikov <emil.velikov at collabora.com>

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 <maraeo at gmail.com>
Reviewed-by: Mathias Fröhlich <Mathias.Froehlich at web.de> (v1)
Reviewed-by: Marek Olšák <marek.olsak at amd.com> (v1)
Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
 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.21.0



More information about the mesa-dev mailing list