[Mesa-dev] [PATCH 2/3] gallium/egl: st_profiles are build time decision, treat them as such

Emil Velikov emil.l.velikov at gmail.com
Fri May 9 19:41:44 PDT 2014


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.

Cc: Chia-I Wu <olvaffe at gmail.com>
Signed-off-by: Emil Velikov <emil.l.velikov at 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



More information about the mesa-dev mailing list