diff options
-rw-r--r-- | src/egl/drivers/dri/egldri.c | 68 |
1 files changed, 32 insertions, 36 deletions
diff --git a/src/egl/drivers/dri/egldri.c b/src/egl/drivers/dri/egldri.c index 8be48d03d43..2e8c7451bbe 100644 --- a/src/egl/drivers/dri/egldri.c +++ b/src/egl/drivers/dri/egldri.c @@ -512,12 +512,7 @@ _eglDRIGetDisplayInfo(driDisplay *dpy) { char path[ NAME_MAX ]; FILE *file; - int rc, mtrr; - unsigned int i; - drmMapType type; - drmMapFlags flags; - drm_handle_t handle, offset; - drmSize size; + int i, rc; drmSetVersion sv; drm_magic_t magic; @@ -550,51 +545,52 @@ _eglDRIGetDisplayInfo(driDisplay *dpy) if (drmAuthMagic(dpy->drmFD, magic)) return EGL_FALSE; - for ( i = 0;; i++ ) { - if ( ( rc = drmGetMap( dpy->drmFD, i, &offset, &size, &type, &flags, &handle, &mtrr ) ) != 0 ) { - _eglLog(_EGL_WARNING, "drmGetMap failed (%s)", strerror(errno)); + /* Map framebuffer and SAREA */ + for (i = 0; ; i++) { + drm_handle_t handle, offset; + drmSize size; + drmMapType type; + drmMapFlags flags; + int mtrr; + + if (drmGetMap(dpy->drmFD, i, &offset, &size, &type, &flags, + &handle, &mtrr)) break; - } - if ( type == DRM_FRAME_BUFFER ) { - if ( ( rc = drmMap( dpy->drmFD, offset, size, ( drmAddressPtr ) & dpy->pFB ) ) < 0 ) { - _eglLog(_EGL_WARNING, "drmMap failed"); + + if (type == DRM_FRAME_BUFFER) { + rc = drmMap( dpy->drmFD, offset, size, (drmAddressPtr) &dpy->pFB); + if (rc < 0) { + _eglLog(_EGL_WARNING, "drmMap DRM_FAME_BUFFER failed"); return EGL_FALSE; } dpy->fbSize = size; - break; + _eglLog(_EGL_INFO, "Found framebuffer size: %d", dpy->fbSize); } - _eglLog(_EGL_INFO, "Map %d offset=0x%x", i, (int) offset); - } - if ( !dpy->pFB ) { - _eglLog(_EGL_WARNING, "failed to map framebuffer"); - return EGL_FALSE; - } - - dpy->SAREASize = SAREA_MAX; - - for ( i = 0;; i++ ) { - if ( drmGetMap( dpy->drmFD, i, &offset, &size, &type, &flags, &handle, &mtrr ) != 0 ) - break; - if ( type == DRM_SHM ) { - if ( drmMap( dpy->drmFD, offset, size, ( drmAddressPtr ) ( &dpy->pSAREA ) ) < 0 ) { + else if (type == DRM_SHM) { + rc = drmMap(dpy->drmFD, offset, size, (drmAddressPtr) &dpy->pSAREA); + if (rc < 0 ) { _eglLog(_EGL_WARNING, "drmMap DRM_SHM failed."); return EGL_FALSE; } - break; + dpy->SAREASize = SAREA_MAX; + _eglLog(_EGL_DEBUG, "mapped SAREA 0x%08lx to %p, size %d", + (unsigned long) offset, dpy->pSAREA, dpy->SAREASize ); } } - if ( !dpy->pSAREA ) { + + if (!dpy->pFB) { + _eglLog(_EGL_WARNING, "failed to map framebuffer"); + return EGL_FALSE; + } + + if (!dpy->pSAREA) { /* if this happens, make sure you're using the most recent DRM modules */ - _eglLog(_EGL_WARNING, "Unable to map SAREA"); - return 0; + _eglLog(_EGL_WARNING, "failed to map SAREA"); + return EGL_FALSE; } memset( dpy->pSAREA, 0, dpy->SAREASize ); - _eglLog(_EGL_INFO, "Found framebuffer size: %d", dpy->fbSize); - _eglLog(_EGL_DEBUG, "mapped SAREA 0x%08lx to %p, size %d", - (unsigned long) offset, dpy->pSAREA, dpy->SAREASize ); - return EGL_TRUE; } |