From 4fbc8fb28e55d2a168e7e2a8f590a792c509eeb2 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Wed, 22 Jun 2022 17:42:46 +0200 Subject: [PATCH] tu: Fix linemode for tessellation with isolines Fixes: 542211676c5 ("turnip: enable VK_EXT_line_rasterization") Part-of: (cherry picked from commit d45583808104de6b904bbb8f9a53732ea100788a) Conflicts: src/gallium/drivers/zink/ci/zink-tu-a630-fails.txt CI file doesn't exist in 22.1, and has been deleted --- .pick_status.json | 2 +- src/freedreno/vulkan/tu_pipeline.c | 4 +++- src/freedreno/vulkan/tu_util.h | 6 ++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 944f3a9bc6b..c63b84d0eda 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -337,7 +337,7 @@ "description": "tu: Fix linemode for tessellation with isolines", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "542211676c58b0410662e1a959e259487c103e71" }, diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c index 441ed0285fb..828f0f2c96d 100644 --- a/src/freedreno/vulkan/tu_pipeline.c +++ b/src/freedreno/vulkan/tu_pipeline.c @@ -2910,7 +2910,9 @@ tu_pipeline_builder_parse_rasterization(struct tu_pipeline_builder *builder, pipeline->line_mode = RECTANGULAR; - if (tu6_primtype_line(pipeline->ia.primtype)) { + if (tu6_primtype_line(pipeline->ia.primtype) || + (tu6_primtype_patches(pipeline->ia.primtype) && + pipeline->tess.patch_type == IR3_TESS_ISOLINES)) { const VkPipelineRasterizationLineStateCreateInfoEXT *rast_line_state = vk_find_struct_const(rast_info->pNext, PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT); diff --git a/src/freedreno/vulkan/tu_util.h b/src/freedreno/vulkan/tu_util.h index 2ad7f86e36e..771a67a3416 100644 --- a/src/freedreno/vulkan/tu_util.h +++ b/src/freedreno/vulkan/tu_util.h @@ -99,6 +99,12 @@ tu6_primtype_line(enum pc_di_primtype type) } } +static inline bool +tu6_primtype_patches(enum pc_di_primtype type) +{ + return type >= DI_PT_PATCHES0 && type <= DI_PT_PATCHES31; +} + static inline enum pc_di_primtype tu6_primtype(VkPrimitiveTopology topology) {