On Tue, May 13, 2014 at 10:35 AM, Emil Velikov <emil.l.veli...@gmail.com> wrote: > 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. I am fine with the change then. > 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 ? This sounds nice too. > > -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 >>> >> >> >> >
-- o...@lunarg.com _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev