[Mesa-users] Need help getting start with EGL/DRM/KMS/GLES2

Albert Freeman albertwdfreeman at gmail.com
Tue Sep 1 19:41:50 PDT 2015


You might try using softpipe via "export GALLIUM_DRIVER=softpipe" and
"export LIBGL_ALWAYS_SOFTWARE=1". Which hopefully will use the
softpipe software renderer instead of svga. You will need to change
--with-gallium-drivers=svga to --with-gallium-drivers=svga,swrast and
recompile mesa.

On 2 September 2015 at 00:57, Albert Freeman <albertwdfreeman at gmail.com> wrote:
> My mesa config: I am using the git development tree for both libdrm
> and mesa. Linux 4.1.6-1 (the 1 is an arch linux maintainer patch).
>
> ./autogen.sh --prefix=/usr \
>     --sysconfdir=/etc \
>     --with-dri-driverdir=/usr/lib/xorg/modules/dri \
>     --with-gallium-drivers= \
>     --with-dri-drivers=i965 \
>     --with-egl-platforms=x11,drm,wayland \
>     --enable-egl \
>     --enable-gbm \
>     --enable-shared-glapi \
>     --enable-glx \
>     --enable-glx-tls \
>     --enable-dri \
>     --enable-gles1 \
>     --enable-gles2 \
>     --enable-texture-float \
>     --enable-xa \
>     --enable-vdpau
>
> On 2 September 2015 at 00:52, Albert Freeman <albertwdfreeman at gmail.com> wrote:
>> My mesa config: I am using the git development tree for both libdrm
>> and mesa. Linux 4.1.6-1 (the 1 is an arch linux maintainer patch).
>>
>> ./autogen.sh --prefix=/usr \
>>     --sysconfdir=/etc \
>>     --with-dri-driverdir=/usr/lib/xorg/modules/dri \
>>     --with-gallium-drivers= \
>>     --with-dri-drivers=i965 \
>>     --with-egl-platforms=x11,drm,wayland \
>>     --enable-egl \
>>     --enable-gbm \
>>     --enable-shared-glapi \
>>     --enable-glx \
>>     --enable-glx-tls \
>>     --enable-dri \
>>     --enable-gles1 \
>>     --enable-gles2 \
>>     --enable-texture-float \
>>     --enable-xa \
>>     --enable-vdpau
>>
>> On 1 September 2015 at 17:16, Jean-François Doyon <jfdoyon at gmail.com> wrote:
>>> Albert,
>>>
>>> Thanks for taking the time to investigate ... I'm afraid that made no
>>> difference on my end.  I guess there's something about my software stack or
>>> environment that's causing this then, now that I know I wasn't crazy and my
>>> code was indeed supposed to work!
>>>
>>> Can I ask what your environment is like? Were you using the vmwgfx driver?
>>> What version of Mesa, libdrm, kernel, etc?
>>>
>>> I'll try to get gdb into my image to see if I can glean some more details
>>> ...
>>>
>>> I did try to use buildroot's included libdrm/mesa configs (instead of my own
>>> "recipes"), which are also slightly older versions, but that changed nothing
>>> either ...
>>>
>>> Thanks,
>>> J.F.
>>>
>>> On Tue, Sep 1, 2015 at 12:10 AM, Albert Freeman <albertwdfreeman at gmail.com>
>>> wrote:
>>>>
>>>> Well with these quick and dirty changes I made, it works fine on my
>>>> system, no segfault and the screen displays red.
>>>>
>>>> --- gleskmsorg.c    2015-09-01 14:04:32.853672410 +0000
>>>> +++ gleskms.c    2015-09-01 14:03:57.797005474 +0000
>>>> @@ -24,8 +24,6 @@ EGL_CONFORMANT, EGL_OPENGL_ES2_BIT,
>>>>  EGL_NONE };
>>>>
>>>>  static const char device_name[] = "/dev/dri/card0";
>>>> -static const uint32_t drm_mode_connector_id = 18;
>>>> -static const uint32_t drm_mode_crtc_id = 21;
>>>>
>>>>  int main(void) {
>>>>
>>>> @@ -86,10 +84,12 @@ int main(void) {
>>>>          exit(EXIT_FAILURE);
>>>>      }
>>>>
>>>> +    drmModeRes *res;
>>>>      drmModeConnector *conn;
>>>>      uint32_t conn_id, width, height;
>>>>      drmModeModeInfo modeinfo;
>>>> -    conn = drmModeGetConnector(fd, drm_mode_connector_id);
>>>> +    res = drmModeGetResources(fd);
>>>> +    conn = drmModeGetConnector(fd, *res->connectors);
>>>>      conn_id = conn->connector_id;
>>>>      width = conn->modes[0].hdisplay;
>>>>      height = conn->modes[0].vdisplay;
>>>> @@ -129,7 +129,7 @@ int main(void) {
>>>>          exit(EXIT_FAILURE);
>>>>      }
>>>>
>>>> -    ret = drmModeSetCrtc(fd, drm_mode_crtc_id, drm_fb_id, 0, 0, &conn_id,
>>>> 1,
>>>> +    ret = drmModeSetCrtc(fd, *res->crtcs, drm_fb_id, 0, 0, &conn_id, 1,
>>>>              &modeinfo);
>>>>      if (ret) {
>>>>          printf("failed to set mode: %m\n");
>>>> @@ -143,8 +143,8 @@ int main(void) {
>>>>      gbm_surface_destroy(gs);
>>>>      eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
>>>>      eglDestroyContext(dpy, ctx);
>>>> -//    eglDestroySurface(dpy, surface);
>>>> -//    eglTerminate(dpy);
>>>> +    eglDestroySurface(dpy, surface);
>>>> +    eglTerminate(dpy);
>>>>      gbm_device_destroy(gbm);
>>>>      close(fd);
>>>>      return 0;
>>>
>>>


More information about the mesa-users mailing list