On 13/05/14 02:57, Chia-I Wu wrote: > On Sat, May 10, 2014 at 10:41 AM, Emil Velikov <emil.l.veli...@gmail.com> > wrote: >> The profiles are present depending on the defines at build time. >> Drop the extra functions and feed the defines directly into the >> state-tracker at build time. > Do you have other changes planned that require this one? The current > code deals with st/vega and st/mesa entirely in targets/egl-static, > which is good separation IMHO, but can also be viewed as unnecessary > as this patch demonstrates. > Yes I have actually, although the different variations of sw winsys are causing some annoyance. The plan is to have two "build modes" - shared pipe-drivers(loaded via pipe-loader) and static (megadriver style) for most(all) targets. With static one as the default.
With that done one will be able to cleanup all the target<>st screen_create vtables. On a related note: I was wondering if we can squash the egl_gallium into libEGL like other platform do. The idea will help us cleanup the exported functions namespace which exposes a few internal callbacks + close a bug or two that they cause. How does that sound ? -Emil > >> Cc: Chia-I Wu <olva...@gmail.com> >> Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> >> --- >> src/gallium/state_trackers/egl/Android.mk | 5 +++- >> src/gallium/state_trackers/egl/SConscript | 12 +++++++++ >> src/gallium/state_trackers/egl/common/egl_g3d.c | 20 +++++++++------ >> .../state_trackers/egl/common/egl_g3d_loader.h | 1 - >> src/gallium/targets/egl-static/Android.mk | 2 -- >> src/gallium/targets/egl-static/SConscript | 6 ----- >> src/gallium/targets/egl-static/egl.c | 3 --- >> src/gallium/targets/egl-static/egl_st.c | 29 >> ---------------------- >> src/gallium/targets/egl-static/egl_st.h | 3 --- >> 9 files changed, 28 insertions(+), 53 deletions(-) >> >> diff --git a/src/gallium/state_trackers/egl/Android.mk >> b/src/gallium/state_trackers/egl/Android.mk >> index b27e14b..7c4c936 100644 >> --- a/src/gallium/state_trackers/egl/Android.mk >> +++ b/src/gallium/state_trackers/egl/Android.mk >> @@ -32,7 +32,10 @@ LOCAL_SRC_FILES := \ >> $(common_FILES) \ >> $(android_FILES) >> >> -LOCAL_CFLAGS := -DHAVE_ANDROID_BACKEND >> +LOCAL_CFLAGS := \ >> + -DFEATURE_ES1=1 \ >> + -DFEATURE_ES2=1 \ >> + -DHAVE_ANDROID_BACKEND >> >> LOCAL_C_INCLUDES := \ >> $(GALLIUM_TOP)/state_trackers/egl \ >> diff --git a/src/gallium/state_trackers/egl/SConscript >> b/src/gallium/state_trackers/egl/SConscript >> index 3ddf0bc..3727fb2 100644 >> --- a/src/gallium/state_trackers/egl/SConscript >> +++ b/src/gallium/state_trackers/egl/SConscript >> @@ -14,6 +14,18 @@ env.Append(CPPPATH = [ >> >> sources = env.ParseSourceList('Makefile.sources', 'common_FILES') >> >> +# OpenGL ES and OpenGL >> +if env['gles']: >> + env.Append(CPPDEFINES = [ >> + 'FEATURE_GL=1', >> + 'FEATURE_ES1=1', >> + 'FEATURE_ES2=1' >> + ]) >> + >> +# OpenVG >> +if True: >> + env.Append(CPPDEFINES = ['FEATURE_VG=1']) >> + >> if env['platform'] == 'windows': >> env.Append(CPPDEFINES = ['HAVE_GDI_BACKEND']) >> sources.append(env.ParseSourceList('Makefile.sources', 'gdi_FILES')) >> diff --git a/src/gallium/state_trackers/egl/common/egl_g3d.c >> b/src/gallium/state_trackers/egl/common/egl_g3d.c >> index 7cc4e8f..d3f5e92 100644 >> --- a/src/gallium/state_trackers/egl/common/egl_g3d.c >> +++ b/src/gallium/state_trackers/egl/common/egl_g3d.c >> @@ -548,14 +548,18 @@ egl_g3d_initialize(_EGLDriver *drv, _EGLDisplay *dpy) >> goto fail; >> } >> >> - if (gdpy->loader->profile_masks[ST_API_OPENGL] & ST_PROFILE_DEFAULT_MASK) >> - dpy->ClientAPIs |= EGL_OPENGL_BIT; >> - if (gdpy->loader->profile_masks[ST_API_OPENGL] & >> ST_PROFILE_OPENGL_ES1_MASK) >> - dpy->ClientAPIs |= EGL_OPENGL_ES_BIT; >> - if (gdpy->loader->profile_masks[ST_API_OPENGL] & >> ST_PROFILE_OPENGL_ES2_MASK) >> - dpy->ClientAPIs |= EGL_OPENGL_ES2_BIT; >> - if (gdpy->loader->profile_masks[ST_API_OPENVG] & ST_PROFILE_DEFAULT_MASK) >> - dpy->ClientAPIs |= EGL_OPENVG_BIT; >> +#if FEATURE_GL >> + dpy->ClientAPIs |= EGL_OPENGL_BIT; >> +#endif >> +#if FEATURE_ES1 >> + dpy->ClientAPIs |= EGL_OPENGL_ES_BIT; >> +#endif >> +#if FEATURE_ES2 >> + dpy->ClientAPIs |= EGL_OPENGL_ES2_BIT; >> +#endif >> +#if FEATURE_VG >> + dpy->ClientAPIs |= EGL_OPENVG_BIT; >> +#endif >> >> gdpy->smapi = egl_g3d_create_st_manager(dpy); >> if (!gdpy->smapi) { >> diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_loader.h >> b/src/gallium/state_trackers/egl/common/egl_g3d_loader.h >> index 51b4d19..03db153 100644 >> --- a/src/gallium/state_trackers/egl/common/egl_g3d_loader.h >> +++ b/src/gallium/state_trackers/egl/common/egl_g3d_loader.h >> @@ -36,7 +36,6 @@ struct pipe_screen; >> struct sw_winsys; >> >> struct egl_g3d_loader { >> - uint profile_masks[ST_API_COUNT]; >> struct st_api *(*get_st_api)(enum st_api_type api); >> >> struct pipe_screen *(*create_drm_screen)(const char *name, int fd); >> diff --git a/src/gallium/targets/egl-static/Android.mk >> b/src/gallium/targets/egl-static/Android.mk >> index 37244b5..01408a7 100644 >> --- a/src/gallium/targets/egl-static/Android.mk >> +++ b/src/gallium/targets/egl-static/Android.mk >> @@ -31,8 +31,6 @@ LOCAL_SRC_FILES := \ >> egl_st.c >> >> LOCAL_CFLAGS := \ >> - -DFEATURE_ES1=1 \ >> - -DFEATURE_ES2=1 \ >> -D_EGL_MAIN=_eglBuiltInDriverGALLIUM >> >> LOCAL_C_INCLUDES := \ >> diff --git a/src/gallium/targets/egl-static/SConscript >> b/src/gallium/targets/egl-static/SConscript >> index 83937fe..f879cc3 100644 >> --- a/src/gallium/targets/egl-static/SConscript >> +++ b/src/gallium/targets/egl-static/SConscript >> @@ -63,11 +63,6 @@ if env['platform'] == 'windows': >> >> # OpenGL ES and OpenGL >> if env['gles']: >> - env.Append(CPPDEFINES = [ >> - 'FEATURE_GL=1', >> - 'FEATURE_ES1=1', >> - 'FEATURE_ES2=1' >> - ]) >> env.Prepend(LIBPATH = [shared_glapi.dir]) >> # manually add LIBPREFIX on windows >> glapi_name = 'glapi' if env['platform'] != 'windows' else 'libglapi' >> @@ -75,7 +70,6 @@ if env['gles']: >> >> # OpenVG >> if True: >> - env.Append(CPPDEFINES = ['FEATURE_VG=1']) >> env.Prepend(LIBPATH = [openvg.dir]) >> # manually add LIBPREFIX on windows >> openvg_name = 'OpenVG' if env['platform'] != 'windows' else 'libOpenVG' >> diff --git a/src/gallium/targets/egl-static/egl.c >> b/src/gallium/targets/egl-static/egl.c >> index f19f024..ff71042 100644 >> --- a/src/gallium/targets/egl-static/egl.c >> +++ b/src/gallium/targets/egl-static/egl.c >> @@ -89,9 +89,6 @@ loader_init(void) >> { >> int i; >> >> - for (i = 0; i < ST_API_COUNT; i++) >> - egl_g3d_loader.profile_masks[i] = egl_st_get_profile_mask(i); >> - >> egl_g3d_loader.get_st_api = get_st_api; >> egl_g3d_loader.create_drm_screen = create_drm_screen; >> egl_g3d_loader.create_sw_screen = create_sw_screen; >> diff --git a/src/gallium/targets/egl-static/egl_st.c >> b/src/gallium/targets/egl-static/egl_st.c >> index da0cd5b..656135b 100644 >> --- a/src/gallium/targets/egl-static/egl_st.c >> +++ b/src/gallium/targets/egl-static/egl_st.c >> @@ -165,32 +165,3 @@ egl_st_destroy_api(struct st_api *stapi) >> stapi->destroy(stapi); >> #endif >> } >> - >> -uint >> -egl_st_get_profile_mask(enum st_api_type api) >> -{ >> - uint mask = 0x0; >> - >> - switch (api) { >> - case ST_API_OPENGL: >> -#if FEATURE_GL >> - mask |= ST_PROFILE_DEFAULT_MASK; >> -#endif >> -#if FEATURE_ES1 >> - mask |= ST_PROFILE_OPENGL_ES1_MASK; >> -#endif >> -#if FEATURE_ES2 >> - mask |= ST_PROFILE_OPENGL_ES2_MASK; >> -#endif >> - break; >> - case ST_API_OPENVG: >> -#if FEATURE_VG >> - mask |= ST_PROFILE_DEFAULT_MASK; >> -#endif >> - break; >> - default: >> - break; >> - } >> - >> - return mask; >> -} >> diff --git a/src/gallium/targets/egl-static/egl_st.h >> b/src/gallium/targets/egl-static/egl_st.h >> index f17e85b..1d947b2 100644 >> --- a/src/gallium/targets/egl-static/egl_st.h >> +++ b/src/gallium/targets/egl-static/egl_st.h >> @@ -36,7 +36,4 @@ egl_st_create_api(enum st_api_type api); >> void >> egl_st_destroy_api(struct st_api *stapi); >> >> -uint >> -egl_st_get_profile_mask(enum st_api_type api); >> - >> #endif /* _EGL_ST_H_ */ >> -- >> 1.9.2 >> > > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev