[Bug 103575] eglQueryDevicesEXT returns 0 devices

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sun Nov 5 01:48:32 UTC 2017


https://bugs.freedesktop.org/show_bug.cgi?id=103575

            Bug ID: 103575
           Summary: eglQueryDevicesEXT returns 0 devices
           Product: Mesa
           Version: 17.2
          Hardware: x86-64 (AMD64)
                OS: Linux (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: Drivers/Gallium/r600
          Assignee: dri-devel at lists.freedesktop.org
          Reporter: Hi-Angel at yandex.ru
        QA Contact: dri-devel at lists.freedesktop.org

I'm following this guide
https://devblogs.nvidia.com/parallelforall/egl-eye-opengl-visualization-without-x-server/
to choose a GPU through native means of EGL.

Using eglQueryDevicesEXT() in both modes, i.e. with "devices" array to get
descriptions, as well as by passing 0 as "devices", results in 0 as a number of
supported devices. Specification says that I should've get at least 1 (and I
actually have two, r600g-managed, cards):

https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_device_enumeration.txt
> EGL devices can be enumerated before EGL is initialized.  Use:
> 
>         EGLBoolean eglQueryDevicesEXT(EGLint max_devices,
>                                       EGLDeviceEXT *devices,
>                                       EGLint *num_devices);
[SNIP]
> If <devices> is NULL, then <max_devices> will be ignored, no devices will be
> returned in <devices>, and <num_devices> will be set to the number of
> supported devices in the system.  All implementations must support at least
> one device.
> 
> On failure, EGL_FALSE is returned.

Below is the modified code I'm using:

        #include <EGL/egl.h>
        #include <EGL/eglext.h>
        #include <stdio.h>

        int main(int argc, char *argv[])
        {
            EGLint numDevices;

            PFNEGLQUERYDEVICESEXTPROC eglQueryDevicesEXT =
                (PFNEGLQUERYDEVICESEXTPROC)
eglGetProcAddress("eglQueryDevicesEXT");
            if (eglQueryDevicesEXT(2, 0, &numDevices) == EGL_FALSE) {
                puts("error in eglQueryDevicesEXT");
                return 1;
            }

            printf("Detected %d devices\n", numDevices);
        }

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20171105/f838826d/attachment.html>


More information about the dri-devel mailing list