anv: Handle patch primitives.
authorKenneth Graunke <kenneth@whitecape.org>
Sun, 25 Sep 2016 22:29:16 +0000 (15:29 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 10 Jan 2017 21:27:10 +0000 (13:27 -0800)
v2: Use anv_pipeline_has_stage rather than tess_info != NULL.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> [v1]
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_pipeline.c

index 01bb1f15a49bbf474dc48f3ac772d59ac4592a37..ec760fcb1e3d69a589f1ef630f3b4ef8c3c0682c 100644 (file)
@@ -219,7 +219,6 @@ static const uint32_t vk_to_gen_primitive_type[] = {
    [VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY]     = _3DPRIM_LINESTRIP_ADJ,
    [VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY]  = _3DPRIM_TRILIST_ADJ,
    [VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY] = _3DPRIM_TRISTRIP_ADJ,
-/*   [VK_PRIMITIVE_TOPOLOGY_PATCH_LIST]                = _3DPRIM_PATCHLIST_1 */
 };
 
 static void
@@ -1099,8 +1098,14 @@ anv_pipeline_init(struct anv_pipeline *pipeline,
 
    const VkPipelineInputAssemblyStateCreateInfo *ia_info =
       pCreateInfo->pInputAssemblyState;
+   const VkPipelineTessellationStateCreateInfo *tess_info =
+      pCreateInfo->pTessellationState;
    pipeline->primitive_restart = ia_info->primitiveRestartEnable;
-   pipeline->topology = vk_to_gen_primitive_type[ia_info->topology];
+
+   if (anv_pipeline_has_stage(pipeline, MESA_SHADER_TESS_EVAL))
+      pipeline->topology = _3DPRIM_PATCHLIST(tess_info->patchControlPoints);
+   else
+      pipeline->topology = vk_to_gen_primitive_type[ia_info->topology];
 
    return VK_SUCCESS;