gbm: remove unneeded gbm_drm_device abstraction

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:47:20 +01:00 committed by Emil Velikov
parent e183c55275
commit 628af2bc96
6 changed files with 33 additions and 85 deletions

View file

@ -893,7 +893,7 @@ dri2_display_release(_EGLDisplay *disp)
#ifdef HAVE_DRM_PLATFORM
case _EGL_PLATFORM_DRM:
if (dri2_dpy->own_device) {
gbm_device_destroy(&dri2_dpy->gbm_dri->base.base);
gbm_device_destroy(&dri2_dpy->gbm_dri->base);
}
break;
#endif

View file

@ -232,13 +232,13 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
return -1;
if (dri2_surf->back->bo == NULL) {
if (surf->base.modifiers)
dri2_surf->back->bo = gbm_bo_create_with_modifiers(&dri2_dpy->gbm_dri->base.base,
dri2_surf->back->bo = gbm_bo_create_with_modifiers(&dri2_dpy->gbm_dri->base,
surf->base.width, surf->base.height,
surf->base.format,
surf->base.modifiers,
surf->base.count);
else
dri2_surf->back->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base.base,
dri2_surf->back->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base,
surf->base.width,
surf->base.height,
surf->base.format,
@ -264,7 +264,7 @@ get_swrast_front_bo(struct dri2_egl_surface *dri2_surf)
}
if (dri2_surf->current->bo == NULL)
dri2_surf->current->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base.base,
dri2_surf->current->bo = gbm_bo_create(&dri2_dpy->gbm_dri->base,
surf->base.width, surf->base.height,
surf->base.format, surf->base.flags);
if (dri2_surf->current->bo == NULL)
@ -709,11 +709,6 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
}
dri2_dpy->gbm_dri = gbm_dri_device(gbm);
if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI) {
err = "DRI2: gbm device using incorrect/incompatible type";
goto cleanup;
}
dri2_dpy->fd = fd;
dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->driver_name);
@ -737,9 +732,9 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp)
dri2_dpy->gbm_dri->swrast_put_image2 = swrast_put_image2;
dri2_dpy->gbm_dri->swrast_get_image = swrast_get_image;
dri2_dpy->gbm_dri->base.base.surface_lock_front_buffer = lock_front_buffer;
dri2_dpy->gbm_dri->base.base.surface_release_buffer = release_buffer;
dri2_dpy->gbm_dri->base.base.surface_has_free_buffers = has_free_buffers;
dri2_dpy->gbm_dri->base.surface_lock_front_buffer = lock_front_buffer;
dri2_dpy->gbm_dri->base.surface_release_buffer = release_buffer;
dri2_dpy->gbm_dri->base.surface_has_free_buffers = has_free_buffers;
dri2_setup_screen(disp);

View file

@ -1,7 +1,6 @@
gbm_core_FILES = \
main/backend.c \
main/backend.h \
main/common_drm.h \
main/gbm.c \
main/gbm.h \
main/gbmint.h

View file

@ -456,12 +456,12 @@ dri_screen_create_dri2(struct gbm_dri_device *dri, char *driver_name)
return -1;
if (dri->dri2->base.version >= 4) {
dri->screen = dri->dri2->createNewScreen2(0, dri->base.base.fd,
dri->screen = dri->dri2->createNewScreen2(0, dri->base.fd,
dri->loader_extensions,
dri->driver_extensions,
&dri->driver_configs, dri);
} else {
dri->screen = dri->dri2->createNewScreen(0, dri->base.base.fd,
dri->screen = dri->dri2->createNewScreen(0, dri->base.fd,
dri->loader_extensions,
&dri->driver_configs, dri);
}
@ -527,7 +527,7 @@ dri_screen_create(struct gbm_dri_device *dri)
{
char *driver_name;
driver_name = loader_get_driver_for_fd(dri->base.base.fd);
driver_name = loader_get_driver_for_fd(dri->base.fd);
if (!driver_name)
return -1;
@ -790,7 +790,7 @@ gbm_dri_bo_destroy(struct gbm_bo *_bo)
gbm_dri_bo_unmap_dumb(bo);
memset(&arg, 0, sizeof(arg));
arg.handle = bo->handle;
drmIoctl(dri->base.base.fd, DRM_IOCTL_MODE_DESTROY_DUMB, &arg);
drmIoctl(dri->base.fd, DRM_IOCTL_MODE_DESTROY_DUMB, &arg);
}
free(bo);
@ -1034,7 +1034,7 @@ create_dumb(struct gbm_device *gbm,
create_arg.width = width;
create_arg.height = height;
ret = drmIoctl(dri->base.base.fd, DRM_IOCTL_MODE_CREATE_DUMB, &create_arg);
ret = drmIoctl(dri->base.fd, DRM_IOCTL_MODE_CREATE_DUMB, &create_arg);
if (ret)
goto free_bo;
@ -1055,7 +1055,7 @@ create_dumb(struct gbm_device *gbm,
destroy_dumb:
memset(&destroy_arg, 0, sizeof destroy_arg);
destroy_arg.handle = create_arg.handle;
drmIoctl(dri->base.base.fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_arg);
drmIoctl(dri->base.fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_arg);
free_bo:
free(bo);
@ -1351,26 +1351,25 @@ dri_device_create(int fd)
if (!dri)
return NULL;
dri->base.base.fd = fd;
dri->base.base.bo_create = gbm_dri_bo_create;
dri->base.base.bo_import = gbm_dri_bo_import;
dri->base.base.bo_map = gbm_dri_bo_map;
dri->base.base.bo_unmap = gbm_dri_bo_unmap;
dri->base.base.is_format_supported = gbm_dri_is_format_supported;
dri->base.base.bo_write = gbm_dri_bo_write;
dri->base.base.bo_get_fd = gbm_dri_bo_get_fd;
dri->base.base.bo_get_planes = gbm_dri_bo_get_planes;
dri->base.base.bo_get_handle = gbm_dri_bo_get_handle_for_plane;
dri->base.base.bo_get_stride = gbm_dri_bo_get_stride;
dri->base.base.bo_get_offset = gbm_dri_bo_get_offset;
dri->base.base.bo_get_modifier = gbm_dri_bo_get_modifier;
dri->base.base.bo_destroy = gbm_dri_bo_destroy;
dri->base.base.destroy = dri_destroy;
dri->base.base.surface_create = gbm_dri_surface_create;
dri->base.base.surface_destroy = gbm_dri_surface_destroy;
dri->base.fd = fd;
dri->base.bo_create = gbm_dri_bo_create;
dri->base.bo_import = gbm_dri_bo_import;
dri->base.bo_map = gbm_dri_bo_map;
dri->base.bo_unmap = gbm_dri_bo_unmap;
dri->base.is_format_supported = gbm_dri_is_format_supported;
dri->base.bo_write = gbm_dri_bo_write;
dri->base.bo_get_fd = gbm_dri_bo_get_fd;
dri->base.bo_get_planes = gbm_dri_bo_get_planes;
dri->base.bo_get_handle = gbm_dri_bo_get_handle_for_plane;
dri->base.bo_get_stride = gbm_dri_bo_get_stride;
dri->base.bo_get_offset = gbm_dri_bo_get_offset;
dri->base.bo_get_modifier = gbm_dri_bo_get_modifier;
dri->base.bo_destroy = gbm_dri_bo_destroy;
dri->base.destroy = dri_destroy;
dri->base.surface_create = gbm_dri_surface_create;
dri->base.surface_destroy = gbm_dri_surface_destroy;
dri->base.type = GBM_DRM_DRIVER_TYPE_DRI;
dri->base.base.name = "drm";
dri->base.name = "drm";
mtx_init(&dri->mutex, mtx_plain);
@ -1386,7 +1385,7 @@ dri_device_create(int fd)
if (ret)
goto err_dri;
return &dri->base.base;
return &dri->base;
err_dri:
free(dri);

View file

@ -34,8 +34,6 @@
#include "gbmint.h"
#include "c11/threads.h"
#include "common_drm.h"
#include <GL/gl.h> /* dri_interface needs GL types */
#include "GL/internal/dri_interface.h"
@ -43,7 +41,7 @@ struct gbm_dri_surface;
struct gbm_dri_bo;
struct gbm_dri_device {
struct gbm_drm_device base;
struct gbm_device base;
void *driver;
char *driver_name; /* Name of the DRI module, without the _dri suffix */

View file

@ -1,43 +0,0 @@
/*
* Copyright © 2011 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* Authors:
* Benjamin Franzke <benjaminfranzke@googlemail.com>
*/
#ifndef _COMMON_DRM_H_
#define _COMMON_DRM_H_
#include "gbmint.h"
enum gbm_drm_driver_type {
GBM_DRM_DRIVER_TYPE_DRI,
GBM_DRM_DRIVER_TYPE_GALLIUM,
};
struct gbm_drm_device {
struct gbm_device base;
enum gbm_drm_driver_type type;
};
#endif