Export the approapriate new symbol, and keep backwards compat via the megadriver_stub helper library.
Our next and final step would be to unify dri/drm and dri/sw, leading to a complete megadrivers solution, and having a single library that provides dri across all targets. Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- src/gallium/Automake.inc | 2 ++ src/gallium/state_trackers/dri/common/dri_screen.h | 2 ++ src/gallium/state_trackers/dri/sw/drisw.c | 4 ++-- src/gallium/targets/dri-swrast/Makefile.am | 1 + src/gallium/targets/dri-swrast/SConscript | 7 ++++++- src/gallium/targets/dri-swrast/swrast_drm_api.c | 9 +++++++++ 6 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/gallium/Automake.inc b/src/gallium/Automake.inc index e70a136..1a21cad 100644 --- a/src/gallium/Automake.inc +++ b/src/gallium/Automake.inc @@ -28,6 +28,8 @@ GALLIUM_DRIVER_CXXFLAGS = \ GALLIUM_DRI_CFLAGS = \ -I$(top_srcdir)/include \ + -I$(top_srcdir)/src/gallium/state_trackers/dri/common \ + -I$(top_srcdir)/src/mesa/drivers/dri/common \ -I$(top_srcdir)/src/gallium/include \ -I$(top_srcdir)/src/gallium/auxiliary \ -I$(top_srcdir)/src/gallium/drivers \ diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h index 106dcc3..63758d2 100644 --- a/src/gallium/state_trackers/dri/common/dri_screen.h +++ b/src/gallium/state_trackers/dri/common/dri_screen.h @@ -147,6 +147,8 @@ dri_destroy_screen(__DRIscreen * sPriv); extern const struct __DriverAPIRec galliumdrm_driver_api; extern const __DRIextension *galliumdrm_driver_extensions[]; +extern const struct __DriverAPIRec galliumsw_driver_api; +extern const __DRIextension *galliumsw_driver_extensions[]; extern const __DRIconfigOptionsExtension gallium_config_options; #endif diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c index 6f50b05..f1d5a06 100644 --- a/src/gallium/state_trackers/dri/sw/drisw.c +++ b/src/gallium/state_trackers/dri/sw/drisw.c @@ -397,7 +397,7 @@ drisw_create_buffer(__DRIscreen * sPriv, * * DRI versions differ in their implementation of init_screen and swap_buffers. */ -const struct __DriverAPIRec driDriverAPI = { +const struct __DriverAPIRec galliumsw_driver_api = { .InitScreen = drisw_init_screen, .DestroyScreen = dri_destroy_screen, .CreateContext = dri_create_context, @@ -411,7 +411,7 @@ const struct __DriverAPIRec driDriverAPI = { }; /* This is the table of extensions that the loader will dlsym() for. */ -PUBLIC const __DRIextension *__driDriverExtensions[] = { +const __DRIextension *galliumsw_driver_extensions[] = { &driCoreExtension.base, &driSWRastExtension.base, &driCopySubBufferExtension.base, diff --git a/src/gallium/targets/dri-swrast/Makefile.am b/src/gallium/targets/dri-swrast/Makefile.am index 7db7d40..b52c4c2 100644 --- a/src/gallium/targets/dri-swrast/Makefile.am +++ b/src/gallium/targets/dri-swrast/Makefile.am @@ -39,6 +39,7 @@ swrast_dri_la_LDFLAGS = $(GALLIUM_DRI_LINKER_FLAGS) swrast_dri_la_LIBADD = \ $(top_builddir)/src/mesa/drivers/dri/common/libdricommon.la \ + $(top_builddir)/src/mesa/drivers/dri/common/libmegadriver_stub.la \ $(top_builddir)/src/gallium/state_trackers/dri/sw/libdrisw.la \ $(top_builddir)/src/gallium/winsys/sw/dri/libswdri.la \ $(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la \ diff --git a/src/gallium/targets/dri-swrast/SConscript b/src/gallium/targets/dri-swrast/SConscript index 2b0894c..2497ec6 100644 --- a/src/gallium/targets/dri-swrast/SConscript +++ b/src/gallium/targets/dri-swrast/SConscript @@ -3,7 +3,11 @@ Import('*') env = drienv.Clone() env.Append(CPPPATH = [ - '#/src/gallium/winsys/sw/dri', + '#/src/loader', + '#/src/mapi', + '#/src/mesa', + '#/src/mesa/drivers/dri/common', + '#/src/gallium/state_trackers/dri/common', ]) env.Prepend(LIBS = [ @@ -14,6 +18,7 @@ env.Prepend(LIBS = [ mesa, glsl, gallium, + megadrivers_stub, dri_common, ]) diff --git a/src/gallium/targets/dri-swrast/swrast_drm_api.c b/src/gallium/targets/dri-swrast/swrast_drm_api.c index 3394722..102d5bd 100644 --- a/src/gallium/targets/dri-swrast/swrast_drm_api.c +++ b/src/gallium/targets/dri-swrast/swrast_drm_api.c @@ -34,6 +34,15 @@ #include "state_tracker/drm_driver.h" #include "sw/dri/dri_sw_winsys.h" +#include "dri_screen.h" + +const __DRIextension **__driDriverGetExtensions_swrast(void); + +PUBLIC const __DRIextension **__driDriverGetExtensions_swrast(void) +{ + globalDriverAPI = &galliumsw_driver_api; + return galliumsw_driver_extensions; +} DRM_DRIVER_DESCRIPTOR("swrast", NULL, NULL, NULL); -- 2.0.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev