_EGLDevice **devices,
EGLint *num_devices)
{
- _EGLDevice *dev, *devs;
+ _EGLDevice *dev, *devs, *swrast;
int i = 0, num_devs;
if ((devices && max_devices <= 0) || !num_devices)
num_devs = _eglRefreshDeviceList();
devs = _eglGlobal.DeviceList;
+ swrast = devs;
+
+ /* The first device is swrast. Start with the non-swrast device. */
+ devs = devs->Next;
/* bail early if we only care about the count */
if (!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.
+ *num_devices = MIN2(num_devs, max_devices);
+
+ /* Add non-swrast devices first and add swrast last.
*
* 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->Next; dev && i < max_devices; i++) {
+ for (i = 0, dev = devs; 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;
+ assert(_eglDeviceSupports(swrast, _EGL_DEVICE_SOFTWARE));
+ devices[num_devs - 1] = swrast;
}
out: