dix: use pixman for fp1616 conversions
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Søren Sandmann <ssp@redhat.com>>
This commit is contained in:
parent
2c4388a00e
commit
59d70b30e9
|
@ -910,11 +910,7 @@ input_option_set_value(InputOption *opt, const char *value)
|
||||||
double
|
double
|
||||||
fp1616_to_double(FP1616 in)
|
fp1616_to_double(FP1616 in)
|
||||||
{
|
{
|
||||||
double ret;
|
return pixman_fixed_to_double(in);
|
||||||
|
|
||||||
ret = (double) (in >> 16);
|
|
||||||
ret += (double) (in & 0xffff) * (1.0 / (1UL << 16)); /* Optimized: ldexp((double)(in & 0xffff), -16); */
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double
|
double
|
||||||
|
@ -930,20 +926,7 @@ fp3232_to_double(FP3232 in)
|
||||||
FP1616
|
FP1616
|
||||||
double_to_fp1616(double in)
|
double_to_fp1616(double in)
|
||||||
{
|
{
|
||||||
FP1616 ret;
|
return pixman_double_to_fixed(in);
|
||||||
int32_t integral;
|
|
||||||
double tmp;
|
|
||||||
uint32_t frac_d;
|
|
||||||
|
|
||||||
tmp = floor(in);
|
|
||||||
integral = (int32_t) tmp;
|
|
||||||
|
|
||||||
tmp = (in - integral) * (1UL << 16); /* Optimized: ldexp(in - integral, 16) */
|
|
||||||
frac_d = (uint16_t) tmp;
|
|
||||||
|
|
||||||
ret = integral << 16;
|
|
||||||
ret |= frac_d & 0xffff;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FP3232
|
FP3232
|
||||||
|
|
Loading…
Reference in New Issue