OpenGL guy said:The vertex shader only works on a single vertex at a time, so it can't be used since it doesn't know anything about edges.
The pixel shader works on a single pixel at a time and also has no concept of edge.
Thats not 100% true, in fact for several years a variety of demos and articles have accessed edge and primitive data per vertex (and potentially per-pixel but I haven't tried it yet).
It involves altering the way you represent your data to the GPU but still it works. I'll have to remember to send my ShaderX2 article to Dave this weekend, so I can just point you at that in future.
In a nutshell upload your edge data and/or primitive data into constant ram (or texture if you have texture access) and then send in via the vertex streams indices and barycentric coodinates. Then per vertex use the vertex stream indices and barycentric coodinates to reconstruct your current primitive/edge etc and then do what ever you like with the data.
Main limitation is batch size but with geometry texturing on the way, that limitation may be reduced as well.