PIC_FLAGS = @PIC_FLAGS@
DEFINES = @DEFINES@
API_DEFINES = @API_DEFINES@
-SHARED_GLAPI = @SHARED_GLAPI@
CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \
$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \
fi
AC_SUBST([API_DEFINES])
-AC_ARG_ENABLE([shared-glapi],
- [AS_HELP_STRING([--enable-shared-glapi],
- [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
- [enable_shared_glapi="$enableval"],
- [enable_shared_glapi=no])
-
-SHARED_GLAPI="0"
-if test "x$enable_shared_glapi" = xyes; then
- SHARED_GLAPI="1"
-fi
-AC_SUBST([SHARED_GLAPI])
-
dnl
dnl Driver configuration. Options are xlib, dri and osmesa right now.
dnl More later: fbdev, ...
dnl
dnl this variable will be prepended to SRC_DIRS and is not exported
-CORE_DIRS=""
+CORE_DIRS="mapi/shared-glapi"
SRC_DIRS=""
GLU_DIRS="sgi"
GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
GALLIUM_STATE_TRACKERS_DIRS=""
-# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
-case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
-x*yes*)
- CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
- ;;
-esac
-
# build glapi if OpenGL is enabled
if test "x$enable_opengl" = xyes; then
CORE_DIRS="$CORE_DIRS mapi/glapi"
if test "x$enable_dri" = xyes; then
GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
- if test "$SHARED_GLAPI" -eq 0; then
- AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
- fi
fi
fi
AC_SUBST([GBM_LIB_DEPS])
LOCAL_CFLAGS := \
-D_EGL_MAIN=_eglBuiltInDriverDRI2 \
-DDEFAULT_DRIVER_DIR=\"/system/lib/dri\" \
- -DHAVE_SHARED_GLAPI \
-DHAVE_ANDROID_PLATFORM
LOCAL_C_INCLUDES := \
EGL_CFLAGS = -D_EGL_MAIN=_eglBuiltInDriverDRI2
EGL_BUILTIN = true
-ifeq ($(SHARED_GLAPI),1)
-EGL_CFLAGS += -DHAVE_SHARED_GLAPI
-endif
-
ifneq ($(findstring x11, $(EGL_PLATFORMS)),)
EGL_SOURCES += platform_x11.c
EGL_INCLUDES += -DHAVE_X11_PLATFORM $(XCB_DRI2_CFLAGS)
dri2_load(_EGLDriver *drv)
{
struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv);
-#ifdef HAVE_SHARED_GLAPI
#ifdef HAVE_ANDROID_PLATFORM
const char *libname = "libglapi.so";
#else
const char *libname = "libglapi.so.0";
-#endif
-#else
- /*
- * Both libGL.so and libglapi.so are glapi providers. There is no way to
- * tell which one to load.
- */
- const char *libname = NULL;
#endif
void *handle;
# EGL_PLATFORMS - platforms to support
# EGL_CLIENT_APIS - state trackers to support
# GALLIUM_WINSYS_DIRS - pipe drivers to support
-# SHARED_GLAPI - st/mesa can be statically linked or not
#
TOP = ../../../..
# st/mesa
ifneq ($(filter $(GL_LIB), $(EGL_CLIENT_APIS)),)
egl_CPPFLAGS += -I$(TOP)/src/mesa $(API_DEFINES)
-# make st/mesa built-in when there is a single glapi provider
-ifeq ($(SHARED_GLAPI),1)
egl_LIBS += $(TOP)/src/mesa/libmesagallium.a
egl_SYS += -lm -lpthread $(DLOPEN_LIBS) -l$(GLAPI_LIB)
-else
-egl_CPPFLAGS += -D_EGL_EXTERNAL_GL=1
-OUTPUTS += st_GL
-endif # SHARED_GLAPI
endif
# st/vega
LDFLAGS += $(LLVM_LDFLAGS)
endif
-ifeq ($(SHARED_GLAPI),1)
GL_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(GL_LIB_DEPS)
-endif
.SUFFIXES : .cpp
applegl_glx.c
-ifeq ($(SHARED_GLAPI),1)
GL_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(GL_LIB_DEPS)
-EXTRA_DEFINES += -DGLX_SHARED_GLAPI
-endif
# override GLAPI_LIB
GLAPI_LIB = $(TOP)/src/mapi/glapi/libglapi.a
env.Append(CPPDEFINES = ['XF86VIDMODE'])
env.PkgUseModules('XF86VIDMODE')
-if False: # XXX: SHARED_GLAPI
- env.Append(CPPDEFINES = ['GLX_SHARED_GLAPI'])
-
sources = [
'clientattrib.c',
'clientinfo.c',
f = (gl_function) get_glx_proc_address((const char *) procName);
if ((f == NULL) && (procName[0] == 'g') && (procName[1] == 'l')
&& (procName[2] != 'X')) {
-#ifdef GLX_SHARED_GLAPI
f = (gl_function) __indirect_get_proc_address((const char *) procName);
-#endif
if (!f)
f = (gl_function) _glapi_get_proc_address((const char *) procName);
if (!f) {
}
-#ifdef GLX_SHARED_GLAPI
-
static const struct proc_pair {
const char *name;
_glapi_proc proc;
return (pair) ? pair->proc : NULL;
}
-#endif /* GLX_SHARED_GLAPI */
-
#undef FASTCALL
#undef NOINLINE
extern _X_HIDDEN void __indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
extern _X_HIDDEN void __indirect_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
extern _X_HIDDEN void __indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-
-#ifdef GLX_SHARED_GLAPI
extern _X_HIDDEN void (*__indirect_get_proc_address(const char *name))(void);
-#endif
# undef FASTCALL
# undef NOINLINE
-I$(TOP)/src/mapi \
-I$(TOP)/src/mesa
-ifeq ($(SHARED_GLAPI),1)
glapi_CPPFLAGS += \
-DMAPI_MODE_BRIDGE \
-DMAPI_ABI_HEADER=\"glapi/glapi_mapi_tmp.h\"
glapi_GLAPI_OBJECTS :=
glapi_ASM_OBJECTS :=
glapi_MAPI_OBJECTS := $(MAPI_BRIDGE_SOURCES:.c=.o)
-else
-glapi_CPPFLAGS += -DMAPI_MODE_UTIL
-glapi_SOURCES := $(GLAPI_SOURCES) $(addprefix $(MAPI)/, $(MAPI_UTIL_SOURCES))
-
-glapi_GLAPI_OBJECTS := $(GLAPI_SOURCES:.c=.o)
-glapi_ASM_OBJECTS := $(GLAPI_ASM_SOURCES:.S=.o)
-glapi_MAPI_OBJECTS := $(MAPI_UTIL_SOURCES:.c=.o)
-endif # SHARED_GLAPI
glapi_OBJECTS := \
$(glapi_GLAPI_OBJECTS) \
-rm -f lib$(TARGET).a
-rm -f depend depend.bak
-ifeq ($(SHARED_GLAPI),1)
# workaround a bug in makedepend
makedepend_CPPFLAGS := \
$(filter-out -DMAPI_ABI_HEADER=%, $(glapi_CPPFLAGS))
$(glapi_OBJECTS): glapi_mapi_tmp.h
-else
-makedepend_CPPFLAGS := $(glapi_CPPFLAGS)
-endif
depend: $(glapi_SOURCES)
@ echo "running $(MKDEP)"
procs[n] = func.static_glx_name(n)
print """
-#ifdef GLX_SHARED_GLAPI
-
static const struct proc_pair
{
const char *name;
return (pair) ? pair->proc : NULL;
}
-
-#endif /* GLX_SHARED_GLAPI */
"""
return
break
print ''
- print '#ifdef GLX_SHARED_GLAPI'
print 'extern _X_HIDDEN void (*__indirect_get_proc_address(const char *name))(void);'
- print '#endif'
def show_usage():
CORE_MESA = $(TOP)/src/mesa/libmesa.a $(TOP)/src/mapi/glapi/libglapi.a
-ifeq ($(SHARED_GLAPI),1)
GL_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(GL_LIB_DEPS)
-endif
.c.o: