From e72b15aa47c24b920c708e1dc47f69a070d50d51 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Tue, 1 Jun 2010 04:00:02 +0100 Subject: gallium: drm api compat helper This is temporary untill all drivers have moved to the new drm driver descriptor interface. --- .../auxiliary/target-helpers/drm_api_compat.h | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/gallium/auxiliary/target-helpers/drm_api_compat.h diff --git a/src/gallium/auxiliary/target-helpers/drm_api_compat.h b/src/gallium/auxiliary/target-helpers/drm_api_compat.h new file mode 100644 index 00000000000..324c6f2ba94 --- /dev/null +++ b/src/gallium/auxiliary/target-helpers/drm_api_compat.h @@ -0,0 +1,46 @@ +/* + * This file contain a small backwards compatible shim between + * the old depricated drm_api and the drm_driver interface. + */ + +#ifndef DRM_API_COMPAT_H +#define DRM_API_COMPAT_H + +#ifdef _DRM_API_H_ +#error "Included drm_api.h before drm_api_compat.h" +#endif + +#include "state_tracker/drm_driver.h" + +/* + * XXX Hack, can't include both drm_api and drm_driver. Due to name + * collition of winsys_handle, just use a define to rename it. + */ +#define winsys_handle HACK_winsys_handle +#include "state_tracker/drm_api.h" +#undef winsys_handle + +static INLINE struct pipe_screen * +drm_api_compat_create_screen(int fd) +{ + static struct drm_api *api; + if (!api) + api = drm_api_create(); + + if (!api) + return NULL; + + return api->create_screen(api, fd); +} + +/** + * Instanciate a drm_driver descriptor. + */ +#define DRM_API_COMPAT_STRUCT(name_str, driver_name_str) \ +struct drm_driver_descriptor driver_descriptor = { \ + .name = name_str, \ + .driver_name = driver_name_str, \ + .create_screen = drm_api_compat_create_screen, \ +}; + +#endif -- cgit v1.2.3