diff options
author | Emil Velikov <[email protected]> | 2014-06-16 23:30:44 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2014-07-10 01:06:47 +0100 |
commit | 5b7e43aea89847100b929989c21d23da124d4936 (patch) | |
tree | 60a9d72688f989c730f87c4051250f1102e280a9 /src | |
parent | 532eb72be3894329eb751813f84882cf82478b8c (diff) |
targets/dri: Add __driDriverGetExtensions_nouveau symbol
The symbol is introduced by the mesa megadrivers, and adding
gallium support for it will allow us to merge st/dri/drm and
st/dri/sw. Resulting in a single dri library across gallium.
v2: Rebase on top of gallium dri3.
Signed-off-by: Emil Velikov <[email protected]>
Tested-by: Rob Clark <[email protected]>
Tested-by: Thomas Helland <thomashelland90 at gmail.com>
Acked-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/auxiliary/target-helpers/inline_drm_helper.h | 12 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/common/dri_screen.h | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/dri/drm/dri2.c | 22 | ||||
-rw-r--r-- | src/gallium/targets/dri/Makefile.am | 9 | ||||
-rw-r--r-- | src/gallium/targets/dri/dri.sym | 1 |
5 files changed, 46 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/target-helpers/inline_drm_helper.h b/src/gallium/auxiliary/target-helpers/inline_drm_helper.h index 3b36316f1a2..62c4f8e29a1 100644 --- a/src/gallium/auxiliary/target-helpers/inline_drm_helper.h +++ b/src/gallium/auxiliary/target-helpers/inline_drm_helper.h @@ -83,6 +83,18 @@ pipe_ilo_create_screen(int fd) #endif #if defined(GALLIUM_NOUVEAU) +#if defined(DRI_TARGET) +#include "dri_screen.h" + +const __DRIextension **__driDriverGetExtensions_nouveau(void); + +PUBLIC const __DRIextension **__driDriverGetExtensions_nouveau(void) +{ + globalDriverAPI = &galliumdrm_driver_api; + return galliumdrm_driver_extensions; +} +#endif + static struct pipe_screen * pipe_nouveau_create_screen(int fd) { diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h index 2d07f517db6..106dcc3a711 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.h +++ b/src/gallium/state_trackers/dri/common/dri_screen.h @@ -145,6 +145,8 @@ dri_destroy_screen_helper(struct dri_screen * screen); void dri_destroy_screen(__DRIscreen * sPriv); +extern const struct __DriverAPIRec galliumdrm_driver_api; +extern const __DRIextension *galliumdrm_driver_extensions[]; extern const __DRIconfigOptionsExtension gallium_config_options; #endif diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c index 898fd0ab1f6..1d26522ca96 100644 --- a/src/gallium/state_trackers/dri/drm/dri2.c +++ b/src/gallium/state_trackers/dri/drm/dri2.c @@ -1342,6 +1342,20 @@ const struct __DriverAPIRec driDriverAPI = { .ReleaseBuffer = dri2_release_buffer, }; +const struct __DriverAPIRec galliumdrm_driver_api = { + .InitScreen = dri2_init_screen, + .DestroyScreen = dri_destroy_screen, + .CreateContext = dri_create_context, + .DestroyContext = dri_destroy_context, + .CreateBuffer = dri2_create_buffer, + .DestroyBuffer = dri_destroy_buffer, + .MakeCurrent = dri_make_current, + .UnbindContext = dri_unbind_context, + + .AllocateBuffer = dri2_allocate_buffer, + .ReleaseBuffer = dri2_release_buffer, +}; + /* This is the table of extensions that the loader will dlsym() for. */ PUBLIC const __DRIextension *__driDriverExtensions[] = { &driCoreExtension.base, @@ -1351,4 +1365,12 @@ PUBLIC const __DRIextension *__driDriverExtensions[] = { NULL }; +const __DRIextension *galliumdrm_driver_extensions[] = { + &driCoreExtension.base, + &driImageDriverExtension.base, + &driDRI2Extension.base, + &gallium_config_options.base, + NULL +}; + /* vim: set sw=3 ts=8 sts=3 expandtab: */ diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am index cb1206452e4..f9d34828452 100644 --- a/src/gallium/targets/dri/Makefile.am +++ b/src/gallium/targets/dri/Makefile.am @@ -1,6 +1,10 @@ include $(top_srcdir)/src/gallium/Automake.inc AM_CFLAGS = \ + -I$(top_srcdir)/src/mapi \ + -I$(top_srcdir)/src/mesa \ + -I$(top_srcdir)/src/mesa/drivers/dri/common \ + -I$(top_srcdir)/src/gallium/state_trackers/dri/common \ $(GALLIUM_TARGET_CFLAGS) AM_CPPFLAGS = \ @@ -9,6 +13,11 @@ AM_CPPFLAGS = \ -DGALLIUM_RBUG \ -DGALLIUM_TRACE +if HAVE_GALLIUM_NOUVEAU +AM_CPPFLAGS += \ + -DDRI_TARGET +endif + dridir = $(DRI_DRIVER_INSTALL_DIR) dri_LTLIBRARIES = gallium_dri.la diff --git a/src/gallium/targets/dri/dri.sym b/src/gallium/targets/dri/dri.sym index c99aa09b4d9..49a2cc9fcf2 100644 --- a/src/gallium/targets/dri/dri.sym +++ b/src/gallium/targets/dri/dri.sym @@ -1,6 +1,7 @@ { global: __driDriverExtensions; + __driDriverGetExtensions*; nouveau_drm_screen_create; radeon_drm_winsys_create; local: |