From: Rob Clark Date: Thu, 21 Mar 2019 13:29:58 +0000 (-0400) Subject: mesa/st: use ESSL cap top enable gpu_shader5 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6cd987604771b446b7d96209ffb5ec24d3d94276;p=mesa.git mesa/st: use ESSL cap top enable gpu_shader5 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 Reviewed-by: Ilia Mirkin --- 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 =