[Mesa-dev] [PATCH 2/3] mesa/st: use ESSL cap top enable gpu_shader5

Rob Clark robdclark at gmail.com
Thu Mar 21 13:55:29 UTC 2019


For GLES2+ contexts, enable EXT_gpu_shader5 if the driver exposes a
sufficiently high ESSL feature level, even if the GLSL feature level
isn't high enough.

This allows drivers to support EXT_gpu_shader5 in GLES contexts before
they support all the additional features of ARB_gpu_shader5 in GL
contexts.

We can also use this cap to enable ARB_ES3_1_compatibility.

Signed-off-by: Rob Clark <robdclark at gmail.com>
---
 src/mesa/state_tracker/st_extensions.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index c953bfd9f7a..92450d88acf 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -1056,6 +1056,8 @@ void st_init_extensions(struct pipe_screen *screen,
    consts->GLSLVersionCompat =
       screen->get_param(screen, PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY);
 
+   const unsigned ESSLVersion =
+      screen->get_param(screen, PIPE_CAP_ESSL_FEATURE_LEVEL);
    const unsigned GLSLVersion =
       api == API_OPENGL_COMPAT ? consts->GLSLVersionCompat :
                                  consts->GLSLVersion;
@@ -1077,6 +1079,13 @@ void st_init_extensions(struct pipe_screen *screen,
 
    consts->AllowGLSLCrossStageInterpolationMismatch = options->allow_glsl_cross_stage_interpolation_mismatch;
 
+   /* Technically we are turning on the EXT_gpu_shader5 extension,
+    * ARB_gpu_shader5 does not exist in GLES, but this flag is what
+    * switches on EXT_gpu_shader5:
+    */
+   if (api == API_OPENGLES2 && ESSLVersion >= 320)
+      extensions->ARB_gpu_shader5 = GL_TRUE;
+
    if (GLSLVersion >= 400)
       extensions->ARB_gpu_shader5 = GL_TRUE;
    if (GLSLVersion >= 410)
@@ -1539,6 +1548,9 @@ void st_init_extensions(struct pipe_screen *screen,
       extensions->ARB_gpu_shader5 &&
       extensions->EXT_shader_integer_mix;
 
+   if (ESSLVersion >= 310)
+      extensions->ARB_ES3_1_compatibility = GL__TRUE;
+
    extensions->OES_texture_cube_map_array =
       extensions->ARB_ES3_1_compatibility &&
       extensions->OES_geometry_shader &&
-- 
2.20.1



More information about the mesa-dev mailing list