• Support dashed borders with new border path.

    Dashed border edges are handled by the standard ps_border_edge shader.
    
    Dashed border corners instead create a clip mask for the border and
    draw each dash stroke to the clip mask. The math for determining the correct
    dash strokes is too complex to evaluate efficiently in a shader, doing
    it this way allows us to support arbitrary kinds of dash strokes.
    
    In the future, we will either specialize this to a border render task (to
    avoid the clip mask target allocation for the whole border rect), or make
    use of upcoming optimization work in the clip mask code to handle this
    case more efficiently.
    
    This will also serve as the basis for dotted border corners, which are also
    too complex to evaluate inside a shader.
    
    For now, we just treat everything as an ellipse when evaluating the dash
    strokes. This gives the correct result for ellipses and circle radii,
    but is very inefficient for circles. As a follow up, we will include
    a fast path for corners where the x/y radii are equal.
    
    Deciding the exact dash length etc is not well specified. The current
    code is a rough approximation to what Gecko does. In the future we
    can iterate on this and make it closer to Gecko's rules for dash length.
    gw3583 committed May 1, 2017