[cairo] perf: long dashed lines
Koen Kooi
koen at dominion.kabel.utwente.nl
Sun Feb 3 15:16:16 PST 2008
BEGIN PGP SIGNED MESSAGE
Hash: SHA1
Vladimir Vukicevic schreef:
 On Feb 3, 2008, at 11:20 AM, Behdad Esfahbod wrote:
> + cairo_matrix_transform_distance (ctm_inverse, &dx0, &dy0);
> + mag = sqrt (dx0 * dx0 + dy0 * dy0);
> + if (mag < 1e12) {
> + if (mag_out)
> + *mag_out = 0.0;
> + return FALSE;
> + }
>
> mag is in user space, you shouldn't make such size assumptions on
> it. I
> suggest reworking it a bit such that we have the fixed values there
> too,
> then you can check fixed ints for zero. Or just check dx0 and dy0
> before the transformation.

 Well, should I just check for exact 0? It seems that we should at
 least use an epsilon value that's smaller than the smallest number we
 can represent in fixed point. But I'll go and replace the check with
 dx0 == 0.0 and dy0 == 0.0 before the sqrt. I wasn't too worried about
 this sqrt since it's only called once per line segment, but you're
 right, if we can avoid it we should. Can't do this whole calculation
 in fixed point though as there's a bunch of floating point math,
 mainly in _compute_face. Not sure if it needs that full precision, or
 if we should go and convert this to fixed. That can be done as a
 followup patch, though.
Speaking of (fast) sqrt implementations:
http://www.qoheleth.uklinux.net/blog/?p=139
regards,
Koen
BEGIN PGP SIGNATURE
Version: GnuPG v1.4.5 (Darwin)
iD8DBQFHpks/MkyGM64RGpERArLjAKCqrbrrxwo+qy/Yo6vElPWDtQOYXQCePBB4
+9krJMGfsRaMMFraMyVLsag=
=XmKy
END PGP SIGNATURE
More information about the cairo
mailing list