Re: Need help getting start with EGL/DRM/KMS/GLES2
Albert Freeman <[email protected]>
| Newsgroups | gmane.comp.video.mesa3d.user |
|---|---|
| Message-ID | <CAHD8uZPRniRU55rVzwUt39q-jkSfAweAaaqZqYhE9K5GL5D-Kw@mail.gmail.com> |
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> >>> 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; >>> >>> _______________________________________________ mesa-users mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-users