From 21de1bf24ba6d65f1566c3b8b742636587c39697 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 5 Jul 2019 16:21:45 +0200 Subject: [PATCH] gallium: give vertex-shader saturate its own cap MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Shader Model 3.0 is a big promise to make to the state-tracker, and for instance mobile hardware might support vertex-shader saturate but not some of the other features of SM3. So let's give this its own cap for simplicity. Signed-off-by: Erik Faye-Lund Reviewed-by: Marek Olšák --- src/gallium/auxiliary/util/u_screen.c | 1 + src/gallium/docs/source/screen.rst | 2 ++ src/gallium/include/pipe/p_defines.h | 1 + src/mesa/state_tracker/st_context.c | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c index 4b57c0c6342..4ee1b4f62af 100644 --- a/src/gallium/auxiliary/util/u_screen.c +++ b/src/gallium/auxiliary/util/u_screen.c @@ -372,6 +372,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen, case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD: case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES: + case PIPE_CAP_VERTEX_SHADER_SATURATE: return pscreen->get_param(pscreen, PIPE_CAP_SM3); default: diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 01072581883..1f1728d717a 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -538,6 +538,8 @@ The integer capabilities: explicit LOD is supported in the fragment shader. * ``PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES``: True if the driver supports derivatives in fragment shaders. +* ``PIPE_CAP_VERTEX_SHADER_SATURATE``: True if the driver supports saturate + modifiers in the vertex shader. .. _pipe_capf: diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 1ce2d131195..1d589457152 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -890,6 +890,7 @@ enum pipe_cap PIPE_CAP_TGSI_DIV, PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD, PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES, + PIPE_CAP_VERTEX_SHADER_SATURATE, }; /** diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index f3b84d53c59..a94ffe26eba 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -686,7 +686,7 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe, * is not supported */ ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitNoSat = - !screen->get_param(screen, PIPE_CAP_SM3); + !screen->get_param(screen, PIPE_CAP_VERTEX_SHADER_SATURATE); if (ctx->Const.GLSLVersion < 400) { for (i = 0; i < MESA_SHADER_STAGES; i++) -- 2.30.2