On Thu, Mar 21, 2019 at 10:18 AM Rob Clark <robdcl...@gmail.com> wrote: > > On Thu, Mar 21, 2019 at 10:09 AM Ilia Mirkin <imir...@alum.mit.edu> wrote: > > > > On Thu, Mar 21, 2019 at 9:55 AM Rob Clark <robdcl...@gmail.com> wrote: > > > > > > 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 <robdcl...@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; > > > > I'd make this also conditional on api == API_OPENGLES2 as well. This > > extension nominally requires GL 4.4, and I think it'd be VERY awkward > > to provide prior to GL 4.0 (which includes ARB_gpu_shader5 as a > > component of it). > > hmm, I'd just added this since I noticed this extension went away > compared to my earlier hack soln of reporting 400 for the GSLS feature > level cap. (Maybe that is a separate bug that it was getting exposed > despite only exposing GL 3.1?) At any rate, I guess this extension > doesn't exist in GLES contexts, so I can just drop this hunk.
I think stuff further down depends on this bit being enabled, so you do need it. It's used as a proxy for "at least ESSL 3.10" further down. It's a bit circular since the exts determine the version, but some exts kinda want to know that at least some version is supported. So I ended up using proxies for "the GL version" by saying "ES3_1_compat" is supported. But you could flip that to the ESSLVersion instead. -ilia _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev