gallium: Add PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 19 Sep 2018 17:16:27 +0000 (10:16 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 23 Jan 2019 08:35:56 +0000 (00:35 -0800)
In the Intel backend, it makes the most sense to treat gl_TessLevelInner
and gl_TessLevelOuter as ordinary shader inputs.  For Radeon, it makes
more sense to treat them as system values which get special handling.

We already have a compiler option for this, but the Iris driver will
need a capability bit so we can set it appropriately.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/gallium/auxiliary/util/u_screen.c
src/gallium/include/pipe/p_defines.h
src/mesa/state_tracker/st_extensions.c

index c14edde8592fcf9385610854b5951f7b72f70258..2d32ca8b240e11907c2e5447554054ea3b12f156 100644 (file)
@@ -263,6 +263,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
    case PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY:
       return 1;
 
+   case PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS:
+      return 0;
+
    case PIPE_CAP_TGSI_FS_FBFETCH:
    case PIPE_CAP_TGSI_MUL_ZERO_WINS:
    case PIPE_CAP_DOUBLES:
index ae53c723c7e5c5b534e80799a9cb2c5e120c7b06..5a769ecf0e5691f22bcd0e35a3415b4332f0ece6 100644 (file)
@@ -807,6 +807,7 @@ enum pipe_cap
    PIPE_CAP_TGSI_CAN_READ_OUTPUTS,
    PIPE_CAP_NATIVE_FENCE_FD,
    PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY,
+   PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS,
    PIPE_CAP_TGSI_FS_FBFETCH,
    PIPE_CAP_TGSI_MUL_ZERO_WINS,
    PIPE_CAP_DOUBLES,
index 46280792603d5daefc65b7630efadc259157ec7e..b0b9467cdfaeb76b30b33239bc1f65c4006b89d8 100644 (file)
@@ -334,6 +334,8 @@ void st_init_limits(struct pipe_screen *screen,
 
    c->GLSLOptimizeConservatively =
       screen->get_param(screen, PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY);
+   c->GLSLTessLevelsAsInputs =
+      screen->get_param(screen, PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS);
    c->LowerTessLevel = true;
    c->LowerCsDerivedVariables = true;
    c->PrimitiveRestartForPatches =