…. r=kvark We want to use the same line decoration (dashed, dotted, wavy) shader code for both horizontal and vertical lines, so it makes sense for them to use a coordinate system that has been rotated (transposed, actually) so that .x always runs parallel to the line being decorated, and .y is always perpendicular. Before this patch, we passed the orientation enum as a vertex attribute, used a switch to swap coordinates in the vertex shader, and then swapped them again in the fragment shader. This patch trades the orientation for a f32 'axis select' vertex attribute, and uses `mix` to swap them in the vertex shader. Then no consideration is necessary in the fragment shader: the vLocalPos varying is already in the appropriate form. Since get_line_decoration_sizes is already thinking in terms of line-parallel coordinates, it might seem like a good idea for decoration jobs to simply use line-parallel coordinates throughout. However, this actually results in more swapping and opportunities for confusion: much of the CPU work is concerned with the rectangle the decoration's mask occupies in the texture cache, which is axis-aligned. Differential Revision: https://phabricator.services.mozilla.com/D60926 [ghsync] From https://hg.mozilla.org/mozilla-central/rev/dfb21632ea198c1acdc6a34ee08113d516f666d5