Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> Thanks for bearing with my nits.
On Thu, Mar 21, 2019 at 2:43 PM 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. > > Signed-off-by: Rob Clark <robdcl...@gmail.com> > --- > src/mesa/state_tracker/st_extensions.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index c953bfd9f7a..405fc21b3ad 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) > @@ -1540,16 +1549,18 @@ void st_init_extensions(struct pipe_screen *screen, > extensions->EXT_shader_integer_mix; > > extensions->OES_texture_cube_map_array = > - extensions->ARB_ES3_1_compatibility && > + (extensions->ARB_ES3_1_compatibility || ESSLVersion >= 310) && > extensions->OES_geometry_shader && > extensions->ARB_texture_cube_map_array; > > extensions->OES_viewport_array = > - extensions->ARB_ES3_1_compatibility && > + (extensions->ARB_ES3_1_compatibility || ESSLVersion >= 310) && > extensions->OES_geometry_shader && > extensions->ARB_viewport_array; > > - extensions->OES_primitive_bounding_box = > extensions->ARB_ES3_1_compatibility; > + extensions->OES_primitive_bounding_box = > + extensions->ARB_ES3_1_compatibility || ESSLVersion >= 310; > + > consts->NoPrimitiveBoundingBoxOutput = true; > > extensions->ANDROID_extension_pack_es31a = > -- > 2.20.1 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev