gbm: move gbm_drm_device::driver_name to gbm_dri_device

The former already keeps track of the DRI module opened, based on the
driver_name provided. So let's keep them together.

As a nice bonus this Will allows us to remove the gbm_drm_device all
together with next patch.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Tested-by: Rob Herring <robh@kernel.org>
This commit is contained in:
Emil Velikov
2017-05-09 18:41:50 +01:00
committed by Emil Velikov
parent 2204ea6464
commit e183c55275
4 changed files with 11 additions and 11 deletions

View File

@@ -715,7 +715,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
}
dri2_dpy->fd = fd;
dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->base.driver_name);
dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->driver_name);
dri2_dpy->dri_screen = dri2_dpy->gbm_dri->screen;
dri2_dpy->core = dri2_dpy->gbm_dri->core;

View File

@@ -344,12 +344,12 @@ dri_open_driver(struct gbm_dri_device *dri)
len = next - p;
#if GLX_USE_TLS
snprintf(path, sizeof path,
"%.*s/tls/%s_dri.so", len, p, dri->base.driver_name);
"%.*s/tls/%s_dri.so", len, p, dri->driver_name);
dri->driver = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
#endif
if (dri->driver == NULL) {
snprintf(path, sizeof path,
"%.*s/%s_dri.so", len, p, dri->base.driver_name);
"%.*s/%s_dri.so", len, p, dri->driver_name);
dri->driver = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
}
/* not need continue to loop all paths once the driver is found */
@@ -373,7 +373,7 @@ dri_open_driver(struct gbm_dri_device *dri)
return NULL;
}
get_extensions_name = loader_get_extensions_name(dri->base.driver_name);
get_extensions_name = loader_get_extensions_name(dri->driver_name);
if (get_extensions_name) {
const __DRIextension **(*get_extensions)(void);
@@ -440,13 +440,13 @@ dri_screen_create_dri2(struct gbm_dri_device *dri, char *driver_name)
const __DRIextension **extensions;
int ret = 0;
dri->base.driver_name = driver_name;
if (dri->base.driver_name == NULL)
dri->driver_name = driver_name;
if (dri->driver_name == NULL)
return -1;
ret = dri_load_driver(dri);
if (ret) {
fprintf(stderr, "failed to load driver: %s\n", dri->base.driver_name);
fprintf(stderr, "failed to load driver: %s\n", dri->driver_name);
return ret;
};
@@ -490,8 +490,8 @@ dri_screen_create_swrast(struct gbm_dri_device *dri)
{
int ret;
dri->base.driver_name = strdup("swrast");
if (dri->base.driver_name == NULL)
dri->driver_name = strdup("swrast");
if (dri->driver_name == NULL)
return -1;
ret = dri_load_driver_swrast(dri);
@@ -1336,7 +1336,7 @@ dri_destroy(struct gbm_device *gbm)
free((__DRIconfig *) dri->driver_configs[i]);
free(dri->driver_configs);
dlclose(dri->driver);
free(dri->base.driver_name);
free(dri->driver_name);
free(dri);
}

View File

@@ -46,6 +46,7 @@ struct gbm_dri_device {
struct gbm_drm_device base;
void *driver;
char *driver_name; /* Name of the DRI module, without the _dri suffix */
__DRIscreen *screen;
__DRIcontext *context;

View File

@@ -38,7 +38,6 @@ enum gbm_drm_driver_type {
struct gbm_drm_device {
struct gbm_device base;
enum gbm_drm_driver_type type;
char *driver_name;
};
#endif