From ccef1f34ae59a5ec4e39567105a5b19cc9de222f Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 30 Apr 2021 18:07:58 +0200 Subject: [PATCH] tu: Fix SP_GS_PRIM_SIZE for large sizes Based on the previous commit. Fixes: 012773b ("turnip: Configure VPC for geometry shaders") Part-of: (cherry picked from commit 3d5c1c4989b882a6a5d86ac4396c420ecb9871b8) --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_pipeline.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 98f2263dba5..fa6eb7ae3bb 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -229,7 +229,7 @@ "description": "tu: Fix SP_GS_PRIM_SIZE for large sizes", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "012773be26aafb71ab232a5838d8e5e7dcc3dc55" }, diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index 78a568172cb..172bad6e7d8 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -1136,8 +1136,13 @@ tu6_emit_vpc(struct tu_cs *cs, tu_cs_emit_pkt4(cs, REG_A6XX_PC_PRIMITIVE_CNTL_6, 1); tu_cs_emit(cs, A6XX_PC_PRIMITIVE_CNTL_6_STRIDE_IN_VPC(vec4_size)); + uint32_t prim_size = prev_stage_output_size; + if (prim_size > 64) + prim_size = 64; + else if (prim_size == 64) + prim_size = 63; tu_cs_emit_pkt4(cs, REG_A6XX_SP_GS_PRIM_SIZE, 1); - tu_cs_emit(cs, prev_stage_output_size); + tu_cs_emit(cs, prim_size); } }