[Mesa-dev] [PATCH 1/3] gallium: add PIPE_CAP_ESSL_FEATURE_LEVEL

Ilia Mirkin imirkin at alum.mit.edu
Thu Mar 21 18:45:55 UTC 2019


Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

On Thu, Mar 21, 2019 at 9:55 AM Rob Clark <robdclark at gmail.com> wrote:
>
> Adds a new cap to allow drivers to expose higher shading language
> versions in GLES contexts, to avoid having to report an artificially
> low version for the benefit of GL contexts.
>
> The motivation is to expose EXT_gpu_shader5 even though a driver may
> not support all the features needed for the corresponding GL extension
> (ARB_gpu_shader5).
>
> Signed-off-by: Rob Clark <robdclark at gmail.com>
> ---
>  src/gallium/auxiliary/util/u_screen.c | 4 ++++
>  src/gallium/docs/source/screen.rst    | 9 +++++++++
>  src/gallium/include/pipe/p_defines.h  | 1 +
>  3 files changed, 14 insertions(+)
>
> diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c
> index b902c083ad4..9f0be8060ee 100644
> --- a/src/gallium/auxiliary/util/u_screen.c
> +++ b/src/gallium/auxiliary/util/u_screen.c
> @@ -107,6 +107,10 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
>        /* Minimum GLSL level implemented by gallium drivers. */
>        return 120;
>
> +   case PIPE_CAP_ESSL_FEATURE_LEVEL:
> +      /* Tell state-tracker to fallback to PIPE_CAP_GLSL_FEATURE_LEVEL */
> +      return 0;
> +
>     case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
>     case PIPE_CAP_USER_VERTEX_BUFFERS:
>     case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
> diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
> index 60ba9bcbde0..a4d6a9557c0 100644
> --- a/src/gallium/docs/source/screen.rst
> +++ b/src/gallium/docs/source/screen.rst
> @@ -105,6 +105,15 @@ The integer capabilities:
>    The only legacy features that Gallium drivers must implement are
>    the legacy shader inputs and outputs (colors, texcoords, fog, clipvertex,
>    edgeflag).
> +* ``PIPE_CAP_ESSL_FEATURE_LEVEL``: An optional cap to allow drivers to
> +  report a higher GLSL version for GLES contexts.  This is useful when a
> +  driver does not support all the required features for a higher GL version,
> +  but does support the required features for a higher GLES version.  A driver
> +  is allowed to return ``0`` in which case ``PIPE_CAP_GLSL_FEATURE_LEVEL`` is
> +  used.
> +  Note that simply returning the same value as the GLSL feature level cap is
> +  incorrect.  For example, GLSL version 3.30 does not require ``ARB_gpu_shader5``,
> +  but ESSL version 3.20 es does require ``EXT_gpu_shader5``
>  * ``PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION``: Whether quads adhere to
>    the flatshade_first setting in ``pipe_rasterizer_state``.
>  * ``PIPE_CAP_USER_VERTEX_BUFFERS``: Whether the driver supports user vertex
> diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
> index ebc44d7a75e..3dbdea035e4 100644
> --- a/src/gallium/include/pipe/p_defines.h
> +++ b/src/gallium/include/pipe/p_defines.h
> @@ -718,6 +718,7 @@ enum pipe_cap
>     PIPE_CAP_VERTEX_COLOR_CLAMPED,
>     PIPE_CAP_GLSL_FEATURE_LEVEL,
>     PIPE_CAP_GLSL_FEATURE_LEVEL_COMPATIBILITY,
> +   PIPE_CAP_ESSL_FEATURE_LEVEL,
>     PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION,
>     PIPE_CAP_USER_VERTEX_BUFFERS,
>     PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY,
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list