diff options
Diffstat (limited to 'src/gallium/targets/egl')
-rw-r--r-- | src/gallium/targets/egl/Makefile | 37 | ||||
-rw-r--r-- | src/gallium/targets/egl/egl.c | 38 | ||||
-rw-r--r-- | src/gallium/targets/egl/st_GLESv1_CM.c | 8 | ||||
-rw-r--r-- | src/gallium/targets/egl/st_GLESv2.c | 8 |
4 files changed, 35 insertions, 56 deletions
diff --git a/src/gallium/targets/egl/Makefile b/src/gallium/targets/egl/Makefile index 63e9352144..de01939e5f 100644 --- a/src/gallium/targets/egl/Makefile +++ b/src/gallium/targets/egl/Makefile @@ -46,6 +46,9 @@ ifneq ($(findstring x11, $(EGL_PLATFORMS)),) egl_SYS += -lX11 -lXext -lXfixes $(LIBDRM_LIB) egl_LIBS += $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a endif +ifneq ($(findstring wayland, $(EGL_PLATFORMS)),) +egl_SYS += $(WAYLAND_LIBS) $(LIBDRM_LIB) +endif ifneq ($(findstring drm, $(EGL_PLATFORMS)),) egl_SYS += $(LIBDRM_LIB) endif @@ -57,12 +60,6 @@ endif ifneq ($(filter $(GL_LIB), $(EGL_CLIENT_APIS)),) egl_CPPFLAGS += $(API_DEFINES) endif -ifneq ($(filter $(GLESv1_CM_LIB), $(EGL_CLIENT_APIS)),) -egl_CPPFLAGS += -DFEATURE_ES1=1 -endif -ifneq ($(filter $(GLESv2_LIB), $(EGL_CLIENT_APIS)),) -egl_CPPFLAGS += -DFEATURE_ES2=1 -endif ifneq ($(filter $(VG_LIB), $(EGL_CLIENT_APIS)),) egl_CPPFLAGS += -DFEATURE_VG=1 endif @@ -80,7 +77,8 @@ i965_CPPFLAGS := i965_SYS := -ldrm_intel i965_LIBS := \ $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \ - $(TOP)/src/gallium/drivers/i965/libi965.a + $(TOP)/src/gallium/drivers/i965/libi965.a \ + $(TOP)/src/gallium/winsys/sw/wrapper/libwsw.a # nouveau pipe driver nouveau_CPPFLAGS := @@ -89,11 +87,12 @@ 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/nvc0/libnvc0.a \ $(TOP)/src/gallium/drivers/nouveau/libnouveau.a # r300 pipe driver r300_CPPFLAGS := -r300_SYS := -ldrm -ldrm_radeon +r300_SYS := -ldrm r300_LIBS := \ $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \ $(TOP)/src/gallium/drivers/r300/libr300.a @@ -127,20 +126,14 @@ endif # OpenGL state tracker GL_CPPFLAGS := -I$(TOP)/src/mesa $(API_DEFINES) -# do not link to $(GL_LIB) as the it supports GLES too +ifeq ($(SHARED_GLAPI),1) +GL_SYS := $(DRI_LIB_DEPS) -l$(GLAPI_LIB) +else +# cannot link to $(GL_LIB) as the app might want GL or GLES GL_SYS := $(DRI_LIB_DEPS) +endif GL_LIBS := $(TOP)/src/mesa/libmesagallium.a -# OpenGL ES 1.x state tracker -GLESv1_CM_CPPFLAGS := -I$(TOP)/src/mesa -GLESv1_CM_SYS := $(DRI_LIB_DEPS) -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 := $(DRI_LIB_DEPS) -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$(VG_LIB) @@ -225,12 +218,6 @@ $(OUTPUT_PATH)/$(PIPE_PREFIX)swrast.so: pipe_swrast.o $(swrast_LIBS) $(OUTPUT_PATH)/$(ST_PREFIX)$(GL_LIB).so: st_GL.o $(GL_LIBS) $(call mklib-cxx,GL) -$(OUTPUT_PATH)/$(ST_PREFIX)$(GLESv1_CM_LIB).so: st_GLESv1_CM.o $(GLESv1_CM_LIBS) - $(call mklib-cxx,GLESv1_CM) - -$(OUTPUT_PATH)/$(ST_PREFIX)$(GLESv2_LIB).so: st_GLESv2.o $(GLESv2_LIBS) - $(call mklib-cxx,GLESv2) - $(OUTPUT_PATH)/$(ST_PREFIX)$(VG_LIB).so: st_OpenVG.o $(OpenVG_LIBS) $(call mklib,OpenVG) diff --git a/src/gallium/targets/egl/egl.c b/src/gallium/targets/egl/egl.c index 786d5d1105..61fe5069e9 100644 --- a/src/gallium/targets/egl/egl.c +++ b/src/gallium/targets/egl/egl.c @@ -100,9 +100,14 @@ load_st_module(struct st_module *stmod, { struct st_api *(*create_api)(void); - _eglLog(_EGL_DEBUG, "searching for st module %s", name); + if (name) { + _eglLog(_EGL_DEBUG, "searching for st module %s", name); + stmod->name = loader_strdup(name); + } + else { + stmod->name = NULL; + } - stmod->name = loader_strdup(name); if (stmod->name) _eglSearchPathForEach(dlopen_st_module_cb, (void *) stmod); else @@ -200,19 +205,7 @@ get_st_api_full(enum st_api_type api, enum st_profile_type profile) switch (api) { case ST_API_OPENGL: symbol = ST_CREATE_OPENGL_SYMBOL; - switch (profile) { - case ST_PROFILE_OPENGL_ES1: - names[count++] = "GLESv1_CM"; - names[count++] = "GL"; - break; - case ST_PROFILE_OPENGL_ES2: - names[count++] = "GLESv2"; - names[count++] = "GL"; - break; - default: - names[count++] = "GL"; - break; - } + names[count++] = "GL"; break; case ST_API_OPENVG: symbol = ST_CREATE_OPENVG_SYMBOL; @@ -232,6 +225,21 @@ get_st_api_full(enum st_api_type api, enum st_profile_type profile) break; } + /* try again with libGL.so loaded */ + if (!stmod->stapi && api == ST_API_OPENGL) { + struct util_dl_library *glapi = util_dl_open("libGL" UTIL_DL_EXT); + + if (glapi) { + _eglLog(_EGL_DEBUG, "retry with libGL" UTIL_DL_EXT " loaded"); + /* skip the last name (which is NULL) */ + for (i = 0; i < count - 1; i++) { + if (load_st_module(stmod, names[i], symbol)) + break; + } + util_dl_close(glapi); + } + } + if (!stmod->stapi) { EGLint level = (egl_g3d_loader.profile_masks[api]) ? _EGL_WARNING : _EGL_DEBUG; diff --git a/src/gallium/targets/egl/st_GLESv1_CM.c b/src/gallium/targets/egl/st_GLESv1_CM.c deleted file mode 100644 index c1df844aa4..0000000000 --- a/src/gallium/targets/egl/st_GLESv1_CM.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "state_tracker/st_gl_api.h" -#include "egl.h" - -PUBLIC struct st_api * -st_api_create_OpenGL(void) -{ - return st_gl_api_create(); -} diff --git a/src/gallium/targets/egl/st_GLESv2.c b/src/gallium/targets/egl/st_GLESv2.c deleted file mode 100644 index c1df844aa4..0000000000 --- a/src/gallium/targets/egl/st_GLESv2.c +++ /dev/null @@ -1,8 +0,0 @@ -#include "state_tracker/st_gl_api.h" -#include "egl.h" - -PUBLIC struct st_api * -st_api_create_OpenGL(void) -{ - return st_gl_api_create(); -} |