diff options
author | Chia-I Wu <[email protected]> | 2010-08-23 23:03:51 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-08-24 11:50:36 +0800 |
commit | 65741c596f9c89ee25dfa4eb910a48140d22515b (patch) | |
tree | 49a626561c4573ca0d94e5b2ec61ac2d49d36933 /src/gallium/targets/egl/egl.c | |
parent | 0ba164365875bba0150937c7e1a81cfa06d9f9b4 (diff) |
targets/egl: Check against drm_driver_descriptor::name.
drm_driver_descriptor::driver_name is defined to be the name of the
kernel module. We should check against drm_driver_descriptor::name
instead of drm_driver_descriptor::driver_name.
Diffstat (limited to 'src/gallium/targets/egl/egl.c')
-rw-r--r-- | src/gallium/targets/egl/egl.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/gallium/targets/egl/egl.c b/src/gallium/targets/egl/egl.c index d9d89485c3c..a573b212179 100644 --- a/src/gallium/targets/egl/egl.c +++ b/src/gallium/targets/egl/egl.c @@ -155,24 +155,23 @@ load_pipe_module(struct pipe_module *pmod, const char *name) if (!pmod->name) return FALSE; + _eglLog(_EGL_DEBUG, "searching for pipe module %s", pmod->name); _eglSearchPathForEach(dlopen_pipe_module_cb, (void *) pmod); if (pmod->lib) { pmod->drmdd = (const struct drm_driver_descriptor *) util_dl_get_proc_address(pmod->lib, "driver_descriptor"); - if (pmod->drmdd) { - if (pmod->drmdd->driver_name) { - /* driver name mismatch */ - if (strcmp(pmod->drmdd->driver_name, pmod->name) != 0) - pmod->drmdd = NULL; - } - else { - /* swrast */ - pmod->swrast_create_screen = - (struct pipe_screen *(*)(struct sw_winsys *)) - util_dl_get_proc_address(pmod->lib, "swrast_create_screen"); - if (!pmod->swrast_create_screen) - pmod->drmdd = NULL; - } + + /* sanity check on the name */ + if (pmod->drmdd && strcmp(pmod->drmdd->name, pmod->name) != 0) + pmod->drmdd = NULL; + + /* swrast */ + if (pmod->drmdd && !pmod->drmdd->driver_name) { + pmod->swrast_create_screen = + (struct pipe_screen *(*)(struct sw_winsys *)) + util_dl_get_proc_address(pmod->lib, "swrast_create_screen"); + if (!pmod->swrast_create_screen) + pmod->drmdd = NULL; } if (!pmod->drmdd) { |