[cairo] [Pixman] help building cairo on windows

Siarhei Siamashka siarhei.siamashka at gmail.com
Tue Sep 11 13:44:38 PDT 2012


On Tue, 11 Sep 2012 22:25:15 +0200
Andrea Canciani <ranma42 at gmail.com> wrote:

> On Tue, Sep 11, 2012 at 7:34 PM, Søren Sandmann <sandmann at cs.au.dk>
> wrote:
> > Andrea Canciani <ranma42 at gmail.com> writes:
> >
> >> This reminds me that I have some patches to improve building
> >> pixman on win32:
> >> http://cgit.freedesktop.org/~ranma42/pixman/commit/?h=wip/simpleops-to-master
> >>
> >> Soren, is it ok if I push the attached patches?
> >
> > No objections from me if the test suite still passes with
> > PIXMAN_DISABLE=sse2 set.
> 
> On MacOS X the testsuite shows no regression with that variable in
> the env. On win32, pixman did not compile without the first of those
> patches. After it, the testsuite fails with:
> 
> $ PIXMAN_DISABLE=sse2 ./scaling-test.exe
> Assertion failed: frcd_canary_variable1 == frcd_volatile_constant1,
> file scaling-test.c, line 356
> pixman: Disabled sse2 implementation
> 
> The failing testcase is:
> $ PIXMAN_DISABLE=sse2 ./scaling-test.exe 3348
> Assertion failed: frcd_canary_variable1 == frcd_volatile_constant1,
> file scaling-test.c, line 356
> src_fmt=20028888, dst_fmt=20028888
> op=3, scale_x=27881, scale_y=-65000, repeat=0
> translate_x=55344, translate_y=56484
> src_width=11, src_height=8, dst_width=24, dst_height=7
> src_x=0, src_y=4, dst_x=4, dst_y=3
> w=20, h=2
> destination clip box: [16,6-20,6]
> destination clip box: [3,2-18,6]
> pixman: Disabled sse2 implementation
> ...
> 
> This seems to be consistent with the compiler warnings:
> pixman-mmx.c
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(286) :
> warning C4799: function 'to_uint64' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(469) :
> warning C4799: function 'store8888' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(480) :
> warning C4799: function 'is_equal' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(491) :
> warning C4799: function 'is_opaque' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(497) :
> warning C4799: function 'is_zero' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(565) :
> warning C4799: function 'expand_4xpacked565' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(591) :
> warning C4799: function 'expand_4x565' has no EMMS instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(3760) :
> warning C4799: function
> 'fast_composite_scaled_bilinear_mmx_8888_8_8888_pad_OVER' has no EMMS
> instruction
> c:\cygwin\home\ranma42\code\fdo\pixman\pixman\pixman-mmx.c(3764) :
> warning C4799: function
> 'fast_composite_scaled_bilinear_mmx_8888_8_8888_none_OVER' has no EMMS
> instruction
> 
> I was unable to find out why MSVC thinks that
> fast_composite_scaled_bilinear_mmx_8888_8_8888_{pad,none}_OVER are
> missing an EMMS instruction, but cover/normal are ok.

Does MSVC respect 'force_inline' and actually inline all of these
functions ('to_uint64', 'store8888', ...)?

-- 
Best regards,
Siarhei Siamashka


More information about the cairo mailing list