turnip: Parse tess state and support PATCH primtype
This commit adds support for VK_PRIMITIVE_TOPOLOGY_PATCH_LIST primitive topologies. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5059>
This commit is contained in:
@@ -1929,6 +1929,21 @@ tu_pipeline_static_state(struct tu_pipeline *pipeline, struct tu_cs *cs,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tu_pipeline_builder_parse_tessellation(struct tu_pipeline_builder *builder,
|
||||||
|
struct tu_pipeline *pipeline)
|
||||||
|
{
|
||||||
|
const VkPipelineTessellationStateCreateInfo *tess_info =
|
||||||
|
builder->create_info->pTessellationState;
|
||||||
|
|
||||||
|
if (!tess_info)
|
||||||
|
return;
|
||||||
|
|
||||||
|
assert(pipeline->ia.primtype == DI_PT_PATCHES0);
|
||||||
|
assert(tess_info->patchControlPoints <= 32);
|
||||||
|
pipeline->ia.primtype += tess_info->patchControlPoints;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tu_pipeline_builder_parse_viewport(struct tu_pipeline_builder *builder,
|
tu_pipeline_builder_parse_viewport(struct tu_pipeline_builder *builder,
|
||||||
struct tu_pipeline *pipeline)
|
struct tu_pipeline *pipeline)
|
||||||
@@ -2151,6 +2166,7 @@ tu_pipeline_builder_build(struct tu_pipeline_builder *builder,
|
|||||||
tu_pipeline_builder_parse_shader_stages(builder, *pipeline);
|
tu_pipeline_builder_parse_shader_stages(builder, *pipeline);
|
||||||
tu_pipeline_builder_parse_vertex_input(builder, *pipeline);
|
tu_pipeline_builder_parse_vertex_input(builder, *pipeline);
|
||||||
tu_pipeline_builder_parse_input_assembly(builder, *pipeline);
|
tu_pipeline_builder_parse_input_assembly(builder, *pipeline);
|
||||||
|
tu_pipeline_builder_parse_tessellation(builder, *pipeline);
|
||||||
tu_pipeline_builder_parse_viewport(builder, *pipeline);
|
tu_pipeline_builder_parse_viewport(builder, *pipeline);
|
||||||
tu_pipeline_builder_parse_rasterization(builder, *pipeline);
|
tu_pipeline_builder_parse_rasterization(builder, *pipeline);
|
||||||
tu_pipeline_builder_parse_depth_stencil(builder, *pipeline);
|
tu_pipeline_builder_parse_depth_stencil(builder, *pipeline);
|
||||||
|
@@ -124,7 +124,8 @@ tu6_primtype(VkPrimitiveTopology topology)
|
|||||||
[VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY] = DI_PT_LINESTRIP_ADJ,
|
[VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY] = DI_PT_LINESTRIP_ADJ,
|
||||||
[VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY] = DI_PT_TRI_ADJ,
|
[VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY] = DI_PT_TRI_ADJ,
|
||||||
[VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY] = DI_PT_TRISTRIP_ADJ,
|
[VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY] = DI_PT_TRISTRIP_ADJ,
|
||||||
[VK_PRIMITIVE_TOPOLOGY_PATCH_LIST] = 0,
|
/* Return PATCH0 and update in tu_pipeline_builder_parse_tessellation */
|
||||||
|
[VK_PRIMITIVE_TOPOLOGY_PATCH_LIST] = DI_PT_PATCHES0,
|
||||||
};
|
};
|
||||||
assert(topology < ARRAY_SIZE(lookup));
|
assert(topology < ARRAY_SIZE(lookup));
|
||||||
return lookup[topology];
|
return lookup[topology];
|
||||||
|
Reference in New Issue
Block a user