st/egl: Reorganize targets.
authorChia-I Wu <olv@lunarg.com>
Tue, 29 Jun 2010 06:04:27 +0000 (14:04 +0800)
committerChia-I Wu <olv@lunarg.com>
Tue, 29 Jun 2010 09:16:20 +0000 (17:16 +0800)
Merge all targets into targets/egl/.  The target produces
egl_gallium_<HW>.so for each pipe driver and st_<API>.so for each client
APIs.  This enables us to further merge egl_gallium_<HW>.so into
egl_gallium.so later.

34 files changed:
configure.ac
src/gallium/state_trackers/egl/Makefile
src/gallium/state_trackers/egl/common/egl_g3d_st.c
src/gallium/targets/Makefile.egl [deleted file]
src/gallium/targets/egl-apis/Makefile [deleted file]
src/gallium/targets/egl-apis/SConscript [deleted file]
src/gallium/targets/egl-apis/api_GL.c [deleted file]
src/gallium/targets/egl-apis/api_GLESv1_CM.c [deleted file]
src/gallium/targets/egl-apis/api_GLESv2.c [deleted file]
src/gallium/targets/egl-apis/api_OpenVG.c [deleted file]
src/gallium/targets/egl-i915/Makefile [deleted file]
src/gallium/targets/egl-i915/target.c [deleted file]
src/gallium/targets/egl-i965/Makefile [deleted file]
src/gallium/targets/egl-i965/target.c [deleted file]
src/gallium/targets/egl-nouveau/Makefile [deleted file]
src/gallium/targets/egl-nouveau/target.c [deleted file]
src/gallium/targets/egl-radeon/Makefile [deleted file]
src/gallium/targets/egl-radeon/target.c [deleted file]
src/gallium/targets/egl-swrast/Makefile [deleted file]
src/gallium/targets/egl-swrast/SConscript [deleted file]
src/gallium/targets/egl-swrast/swrast_glue.c [deleted file]
src/gallium/targets/egl-vmwgfx/Makefile [deleted file]
src/gallium/targets/egl-vmwgfx/target.c [deleted file]
src/gallium/targets/egl/Makefile [new file with mode: 0644]
src/gallium/targets/egl/SConscript [new file with mode: 0644]
src/gallium/targets/egl/pipe_i965.c [new file with mode: 0644]
src/gallium/targets/egl/pipe_nouveau.c [new file with mode: 0644]
src/gallium/targets/egl/pipe_radeon.c [new file with mode: 0644]
src/gallium/targets/egl/pipe_swrast.c [new file with mode: 0644]
src/gallium/targets/egl/pipe_vmwgfx.c [new file with mode: 0644]
src/gallium/targets/egl/st_GL.c [new file with mode: 0644]
src/gallium/targets/egl/st_GLESv1_CM.c [new file with mode: 0644]
src/gallium/targets/egl/st_GLESv2.c [new file with mode: 0644]
src/gallium/targets/egl/st_OpenVG.c [new file with mode: 0644]

index 09921176625c0678ce341592d8f9d2d08ec82341..7583ab8595ea4209a27574d05e99b4de37474713 100644 (file)
@@ -1292,7 +1292,7 @@ AC_SUBST([VG_LIB_DEPS])
 AC_SUBST([EGL_CLIENT_APIS])
 
 if test "x$HAVE_ST_EGL" = xyes; then
-       GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-apis"
+       GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
 fi
 
 if test "x$HAVE_ST_XORG" = xyes; then
@@ -1399,18 +1399,15 @@ dnl
 dnl Gallium helper functions
 dnl
 gallium_check_st() {
-    if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_EGL" = xyes || test "x$HAVE_ST_XORG" = xyes; then
+    if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
     fi
     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
     fi
-    if test "x$HAVE_ST_EGL" = xyes && test "x$3" != x; then
+    if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
     fi
-    if test "x$HAVE_ST_XORG" = xyes && test "x$4" != x; then
-         GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
-    fi
 }
 
 
@@ -1424,7 +1421,7 @@ AC_ARG_ENABLE([gallium-svga],
     [enable_gallium_svga=auto])
 if test "x$enable_gallium_svga" = xyes; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
-    gallium_check_st "svga/drm" "dri-vmwgfx" "egl-vmwgfx" "xorg-vmwgfx"
+    gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
 elif test "x$enable_gallium_svga" = xauto; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
 fi
@@ -1440,7 +1437,7 @@ AC_ARG_ENABLE([gallium-i915],
 if test "x$enable_gallium_i915" = xyes; then
     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
-    gallium_check_st "i915/drm" "dri-i915" "egl-i915" "xorg-i915"
+    gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
 elif test "x$enable_gallium_i915" = xauto; then
     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
@@ -1456,7 +1453,7 @@ AC_ARG_ENABLE([gallium-i965],
     [enable_gallium_i965=auto])
 if test "x$enable_gallium_i965" = xyes; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
-    gallium_check_st "i965/drm" "dri-i965" "egl-i965" "xorg-i965"
+    gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
 elif test "x$enable_gallium_i965" = xauto; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
 fi
@@ -1471,7 +1468,7 @@ AC_ARG_ENABLE([gallium-radeon],
     [enable_gallium_radeon=auto])
 if test "x$enable_gallium_radeon" = xyes; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
-    gallium_check_st "radeon/drm" "dri-radeong" "egl-radeon" "xorg-radeon"
+    gallium_check_st "radeon/drm" "dri-radeong" "xorg-radeon"
 elif test "x$enable_gallium_radeon" = xauto; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
 fi
@@ -1499,7 +1496,7 @@ AC_ARG_ENABLE([gallium-nouveau],
     [enable_gallium_nouveau=no])
 if test "x$enable_gallium_nouveau" = xyes; then
     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
-    gallium_check_st "nouveau/drm" "dri-nouveau" "egl-nouveau" "xorg-nouveau"
+    gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
 fi
 
 dnl
@@ -1514,9 +1511,6 @@ if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xau
     if test "x$HAVE_ST_DRI" = xyes; then
         GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
     fi
-    if test "x$HAVE_ST_EGL" = xyes; then
-        GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-swrast"
-    fi
 fi
 
 dnl prepend CORE_DIRS to SRC_DIRS
index 7bb53492b4926c738fc78f700bf5106df050eae7..e117f15d930adf0523db607a4e271c0e457c18c6 100644 (file)
@@ -40,7 +40,7 @@ ALL_INCLUDES = $(common_INCLUDES) $(x11_INCLUDES) $(kms_INCLUDES) $(fbdev_INCLUD
 ALL_SOURCES = $(common_SOURCES) $(x11_SOURCES) $(kms_SOURCES) $(fbdev_SOURCES)
 
 EGL_OBJECTS = $(common_OBJECTS)
-EGL_CPPFLAGS = $(common_INCLUDES)
+EGL_CPPFLAGS = $(common_INCLUDES) -DST_MODULE_PREFIX=\"st_\"
 
 # add backends
 ifneq ($(findstring x11, $(EGL_PLATFORMS)),)
index 683b74f62b25b6f16e66024229cc08e8391a8f81..0668f5c91ab4f41d9b88d20eab1fe391e2e54ce7 100644 (file)
@@ -133,24 +133,24 @@ egl_g3d_init_st_apis(struct st_api *stapis[ST_API_COUNT])
       case ST_API_OPENGL:
          skip_checks[api] = "glColor4d";
          symbols[api] = ST_CREATE_OPENGL_SYMBOL;
-         filenames[api][count++] = "api_GL" ST_MODULE_SUFFIX;
+         filenames[api][count++] = ST_MODULE_PREFIX "GL" ST_MODULE_SUFFIX;
          break;
       case ST_API_OPENGL_ES1:
          skip_checks[api] = "glColor4x";
          symbols[api] = ST_CREATE_OPENGL_ES1_SYMBOL;
-         filenames[api][count++] = "api_GLESv1_CM" ST_MODULE_SUFFIX;
-         filenames[api][count++] = "api_GL" ST_MODULE_SUFFIX;
+         filenames[api][count++] = ST_MODULE_PREFIX "GLESv1_CM" ST_MODULE_SUFFIX;
+         filenames[api][count++] = ST_MODULE_PREFIX "GL" ST_MODULE_SUFFIX;
          break;
       case ST_API_OPENGL_ES2:
          skip_checks[api] = "glShaderBinary";
          symbols[api] = ST_CREATE_OPENGL_ES2_SYMBOL;
-         filenames[api][count++] = "api_GLESv2" ST_MODULE_SUFFIX;
-         filenames[api][count++] = "api_GL" ST_MODULE_SUFFIX;
+         filenames[api][count++] = ST_MODULE_PREFIX "GLESv2" ST_MODULE_SUFFIX;
+         filenames[api][count++] = ST_MODULE_PREFIX "GL" ST_MODULE_SUFFIX;
          break;
       case ST_API_OPENVG:
          skip_checks[api] = "vgClear";
          symbols[api] = ST_CREATE_OPENVG_SYMBOL;
-         filenames[api][count++]= "api_OpenVG" ST_MODULE_SUFFIX;
+         filenames[api][count++]= ST_MODULE_PREFIX "OpenVG" ST_MODULE_SUFFIX;
          break;
       default:
          assert(!"Unknown API Type\n");
diff --git a/src/gallium/targets/Makefile.egl b/src/gallium/targets/Makefile.egl
deleted file mode 100644 (file)
index 7934f25..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-# src/gallium/winsys/drm/Makefile.egl
-
-# The driver Makefile should define
-#
-#   EGL_DRIVER_NAME, the name of the driver
-#   EGL_DRIVER_SOURCES, the sources of the driver
-#   EGL_DRIVER_LIBS, extra libraries needed by the driver
-#   EGL_DRIVER_PIPES, the pipe drivers of the driver
-#
-# before including this file.
-
-EGL_DRIVER_OBJECTS = $(EGL_DRIVER_SOURCES:.c=.o)
-
-common_LIBS = -ldrm -lm -ldl
-common_ST = \
-       $(TOP)/src/gallium/state_trackers/egl/libegl.a \
-       $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
-       $(TOP)/src/gallium/drivers/identity/libidentity.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/rbug/librbug.a
-
-ifeq ($(MESA_LLVM),1)
-common_ST += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
-common_LIBS += $(LLVM_LIBS)
-LDFLAGS += $(LLVM_LDFLAGS)
-endif
-
-ifeq ($(findstring x11, $(EGL_PLATFORMS)),x11)
-common_LIBS += -lX11 -lXext -lXfixes
-common_ST += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a
-endif
-
-ifeq ($(findstring kms, $(EGL_PLATFORMS)),kms)
-endif
-
-ifeq ($(findstring fbdev, $(EGL_PLATFORMS)),fbdev)
-common_ST += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a
-endif
-
-### Include directories
-INCLUDES = \
-       -I$(TOP)/include \
-       -I$(TOP)/src/gallium/include \
-       -I$(TOP)/src/gallium/auxiliary \
-       -I$(TOP)/src/gallium/drivers \
-       -I$(TOP)/src/gallium/winsys \
-       -I$(TOP)/src/egl/main \
-       $(LIBDRM_CFLAGS)
-
-##### RULES #####
-
-.c.o:
-       $(CC) -c $(INCLUDES) $(CFLAGS) $(EGL_DRIVER_DEFINES) $< -o $@
-
-
-##### TARGETS #####
-
-EGL_LIB_DIR = $(TOP)/$(LIB_DIR)/egl
-
-# do not build the driver if the platform is KMS only and the driver is swrast
-ifneq ($(EGL_PLATFORMS)-$(EGL_DRIVER_NAME),kms-swrast)
-EGL_DRIVER = egl_gallium_$(EGL_DRIVER_NAME).so
-endif
-
-default: $(EGL_LIB_DIR)/$(EGL_DRIVER)
-
-$(EGL_LIB_DIR)/$(EGL_DRIVER): $(EGL_DRIVER)
-       @$(INSTALL) -d $(EGL_LIB_DIR)
-       $(INSTALL) $< $(EGL_LIB_DIR)
-
-$(EGL_DRIVER): $(EGL_DRIVER_OBJECTS) $(common_ST) $(EGL_DRIVER_PIPES) $(GALLIUM_AUXILIARIES) Makefile
-       $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-               $(MKLIB_OPTIONS) $(EGL_DRIVER_OBJECTS) \
-               -Wl,--start-group $(common_ST) $(EGL_DRIVER_PIPES) \
-               $(GALLIUM_AUXILIARIES) -Wl,--end-group \
-               $(common_LIBS) $(EGL_DRIVER_LIBS) -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB)
-
-clean:
-       -rm -f $(EGL_DRIVER_OBJECTS)
-       -rm -f $(EGL_DRIVER)
-
-install: $(EGL_LIB_DIR)/$(EGL_DRIVER)
-       $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
-       $(MINSTALL) -m 755 $< $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
-
-depend:
diff --git a/src/gallium/targets/egl-apis/Makefile b/src/gallium/targets/egl-apis/Makefile
deleted file mode 100644 (file)
index 1275cc7..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-# src/gallium/targets/egl-apis
-
-TOP = ../../../..
-include $(TOP)/configs/current
-
-OUTPUT_PREFIX := api_
-OUTPUT_PATH := $(TOP)/$(LIB_DIR)/egl
-
-OUTPUTS := $(addsuffix .so, $(EGL_CLIENT_APIS))
-OUTPUTS := $(addprefix $(OUTPUT_PATH)/$(OUTPUT_PREFIX), $(OUTPUTS))
-
-# include dirs
-GL_INCLUDES := -I$(TOP)/src/mesa -I$(TOP)/src/gallium/include
-GLESv1_CM_INCLUDES := $(GL_INCLUDES)
-GLESv2_INCLUDES := $(GL_INCLUDES)
-OpenVG_INCLUDES := -I$(TOP)/src/gallium/state_trackers/vega -I$(TOP)/src/gallium/include
-
-# cflags
-GL_CFLAGS := $(API_DEFINES)
-GLESv1_CM_CFLAGS :=
-GLESv2_CFLAGS :=
-OpenVG_CFLAGS :=
-
-# system libs
-GL_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
-GLESv1_CM_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB)
-GLESv2_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB)
-OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB)
-
-# $(LLVM_LIBS) will be discarded except for OpenGL, which creates a private
-# draw context for selection/feedback mode.
-ifeq ($(MESA_LLVM),1)
-GL_SYS += $(LLVM_LIBS)
-GLESv1_CM_SYS += $(LLVM_LIBS)
-GLESv2_SYS += $(LLVM_LIBS)
-OpenVG_SYS += $(LLVM_LIBS)
-LDFLAGS += $(LLVM_LDFLAGS)
-endif
-
-# project libs
-GL_LIBS := $(TOP)/src/mesa/libmesagallium.a
-GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a
-GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a
-OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a
-
-# objects
-GL_OBJECTS := api_GL.o
-GLESv1_CM_OBJECTS := api_GLESv1_CM.o
-GLESv2_OBJECTS := api_GLESv2.o
-OpenVG_OBJECTS := api_OpenVG.o
-
-default: $(OUTPUTS)
-
-api_%.o: api_%.c
-       $(CC) -c -o $@ $< $($*_INCLUDES) $($*_CFLAGS) $(DEFINES) $(CFLAGS)
-
-define mklib
-$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-       -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) \
-       $($(1)_OBJECTS) $($(1)_LIBS) $(GALLIUM_AUXILIARIES) $($(1)_SYS)
-endef
-
-$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GL_LIB).so: $(GL_OBJECTS) $(GL_LIBS)
-       $(call mklib,GL)
-
-$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GLESv1_CM_LIB).so: $(GLESv1_CM_OBJECTS) $(GLESv1_CM_LIBS)
-       $(call mklib,GLESv1_CM)
-
-$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GLESv2_LIB).so: $(GLESv2_OBJECTS) $(GLESv2_LIBS)
-       $(call mklib,GLESv2)
-
-$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(VG_LIB).so: $(OpenVG_OBJECTS) $(OpenVG_LIBS)
-       $(call mklib,OpenVG)
-
-install: $(OUTPUTS)
-       $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
-       for out in $(OUTPUTS); do \
-               $(MINSTALL) -m 755 "$$out" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \
-       done
-
-clean:
-       -rm -f $(OUTPUTS)
-       -rm -f *.o
diff --git a/src/gallium/targets/egl-apis/SConscript b/src/gallium/targets/egl-apis/SConscript
deleted file mode 100644 (file)
index 0ca3d1f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#######################################################################
-# SConscript for egl-apis target
-
-Import('*')
-
-if env['platform'] == 'windows':
-
-    env = env.Clone()
-
-    env.Append(CPPPATH = [
-            '#/src/gallium/state_trackers/vega',
-    ])
-
-    env.Append(LIBS = [
-        'gdi32',
-        'user32',
-        'kernel32',
-        'ws2_32',
-    ])
-
-    env['no_import_lib'] = 1
-
-    api_libs = {
-        'OpenVG': vgapi + st_vega,
-    }
-
-    for name in api_libs.keys():
-        api = env.SharedLibrary(
-            target = 'api_' + name,
-            source = ['api_' + name + '.c'],
-            LIBS = api_libs[name] + gallium + env['LIBS'],
-        )
-        env.InstallSharedLibrary(api)
diff --git a/src/gallium/targets/egl-apis/api_GL.c b/src/gallium/targets/egl-apis/api_GL.c
deleted file mode 100644 (file)
index 676300b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "state_tracker/st_gl_api.h"
-
-#if FEATURE_GL
-PUBLIC struct st_api *
-st_api_create_OpenGL(void)
-{
-   return st_gl_api_create();
-}
-#endif
-
-#if FEATURE_ES1
-PUBLIC struct st_api *
-st_api_create_OpenGL_ES1(void)
-{
-   return st_gl_api_create_es1();
-}
-#endif
-
-#if FEATURE_ES2
-PUBLIC struct st_api *
-st_api_create_OpenGL_ES2(void)
-{
-   return st_gl_api_create_es2();
-}
-#endif
diff --git a/src/gallium/targets/egl-apis/api_GLESv1_CM.c b/src/gallium/targets/egl-apis/api_GLESv1_CM.c
deleted file mode 100644 (file)
index 0c8de89..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "state_tracker/st_gl_api.h"
-
-PUBLIC struct st_api *
-st_api_create_OpenGL_ES1(void)
-{
-   return st_gl_api_create_es1();
-}
diff --git a/src/gallium/targets/egl-apis/api_GLESv2.c b/src/gallium/targets/egl-apis/api_GLESv2.c
deleted file mode 100644 (file)
index 87b3e65..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "state_tracker/st_gl_api.h"
-
-PUBLIC struct st_api *
-st_api_create_OpenGL_ES2(void)
-{
-   return st_gl_api_create_es2();
-}
diff --git a/src/gallium/targets/egl-apis/api_OpenVG.c b/src/gallium/targets/egl-apis/api_OpenVG.c
deleted file mode 100644 (file)
index e29a237..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "state_tracker/st_api.h"
-#include "vg_api.h"
-
-PUBLIC struct st_api *
-st_api_create_OpenVG(void)
-{
-   return (struct st_api *) vg_api_get();
-}
diff --git a/src/gallium/targets/egl-i915/Makefile b/src/gallium/targets/egl-i915/Makefile
deleted file mode 100644 (file)
index 43c67a4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-EGL_DRIVER_NAME = i915
-EGL_DRIVER_SOURCES = target.c
-EGL_DRIVER_LIBS = -ldrm_intel
-
-EGL_DRIVER_DEFINES = \
-       -DGALLIUM_RBUG -DGALLIUM_TRACE -DGALLIUM_GALAHAD
-
-EGL_DRIVER_PIPES = \
-       $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \
-       $(TOP)/src/gallium/drivers/galahad/libgalahad.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/rbug/librbug.a \
-       $(TOP)/src/gallium/drivers/i915/libi915.a
-
-include ../Makefile.egl
diff --git a/src/gallium/targets/egl-i915/target.c b/src/gallium/targets/egl-i915/target.c
deleted file mode 100644 (file)
index 070e2c0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#include "state_tracker/drm_driver.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "i915/drm/i915_drm_public.h"
-#include "i915/i915_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct i915_winsys *iws;
-   struct pipe_screen *screen;
-
-   iws = i915_drm_winsys_create(fd);
-   if (!iws)
-      return NULL;
-
-   screen = i915_screen_create(iws);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("i915", "i915", create_screen)
-
-/* A poor man's --whole-archive for EGL drivers */
-void *_eglMain(void *);
-void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl-i965/Makefile b/src/gallium/targets/egl-i965/Makefile
deleted file mode 100644 (file)
index 44e4354..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-EGL_DRIVER_NAME = i965
-EGL_DRIVER_SOURCES = target.c
-EGL_DRIVER_LIBS = -ldrm_intel
-
-EGL_DRIVER_DEFINES = \
-       -DGALLIUM_SOFTPIPE -DGALLIUM_RBUG -DGALLIUM_TRACE
-
-EGL_DRIVER_PIPES = \
-       $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/rbug/librbug.a \
-       $(TOP)/src/gallium/drivers/i965/libi965.a \
-       $(TOP)/src/gallium/winsys/sw/wrapper/libwsw.a \
-       $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a
-
-include ../Makefile.egl
diff --git a/src/gallium/targets/egl-i965/target.c b/src/gallium/targets/egl-i965/target.c
deleted file mode 100644 (file)
index 1195b51..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#include "target-helpers/inline_wrapper_sw_helper.h"
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "i965/drm/i965_drm_public.h"
-#include "i965/brw_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct brw_winsys_screen *bws;
-   struct pipe_screen *screen;
-
-   bws = i965_drm_winsys_screen_create(fd);
-   if (!bws)
-      return NULL;
-
-   screen = brw_screen_create(bws);
-   if (!screen)
-      return NULL;
-
-   if (debug_get_bool_option("BRW_SOFTPIPE", FALSE))
-      screen = sw_screen_wrap(screen);
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("i915", "i965", create_screen)
-
-/* A poor man's --whole-archive for EGL drivers */
-void *_eglMain(void *);
-void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl-nouveau/Makefile b/src/gallium/targets/egl-nouveau/Makefile
deleted file mode 100644 (file)
index 0e16f11..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-EGL_DRIVER_NAME = nouveau
-EGL_DRIVER_SOURCES = target.c
-EGL_DRIVER_LIBS = -ldrm_nouveau
-
-EGL_DRIVER_DEFINES = \
-       -DGALLIUM_RBUG -DGALLIUM_TRACE
-
-EGL_DRIVER_PIPES = \
-       $(TOP)/src/gallium/winsys/nouveau/drm/libnouveaudrm.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/rbug/librbug.a \
-       $(TOP)/src/gallium/drivers/nvfx/libnvfx.a \
-       $(TOP)/src/gallium/drivers/nv50/libnv50.a \
-       $(TOP)/src/gallium/drivers/nouveau/libnouveau.a
-
-include ../Makefile.egl
diff --git a/src/gallium/targets/egl-nouveau/target.c b/src/gallium/targets/egl-nouveau/target.c
deleted file mode 100644 (file)
index cf569ea..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "nouveau/drm/nouveau_drm_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct pipe_screen *screen;
-
-   screen = nouveau_drm_screen_create(fd);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("nouveau", "nouveau", create_screen)
-
-/* A poor man's --whole-archive for EGL drivers */
-void *_eglMain(void *);
-void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl-radeon/Makefile b/src/gallium/targets/egl-radeon/Makefile
deleted file mode 100644 (file)
index cc7bb22..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-EGL_DRIVER_NAME = radeon
-EGL_DRIVER_SOURCES = target.c
-EGL_DRIVER_LIBS = -ldrm_radeon
-
-EGL_DRIVER_DEFINES = \
-       -DGALLIUM_RBUG -DGALLIUM_TRACE -DGALLIUM_GALAHAD
-
-EGL_DRIVER_PIPES = \
-       $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
-       $(TOP)/src/gallium/drivers/galahad/libgalahad.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/rbug/librbug.a \
-       $(TOP)/src/gallium/drivers/r300/libr300.a
-
-include ../Makefile.egl
diff --git a/src/gallium/targets/egl-radeon/target.c b/src/gallium/targets/egl-radeon/target.c
deleted file mode 100644 (file)
index ce07327..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "radeon/drm/radeon_drm_public.h"
-#include "r300/r300_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct r300_winsys_screen *sws;
-   struct pipe_screen *screen;
-
-   sws = r300_drm_winsys_screen_create(fd);
-   if (!sws)
-      return NULL;
-
-   screen = r300_screen_create(sws);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("radeon", "radeon", create_screen)
-
-/* A poor man's --whole-archive for EGL drivers */
-void *_eglMain(void *);
-void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl-swrast/Makefile b/src/gallium/targets/egl-swrast/Makefile
deleted file mode 100644 (file)
index 7d4f505..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-# Do propperly
-CFLAGS+="-I$(TOP)/src/gallium/include"
-
-EGL_DRIVER_NAME = swrast
-EGL_DRIVER_SOURCES = swrast_glue.c
-EGL_DRIVER_LIBS =
-EGL_DRIVER_PIPES =
-
-include ../Makefile.egl
diff --git a/src/gallium/targets/egl-swrast/SConscript b/src/gallium/targets/egl-swrast/SConscript
deleted file mode 100644 (file)
index 213e5b3..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#######################################################################
-# SConscript for egl-swrast target
-
-Import('*')
-
-if env['platform'] == 'windows':
-
-    env = env.Clone()
-
-    env.Append(LIBS = [
-        'gdi32',
-        'user32',
-        'kernel32',
-        'ws2_32',
-    ])
-
-    drivers = [softpipe]
-    if env['llvm']:
-        drivers += [llvmpipe]
-    drivers += [identity, trace, rbug]
-
-    env['no_import_lib'] = 1
-
-    egl_gdi_swrast = env.SharedLibrary(
-        target ='egl_gdi_swrast',
-       source = 'swrast_glue.c',
-        LIBS = st_egl_gdi + ws_gdi + drivers + gallium + egl + env['LIBS'],
-    )
-
-    env.InstallSharedLibrary(egl_gdi_swrast)
diff --git a/src/gallium/targets/egl-swrast/swrast_glue.c b/src/gallium/targets/egl-swrast/swrast_glue.c
deleted file mode 100644 (file)
index 24f7782..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#include "state_tracker/drm_driver.h"
-
-struct drm_driver_descriptor drm_driver = {
-   .name = "swrast",
-   .driver_name = NULL,
-   .create_screen = NULL,
-};
-
-/* A poor man's --whole-archive for EGL drivers */
-void *_eglMain(void *);
-void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl-vmwgfx/Makefile b/src/gallium/targets/egl-vmwgfx/Makefile
deleted file mode 100644 (file)
index 92ec4cb..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-TOP = ../../../..
-include $(TOP)/configs/current
-
-EGL_DRIVER_NAME = vmwgfx
-EGL_DRIVER_SOURCES = target.c
-EGL_DRIVER_LIBS =
-
-EGL_DRIVER_DEFINES = \
-       -DGALLIUM_RBUG -DGALLIUM_TRACE
-
-EGL_DRIVER_PIPES = \
-       $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
-       $(TOP)/src/gallium/drivers/trace/libtrace.a \
-       $(TOP)/src/gallium/drivers/rbug/librbug.a \
-       $(TOP)/src/gallium/drivers/svga/libsvga.a
-
-include ../Makefile.egl
diff --git a/src/gallium/targets/egl-vmwgfx/target.c b/src/gallium/targets/egl-vmwgfx/target.c
deleted file mode 100644 (file)
index 4e9f51c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#include "target-helpers/inline_debug_helper.h"
-#include "state_tracker/drm_driver.h"
-#include "svga/drm/svga_drm_public.h"
-#include "svga/svga_public.h"
-
-static struct pipe_screen *
-create_screen(int fd)
-{
-   struct svga_winsys_screen *sws;
-   struct pipe_screen *screen;
-
-   sws = svga_drm_winsys_screen_create(fd);
-   if (!sws)
-      return NULL;
-
-   screen = svga_screen_create(sws);
-   if (!screen)
-      return NULL;
-
-   screen = debug_screen_wrap(screen);
-
-   return screen;
-}
-
-DRM_DRIVER_DESCRIPTOR("vmwgfx", "vmwgfx", create_screen)
-
-/* A poor man's --whole-archive for EGL drivers */
-void *_eglMain(void *);
-void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile
new file mode 100644 (file)
index 0000000..364a31d
--- /dev/null
@@ -0,0 +1,208 @@
+# src/gallium/targets/egl/Makefile
+#
+# This is the Makefile for EGL Gallium driver package.  The package consists of
+#
+#   egl_gallium_<HW>.so - EGL drivers
+#   st_<API>.so         - client API state trackers
+#
+# The following variables are examined
+#
+#   EGL_PLATFORMS       - platforms to support
+#   GALLIUM_WINSYS_DIRS - pipe drivers to support
+#   EGL_CLIENT_APIS     - state trackers to support
+#
+
+TOP = ../../../..
+include $(TOP)/configs/current
+
+common_CPPFLAGS := \
+       -I$(TOP)/src/gallium/auxiliary \
+       -I$(TOP)/src/gallium/drivers \
+       -I$(TOP)/src/gallium/include \
+       -I$(TOP)/src/gallium/winsys
+common_SYS :=
+common_LIBS := \
+       $(TOP)/src/gallium/drivers/identity/libidentity.a \
+       $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
+       $(GALLIUM_AUXILIARIES)
+
+# EGL driver
+egl_CPPFLAGS := \
+       -I$(TOP)/src/gallium/state_trackers/egl \
+       -I$(TOP)/src/egl/main
+egl_SYS := -lm -ldl -lEGL
+egl_LIBS := \
+       $(TOP)/src/gallium/state_trackers/egl/libegl.a \
+       $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a
+
+ifneq ($(findstring x11, $(EGL_PLATFORMS)),)
+egl_SYS += -lX11 -lXext -lXfixes
+egl_LIBS += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a
+endif
+ifneq ($(findstring kms, $(EGL_PLATFORMS)),)
+egl_SYS += -ldrm
+endif
+ifneq ($(findstring fbdev, $(EGL_PLATFORMS)),)
+egl_LIBS += $(TOP)/src/gallium/winsys/sw/fbdev/libfbdev.a
+endif
+
+# LLVM
+ifeq ($(MESA_LLVM),1)
+common_SYS += $(LLVM_LIBS)
+egl_LIBS += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
+LDFLAGS += $(LLVM_LDFLAGS)
+endif
+
+# i915 pipe driver
+i915_CPPFLAGS :=
+i915_SYS := -ldrm_intel
+i915_LIBS := \
+       $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \
+       $(TOP)/src/gallium/drivers/i915/libi915.a
+
+# i965 pipe driver
+i965_CPPFLAGS :=
+i965_SYS := -ldrm_intel
+i965_LIBS := \
+       $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \
+       $(TOP)/src/gallium/drivers/i965/libi965.a
+
+# nouveau pipe driver
+nouveau_CPPFLAGS :=
+nouveau_SYS := -ldrm_nouveau
+nouveau_LIBS := \
+       $(TOP)/src/gallium/winsys/nouveau/drm/libnouveaudrm.a \
+       $(TOP)/src/gallium/drivers/nvfx/libnvfx.a \
+       $(TOP)/src/gallium/drivers/nv50/libnv50.a \
+       $(TOP)/src/gallium/drivers/nouveau/libnouveau.a
+
+# radeon pipe driver
+radeon_CPPFLAGS :=
+radeon_SYS := -ldrm -ldrm_radeon
+radeon_LIBS := \
+       $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
+       $(TOP)/src/gallium/drivers/r300/libr300.a
+
+# vmwgfx pipe driver
+vmwgfx_CPPFLAGS :=
+vmwgfx_SYS :=
+vmwgfx_LIBS := \
+       $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
+       $(TOP)/src/gallium/drivers/svga/libsvga.a
+
+# swrast (pseudo) pipe driver
+swrast_CPPFLAGS :=
+swrast_SYS :=
+swrast_LIBS :=
+
+# OpenGL state tracker
+GL_CPPFLAGS := -I$(TOP)/src/mesa $(API_DEFINES)
+GL_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
+GL_LIBS := $(TOP)/src/mesa/libmesagallium.a
+
+# OpenGL ES 1.x state tracker
+GLESv1_CM_CPPFLAGS := -I$(TOP)/src/mesa
+GLESv1_CM_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB)
+GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a
+
+# OpenGL ES 2.x state tracker
+GLESv2_CPPFLAGS := -I$(TOP)/src/mesa
+GLESv2_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB)
+GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a
+
+# OpenVG state tracker
+OpenVG_CPPFLAGS := -I$(TOP)/src/gallium/state_trackers/vega
+OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB)
+OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a
+
+
+OUTPUT_PATH := $(TOP)/$(LIB_DIR)/egl
+
+# determine the outputs
+ifneq ($(findstring i915,$(GALLIUM_WINSYS_DIRS)),)
+OUTPUTS += i915
+endif
+ifneq ($(findstring i965,$(GALLIUM_WINSYS_DIRS)),)
+OUTPUTS += i965
+endif
+ifneq ($(findstring nouveau,$(GALLIUM_WINSYS_DIRS)),)
+OUTPUTS += nouveau
+endif
+ifneq ($(findstring r300,$(GALLIUM_WINSYS_DIRS)),)
+OUTPUTS += radeon
+endif
+ifneq ($(findstring svga,$(GALLIUM_WINSYS_DIRS)),)
+OUTPUTS += vmwgfx
+endif
+OUTPUTS += swrast
+OUTPUTS := $(addprefix egl_gallium_, $(OUTPUTS))
+
+# state trackers
+OUTPUTS += $(addprefix st_, $(EGL_CLIENT_APIS))
+
+OUTPUTS := $(addsuffix .so, $(OUTPUTS))
+OUTPUTS := $(addprefix $(OUTPUT_PATH)/, $(OUTPUTS))
+
+default: $(OUTPUTS)
+
+define mklib-egl
+$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+       -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \
+       -Wl,--start-group $(common_LIBS) $(egl_LIBS) $($(1)_LIBS) -Wl,--end-group \
+       $(common_SYS) $(egl_SYS) $($(1)_SYS)
+endef
+
+define mklib
+$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+       -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) $< \
+       -Wl,--start-group $(common_LIBS) $($(1)_LIBS) -Wl,--end-group \
+       $(common_SYS) $($(1)_SYS)
+endef
+
+# EGL drivers
+$(OUTPUT_PATH)/egl_gallium_i915.so: pipe_i915.o $(egl_LIBS) $(i915_LIBS)
+       $(call mklib-egl,i915)
+
+$(OUTPUT_PATH)/egl_gallium_i965.so: pipe_i965.o $(egl_LIBS) $(i965_LIBS)
+       $(call mklib-egl,i965)
+
+$(OUTPUT_PATH)/egl_gallium_nouveau.so: pipe_nouveau.o $(egl_LIBS) $(nouveau_LIBS)
+       $(call mklib-egl,nouveau)
+
+$(OUTPUT_PATH)/egl_gallium_radeon.so: pipe_radeon.o $(egl_LIBS) $(radeon_LIBS)
+       $(call mklib-egl,radeon)
+
+$(OUTPUT_PATH)/egl_gallium_vmwgfx.so: pipe_vmwgfx.o $(egl_LIBS) $(vmwgfx_LIBS)
+       $(call mklib-egl,vmwgfx)
+
+$(OUTPUT_PATH)/egl_gallium_swrast.so: pipe_swrast.o $(egl_LIBS) $(swrast_LIBS)
+       $(call mklib-egl,swrast)
+
+# state trackers
+$(OUTPUT_PATH)/st_$(GL_LIB).so: st_GL.o $(GL_LIBS)
+       $(call mklib,GL)
+
+$(OUTPUT_PATH)/st_$(GLESv1_CM_LIB).so: st_GLESv1_CM.o $(GLESv1_CM_LIBS)
+       $(call mklib,GLESv1_CM)
+
+$(OUTPUT_PATH)/st_$(GLESv2_LIB).so: st_GLESv2.o $(GLESv2_LIBS)
+       $(call mklib,GLESv2)
+
+$(OUTPUT_PATH)/st_$(VG_LIB).so: st_OpenVG.o $(OpenVG_LIBS)
+       $(call mklib,OpenVG)
+
+pipe_%.o: pipe_%.c
+       $(CC) -c -o $@ $< $(common_CPPFLAGS) $($*_CPPFLAGS) $(DEFINES) $(CFLAGS)
+
+st_%.o: st_%.c
+       $(CC) -c -o $@ $< $(common_CPPFLAGS) $($*_CPPFLAGS) $(DEFINES) $(CFLAGS)
+
+install: $(OUTPUTS)
+       $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
+       for out in $(OUTPUTS); do \
+               $(MINSTALL) -m 755 "$$out" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \
+       done
+
+clean:
+       rm -f *.o
diff --git a/src/gallium/targets/egl/SConscript b/src/gallium/targets/egl/SConscript
new file mode 100644 (file)
index 0000000..c743c26
--- /dev/null
@@ -0,0 +1,46 @@
+#######################################################################
+# SConscript for egl-apis target
+
+Import('*')
+
+if env['platform'] == 'windows':
+
+    env = env.Clone()
+
+    env.Append(CPPPATH = [
+            '#/src/gallium/state_trackers/vega',
+    ])
+
+    env.Append(LIBS = [
+        'gdi32',
+        'user32',
+        'kernel32',
+        'ws2_32',
+    ])
+
+    env['no_import_lib'] = 1
+
+    drivers = [softpipe]
+    if env['llvm']:
+        drivers += [llvmpipe]
+    drivers += [identity, trace, rbug]
+
+    egl_gallium_swrast = env.SharedLibrary(
+        target ='egl_gallium_swrast',
+       source = 'pipe_swrast.c',
+        LIBS = st_egl_gdi + ws_gdi + drivers + gallium + egl + env['LIBS'],
+    )
+
+    env.InstallSharedLibrary(egl_gallium_swrast)
+
+    api_libs = {
+        'OpenVG': vgapi + st_vega,
+    }
+
+    for name in api_libs.keys():
+        api = env.SharedLibrary(
+            target = 'st_' + name,
+            source = ['st_' + name + '.c'],
+            LIBS = api_libs[name] + gallium + env['LIBS'],
+        )
+        env.InstallSharedLibrary(api)
diff --git a/src/gallium/targets/egl/pipe_i965.c b/src/gallium/targets/egl/pipe_i965.c
new file mode 100644 (file)
index 0000000..d19c83a
--- /dev/null
@@ -0,0 +1,34 @@
+
+#include "target-helpers/inline_wrapper_sw_helper.h"
+#include "target-helpers/inline_debug_helper.h"
+#include "state_tracker/drm_driver.h"
+#include "i965/drm/i965_drm_public.h"
+#include "i965/brw_public.h"
+
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct brw_winsys_screen *bws;
+   struct pipe_screen *screen;
+
+   bws = i965_drm_winsys_screen_create(fd);
+   if (!bws)
+      return NULL;
+
+   screen = brw_screen_create(bws);
+   if (!screen)
+      return NULL;
+
+   if (debug_get_bool_option("BRW_SOFTPIPE", FALSE))
+      screen = sw_screen_wrap(screen);
+
+   screen = debug_screen_wrap(screen);
+
+   return screen;
+}
+
+DRM_DRIVER_DESCRIPTOR("i965", "i965", create_screen)
+
+/* A poor man's --whole-archive for EGL drivers */
+void *_eglMain(void *);
+void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl/pipe_nouveau.c b/src/gallium/targets/egl/pipe_nouveau.c
new file mode 100644 (file)
index 0000000..cf569ea
--- /dev/null
@@ -0,0 +1,24 @@
+
+#include "target-helpers/inline_debug_helper.h"
+#include "state_tracker/drm_driver.h"
+#include "nouveau/drm/nouveau_drm_public.h"
+
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct pipe_screen *screen;
+
+   screen = nouveau_drm_screen_create(fd);
+   if (!screen)
+      return NULL;
+
+   screen = debug_screen_wrap(screen);
+
+   return screen;
+}
+
+DRM_DRIVER_DESCRIPTOR("nouveau", "nouveau", create_screen)
+
+/* A poor man's --whole-archive for EGL drivers */
+void *_eglMain(void *);
+void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl/pipe_radeon.c b/src/gallium/targets/egl/pipe_radeon.c
new file mode 100644 (file)
index 0000000..ce07327
--- /dev/null
@@ -0,0 +1,30 @@
+
+#include "target-helpers/inline_debug_helper.h"
+#include "state_tracker/drm_driver.h"
+#include "radeon/drm/radeon_drm_public.h"
+#include "r300/r300_public.h"
+
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct r300_winsys_screen *sws;
+   struct pipe_screen *screen;
+
+   sws = r300_drm_winsys_screen_create(fd);
+   if (!sws)
+      return NULL;
+
+   screen = r300_screen_create(sws);
+   if (!screen)
+      return NULL;
+
+   screen = debug_screen_wrap(screen);
+
+   return screen;
+}
+
+DRM_DRIVER_DESCRIPTOR("radeon", "radeon", create_screen)
+
+/* A poor man's --whole-archive for EGL drivers */
+void *_eglMain(void *);
+void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl/pipe_swrast.c b/src/gallium/targets/egl/pipe_swrast.c
new file mode 100644 (file)
index 0000000..d8205c1
--- /dev/null
@@ -0,0 +1,8 @@
+
+#include "state_tracker/drm_driver.h"
+
+DRM_DRIVER_DESCRIPTOR("swrast", NULL, NULL)
+
+/* A poor man's --whole-archive for EGL drivers */
+void *_eglMain(void *);
+void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl/pipe_vmwgfx.c b/src/gallium/targets/egl/pipe_vmwgfx.c
new file mode 100644 (file)
index 0000000..4e9f51c
--- /dev/null
@@ -0,0 +1,30 @@
+
+#include "target-helpers/inline_debug_helper.h"
+#include "state_tracker/drm_driver.h"
+#include "svga/drm/svga_drm_public.h"
+#include "svga/svga_public.h"
+
+static struct pipe_screen *
+create_screen(int fd)
+{
+   struct svga_winsys_screen *sws;
+   struct pipe_screen *screen;
+
+   sws = svga_drm_winsys_screen_create(fd);
+   if (!sws)
+      return NULL;
+
+   screen = svga_screen_create(sws);
+   if (!screen)
+      return NULL;
+
+   screen = debug_screen_wrap(screen);
+
+   return screen;
+}
+
+DRM_DRIVER_DESCRIPTOR("vmwgfx", "vmwgfx", create_screen)
+
+/* A poor man's --whole-archive for EGL drivers */
+void *_eglMain(void *);
+void *_eglWholeArchive = (void *) _eglMain;
diff --git a/src/gallium/targets/egl/st_GL.c b/src/gallium/targets/egl/st_GL.c
new file mode 100644 (file)
index 0000000..676300b
--- /dev/null
@@ -0,0 +1,25 @@
+#include "state_tracker/st_gl_api.h"
+
+#if FEATURE_GL
+PUBLIC struct st_api *
+st_api_create_OpenGL(void)
+{
+   return st_gl_api_create();
+}
+#endif
+
+#if FEATURE_ES1
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES1(void)
+{
+   return st_gl_api_create_es1();
+}
+#endif
+
+#if FEATURE_ES2
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES2(void)
+{
+   return st_gl_api_create_es2();
+}
+#endif
diff --git a/src/gallium/targets/egl/st_GLESv1_CM.c b/src/gallium/targets/egl/st_GLESv1_CM.c
new file mode 100644 (file)
index 0000000..0c8de89
--- /dev/null
@@ -0,0 +1,7 @@
+#include "state_tracker/st_gl_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES1(void)
+{
+   return st_gl_api_create_es1();
+}
diff --git a/src/gallium/targets/egl/st_GLESv2.c b/src/gallium/targets/egl/st_GLESv2.c
new file mode 100644 (file)
index 0000000..87b3e65
--- /dev/null
@@ -0,0 +1,7 @@
+#include "state_tracker/st_gl_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES2(void)
+{
+   return st_gl_api_create_es2();
+}
diff --git a/src/gallium/targets/egl/st_OpenVG.c b/src/gallium/targets/egl/st_OpenVG.c
new file mode 100644 (file)
index 0000000..e29a237
--- /dev/null
@@ -0,0 +1,8 @@
+#include "state_tracker/st_api.h"
+#include "vg_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenVG(void)
+{
+   return (struct st_api *) vg_api_get();
+}