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

2019-03-21 Thread Ilia Mirkin
Reviewed-by: Ilia Mirkin 

Thanks for bearing with my nits.

On Thu, Mar 21, 2019 at 2:43 PM Rob Clark  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 
> ---
>  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

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

2019-03-21 Thread Rob Clark
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 
---
 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