summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2020-12-17 21:29:26 -0500
committerMarge Bot <eric+marge@anholt.net>2020-12-22 13:46:38 +0000
commitf815b87e188a0e7f4b0aa31f502be7939479f622 (patch)
tree5c945dcd8a29eb510203988905c65c6c8d2112df
parent6324699e67a65b7412e607878f5043e07e898091 (diff)
zink: export tess shader pipe caps
Reviewed-by: Erik Faye-Lund <kusmabite@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8152>
-rw-r--r--src/gallium/drivers/zink/zink_screen.c20
1 files changed, 20 insertions, 0 deletions
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);