From a04410e618fbf297fbcc5e4233111371a67bc555 Mon Sep 17 00:00:00 2001 From: "vladimir%pobox.com" Date: Tue, 24 Jul 2007 17:45:51 +0000 Subject: [PATCH] b=383960, moz cairo: MSVC compilation fixes git-svn-id: svn://10.0.0.236/trunk@230771 18797224-902f-48f8-a5cc-f745e15eee43 --- .../gfx/cairo/cairo/src/cairo-win32-surface.c | 10 +-- mozilla/gfx/cairo/libpixman/src/Makefile.in | 2 +- mozilla/gfx/cairo/libpixman/src/pixman-mmx.c | 76 +++++++++---------- .../gfx/cairo/libpixman/src/pixman-private.h | 30 +++++++- 4 files changed, 72 insertions(+), 46 deletions(-) diff --git a/mozilla/gfx/cairo/cairo/src/cairo-win32-surface.c b/mozilla/gfx/cairo/cairo/src/cairo-win32-surface.c index f433b3de543..81e10815a7a 100644 --- a/mozilla/gfx/cairo/cairo/src/cairo-win32-surface.c +++ b/mozilla/gfx/cairo/cairo/src/cairo-win32-surface.c @@ -1431,10 +1431,10 @@ _cairo_win32_surface_set_clip_region (void *abstract_surface, data->rdh.iType = RDH_RECTANGLES; data->rdh.nCount = num_boxes; data->rdh.nRgnSize = num_boxes * sizeof (RECT); - data->rdh.rcBound.left = extents->x1; - data->rdh.rcBound.top = extents->y1; - data->rdh.rcBound.right = extents->x2; - data->rdh.rcBound.bottom = extents->y2; + data->rdh.rcBound.left = extents.x; + data->rdh.rcBound.top = extents.y; + data->rdh.rcBound.right = extents.x + extents.width; + data->rdh.rcBound.bottom = extents.y + extents.height; for (i = 0; i < num_boxes; i++) { rects[i].left = boxes[i].p1.x; @@ -1443,7 +1443,7 @@ _cairo_win32_surface_set_clip_region (void *abstract_surface, rects[i].bottom = boxes[i].p2.y; } - _cairo_region_boxes_fini (region, &boxes); + _cairo_region_boxes_fini (region, boxes); gdi_region = ExtCreateRegion (NULL, data_size, data); free (data); diff --git a/mozilla/gfx/cairo/libpixman/src/Makefile.in b/mozilla/gfx/cairo/libpixman/src/Makefile.in index 85b5ec7323b..77ef2240275 100644 --- a/mozilla/gfx/cairo/libpixman/src/Makefile.in +++ b/mozilla/gfx/cairo/libpixman/src/Makefile.in @@ -96,7 +96,7 @@ FORCE_USE_PIC = 1 include $(topsrcdir)/config/rules.mk -CFLAGS += -DPACKAGE="mozpixman" +CFLAGS += -DPACKAGE="mozpixman" -D_USE_MATH_DEFINES ifdef MOZ_X11 #CFLAGS += -mmmx -msse -Winline --param inline-unit-growth=10000 --param large-function-growth=10000 diff --git a/mozilla/gfx/cairo/libpixman/src/pixman-mmx.c b/mozilla/gfx/cairo/libpixman/src/pixman-mmx.c index bfefdb84224..2b904b2b07e 100644 --- a/mozilla/gfx/cairo/libpixman/src/pixman-mmx.c +++ b/mozilla/gfx/cairo/libpixman/src/pixman-mmx.c @@ -1044,9 +1044,9 @@ fbCompositeSolid_nx0565mmx (pixman_op_t op, while (w && (unsigned long)dst & 7) { ullong d = *dst; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565(over(vsrc, vsrca, vdest), vdest, 0); - *dst = (ullong)vdest; + *dst = _mm_cvtsi64_si32(vdest); w--; dst++; @@ -1074,9 +1074,9 @@ fbCompositeSolid_nx0565mmx (pixman_op_t op, while (w) { ullong d = *dst; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565(over(vsrc, vsrca, vdest), vdest, 0); - *dst = (ullong)vdest; + *dst = _mm_cvtsi64_si32(vdest); w--; dst++; @@ -1502,11 +1502,11 @@ fbCompositeSrc_8888x0565mmx (pixman_op_t op, { __m64 vsrc = load8888 (*src); ullong d = *dst; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565(over(vsrc, expand_alpha(vsrc), vdest), vdest, 0); - *dst = (ullong)vdest; + *dst = _mm_cvtsi64_si32(vdest); w--; dst++; @@ -1545,11 +1545,11 @@ fbCompositeSrc_8888x0565mmx (pixman_op_t op, { __m64 vsrc = load8888 (*src); ullong d = *dst; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565(over(vsrc, expand_alpha(vsrc), vdest), vdest, 0); - *dst = (ullong)vdest; + *dst = _mm_cvtsi64_si32(vdest); w--; dst++; @@ -1614,7 +1614,7 @@ fbCompositeSolidMask_nx8x8888mmx (pixman_op_t op, if (m) { - __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev ((__m64)m), load8888(*dst)); + __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (_mm_cvtsi32_si64(m)), load8888(*dst)); *dst = store8888(vdest); } @@ -1642,8 +1642,8 @@ fbCompositeSolidMask_nx8x8888mmx (pixman_op_t op, vdest = *(__m64 *)dst; - dest0 = in_over(vsrc, vsrca, expand_alpha_rev ((__m64)m0), expand8888(vdest, 0)); - dest1 = in_over(vsrc, vsrca, expand_alpha_rev ((__m64)m1), expand8888(vdest, 1)); + dest0 = in_over(vsrc, vsrca, expand_alpha_rev (_mm_cvtsi32_si64(m0)), expand8888(vdest, 0)); + dest1 = in_over(vsrc, vsrca, expand_alpha_rev (_mm_cvtsi32_si64(m1)), expand8888(vdest, 1)); *(__m64 *)dst = pack8888(dest0, dest1); } @@ -1662,7 +1662,7 @@ fbCompositeSolidMask_nx8x8888mmx (pixman_op_t op, if (m) { __m64 vdest = load8888(*dst); - vdest = in_over(vsrc, vsrca, expand_alpha_rev ((__m64)m), vdest); + vdest = in_over(vsrc, vsrca, expand_alpha_rev (_mm_cvtsi32_si64(m)), vdest); *dst = store8888(vdest); } @@ -1715,7 +1715,7 @@ pixman_fill_mmx (uint32_t *bits, } fill = ((ullong)xor << 32) | xor; - vfill = (__m64)fill; + vfill = _mm_cvtsi32_si64(fill); #ifdef __GNUC__ __asm__ ( @@ -1861,7 +1861,7 @@ fbCompositeSolidMaskSrc_nx8x8888mmx (pixman_op_t op, if (m) { - __m64 vdest = in(vsrc, expand_alpha_rev ((__m64)m)); + __m64 vdest = in(vsrc, expand_alpha_rev (_mm_cvtsi32_si64(m))); *dst = store8888(vdest); } else @@ -1893,8 +1893,8 @@ fbCompositeSolidMaskSrc_nx8x8888mmx (pixman_op_t op, vdest = *(__m64 *)dst; - dest0 = in(vsrc, expand_alpha_rev ((__m64)m0)); - dest1 = in(vsrc, expand_alpha_rev ((__m64)m1)); + dest0 = in(vsrc, expand_alpha_rev (_mm_cvtsi32_si64(m0))); + dest1 = in(vsrc, expand_alpha_rev (_mm_cvtsi32_si64(m1))); *(__m64 *)dst = pack8888(dest0, dest1); } @@ -1917,7 +1917,7 @@ fbCompositeSolidMaskSrc_nx8x8888mmx (pixman_op_t op, if (m) { __m64 vdest = load8888(*dst); - vdest = in(vsrc, expand_alpha_rev ((__m64)m)); + vdest = in(vsrc, expand_alpha_rev (_mm_cvtsi32_si64(m))); *dst = store8888(vdest); } else @@ -1970,7 +1970,7 @@ fbCompositeSolidMask_nx8x0565mmx (pixman_op_t op, vsrc = load8888 (src); vsrca = expand_alpha (vsrc); - src16 = (ullong)pack565(vsrc, _mm_setzero_si64(), 0); + src16 = _mm_cvtsi64_si32(pack565(vsrc, _mm_setzero_si64(), 0)); srcsrcsrcsrc = (ullong)src16 << 48 | (ullong)src16 << 32 | (ullong)src16 << 16 | (ullong)src16; @@ -1992,9 +1992,9 @@ fbCompositeSolidMask_nx8x0565mmx (pixman_op_t op, if (m) { ullong d = *dst; - __m64 vd = (__m64)d; - __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev ((__m64)m), expand565(vd, 0)); - *dst = (ullong)pack565(vdest, _mm_setzero_si64(), 0); + __m64 vd = _mm_cvtsi32_si64(d); + __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (_mm_cvtsi32_si64(m)), expand565(vd, 0)); + *dst = _mm_cvtsi64_si32(pack565(vdest, _mm_setzero_si64(), 0)); } w--; @@ -2023,13 +2023,13 @@ fbCompositeSolidMask_nx8x0565mmx (pixman_op_t op, vdest = *(__m64 *)dst; - vm0 = (__m64)m0; + vm0 = _mm_cvtsi32_si64(m0); vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm0), expand565(vdest, 0)), vdest, 0); - vm1 = (__m64)m1; + vm1 = _mm_cvtsi32_si64(m1); vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm1), expand565(vdest, 1)), vdest, 1); - vm2 = (__m64)m2; + vm2 = _mm_cvtsi32_si64(m2); vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm2), expand565(vdest, 2)), vdest, 2); - vm3 = (__m64)m3; + vm3 = _mm_cvtsi32_si64(m3); vdest = pack565(in_over(vsrc, vsrca, expand_alpha_rev(vm3), expand565(vdest, 3)), vdest, 3); *(__m64 *)dst = vdest; @@ -2049,9 +2049,9 @@ fbCompositeSolidMask_nx8x0565mmx (pixman_op_t op, if (m) { ullong d = *dst; - __m64 vd = (__m64)d; - __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev ((__m64)m), expand565(vd, 0)); - *dst = (ullong)pack565(vdest, _mm_setzero_si64(), 0); + __m64 vd = _mm_cvtsi32_si64(d); + __m64 vdest = in_over(vsrc, vsrca, expand_alpha_rev (_mm_cvtsi32_si64(m)), expand565(vd, 0)); + *dst = _mm_cvtsi64_si32(pack565(vdest, _mm_setzero_si64(), 0)); } w--; @@ -2106,11 +2106,11 @@ fbCompositeSrc_8888RevNPx0565mmx (pixman_op_t op, { __m64 vsrc = load8888 (*src); ullong d = *dst; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565(over_rev_non_pre(vsrc, vdest), vdest, 0); - *dst = (ullong)vdest; + *dst = _mm_cvtsi64_si32(vdest); w--; dst++; @@ -2167,11 +2167,11 @@ fbCompositeSrc_8888RevNPx0565mmx (pixman_op_t op, { __m64 vsrc = load8888 (*src); ullong d = *dst; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565(over_rev_non_pre(vsrc, vdest), vdest, 0); - *dst = (ullong)vdest; + *dst = _mm_cvtsi64_si32(vdest); w--; dst++; @@ -2330,9 +2330,9 @@ fbCompositeSolidMask_nx8888x0565Cmmx (pixman_op_t op, if (m) { ullong d = *q; - __m64 vdest = expand565 ((__m64)d, 0); + __m64 vdest = expand565 (_mm_cvtsi32_si64(d), 0); vdest = pack565 (in_over (vsrc, vsrca, load8888 (m), vdest), vdest, 0); - *q = (ullong)vdest; + *q = _mm_cvtsi64_si32(vdest); } twidth--; @@ -2373,9 +2373,9 @@ fbCompositeSolidMask_nx8888x0565Cmmx (pixman_op_t op, if (m) { ullong d = *q; - __m64 vdest = expand565((__m64)d, 0); + __m64 vdest = expand565(_mm_cvtsi32_si64(d), 0); vdest = pack565 (in_over(vsrc, vsrca, load8888(m), vdest), vdest, 0); - *q = (ullong)vdest; + *q = _mm_cvtsi64_si32(vdest); } twidth--; @@ -2731,7 +2731,7 @@ fbCompositeSrcAdd_8888x8888mmx (pixman_op_t op, while (w >= 2) { - *(ullong*)dst = (ullong) _mm_adds_pu8(*(__m64*)src, *(__m64*)dst); + *(ullong*)dst = _mm_cvtsi64_si32(_mm_adds_pu8(*(__m64*)src, *(__m64*)dst)); dst += 2; src += 2; w -= 2; @@ -2957,7 +2957,7 @@ fbCompositeOver_x888x8x8888mmx (pixman_op_t op, else { __m64 sa = expand_alpha (s); - __m64 vm = expand_alpha_rev ((__m64)m); + __m64 vm = expand_alpha_rev (_mm_cvtsi32_si64(m)); __m64 vdest = in_over(s, sa, vm, load8888 (*dst)); *dst = store8888 (vdest); diff --git a/mozilla/gfx/cairo/libpixman/src/pixman-private.h b/mozilla/gfx/cairo/libpixman/src/pixman-private.h index 1012efe3282..6413ecd0e9e 100644 --- a/mozilla/gfx/cairo/libpixman/src/pixman-private.h +++ b/mozilla/gfx/cairo/libpixman/src/pixman-private.h @@ -5,6 +5,8 @@ #ifndef PIXMAN_PRIVATE_H #define PIXMAN_PRIVATE_H +#include "cairo-platform.h" + #include "pixman.h" #include @@ -16,6 +18,30 @@ #define TRUE 1 #endif +#ifdef _MSC_VER + +#define snprintf _snprintf +#undef inline +#define inline __inline + +# ifndef INT16_MIN +# define INT16_MIN (-32767-1) +# endif +# ifndef INT16_MAX +# define INT16_MAX (32767) +# endif +# ifndef INT32_MIN +# define INT32_MIN (-2147483647-1) +# endif +# ifndef INT32_MAX +# define INT32_MAX (2147483647) +# endif +# ifndef UINT32_MAX +# define UINT32_MAX (4294967295) +# endif + +#endif + #define MSBFirst 0 #define LSBFirst 1 @@ -776,6 +802,8 @@ pixman_rasterize_edges_accessors (pixman_image_t *image, pixman_fixed_t b); +#ifndef MOZILLA_CLIENT + /* Timing */ static inline uint64_t oil_profile_stamp_rdtsc (void) @@ -786,8 +814,6 @@ oil_profile_stamp_rdtsc (void) } #define OIL_STAMP oil_profile_stamp_rdtsc -#ifndef MOZILLA_CLIENT - typedef struct PixmanTimer PixmanTimer; struct PixmanTimer