To render a mesh with normal/UV seams using hardware tessellation, the PN-triangles method is not sufficient as it produces cracks on normal discontinuities (position displacement based on normal is not consistent along both sides of the seam), and displacement mapping uses slightly different texture samples which results in cracks along UV seams.
In 2010, NVidia proposed a PN-AEN tessellation scheme that fixes the problem around normal discontinuities by using opposite edge normals and averaging the resulting control point data. In 2011, NVidia proposed a further tweak on top of this technique that allows to select the "dominant" edge by choosing the min. edge index out of the current/adjacent edges, and using the UV data from that edge on the patch edges to sample the displacement data. For corners, there can be more than two wedges that have the same position, so you need to store the dominant vertex for each patch corner as well.
As a result, generating a 12-vertex patch for each input triangle allows to use the hardware tessellation engine to implement PN-AEN (using 9 vertices) and/or displacement mapping (using 3 more vertices) without cracks.
This change implements the data preprocessing step for this algorithm as meshopt_generateTessellationIndexBuffer; this index buffer can be directly fed to the GPU along with the requisite hull/domain shaders.
For implementing the shader code, the following papers are recommended:
John McDonald, Mark Kilgard Crack-Free Point-Normal Triangles using Adjacent Edge Normals. 2010
John McDonald Tessellation on Any Budget. 2010
Bryan Dudash My Tessellation Has Cracks! 2012