aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/auxiliary/util/u_screen.c4
-rw-r--r--src/gallium/docs/source/screen.rst9
-rw-r--r--src/gallium/include/pipe/p_defines.h1
3 files changed, 14 insertions, 0 deletions
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,