<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 9, 2017 at 10:07 AM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Monday, January 9, 2017 8:26:34 AM PST Jason Ekstrand wrote:<br>
> On Sun, Jan 8, 2017 at 9:26 PM, Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
> wrote:<br>
><br>
> > Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
> > ---<br>
> >  src/intel/vulkan/anv_pipeline.<wbr>c | 9 +++++++--<br>
> >  1 file changed, 7 insertions(+), 2 deletions(-)<br>
> ><br>
> > diff --git a/src/intel/vulkan/anv_<wbr>pipeline.c b/src/intel/vulkan/anv_<br>
> > pipeline.c<br>
> > index 17491e34fc0..b34759a5406 100644<br>
> > --- a/src/intel/vulkan/anv_<wbr>pipeline.c<br>
> > +++ b/src/intel/vulkan/anv_<wbr>pipeline.c<br>
> > @@ -212,7 +212,6 @@ static const uint32_t vk_to_gen_primitive_type[] = {<br>
> >     [VK_PRIMITIVE_TOPOLOGY_LINE_<wbr>STRIP_WITH_ADJACENCY]     =<br>
> > _3DPRIM_LINESTRIP_ADJ,<br>
> >     [VK_PRIMITIVE_TOPOLOGY_<wbr>TRIANGLE_LIST_WITH_ADJACENCY]  =<br>
> > _3DPRIM_TRILIST_ADJ,<br>
> >     [VK_PRIMITIVE_TOPOLOGY_<wbr>TRIANGLE_STRIP_WITH_ADJACENCY] =<br>
> > _3DPRIM_TRISTRIP_ADJ,<br>
> > -/*   [VK_PRIMITIVE_TOPOLOGY_PATCH_<wbr>LIST]                =<br>
> > _3DPRIM_PATCHLIST_1 */<br>
> >  };<br>
> ><br>
> >  static void<br>
> > @@ -1086,8 +1085,14 @@ anv_pipeline_init(struct anv_pipeline *pipeline,<br>
> ><br>
> >     const VkPipelineInputAssemblyStateCr<wbr>eateInfo *ia_info =<br>
> >        pCreateInfo-><wbr>pInputAssemblyState;<br>
> > +   const VkPipelineTessellationStateCre<wbr>ateInfo *tess_info =<br>
> > +      pCreateInfo-><wbr>pTessellationState;<br>
> >     pipeline->primitive_restart = ia_info-><wbr>primitiveRestartEnable;<br>
> > -   pipeline->topology = vk_to_gen_primitive_type[ia_<wbr>info->topology];<br>
> > +<br>
> > +   if (tess_info)<br>
> > +      pipeline->topology = _3DPRIM_PATCHLIST(tess_info-><br>
> > patchControlPoints);<br>
> ><br>
><br>
> I don't think this is what you want.  I think you want to key it off of<br>
> whether or not you have a tessellation shader (there's a has_stage helper<br>
> for this).  They can provide a pTessellationState without a tessellation<br>
> shader.<br>
<br>
</div></div>Hmm.  I read:<br>
<br>
"pTessellationState is a pointer to an instance of the<br>
 VkPipelineTessellationStateCre<wbr>ateInfo structure, or NULL if the pipeline<br>
 does not include a tessellation control shader stage and tessellation<br>
 evaluation shader stage."<br>
<br>
and I suppose I interpreted it as "it'll be NULL unless there's both a<br>
TCS and TES".  It'd certainly be weird to pass one.<br></blockquote><div><br></div><div>The valid usage section says that it has to be non-NULL if there are tess stages but it says nothing about if they aren't.  So, even if the spec seems to imply you have to pass NULL if you don't have tess, it's probably not being validated.<br></div><div>--Jason <br></div></div><br></div></div>