mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-25 00:09:54 +00:00
Revert "Always build shared glapi"
This reverts commit adefee50d9
.
Shared glapi was never tested with --enable-xlib-glx and turns out
to cause a lot of problems.
Conflicts:
configure.ac
This commit is contained in:
parent
a208468e04
commit
027ce0c493
@ -15,6 +15,7 @@ ASM_FLAGS = @ASM_FLAGS@
|
||||
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@ \
|
||||
|
28
configure.ac
28
configure.ac
@ -703,6 +703,18 @@ if test "x$enable_gles2" = xyes; then
|
||||
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, ...
|
||||
@ -788,7 +800,7 @@ dnl Driver specific build directories
|
||||
dnl
|
||||
|
||||
dnl this variable will be prepended to SRC_DIRS and is not exported
|
||||
CORE_DIRS="mapi/shared-glapi"
|
||||
CORE_DIRS=""
|
||||
|
||||
SRC_DIRS=""
|
||||
GLU_DIRS="sgi"
|
||||
@ -798,6 +810,13 @@ GALLIUM_WINSYS_DIRS="sw"
|
||||
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"
|
||||
@ -1365,6 +1384,13 @@ if test "x$enable_gbm" = xyes; then
|
||||
|
||||
PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
|
||||
AC_MSG_ERROR([gbm needs udev]))
|
||||
|
||||
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
|
||||
GBM_PC_REQ_PRIV="libudev"
|
||||
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
|
||||
|
@ -34,6 +34,7 @@ LOCAL_SRC_FILES := \
|
||||
LOCAL_CFLAGS := \
|
||||
-D_EGL_MAIN=_eglBuiltInDriverDRI2 \
|
||||
-DDEFAULT_DRIVER_DIR=\"/system/lib/dri\" \
|
||||
-DHAVE_SHARED_GLAPI \
|
||||
-DHAVE_ANDROID_PLATFORM
|
||||
|
||||
LOCAL_C_INCLUDES := \
|
||||
|
@ -21,6 +21,10 @@ EGL_LIBS = $(LIBUDEV_LIBS) $(DLOPEN_LIBS) $(LIBDRM_LIB)
|
||||
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)
|
||||
|
@ -1362,10 +1362,18 @@ static EGLBoolean
|
||||
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;
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
# 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 = ../../../..
|
||||
@ -69,8 +70,14 @@ endif
|
||||
# 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
|
||||
|
@ -58,7 +58,9 @@ GL_LIB_DEPS += $(LLVM_LIBS)
|
||||
LDFLAGS += $(LLVM_LDFLAGS)
|
||||
endif
|
||||
|
||||
ifeq ($(SHARED_GLAPI),1)
|
||||
GL_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(GL_LIB_DEPS)
|
||||
endif
|
||||
|
||||
|
||||
.SUFFIXES : .cpp
|
||||
|
@ -49,7 +49,10 @@ SOURCES = \
|
||||
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
|
||||
|
@ -31,6 +31,9 @@ if env['HAVE_XF86VIDMODE']:
|
||||
env.Append(CPPDEFINES = ['XF86VIDMODE'])
|
||||
env.PkgUseModules('XF86VIDMODE')
|
||||
|
||||
if False: # XXX: SHARED_GLAPI
|
||||
env.Append(CPPDEFINES = ['GLX_SHARED_GLAPI'])
|
||||
|
||||
sources = [
|
||||
'clientattrib.c',
|
||||
'clientinfo.c',
|
||||
|
@ -2647,7 +2647,9 @@ _X_EXPORT void (*glXGetProcAddressARB(const GLubyte * procName)) (void)
|
||||
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) {
|
||||
|
@ -10672,6 +10672,8 @@ __indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment,
|
||||
}
|
||||
|
||||
|
||||
#ifdef GLX_SHARED_GLAPI
|
||||
|
||||
static const struct proc_pair {
|
||||
const char *name;
|
||||
_glapi_proc proc;
|
||||
@ -10727,6 +10729,8 @@ __indirect_get_proc_address(const char *name)
|
||||
return (pair) ? pair->proc : NULL;
|
||||
}
|
||||
|
||||
#endif /* GLX_SHARED_GLAPI */
|
||||
|
||||
|
||||
#undef FASTCALL
|
||||
#undef NOINLINE
|
||||
|
@ -711,7 +711,10 @@ extern _X_HIDDEN GLboolean __indirect_glIsRenderbufferEXT(GLuint renderbuffer);
|
||||
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
|
||||
|
@ -15,6 +15,7 @@ glapi_CPPFLAGS := \
|
||||
-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\"
|
||||
@ -23,6 +24,14 @@ glapi_SOURCES := $(addprefix $(MAPI)/, $(MAPI_BRIDGE_SOURCES))
|
||||
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) \
|
||||
@ -50,10 +59,14 @@ clean:
|
||||
-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)"
|
||||
|
@ -361,6 +361,8 @@ const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
|
||||
procs[n] = func.static_glx_name(n)
|
||||
|
||||
print """
|
||||
#ifdef GLX_SHARED_GLAPI
|
||||
|
||||
static const struct proc_pair
|
||||
{
|
||||
const char *name;
|
||||
@ -394,6 +396,8 @@ __indirect_get_proc_address(const char *name)
|
||||
|
||||
return (pair) ? pair->proc : NULL;
|
||||
}
|
||||
|
||||
#endif /* GLX_SHARED_GLAPI */
|
||||
"""
|
||||
return
|
||||
|
||||
@ -1047,7 +1051,9 @@ extern _X_HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
|
||||
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():
|
||||
|
@ -44,7 +44,9 @@ INCLUDE_DIRS = \
|
||||
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user