tu: Fix SP_GS_PRIM_SIZE for large sizes
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 30 Apr 2021 16:07:58 +0000 (18:07 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 3 May 2021 14:06:24 +0000 (14:06 +0000)
Based on the previous commit.

Fixes: 012773b ("turnip: Configure VPC for geometry shaders")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10551>

src/freedreno/vulkan/tu_pipeline.c

index 015873a..ccfa9eb 100644 (file)
@@ -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);
    }
 }