aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/freedreno/a6xx/fd6_draw.c')
-rw-r--r--src/gallium/drivers/freedreno/a6xx/fd6_draw.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
index fcf0dc19233..a635e66d932 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
@@ -157,6 +157,23 @@ fd6_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info,
.sprite_coord_mode = ctx->rasterizer->sprite_coord_mode,
};
+ if (info->mode == PIPE_PRIM_PATCHES) {
+ shader_info *ds_info = &emit.key.ds->nir->info;
+ switch (ds_info->tess.primitive_mode) {
+ case GL_ISOLINES:
+ emit.key.key.tessellation = IR3_TESS_ISOLINES;
+ break;
+ case GL_TRIANGLES:
+ emit.key.key.tessellation = IR3_TESS_TRIANGLES;
+ break;
+ case GL_QUADS:
+ emit.key.key.tessellation = IR3_TESS_QUADS;
+ break;
+ default:
+ unreachable("bad tessmode");
+ }
+ }
+
if (emit.key.gs)
emit.key.key.has_gs = true;