Mesa (master): zink: export tess shader pipe caps

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Dec 22 13:56:10 UTC 2020


Module: Mesa
Branch: master
Commit: f815b87e188a0e7f4b0aa31f502be7939479f622
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f815b87e188a0e7f4b0aa31f502be7939479f622

Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date:   Thu Dec 17 21:29:26 2020 -0500

zink: export tess shader pipe caps

Reviewed-by: Erik Faye-Lund <kusmabite at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8152>

---

 src/gallium/drivers/zink/zink_screen.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
index 9d0eda0e507..8d29074b941 100644
--- a/src/gallium/drivers/zink/zink_screen.c
+++ b/src/gallium/drivers/zink/zink_screen.c
@@ -102,6 +102,7 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TEXCOORD:
    case PIPE_CAP_DRAW_INDIRECT:
    case PIPE_CAP_TEXTURE_QUERY_LOD:
+   case PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS:
       return 1;
 
    case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
@@ -391,6 +392,11 @@ zink_get_shader_param(struct pipe_screen *pscreen,
       case PIPE_SHADER_FRAGMENT:
       case PIPE_SHADER_VERTEX:
          return INT_MAX;
+      case PIPE_SHADER_TESS_CTRL:
+      case PIPE_SHADER_TESS_EVAL:
+         if (screen->info.feats.features.tessellationShader)
+            return INT_MAX;
+         break;
 
       case PIPE_SHADER_GEOMETRY:
          if (screen->info.feats.features.geometryShader)
@@ -415,6 +421,12 @@ zink_get_shader_param(struct pipe_screen *pscreen,
       case PIPE_SHADER_VERTEX:
          return MIN2(screen->info.props.limits.maxVertexInputAttributes,
                      PIPE_MAX_SHADER_INPUTS);
+      case PIPE_SHADER_TESS_CTRL:
+         return MIN2(screen->info.props.limits.maxTessellationControlPerVertexInputComponents / 4,
+                     PIPE_MAX_SHADER_INPUTS);
+      case PIPE_SHADER_TESS_EVAL:
+         return MIN2(screen->info.props.limits.maxTessellationEvaluationInputComponents / 4,
+                     PIPE_MAX_SHADER_INPUTS);
       case PIPE_SHADER_GEOMETRY:
          return MIN2(screen->info.props.limits.maxGeometryInputComponents,
                      PIPE_MAX_SHADER_INPUTS);
@@ -430,6 +442,12 @@ zink_get_shader_param(struct pipe_screen *pscreen,
       case PIPE_SHADER_VERTEX:
          return MIN2(screen->info.props.limits.maxVertexOutputComponents / 4,
                      PIPE_MAX_SHADER_OUTPUTS);
+      case PIPE_SHADER_TESS_CTRL:
+         return MIN2(screen->info.props.limits.maxTessellationControlPerVertexOutputComponents / 4,
+                     PIPE_MAX_SHADER_OUTPUTS);
+      case PIPE_SHADER_TESS_EVAL:
+         return MIN2(screen->info.props.limits.maxTessellationEvaluationOutputComponents / 4,
+                     PIPE_MAX_SHADER_OUTPUTS);
       case PIPE_SHADER_GEOMETRY:
          return MIN2(screen->info.props.limits.maxGeometryOutputComponents / 4,
                      PIPE_MAX_SHADER_OUTPUTS);
@@ -445,6 +463,8 @@ zink_get_shader_param(struct pipe_screen *pscreen,
       case PIPE_SHADER_VERTEX:
       case PIPE_SHADER_FRAGMENT:
       case PIPE_SHADER_GEOMETRY:
+      case PIPE_SHADER_TESS_CTRL:
+      case PIPE_SHADER_TESS_EVAL:
          /* this might be a bit simplistic... */
          return MIN2(screen->info.props.limits.maxPerStageDescriptorSamplers,
                      PIPE_MAX_SAMPLERS);



More information about the mesa-commit mailing list