Update to pixman 0.10, with one small fix to the sse2 test in configure.ac.

This commit is contained in:
matthieu 2008-04-08 19:00:25 +00:00
parent edd5ee518b
commit ba51a4b66c
25 changed files with 2411 additions and 6556 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,3 +4,124 @@ pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA=pixman-1.pc
$(pkgconfig_DATA): pixman-1.pc.in
snapshot:
distdir="$(distdir)-`date '+%Y%m%d'`"; \
test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \
$(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist
USERNAME=$$USER
RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi)
RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org
RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/releases
RELEASE_CAIRO_URL = http://cairographics.org/releases
RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib
RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org
RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib
RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org
tar_gz = $(PACKAGE)-$(VERSION).tar.gz
tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2
sha1_tgz = $(tar_gz).sha1
md5_tgz = $(tar_gz).md5
sha1_tbz2 = $(tar_bz2).sha1
md5_tbz2 = $(tar_bz2).md5
gpg_file = $(sha1_tgz).asc
$(sha1_tgz): $(tar_gz)
sha1sum $^ > $@
$(md5_tgz): $(tar_gz)
md5sum $^ > $@
$(sha1_tbz2): $(tar_bz2)
sha1sum $^ > $@
$(md5_tbz2): $(tar_bz2)
md5sum $^ > $@
$(gpg_file): $(sha1_tgz)
@echo "Please enter your GPG password to sign the checksum."
gpg --armor --sign $^
release-verify-newer:
@echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..."
@ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \
|| (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \
&& echo "Refusing to try to generate a new release of the same name." \
&& false)
@ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \
|| (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \
&& echo "Refusing to try to generate a new release of the same name." \
&& false)
@echo "Good."
release-remove-old:
$(RM) $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file)
ensure-prev:
@if [[ "$(PREV)" == "" ]]; then \
echo "" && \
echo "You must set the PREV variable on the make command line to" && \
echo "the git tag of the last release." && \
echo "" && \
echo "For example:" && \
echo " make PREV=pixman-0.7.3" && \
echo "" && \
false; \
fi
release-check: ensure-prev release-verify-newer release-remove-old distcheck
release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file)
mkdir -p releases
scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)
scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)
ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)"
git-tag -s -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION)
release-publish-message: $(sha1_tgz) $(md5_tgz) $(sha1_tbz2) $(md5_tbz2) ensure-prev
@echo "Please follow the instructions in RELEASING to push stuff out and"
@echo "send out the announcement mails. Here is the excerpt you need:"
@echo ""
@echo "Lists: $(RELEASE_ANNOUNCE_LIST)"
@echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available"
@echo "============================== CUT HERE =============================="
@echo "A new $(PACKAGE) release $(VERSION) is now available"
@echo ""
@echo "tar.gz:"
@echo " $(RELEASE_CAIRO_URL)/$(tar_gz)"
@echo " $(RELEASE_XORG_URL)/$(tar_gz)"
@echo ""
@echo "tar.bz2:"
@echo " $(RELEASE_XORG_URL)/$(tar_bz2)"
@echo ""
@echo "Hashes:"
@echo -n " MD5: "
@cat $(md5_tgz)
@echo -n " MD5: "
@cat $(md5_tbz2)
@echo -n " SHA1: "
@cat $(sha1_tgz)
@echo -n " SHA1: "
@cat $(sha1_tbz2)
@echo ""
@echo "GPG signature:"
@echo " $(RELEASE_CAIRO_URL)/$(gpg_file)"
@echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)"
@echo ""
@echo "Git:"
@echo " git://git.freedesktop.org/git/pixman"
@echo " tag: $(PACKAGE)-$(VERSION)"
@echo ""
@echo "Log:"
@git-log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b0-80
@echo "============================== CUT HERE =============================="
@echo ""
release-publish: release-upload release-publish-message
.PHONY: release-upload release-publish release-publish-message

View File

@ -1,5 +1,5 @@
# $OpenBSD: Makefile.bsd-wrapper,v 1.4 2007/12/10 21:30:21 matthieu Exp $
# $OpenBSD: Makefile.bsd-wrapper,v 1.5 2008/04/08 19:00:25 matthieu Exp $
SHARED_LIBS= pixman-1 10.0
SHARED_LIBS= pixman-1 11.0
.include <bsd.xorg.mk>

View File

@ -138,13 +138,19 @@ PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PIXMAN_MAJOR = @PIXMAN_MAJOR@
PIXMAN_VERSION_MAJOR = @PIXMAN_VERSION_MAJOR@
PIXMAN_VERSION_MICRO = @PIXMAN_VERSION_MICRO@
PIXMAN_VERSION_MINOR = @PIXMAN_VERSION_MINOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSE_CFLAGS = @SSE_CFLAGS@
STRIP = @STRIP@
USE_MMX_FALSE = @USE_MMX_FALSE@
USE_MMX_TRUE = @USE_MMX_TRUE@
USE_SSE2_FALSE = @USE_SSE2_FALSE@
USE_SSE2_TRUE = @USE_SSE2_TRUE@
USE_SSE_FALSE = @USE_SSE_FALSE@
USE_SSE_TRUE = @USE_SSE_TRUE@
VERSION = @VERSION@
@ -154,6 +160,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -194,6 +201,22 @@ target_alias = @target_alias@
SUBDIRS = pixman test
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = pixman-1.pc
USERNAME = $$USER
RELEASE_OR_SNAPSHOT = $$(if test "x$(CAIRO_VERSION_MINOR)" = "x$$(echo "$(CAIRO_VERSION_MINOR)/2*2" | bc)" ; then echo release; else echo snapshot; fi)
RELEASE_CAIRO_HOST = $(USERNAME)@cairographics.org
RELEASE_CAIRO_DIR = /srv/cairo.freedesktop.org/www/releases
RELEASE_CAIRO_URL = http://cairographics.org/releases
RELEASE_XORG_URL = http://xorg.freedesktop.org/archive/individual/lib
RELEASE_XORG_HOST = $(USERNAME)@xorg.freedesktop.org
RELEASE_XORG_DIR = /srv/xorg.freedesktop.org/archive/individual/lib
RELEASE_ANNOUNCE_LIST = cairo-announce@cairographics.org, xorg-announce@lists.freedesktop.org
tar_gz = $(PACKAGE)-$(VERSION).tar.gz
tar_bz2 = $(PACKAGE)-$(VERSION).tar.bz2
sha1_tgz = $(tar_gz).sha1
md5_tgz = $(tar_gz).md5
sha1_tbz2 = $(tar_bz2).sha1
md5_tbz2 = $(tar_bz2).md5
gpg_file = $(sha1_tgz).asc
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
@ -413,7 +436,7 @@ distclean-tags:
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
$(mkdir_p) $(distdir)/.
$(mkdir_p) $(distdir)/. $(distdir)/pixman
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@ -655,6 +678,106 @@ uninstall-info: uninstall-info-recursive
$(pkgconfig_DATA): pixman-1.pc.in
snapshot:
distdir="$(distdir)-`date '+%Y%m%d'`"; \
test -d "$(srcdir)/.git" && distdir=$$distdir-`cd "$(srcdir)" && git-rev-parse HEAD | cut -c 1-6`; \
$(MAKE) $(AM_MAKEFLAGS) distdir="$$distdir" dist
$(sha1_tgz): $(tar_gz)
sha1sum $^ > $@
$(md5_tgz): $(tar_gz)
md5sum $^ > $@
$(sha1_tbz2): $(tar_bz2)
sha1sum $^ > $@
$(md5_tbz2): $(tar_bz2)
md5sum $^ > $@
$(gpg_file): $(sha1_tgz)
@echo "Please enter your GPG password to sign the checksum."
gpg --armor --sign $^
release-verify-newer:
@echo -n "Checking that no $(VERSION) release already exists at $(RELEASE_XORG_HOST)..."
@ssh $(RELEASE_XORG_HOST) test ! -e $(RELEASE_XORG_DIR)/$(tar_gz) \
|| (echo "Ouch." && echo "Found: $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)/$(tar_gz)" \
&& echo "Refusing to try to generate a new release of the same name." \
&& false)
@ssh $(RELEASE_CAIRO_HOST) test ! -e $(RELEASE_CAIRO_DIR)/$(tar_gz) \
|| (echo "Ouch." && echo "Found: $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)/$(tar_gz)" \
&& echo "Refusing to try to generate a new release of the same name." \
&& false)
@echo "Good."
release-remove-old:
$(RM) $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file)
ensure-prev:
@if [[ "$(PREV)" == "" ]]; then \
echo "" && \
echo "You must set the PREV variable on the make command line to" && \
echo "the git tag of the last release." && \
echo "" && \
echo "For example:" && \
echo " make PREV=pixman-0.7.3" && \
echo "" && \
false; \
fi
release-check: ensure-prev release-verify-newer release-remove-old distcheck
release-upload: release-check $(tar_gz) $(tar_bz2) $(sha1_tgz) $(gpg_file)
mkdir -p releases
scp $(tar_gz) $(sha1_tgz) $(gpg_file) $(RELEASE_CAIRO_HOST):$(RELEASE_CAIRO_DIR)
scp $(tar_gz) $(tar_bz2) $(RELEASE_XORG_HOST):$(RELEASE_XORG_DIR)
ssh $(RELEASE_CAIRO_HOST) "rm -f $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-[0-9]* && ln -s $(tar_gz) $(RELEASE_CAIRO_DIR)/LATEST-$(PACKAGE)-$(VERSION)"
git-tag -s -m "$(PACKAGE) $(VERSION) release" $(PACKAGE)-$(VERSION)
release-publish-message: $(sha1_tgz) $(md5_tgz) $(sha1_tbz2) $(md5_tbz2) ensure-prev
@echo "Please follow the instructions in RELEASING to push stuff out and"
@echo "send out the announcement mails. Here is the excerpt you need:"
@echo ""
@echo "Lists: $(RELEASE_ANNOUNCE_LIST)"
@echo "Subject: [ANNOUNCE] $(PACKAGE) release $(VERSION) now available"
@echo "============================== CUT HERE =============================="
@echo "A new $(PACKAGE) release $(VERSION) is now available"
@echo ""
@echo "tar.gz:"
@echo " $(RELEASE_CAIRO_URL)/$(tar_gz)"
@echo " $(RELEASE_XORG_URL)/$(tar_gz)"
@echo ""
@echo "tar.bz2:"
@echo " $(RELEASE_XORG_URL)/$(tar_bz2)"
@echo ""
@echo "Hashes:"
@echo -n " MD5: "
@cat $(md5_tgz)
@echo -n " MD5: "
@cat $(md5_tbz2)
@echo -n " SHA1: "
@cat $(sha1_tgz)
@echo -n " SHA1: "
@cat $(sha1_tbz2)
@echo ""
@echo "GPG signature:"
@echo " $(RELEASE_CAIRO_URL)/$(gpg_file)"
@echo " (signed by `getent passwd "$$USER" | cut -d: -f 5 | cut -d, -f 1`)"
@echo ""
@echo "Git:"
@echo " git://git.freedesktop.org/git/pixman"
@echo " tag: $(PACKAGE)-$(VERSION)"
@echo ""
@echo "Log:"
@git-log --no-merges "$(PACKAGE)-$(PREV)".."$(PACKAGE)-$(VERSION)" | git shortlog | awk '{ printf "\t"; print ; }' | cut -b0-80
@echo "============================== CUT HERE =============================="
@echo ""
release-publish: release-upload release-publish-message
.PHONY: release-upload release-publish release-publish-message
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -1,3 +1,43 @@
- Update the RLEASING file
- Things to keep in mind if breaking ABI:
- There should be a guard #ifndef I_AM_EITHER_CAIRO_OR_THE_X_SERVER
- X server will require 16.16 essentially forever. Can we get
the required precision by simply adding offset_x/y to the
relevant rendering API?
- pixman_image_set_indexed() should copy its argument, and X
should be ported over to use a pixman_image as the
representation of a Picture, rather than creating one on each
operation.
- We should get rid of pixman_set_static_pointers()
- We should get rid of the various trapezoid helper functions().
(They only exist because they are theoretically available to
drivers).
- Regions should become 32 bit
- There should only be one trap rasterization API.
- The PIXMAN_g8/c8/etc formats should use the A channel
to indicate the actual depth. That way PIXMAN_x4c4 and PIXMAN_c8
won't collide.
- Make pixman_region_point_in() survive a NULL box, then fix up
pixman-compose.c
- Test suite
- Add a general way of dealing with architecture specific
fast-paths. The current idea is to have each operation that can
be optimized is called through a function pointer that is
initially set to an initialization function that is responsible for
setting the function pointer to the appropriate fast-path.
- Go through things marked FIXME
- Add calls to prepare and finish access where necessary. grep for
@ -22,21 +62,23 @@
IC_SHIFT to 5 for all machines.
- Consider whether calling regions region16 is really such a great
idea Vlad wants 32 bit regions for Cairo. This will break X server
idea. Vlad wants 32 bit regions for Cairo. This will break X server
ABI, but should otherwise be mostly harmless, though a
pixman_region_get_boxes16() may be useful.
- Make source clipping optional.
- done: source clipping happens through an indirection.
still needs to make the indirection settable. (And call it
from X)
- Consider optimizing the 8/16 bit solid fills in pixman-util.c by
storing more than one value at a time.
- Add an image cache to prevent excessive malloc/free. Note that pixman
needs to be thread safe when used from cairo.
- Moving to 24.8 coordinates. This is tricky because X is still
defined as 16.16 and will be basically forever. It's possible we
could do this by adding extra offset_x/y parameters to the
trapezoid calls. The X server could then just call the API with
(0, 0). Cairo would have to make sure that the delta *within* a
batch of trapezoids does not exceed 16 bit.
- Review the pixman_format_code_t enum to make sure it will support
future formats. Some formats we will probably need:
@ -78,11 +120,26 @@
It may make sense to have a PIXMAN_TYPE_YUV, and then use the
channel bits to specify the exact subtype.
Another possibility is to add
PIXMAN_TYPE_ARGB_W
PIXMAN_TYPE_ARGB_WW
where the channel widths would get 16 and 32 added to them,
respectively.
What about color spaces such a linear vs. srGB etc.?
done:
- Get rid of the switch-of-doom; replace it with a big table
describing the various fast paths.
- Make source clipping optional.
- done: source clipping happens through an indirection.
still needs to make the indirection settable. (And call it
from X)
- Run cairo test suite; fix bugs
- one bug in source-scale-clip

158
lib/pixman/aclocal.m4 vendored
View File

@ -6396,6 +6396,164 @@ SED=$lt_cv_path_SED
AC_MSG_RESULT([$SED])
])
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
#
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# PKG_PROG_PKG_CONFIG([MIN-VERSION])
# ----------------------------------
AC_DEFUN([PKG_PROG_PKG_CONFIG],
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=m4_default([$1], [0.9.0])
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
PKG_CONFIG=""
fi
fi[]dnl
])# PKG_PROG_PKG_CONFIG
# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
#
# Check to see whether a particular set of modules exists. Similar
# to PKG_CHECK_MODULES(), but does not set variables or print errors.
#
#
# Similar to PKG_CHECK_MODULES, make sure that the first instance of
# this or PKG_CHECK_MODULES is called, or make sure to call
# PKG_CHECK_EXISTS manually
# --------------------------------------------------------------
AC_DEFUN([PKG_CHECK_EXISTS],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
if test -n "$PKG_CONFIG" && \
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
m4_ifval([$2], [$2], [:])
m4_ifvaln([$3], [else
$3])dnl
fi])
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
# ---------------------------------------------
m4_define([_PKG_CONFIG],
[if test -n "$PKG_CONFIG"; then
if test -n "$$1"; then
pkg_cv_[]$1="$$1"
else
PKG_CHECK_EXISTS([$3],
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
[pkg_failed=yes])
fi
else
pkg_failed=untried
fi[]dnl
])# _PKG_CONFIG
# _PKG_SHORT_ERRORS_SUPPORTED
# -----------------------------
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi[]dnl
])# _PKG_SHORT_ERRORS_SUPPORTED
# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
# [ACTION-IF-NOT-FOUND])
#
#
# Note that if there is a possibility the first call to
# PKG_CHECK_MODULES might not happen, you should be sure to include an
# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
#
#
# --------------------------------------------------------------
AC_DEFUN([PKG_CHECK_MODULES],
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
pkg_failed=no
AC_MSG_CHECKING([for $1])
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
and $1[]_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.])
if test $pkg_failed = yes; then
_PKG_SHORT_ERRORS_SUPPORTED
if test $_pkg_short_errors_supported = yes; then
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
else
$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
fi
# Put the nasty error message in config.log where it belongs
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
ifelse([$4], , [AC_MSG_ERROR(dnl
[Package requirements ($2) were not met:
$$1_PKG_ERRORS
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
_PKG_TEXT
])],
[AC_MSG_RESULT([no])
$4])
elif test $pkg_failed = untried; then
ifelse([$4], , [AC_MSG_FAILURE(dnl
[The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
_PKG_TEXT
To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
[$4])
else
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
AC_MSG_RESULT([yes])
ifelse([$3], , :, [$3])
fi[]dnl
])# PKG_CHECK_MODULES
# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation

View File

@ -60,6 +60,9 @@
/* use SSE compiler intrinsics */
#undef USE_SSE
/* use SSE compiler intrinsics */
#undef USE_SSE2
/* Version number of package */
#undef VERSION

416
lib/pixman/configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for pixman 0.9.6.
# Generated by GNU Autoconf 2.59 for pixman 0.10.0.
#
# Report bugs to <"sandmann@daimi.au.dk">.
#
@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='pixman'
PACKAGE_TARNAME='pixman'
PACKAGE_VERSION='0.9.6'
PACKAGE_STRING='pixman 0.9.6'
PACKAGE_VERSION='0.10.0'
PACKAGE_STRING='pixman 0.10.0'
PACKAGE_BUGREPORT='"sandmann@daimi.au.dk"'
# Factoring default headers for most tests.
@ -464,7 +464,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PIXMAN_MAJOR LT_VERSION_INFO USE_MMX_TRUE USE_MMX_FALSE USE_SSE_TRUE USE_SSE_FALSE MMX_CFLAGS HAVE_GTK_TRUE HAVE_GTK_FALSE GTK_CFLAGS GTK_LIBS DEP_CFLAGS DEP_LIBS LIBOBJS LTLIBOBJS'
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PIXMAN_VERSION_MAJOR PIXMAN_VERSION_MINOR PIXMAN_VERSION_MICRO LT_VERSION_INFO USE_MMX_TRUE USE_MMX_FALSE USE_SSE_TRUE USE_SSE_FALSE USE_SSE2_TRUE USE_SSE2_FALSE MMX_CFLAGS SSE_CFLAGS PKG_CONFIG ac_pt_PKG_CONFIG GTK_CFLAGS GTK_LIBS HAVE_GTK_TRUE HAVE_GTK_FALSE DEP_CFLAGS DEP_LIBS LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@ -945,6 +945,18 @@ ac_env_FFLAGS_set=${FFLAGS+set}
ac_env_FFLAGS_value=$FFLAGS
ac_cv_env_FFLAGS_set=${FFLAGS+set}
ac_cv_env_FFLAGS_value=$FFLAGS
ac_env_PKG_CONFIG_set=${PKG_CONFIG+set}
ac_env_PKG_CONFIG_value=$PKG_CONFIG
ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set}
ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG
ac_env_GTK_CFLAGS_set=${GTK_CFLAGS+set}
ac_env_GTK_CFLAGS_value=$GTK_CFLAGS
ac_cv_env_GTK_CFLAGS_set=${GTK_CFLAGS+set}
ac_cv_env_GTK_CFLAGS_value=$GTK_CFLAGS
ac_env_GTK_LIBS_set=${GTK_LIBS+set}
ac_env_GTK_LIBS_value=$GTK_LIBS
ac_cv_env_GTK_LIBS_set=${GTK_LIBS+set}
ac_cv_env_GTK_LIBS_value=$GTK_LIBS
#
# Report the --help message.
@ -953,7 +965,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures pixman 0.9.6 to adapt to many kinds of systems.
\`configure' configures pixman 0.10.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1019,7 +1031,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of pixman 0.9.6:";;
short | recursive ) echo "Configuration of pixman 0.10.0:";;
esac
cat <<\_ACEOF
@ -1058,6 +1070,9 @@ Some influential environment variables:
CXXCPP C++ preprocessor
F77 Fortran 77 compiler command
FFLAGS Fortran 77 compiler flags
PKG_CONFIG path to pkg-config utility
GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
GTK_LIBS linker flags for GTK, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@ -1158,7 +1173,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
pixman configure 0.9.6
pixman configure 0.10.0
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@ -1172,7 +1187,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by pixman $as_me 0.9.6, which was
It was created by pixman $as_me 0.10.0, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@ -1770,7 +1785,7 @@ fi
# Define the identity of the package.
PACKAGE='pixman'
VERSION='0.9.6'
VERSION='0.10.0'
cat >>confdefs.h <<_ACEOF
@ -3628,7 +3643,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 3631 "configure"' > conftest.$ac_ext
echo '#line 3646 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@ -5227,7 +5242,7 @@ fi
# Provide some information about the compiler.
echo "$as_me:5230:" \
echo "$as_me:5245:" \
"checking for Fortran 77 compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@ -6290,11 +6305,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6293: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6308: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6297: \$? = $ac_status" >&5
echo "$as_me:6312: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -6558,11 +6573,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6561: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6576: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:6565: \$? = $ac_status" >&5
echo "$as_me:6580: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -6662,11 +6677,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:6665: $lt_compile\"" >&5)
(eval echo "\"\$as_me:6680: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:6669: \$? = $ac_status" >&5
echo "$as_me:6684: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -9011,7 +9026,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 9014 "configure"
#line 9029 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -9111,7 +9126,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 9114 "configure"
#line 9129 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11455,11 +11470,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11458: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11473: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:11462: \$? = $ac_status" >&5
echo "$as_me:11477: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -11559,11 +11574,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:11562: $lt_compile\"" >&5)
(eval echo "\"\$as_me:11577: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:11566: \$? = $ac_status" >&5
echo "$as_me:11581: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -13129,11 +13144,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13132: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13147: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:13136: \$? = $ac_status" >&5
echo "$as_me:13151: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -13233,11 +13248,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:13236: $lt_compile\"" >&5)
(eval echo "\"\$as_me:13251: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:13240: \$? = $ac_status" >&5
echo "$as_me:13255: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -15440,11 +15455,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15443: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15458: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15447: \$? = $ac_status" >&5
echo "$as_me:15462: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -15708,11 +15723,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15711: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15726: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:15715: \$? = $ac_status" >&5
echo "$as_me:15730: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@ -15812,11 +15827,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:15815: $lt_compile\"" >&5)
(eval echo "\"\$as_me:15830: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:15819: \$? = $ac_status" >&5
echo "$as_me:15834: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@ -18826,9 +18841,13 @@ esac
LT_VERSION_INFO="9:6:9"
LT_VERSION_INFO="10:0:10"
PIXMAN_MAJOR=0
PIXMAN_VERSION_MAJOR=0
PIXMAN_VERSION_MINOR=10
PIXMAN_VERSION_MICRO=0
@ -18842,6 +18861,55 @@ if test "x$GCC" = "xyes"; then
*) CFLAGS="$CFLAGS -Wall" ;;
esac fi
have_gcc4=no
echo "$as_me:$LINENO: checking for -fvisibility" >&5
echo $ECHO_N "checking for -fvisibility... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#if defined(__GNUC__) && (__GNUC__ >= 4)
#else
#error Need GCC 4.0 for visibility
#endif
int main () { return 0; }
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
have_gcc4=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
if test "x$have_gcc4" = "xyes"; then
CFLAGS="$CFLAGS -fvisibility=hidden"
fi
echo "$as_me:$LINENO: result: $have_gcc4" >&5
echo "${ECHO_T}$have_gcc4" >&6
MMX_CFLAGS="-mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000"
have_mmx_intrinsics=no
@ -18990,8 +19058,255 @@ fi
#PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no])
HAVE_GTK=no
SSE_CFLAGS="-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000"
have_sse2_intrinsics=no
echo "$as_me:$LINENO: checking whether to use SSE2 intrinsics" >&5
echo $ECHO_N "checking whether to use SSE2 intrinsics... $ECHO_C" >&6
xserver_save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -msse2 $SSE_CFLAGS"
cat >conftest.$ac_ext <<_ACEOF
#include <mmintrin.h>
#include <xmmintrin.h>
int main () {
__m128i a, b, c;
c = _mm_xor_si128 (a, b);
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
have_sse2_intrinsics=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS=$xserver_save_CFLAGS
echo "$as_me:$LINENO: result: $have_sse2_intrinsics" >&5
echo "${ECHO_T}$have_sse2_intrinsics" >&6
if test $have_sse2_intrinsics = yes ; then
cat >>confdefs.h <<\_ACEOF
#define USE_SSE2 1
_ACEOF
fi
if test $have_sse2_intrinsics = yes; then
USE_SSE2_TRUE=
USE_SSE2_FALSE='#'
else
USE_SSE2_TRUE='#'
USE_SSE2_FALSE=
fi
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
;;
esac
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
echo "${ECHO_T}$PKG_CONFIG" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
fi
if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
;;
esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
PKG_CONFIG=$ac_pt_PKG_CONFIG
else
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
PKG_CONFIG=""
fi
fi
pkg_failed=no
echo "$as_me:$LINENO: checking for GTK" >&5
echo $ECHO_N "checking for GTK... $ECHO_C" >&6
if test -n "$PKG_CONFIG"; then
if test -n "$GTK_CFLAGS"; then
pkg_cv_GTK_CFLAGS="$GTK_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
{ (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\"") >&5
($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "gtk+-2.0" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test -n "$PKG_CONFIG"; then
if test -n "$GTK_LIBS"; then
pkg_cv_GTK_LIBS="$GTK_LIBS"
else
if test -n "$PKG_CONFIG" && \
{ (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0\"") >&5
($PKG_CONFIG --exists --print-errors "gtk+-2.0") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "gtk+-2.0" 2>/dev/null`
else
pkg_failed=yes
fi
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0"`
else
GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0"`
fi
# Put the nasty error message in config.log where it belongs
echo "$GTK_PKG_ERRORS" >&5
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
HAVE_GTK=no
elif test $pkg_failed = untried; then
HAVE_GTK=no
else
GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
GTK_LIBS=$pkg_cv_GTK_LIBS
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
HAVE_GTK=yes
fi
if test "x$HAVE_GTK" = xyes; then
@ -19008,7 +19323,7 @@ fi
ac_config_files="$ac_config_files pixman-1.pc Makefile pixman/Makefile test/Makefile"
ac_config_files="$ac_config_files pixman-1.pc Makefile pixman/Makefile pixman/pixman-version.h test/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@ -19135,6 +19450,13 @@ echo "$as_me: error: conditional \"USE_SSE\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
if test -z "${USE_SSE2_TRUE}" && test -z "${USE_SSE2_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"USE_SSE2\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
echo "$as_me: error: conditional \"USE_SSE2\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
if test -z "${HAVE_GTK_TRUE}" && test -z "${HAVE_GTK_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"HAVE_GTK\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@ -19413,7 +19735,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
This file was extended by pixman $as_me 0.9.6, which was
This file was extended by pixman $as_me 0.10.0, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -19476,7 +19798,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
pixman config.status 0.9.6
pixman config.status 0.10.0
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@ -19589,6 +19911,7 @@ do
"pixman-1.pc" ) CONFIG_FILES="$CONFIG_FILES pixman-1.pc" ;;
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"pixman/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixman/Makefile" ;;
"pixman/pixman-version.h" ) CONFIG_FILES="$CONFIG_FILES pixman/pixman-version.h" ;;
"test/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
"depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
@ -19742,17 +20065,24 @@ s,@F77@,$F77,;t t
s,@FFLAGS@,$FFLAGS,;t t
s,@ac_ct_F77@,$ac_ct_F77,;t t
s,@LIBTOOL@,$LIBTOOL,;t t
s,@PIXMAN_MAJOR@,$PIXMAN_MAJOR,;t t
s,@PIXMAN_VERSION_MAJOR@,$PIXMAN_VERSION_MAJOR,;t t
s,@PIXMAN_VERSION_MINOR@,$PIXMAN_VERSION_MINOR,;t t
s,@PIXMAN_VERSION_MICRO@,$PIXMAN_VERSION_MICRO,;t t
s,@LT_VERSION_INFO@,$LT_VERSION_INFO,;t t
s,@USE_MMX_TRUE@,$USE_MMX_TRUE,;t t
s,@USE_MMX_FALSE@,$USE_MMX_FALSE,;t t
s,@USE_SSE_TRUE@,$USE_SSE_TRUE,;t t
s,@USE_SSE_FALSE@,$USE_SSE_FALSE,;t t
s,@USE_SSE2_TRUE@,$USE_SSE2_TRUE,;t t
s,@USE_SSE2_FALSE@,$USE_SSE2_FALSE,;t t
s,@MMX_CFLAGS@,$MMX_CFLAGS,;t t
s,@HAVE_GTK_TRUE@,$HAVE_GTK_TRUE,;t t
s,@HAVE_GTK_FALSE@,$HAVE_GTK_FALSE,;t t
s,@SSE_CFLAGS@,$SSE_CFLAGS,;t t
s,@PKG_CONFIG@,$PKG_CONFIG,;t t
s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
s,@GTK_LIBS@,$GTK_LIBS,;t t
s,@HAVE_GTK_TRUE@,$HAVE_GTK_TRUE,;t t
s,@HAVE_GTK_FALSE@,$HAVE_GTK_FALSE,;t t
s,@DEP_CFLAGS@,$DEP_CFLAGS,;t t
s,@DEP_LIBS@,$DEP_LIBS,;t t
s,@LIBOBJS@,$LIBOBJS,;t t

View File

@ -24,25 +24,40 @@ AC_PREREQ([2.57])
# Pixman versioning scheme
#
# - If the changes don't affect API or ABI, then increment pixman_micro
# - If API is added, then increment PIXMAN_MINOR, and set MICRO to 0
# - The git version must at all times have an odd MICRO version
# number.
#
# - If you break ABI, then
# - In the first development release where you break ABI, find all instances of
# "pixman-n" and change it to pixman-(n+1)
# - If you add API, increment the MICRO version to the next largest
# odd number.
#
# - If you release a version that contains new API, then increment
# MINOR and set MICRO to 0.
#
# - If you release a new version that does not contain new API, then
# increment MICRO to the next even number.
#
# - After doing a release, increment MICRO again to make the version
# number in git odd.
#
# - If you break the ABI, then
#
# - increment MAJOR
#
# - In the first development release where you break ABI, find
# all instances of "pixman-n" and change them to pixman-(n+1)
#
# This needs to be done at least in
# configure.ac
# all Makefile.am's
# pixman-n.pc.in
#
# This ensures that binary incompatible versions can be installed in parallel.
# See http://www106.pair.com/rhp/parallel.html for more information
#
# This ensures that binary incompatible versions can be installed
# in parallel. See http://www106.pair.com/rhp/parallel.html for
# more information
m4_define([pixman_major], 0)
m4_define([pixman_minor], 9)
m4_define([pixman_micro], 6)
m4_define([pixman_minor], 10)
m4_define([pixman_micro], 0)
m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro])
@ -68,8 +83,12 @@ m4_define([lt_age], [pixman_minor])
LT_VERSION_INFO="lt_current:lt_revision:lt_age"
PIXMAN_MAJOR=pixman_major
AC_SUBST(PIXMAN_MAJOR)
PIXMAN_VERSION_MAJOR=pixman_major()
AC_SUBST(PIXMAN_VERSION_MAJOR)
PIXMAN_VERSION_MINOR=pixman_minor()
AC_SUBST(PIXMAN_VERSION_MINOR)
PIXMAN_VERSION_MICRO=pixman_micro()
AC_SUBST(PIXMAN_VERSION_MICRO)
AC_SUBST(LT_VERSION_INFO)
@ -83,6 +102,24 @@ if test "x$GCC" = "xyes"; then
*) CFLAGS="$CFLAGS -Wall" ;;
esac fi changequote([,])dnl
dnl =========================================================================
dnl -fvisibility stuff
have_gcc4=no
AC_MSG_CHECKING(for -fvisibility)
AC_COMPILE_IFELSE([
#if defined(__GNUC__) && (__GNUC__ >= 4)
#else
#error Need GCC 4.0 for visibility
#endif
int main () { return 0; }
], have_gcc4=yes)
if test "x$have_gcc4" = "xyes"; then
CFLAGS="$CFLAGS -fvisibility=hidden"
fi
AC_MSG_RESULT($have_gcc4)
dnl ===========================================================================
dnl Check for MMX
@ -147,11 +184,39 @@ fi
AM_CONDITIONAL(USE_SSE, test $have_sse_intrinsics = yes)
dnl ===========================================================================
dnl Check for SSE2
SSE_CFLAGS="-mmmx -msse2 -Winline --param inline-unit-growth=10000 --param large-function-growth=10000"
have_sse2_intrinsics=no
AC_MSG_CHECKING(whether to use SSE2 intrinsics)
xserver_save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -msse2 $SSE_CFLAGS"
AC_COMPILE_IFELSE([
#include <mmintrin.h>
#include <xmmintrin.h>
int main () {
__m128i a, b, c;
c = _mm_xor_si128 (a, b);
return 0;
}], have_sse2_intrinsics=yes)
CFLAGS=$xserver_save_CFLAGS
AC_MSG_RESULT($have_sse2_intrinsics)
if test $have_sse2_intrinsics = yes ; then
AC_DEFINE(USE_SSE2, 1, [use SSE compiler intrinsics])
fi
AM_CONDITIONAL(USE_SSE2, test $have_sse2_intrinsics = yes)
dnl ========================================================
AC_SUBST(MMX_CFLAGS)
AC_SUBST(SSE_CFLAGS)
#PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no])
HAVE_GTK=no
PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no])
AM_CONDITIONAL(HAVE_GTK, [test "x$HAVE_GTK" = xyes])
AC_SUBST(GTK_CFLAGS)
@ -162,4 +227,5 @@ AC_SUBST(DEP_LIBS)
AC_OUTPUT([pixman-1.pc
Makefile
pixman/Makefile
pixman/pixman-version.h
test/Makefile])

View File

@ -2,27 +2,36 @@ lib_LTLIBRARIES = libpixman-1.la
libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO)
libpixman_1_la_LIBADD = @DEP_LIBS@ -lm
libpixman_1_la_SOURCES = \
pixman.h \
pixman-region.c \
pixman-private.h \
pixman-image.c \
pixman-compose.c \
pixman.h \
pixman-access.c \
pixman-access-accessors.c \
pixman-region.c \
pixman-private.h \
pixman-image.c \
pixman-combine.c \
pixman-compose.c \
pixman-compose-accessors.c \
pixman-pict.c \
pixman-utils.c \
pixman-edge.c \
pixman-pict.c \
pixman-source.c \
pixman-transformed.c \
pixman-transformed-accessors.c \
pixman-utils.c \
pixman-edge.c \
pixman-edge-accessors.c \
pixman-edge-imp.h \
pixman-trap.c \
pixman-compute-region.c \
pixman-edge-imp.h \
pixman-trap.c \
pixman-compute-region.c \
pixman-timer.c
libpixmanincludedir = $(includedir)/pixman-1/
libpixmaninclude_HEADERS = pixman.h
libpixmaninclude_HEADERS = pixman.h pixman-version.h
noinst_LTLIBRARIES =
EXTRA_DIST = Makefile.win32
# mmx code
if USE_MMX
noinst_LTLIBRARIES = libpixman-mmx.la
noinst_LTLIBRARIES += libpixman-mmx.la
libpixman_mmx_la_SOURCES = \
pixman-mmx.c \
pixman-mmx.h
@ -30,3 +39,16 @@ libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS)
libpixman_mmx_la_LIBADD = $(DEP_LIBS)
libpixman_1_la_LIBADD += libpixman-mmx.la
endif
# sse2 code
if USE_SSE2
noinst_LTLIBRARIES += libpixman-sse.la
libpixman_sse_la_SOURCES = \
pixman-sse.c \
pixman-sse.h
libpixman_sse_la_CFLAGS = $(DEP_CFLAGS) $(SSE_CFLAGS)
libpixman_sse_la_LIBADD = $(DEP_LIBS)
libpixman_1_la_LIBADD += libpixman-sse.la
endif

View File

@ -37,17 +37,24 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
# mmx code
@USE_MMX_TRUE@am__append_1 = libpixman-mmx.la
@USE_MMX_TRUE@am__append_2 = libpixman-mmx.la
# sse2 code
@USE_SSE2_TRUE@am__append_3 = libpixman-sse.la
@USE_SSE2_TRUE@am__append_4 = libpixman-sse.la
subdir = pixman
DIST_COMMON = $(libpixmaninclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
$(srcdir)/Makefile.in $(srcdir)/pixman-version.h.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_FILES = pixman-version.h
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@ -59,19 +66,30 @@ am__installdirs = "$(DESTDIR)$(libdir)" \
libLTLIBRARIES_INSTALL = $(INSTALL)
LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
@USE_MMX_TRUE@am__DEPENDENCIES_1 = libpixman-mmx.la
libpixman_1_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am_libpixman_1_la_OBJECTS = pixman-region.lo pixman-image.lo \
pixman-compose.lo pixman-compose-accessors.lo pixman-pict.lo \
@USE_SSE2_TRUE@am__DEPENDENCIES_2 = libpixman-sse.la
libpixman_1_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2)
am_libpixman_1_la_OBJECTS = pixman-access.lo \
pixman-access-accessors.lo pixman-region.lo pixman-image.lo \
pixman-combine.lo pixman-compose.lo \
pixman-compose-accessors.lo pixman-pict.lo pixman-source.lo \
pixman-transformed.lo pixman-transformed-accessors.lo \
pixman-utils.lo pixman-edge.lo pixman-edge-accessors.lo \
pixman-trap.lo pixman-compute-region.lo pixman-timer.lo
libpixman_1_la_OBJECTS = $(am_libpixman_1_la_OBJECTS)
am__DEPENDENCIES_2 =
@USE_MMX_TRUE@libpixman_mmx_la_DEPENDENCIES = $(am__DEPENDENCIES_2)
am__DEPENDENCIES_3 =
@USE_MMX_TRUE@libpixman_mmx_la_DEPENDENCIES = $(am__DEPENDENCIES_3)
am__libpixman_mmx_la_SOURCES_DIST = pixman-mmx.c pixman-mmx.h
@USE_MMX_TRUE@am_libpixman_mmx_la_OBJECTS = \
@USE_MMX_TRUE@ libpixman_mmx_la-pixman-mmx.lo
libpixman_mmx_la_OBJECTS = $(am_libpixman_mmx_la_OBJECTS)
@USE_MMX_TRUE@am_libpixman_mmx_la_rpath =
@USE_SSE2_TRUE@libpixman_sse_la_DEPENDENCIES = $(am__DEPENDENCIES_3)
am__libpixman_sse_la_SOURCES_DIST = pixman-sse.c pixman-sse.h
@USE_SSE2_TRUE@am_libpixman_sse_la_OBJECTS = \
@USE_SSE2_TRUE@ libpixman_sse_la-pixman-sse.lo
libpixman_sse_la_OBJECTS = $(am_libpixman_sse_la_OBJECTS)
@USE_SSE2_TRUE@am_libpixman_sse_la_rpath =
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@ -83,9 +101,11 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libpixman_1_la_SOURCES) $(libpixman_mmx_la_SOURCES)
SOURCES = $(libpixman_1_la_SOURCES) $(libpixman_mmx_la_SOURCES) \
$(libpixman_sse_la_SOURCES)
DIST_SOURCES = $(libpixman_1_la_SOURCES) \
$(am__libpixman_mmx_la_SOURCES_DIST)
$(am__libpixman_mmx_la_SOURCES_DIST) \
$(am__libpixman_sse_la_SOURCES_DIST)
libpixmanincludeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(libpixmaninclude_HEADERS)
ETAGS = etags
@ -147,13 +167,19 @@ PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PIXMAN_MAJOR = @PIXMAN_MAJOR@
PIXMAN_VERSION_MAJOR = @PIXMAN_VERSION_MAJOR@
PIXMAN_VERSION_MICRO = @PIXMAN_VERSION_MICRO@
PIXMAN_VERSION_MINOR = @PIXMAN_VERSION_MINOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSE_CFLAGS = @SSE_CFLAGS@
STRIP = @STRIP@
USE_MMX_FALSE = @USE_MMX_FALSE@
USE_MMX_TRUE = @USE_MMX_TRUE@
USE_SSE2_FALSE = @USE_SSE2_FALSE@
USE_SSE2_TRUE = @USE_SSE2_TRUE@
USE_SSE_FALSE = @USE_SSE_FALSE@
USE_SSE_TRUE = @USE_SSE_TRUE@
VERSION = @VERSION@
@ -163,6 +189,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -202,34 +229,45 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@
lib_LTLIBRARIES = libpixman-1.la
libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO)
libpixman_1_la_LIBADD = @DEP_LIBS@ -lm $(am__append_1)
libpixman_1_la_LIBADD = @DEP_LIBS@ -lm $(am__append_2) $(am__append_4)
libpixman_1_la_SOURCES = \
pixman.h \
pixman-region.c \
pixman-private.h \
pixman-image.c \
pixman-compose.c \
pixman.h \
pixman-access.c \
pixman-access-accessors.c \
pixman-region.c \
pixman-private.h \
pixman-image.c \
pixman-combine.c \
pixman-compose.c \
pixman-compose-accessors.c \
pixman-pict.c \
pixman-utils.c \
pixman-edge.c \
pixman-pict.c \
pixman-source.c \
pixman-transformed.c \
pixman-transformed-accessors.c \
pixman-utils.c \
pixman-edge.c \
pixman-edge-accessors.c \
pixman-edge-imp.h \
pixman-trap.c \
pixman-compute-region.c \
pixman-edge-imp.h \
pixman-trap.c \
pixman-compute-region.c \
pixman-timer.c
libpixmanincludedir = $(includedir)/pixman-1/
libpixmaninclude_HEADERS = pixman.h
# mmx code
@USE_MMX_TRUE@noinst_LTLIBRARIES = libpixman-mmx.la
libpixmaninclude_HEADERS = pixman.h pixman-version.h
noinst_LTLIBRARIES = $(am__append_1) $(am__append_3)
EXTRA_DIST = Makefile.win32
@USE_MMX_TRUE@libpixman_mmx_la_SOURCES = \
@USE_MMX_TRUE@ pixman-mmx.c \
@USE_MMX_TRUE@ pixman-mmx.h
@USE_MMX_TRUE@libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS)
@USE_MMX_TRUE@libpixman_mmx_la_LIBADD = $(DEP_LIBS)
@USE_SSE2_TRUE@libpixman_sse_la_SOURCES = \
@USE_SSE2_TRUE@ pixman-sse.c \
@USE_SSE2_TRUE@ pixman-sse.h
@USE_SSE2_TRUE@libpixman_sse_la_CFLAGS = $(DEP_CFLAGS) $(SSE_CFLAGS)
@USE_SSE2_TRUE@libpixman_sse_la_LIBADD = $(DEP_LIBS)
all: all-am
.SUFFIXES:
@ -263,6 +301,8 @@ $(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
pixman-version.h: $(top_builddir)/config.status $(srcdir)/pixman-version.h.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
@ -303,6 +343,8 @@ libpixman-1.la: $(libpixman_1_la_OBJECTS) $(libpixman_1_la_DEPENDENCIES)
$(LINK) -rpath $(libdir) $(libpixman_1_la_LDFLAGS) $(libpixman_1_la_OBJECTS) $(libpixman_1_la_LIBADD) $(LIBS)
libpixman-mmx.la: $(libpixman_mmx_la_OBJECTS) $(libpixman_mmx_la_DEPENDENCIES)
$(LINK) $(am_libpixman_mmx_la_rpath) $(libpixman_mmx_la_LDFLAGS) $(libpixman_mmx_la_OBJECTS) $(libpixman_mmx_la_LIBADD) $(LIBS)
libpixman-sse.la: $(libpixman_sse_la_OBJECTS) $(libpixman_sse_la_DEPENDENCIES)
$(LINK) $(am_libpixman_sse_la_rpath) $(libpixman_sse_la_LDFLAGS) $(libpixman_sse_la_OBJECTS) $(libpixman_sse_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@ -311,6 +353,10 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixman_mmx_la-pixman-mmx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixman_sse_la-pixman-sse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-access-accessors.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-access.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-combine.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-compose-accessors.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-compose.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-compute-region.Plo@am__quote@
@ -319,7 +365,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-image.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-pict.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-region.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-source.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-timer.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-transformed-accessors.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-transformed.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-trap.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pixman-utils.Plo@am__quote@
@ -351,6 +400,13 @@ libpixman_mmx_la-pixman-mmx.lo: pixman-mmx.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_mmx_la_CFLAGS) $(CFLAGS) -c -o libpixman_mmx_la-pixman-mmx.lo `test -f 'pixman-mmx.c' || echo '$(srcdir)/'`pixman-mmx.c
libpixman_sse_la-pixman-sse.lo: pixman-sse.c
@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_sse_la_CFLAGS) $(CFLAGS) -MT libpixman_sse_la-pixman-sse.lo -MD -MP -MF "$(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo" -c -o libpixman_sse_la-pixman-sse.lo `test -f 'pixman-sse.c' || echo '$(srcdir)/'`pixman-sse.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo" "$(DEPDIR)/libpixman_sse_la-pixman-sse.Plo"; else rm -f "$(DEPDIR)/libpixman_sse_la-pixman-sse.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='pixman-sse.c' object='libpixman_sse_la-pixman-sse.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libpixman_sse_la_CFLAGS) $(CFLAGS) -c -o libpixman_sse_la-pixman-sse.lo `test -f 'pixman-sse.c' || echo '$(srcdir)/'`pixman-sse.c
mostlyclean-libtool:
-rm -f *.lo

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,4 @@
/*
* $Id: pixman-edge-imp.h,v 1.1.1.1 2007/10/03 20:48:59 matthieu Exp $
*
* Copyright © 2004 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@ -35,34 +33,49 @@ rasterizeEdges (pixman_image_t *image,
pixman_fixed_t y = t;
uint32_t *line;
uint32_t *buf = (image)->bits.bits;
int32_t stride = (image)->bits.rowstride;
int32_t width = (image)->bits.width;
int stride = (image)->bits.rowstride;
int width = (image)->bits.width;
line = buf + pixman_fixed_to_int (y) * stride;
for (;;)
{
pixman_fixed_t lx;
pixman_fixed_t rx;
int lxi;
int rxi;
/* clip X */
lx = l->x;
rx = r->x;
#if N_BITS == 1
/* For the non-antialiased case, round the coordinates up, in effect
* sampling the center of the pixel. (The AA case does a similar
* adjustment in RenderSamplesX) */
lx += X_FRAC_FIRST(1);
rx += X_FRAC_FIRST(1);
#endif
/* clip X */
if (lx < 0)
lx = 0;
rx = r->x;
if (pixman_fixed_to_int (rx) >= width)
#if N_BITS == 1
rx = pixman_int_to_fixed (width);
#else
/* Use the last pixel of the scanline, covered 100%.
* We can't use the first pixel following the scanline,
* because accessing it could result in a buffer overrun.
*/
rx = pixman_int_to_fixed (width) - 1;
#endif
/* Skip empty (or backwards) sections */
if (rx > lx)
{
/* Find pixel bounds for span */
lxi = pixman_fixed_to_int (lx);
rxi = pixman_fixed_to_int (rx);
#if N_BITS == 1
{
uint32_t *a = line;
@ -71,30 +84,30 @@ rasterizeEdges (pixman_image_t *image,
int nmiddle;
int width = rxi - lxi;
int x = lxi;
a += x >> FB_SHIFT;
x &= FB_MASK;
FbMaskBits (x, width, startmask, nmiddle, endmask);
if (startmask) {
WRITE(a, READ(a) | startmask);
WRITE(image, a, READ(image, a) | startmask);
a++;
}
while (nmiddle--)
WRITE(a++, FB_ALLONES);
WRITE(image, a++, FB_ALLONES);
if (endmask)
WRITE(a, READ(a) | endmask);
WRITE(image, a, READ(image, a) | endmask);
}
#else
{
DefineAlpha(line,lxi);
int lxs;
int rxs;
/* Sample coverage for edge pixels */
lxs = RenderSamplesX (lx, N_BITS);
rxs = RenderSamplesX (rx, N_BITS);
/* Add coverage across row */
if (lxi == rxi)
{
@ -103,7 +116,7 @@ rasterizeEdges (pixman_image_t *image,
else
{
int xi;
AddAlpha (N_X_FRAC(N_BITS) - lxs);
StepAlpha;
for (xi = lxi + 1; xi < rxi; xi++)
@ -111,20 +124,15 @@ rasterizeEdges (pixman_image_t *image,
AddAlpha (N_X_FRAC(N_BITS));
StepAlpha;
}
/* Do not add in a 0 alpha here. This check is necessary
* to avoid a buffer overrun when rx is exactly on a pixel
* boundary.
*/
if (rxs != 0)
AddAlpha (rxs);
AddAlpha (rxs);
}
}
#endif
}
if (y == b)
break;
#if N_BITS > 1
if (pixman_fixed_frac (y) != Y_FRAC_LAST(N_BITS))
{

View File

@ -1,6 +1,4 @@
/*
* $Id: pixman-edge.c,v 1.1.1.2 2007/12/10 21:10:23 matthieu Exp $
*
* Copyright © 2004 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@ -27,7 +25,7 @@
#endif
#include <string.h>
#include "pixman.h"
#include "pixman-private.h"
#ifdef PIXMAN_FB_ACCESSORS
@ -58,10 +56,10 @@
#define StepAlpha ((__ap += __ao), (__ao ^= 1))
#define AddAlpha(a) { \
uint8_t __o = READ(__ap); \
uint8_t __a = (a) + Get4(__o, __ao); \
WRITE(__ap, Put4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
#define AddAlpha(a) { \
uint8_t __o = READ(image, __ap); \
uint8_t __a = (a) + Get4(__o, __ao); \
WRITE(image, __ap, Put4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
}
#include "pixman-edge-imp.h"
@ -104,7 +102,7 @@ clip255 (int x)
\
while (i__--) \
{ \
WRITE((buf__), clip255 (READ((buf__)) + (val__))); \
WRITE(image, (buf__), clip255 (READ(image, (buf__)) + (val__))); \
(buf__)++; \
} \
} while (0)
@ -131,51 +129,55 @@ fbRasterizeEdges8 (pixman_image_t *image,
uint32_t *line;
int fill_start = -1, fill_end = -1;
int fill_size = 0;
uint32_t *buf = (image)->bits.bits;
int32_t stride = (image)->bits.rowstride;
int32_t width = (image)->bits.width;
uint32_t *buf = (image)->bits.bits;
int stride = (image)->bits.rowstride;
int width = (image)->bits.width;
line = buf + pixman_fixed_to_int (y) * stride;
for (;;)
{
uint8_t *ap = (uint8_t *) line;
pixman_fixed_t lx, rx;
int lxi, rxi;
/* clip X */
lx = l->x;
if (lx < 0)
lx = 0;
rx = r->x;
if (pixman_fixed_to_int (rx) >= width)
rx = pixman_int_to_fixed (width);
/* Use the last pixel of the scanline, covered 100%.
* We can't use the first pixel following the scanline,
* because accessing it could result in a buffer overrun.
*/
rx = pixman_int_to_fixed (width) - 1;
/* Skip empty (or backwards) sections */
if (rx > lx)
{
int lxs, rxs;
/* Find pixel bounds for span. */
lxi = pixman_fixed_to_int (lx);
rxi = pixman_fixed_to_int (rx);
/* Sample coverage for edge pixels */
lxs = RenderSamplesX (lx, 8);
rxs = RenderSamplesX (rx, 8);
/* Add coverage across row */
if (lxi == rxi)
{
WRITE(ap +lxi, clip255 (READ(ap + lxi) + rxs - lxs));
WRITE(image, ap +lxi, clip255 (READ(image, ap + lxi) + rxs - lxs));
}
else
{
WRITE(ap + lxi, clip255 (READ(ap + lxi) + N_X_FRAC(8) - lxs));
WRITE(image, ap + lxi, clip255 (READ(image, ap + lxi) + N_X_FRAC(8) - lxs));
/* Move forward so that lxi/rxi is the pixel span */
lxi++;
/* Don't bother trying to optimize the fill unless
* the span is longer than 4 pixels. */
if (rxi - lxi > 4)
@ -213,7 +215,7 @@ fbRasterizeEdges8 (pixman_image_t *image,
add_saturate_8 (ap + lxi, N_X_FRAC(8),
fill_start - lxi);
}
/* Update fill_end */
if (rxi < fill_end)
{
@ -236,21 +238,17 @@ fbRasterizeEdges8 (pixman_image_t *image,
{
add_saturate_8 (ap + lxi, N_X_FRAC(8), rxi - lxi);
}
/* Do not add in a 0 alpha here. This check is
* necessary to avoid a buffer overrun, (when rx
* is exactly on a pixel boundary). */
if (rxs)
WRITE(ap + rxi, clip255 (READ(ap + rxi) + rxs));
WRITE(image, ap + rxi, clip255 (READ(image, ap + rxi) + rxs));
}
}
if (y == b) {
/* We're done, make sure we clean up any remaining fill. */
if (fill_start != fill_end) {
if (fill_size == N_Y_FRAC(8))
{
MEMSET_WRAPPED (ap + fill_start, 0xff, fill_end - fill_start);
MEMSET_WRAPPED (image, ap + fill_start, 0xff, fill_end - fill_start);
}
else
{
@ -260,7 +258,7 @@ fbRasterizeEdges8 (pixman_image_t *image,
}
break;
}
if (pixman_fixed_frac (y) != Y_FRAC_LAST(8))
{
RenderEdgeStepSmall (l);
@ -276,7 +274,7 @@ fbRasterizeEdges8 (pixman_image_t *image,
{
if (fill_size == N_Y_FRAC(8))
{
MEMSET_WRAPPED (ap + fill_start, 0xff, fill_end - fill_start);
MEMSET_WRAPPED (image, ap + fill_start, 0xff, fill_end - fill_start);
}
else
{

View File

@ -28,7 +28,6 @@
#include <stdio.h>
#include <string.h>
#include "pixman.h"
#include "pixman-private.h"
static void
@ -51,7 +50,7 @@ init_gradient (gradient_t *gradient,
return FALSE;
memcpy (gradient->stops, stops, n_stops * sizeof (pixman_gradient_stop_t));
gradient->n_stops = n_stops;
gradient->stop_range = 0xffff;
@ -75,7 +74,7 @@ static pixman_image_t *
allocate_image (void)
{
pixman_image_t *image = malloc (sizeof (pixman_image_t));
if (image)
{
image_common_t *common = &image->common;
@ -134,7 +133,7 @@ pixman_image_unref (pixman_image_t *image)
if (image->type == BITS && image->bits.indexed)
free (image->bits.indexed);
#endif
#if 0
memset (image, 0xaa, sizeof (pixman_image_t));
#endif
@ -144,10 +143,10 @@ pixman_image_unref (pixman_image_t *image)
free (image->gradient.stops);
}
if (image->type == BITS && image->bits.free_me)
free (image->bits.free_me);
free (image);
return TRUE;
@ -163,9 +162,9 @@ pixman_image_create_solid_fill (pixman_color_t *color)
pixman_image_t *img = allocate_image();
if (!img)
return NULL;
init_source_image (&img->solid.common);
img->type = SOLID;
img->solid.color = color_to_uint32 (color);
@ -182,14 +181,14 @@ pixman_image_create_linear_gradient (pixman_point_fixed_t *p1,
linear_gradient_t *linear;
return_val_if_fail (n_stops >= 2, NULL);
image = allocate_image();
if (!image)
return NULL;
linear = &image->linear;
if (!init_gradient (&linear->common, stops, n_stops))
{
free (image);
@ -217,7 +216,7 @@ pixman_image_create_radial_gradient (pixman_point_fixed_t *inner,
radial_gradient_t *radial;
return_val_if_fail (n_stops >= 2, NULL);
image = allocate_image();
if (!image)
@ -232,7 +231,7 @@ pixman_image_create_radial_gradient (pixman_point_fixed_t *inner,
}
image->type = RADIAL;
radial->c1.x = inner->x;
radial->c1.y = inner->y;
radial->c1.radius = inner_radius;
@ -245,7 +244,7 @@ pixman_image_create_radial_gradient (pixman_point_fixed_t *inner,
radial->A = (radial->cdx * radial->cdx
+ radial->cdy * radial->cdy
- radial->dr * radial->dr);
return image;
}
@ -262,7 +261,7 @@ pixman_image_create_conical_gradient (pixman_point_fixed_t *center,
return NULL;
conical = &image->conical;
if (!init_gradient (&conical->common, stops, n_stops))
{
free (image);
@ -323,11 +322,11 @@ static void
reset_clip_region (pixman_image_t *image)
{
pixman_region_fini (&image->common.clip_region);
if (image->type == BITS)
{
pixman_region_init_rect (&image->common.clip_region, 0, 0,
image->bits.width, image->bits.height);
image->bits.width, image->bits.height);
}
else
{
@ -345,10 +344,10 @@ pixman_image_create_bits (pixman_format_code_t format,
pixman_image_t *image;
uint32_t *free_me = NULL;
/* must be a whole number of uint32_t's
/* must be a whole number of uint32_t's
*/
return_val_if_fail (bits == NULL ||
(rowstride_bytes % sizeof (uint32_t)) == 0, NULL);
(rowstride_bytes % sizeof (uint32_t)) == 0, NULL);
if (!bits && width && height)
{
@ -356,7 +355,7 @@ pixman_image_create_bits (pixman_format_code_t format,
if (!bits)
return NULL;
}
image = allocate_image();
if (!image) {
@ -371,8 +370,8 @@ pixman_image_create_bits (pixman_format_code_t format,
image->bits.height = height;
image->bits.bits = bits;
image->bits.free_me = free_me;
image->bits.rowstride = rowstride_bytes / sizeof (uint32_t); /* we store it in number
image->bits.rowstride = rowstride_bytes / (int) sizeof (uint32_t); /* we store it in number
* of uint32_t's
*/
image->bits.indexed = NULL;
@ -398,7 +397,7 @@ pixman_image_set_clip_region (pixman_image_t *image,
else
{
reset_clip_region (image);
return TRUE;
}
}
@ -423,7 +422,7 @@ pixman_image_set_transform (pixman_image_t *image,
{ 0, 0, pixman_fixed_1 }
}
};
image_common_t *common = (image_common_t *)image;
if (common->transform == transform)
@ -435,7 +434,7 @@ pixman_image_set_transform (pixman_image_t *image,
common->transform = NULL;
return TRUE;
}
if (common->transform == NULL)
common->transform = malloc (sizeof (pixman_transform_t));
if (common->transform == NULL)
@ -453,7 +452,7 @@ pixman_image_set_repeat (pixman_image_t *image,
image->common.repeat = repeat;
}
pixman_bool_t
pixman_bool_t
pixman_image_set_filter (pixman_image_t *image,
pixman_filter_t filter,
const pixman_fixed_t *params,
@ -477,7 +476,7 @@ pixman_image_set_filter (pixman_image_t *image,
}
common->filter = filter;
if (common->filter_params)
free (common->filter_params);
@ -518,7 +517,7 @@ pixman_image_set_alpha_map (pixman_image_t *image,
int16_t y)
{
image_common_t *common = (image_common_t *)image;
return_if_fail (!alpha_map || alpha_map->type == BITS);
if (common->alpha_map != (bits_image_t *)alpha_map)
@ -586,7 +585,7 @@ int
pixman_image_get_stride (pixman_image_t *image)
{
if (image->type == BITS)
return image->bits.rowstride * sizeof (uint32_t);
return image->bits.rowstride * (int) sizeof (uint32_t);
return 0;
}
@ -617,7 +616,7 @@ color_to_pixel (pixman_color_t *color,
{
return FALSE;
}
if (PIXMAN_FORMAT_TYPE (format) == PIXMAN_TYPE_ABGR)
{
c = ((c & 0xff000000) >> 0) |
@ -636,7 +635,7 @@ color_to_pixel (pixman_color_t *color,
printf ("color: %x %x %x %x\n", color->alpha, color->red, color->green, color->blue);
printf ("pixel: %x\n", c);
#endif
*pixel = c;
return TRUE;
}
@ -651,7 +650,7 @@ pixman_image_fill_rectangles (pixman_op_t op,
pixman_image_t *solid;
pixman_color_t c;
int i;
if (color->alpha == 0xffff)
{
if (op == PIXMAN_OP_OVER)
@ -666,14 +665,14 @@ pixman_image_fill_rectangles (pixman_op_t op,
c.alpha = 0;
color = &c;
op = PIXMAN_OP_SRC;
}
if (op == PIXMAN_OP_SRC)
{
uint32_t pixel;
if (color_to_pixel (color, &pixel, dest->bits.format))
{
for (i = 0; i < n_rects; ++i)
@ -681,7 +680,7 @@ pixman_image_fill_rectangles (pixman_op_t op,
pixman_region16_t fill_region;
int n_boxes, j;
pixman_box16_t *boxes;
pixman_region_init_rect (&fill_region, rects[i].x, rects[i].y, rects[i].width, rects[i].height);
pixman_region_intersect (&fill_region, &fill_region, &dest->common.clip_region);
@ -699,7 +698,7 @@ pixman_image_fill_rectangles (pixman_op_t op,
return TRUE;
}
}
solid = pixman_image_create_solid_fill (color);
if (!solid)
return FALSE;
@ -707,13 +706,13 @@ pixman_image_fill_rectangles (pixman_op_t op,
for (i = 0; i < n_rects; ++i)
{
const pixman_rectangle16_t *rect = &(rects[i]);
pixman_image_composite (op, solid, NULL, dest,
0, 0, 0, 0,
rect->x, rect->y,
rect->width, rect->height);
}
pixman_image_unref (solid);
return TRUE;

File diff suppressed because it is too large Load Diff

View File

@ -26,6 +26,9 @@
*
* Based on work by Owen Taylor
*/
#ifndef _PIXMAN_MMX_H_
#define _PIXMAN_MMX_H_
#ifdef HAVE_DIX_CONFIG_H
#include <dix-config.h>
#endif
@ -313,3 +316,5 @@ fbCompositeOver_x888x8x8888mmx (pixman_op_t op,
uint16_t height);
#endif /* USE_MMX */
#endif /* _PIXMAN_MMX_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -27,6 +27,7 @@
# define BITMAP_BIT_ORDER LSBFirst
#endif
#undef DEBUG
#define DEBUG 0
#if defined (__GNUC__)
@ -39,16 +40,25 @@
#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_MIN
# define UINT32_MIN (0)
#endif
#ifndef UINT32_MAX
# define UINT32_MAX (4294967295U)
#endif
@ -65,7 +75,7 @@
#define FB_HALFUNIT (1 << (FB_SHIFT-1))
#define FB_MASK (FB_UNIT - 1)
#define FB_ALLONES ((uint32_t) -1)
/* Memory allocation helpers */
void *pixman_malloc_ab (unsigned int n, unsigned int b);
void *pixman_malloc_abc (unsigned int a, unsigned int b, unsigned int c);
@ -136,6 +146,12 @@ typedef struct point point_t;
typedef FASTCALL void (*CombineMaskU) (uint32_t *src, const uint32_t *mask, int width);
typedef FASTCALL void (*CombineFuncU) (uint32_t *dest, const uint32_t *src, int width);
typedef FASTCALL void (*CombineFuncC) (uint32_t *dest, uint32_t *src, uint32_t *mask, int width);
typedef FASTCALL void (*fetchProc)(bits_image_t *pict, int x, int y, int width,
uint32_t *buffer);
typedef FASTCALL uint32_t (*fetchPixelProc)(bits_image_t *pict, int offset, int line);
typedef FASTCALL void (*storeProc)(pixman_image_t *, uint32_t *bits,
const uint32_t *values, int x, int width,
const pixman_indexed_t *);
typedef struct _FbComposeData {
uint8_t op;
@ -165,6 +181,32 @@ void pixman_composite_rect_general_accessors (const FbComposeData *data,
void pixman_composite_rect_general (const FbComposeData *data,
uint32_t *scanline_buffer);
fetchProc pixman_fetchProcForPicture (bits_image_t *);
fetchPixelProc pixman_fetchPixelProcForPicture (bits_image_t *);
storeProc pixman_storeProcForPicture (bits_image_t *);
fetchProc pixman_fetchProcForPicture_accessors (bits_image_t *);
fetchPixelProc pixman_fetchPixelProcForPicture_accessors (bits_image_t *);
storeProc pixman_storeProcForPicture_accessors (bits_image_t *);
void pixmanFetchSourcePict(source_image_t *, int x, int y, int width,
uint32_t *buffer, uint32_t *mask, uint32_t maskBits);
void fbFetchTransformed(bits_image_t *, int x, int y, int width,
uint32_t *buffer, uint32_t *mask, uint32_t maskBits);
void fbStoreExternalAlpha(bits_image_t *, int x, int y, int width,
uint32_t *buffer);
void fbFetchExternalAlpha(bits_image_t *, int x, int y, int width,
uint32_t *buffer, uint32_t *mask, uint32_t maskBits);
void fbFetchTransformed_accessors(bits_image_t *, int x, int y, int width,
uint32_t *buffer, uint32_t *mask,
uint32_t maskBits);
void fbStoreExternalAlpha_accessors(bits_image_t *, int x, int y, int width,
uint32_t *buffer);
void fbFetchExternalAlpha_accessors(bits_image_t *, int x, int y, int width,
uint32_t *buffer, uint32_t *mask,
uint32_t maskBits);
/* end */
typedef enum
@ -221,7 +263,7 @@ struct solid_fill
source_image_t common;
uint32_t color; /* FIXME: shouldn't this be a pixman_color_t? */
};
struct gradient
{
source_image_t common;
@ -263,7 +305,7 @@ struct conical_gradient
gradient_t common;
pixman_point_fixed_t center;
pixman_fixed_t angle;
};
};
struct bits_image
{
@ -289,6 +331,11 @@ union pixman_image
solid_fill_t solid;
};
extern CombineFuncU pixman_fbCombineFuncU[];
extern CombineFuncC pixman_fbCombineFuncC[];
FASTCALL void pixman_fbCombineMaskU (uint32_t *src, const uint32_t *mask, int width);
#define LOG2_BITMAP_PAD 5
#define FB_STIP_SHIFT LOG2_BITMAP_PAD
#define FB_STIP_UNIT (1 << FB_STIP_SHIFT)
@ -331,23 +378,23 @@ union pixman_image
}
#if IMAGE_BYTE_ORDER == MSBFirst
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
((READ(a) << 16) | READ((uint16_t *) ((a)+1))) : \
((READ((uint16_t *) (a)) << 8) | READ((a)+2)))
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
(WRITE(a, (uint8_t) ((v) >> 16)), \
WRITE((uint16_t *) ((a)+1), (uint16_t) (v))) : \
(WRITE((uint16_t *) (a), (uint16_t) ((v) >> 8)), \
WRITE((a)+2, (uint8_t) (v))))
#define Fetch24(img, a) ((unsigned long) (a) & 1 ? \
((READ(img, a) << 16) | READ(img, (uint16_t *) ((a)+1))) : \
((READ(img, (uint16_t *) (a)) << 8) | READ(img, (a)+2)))
#define Store24(img,a,v) ((unsigned long) (a) & 1 ? \
(WRITE(img, a, (uint8_t) ((v) >> 16)), \
WRITE(img, (uint16_t *) ((a)+1), (uint16_t) (v))) : \
(WRITE(img, (uint16_t *) (a), (uint16_t) ((v) >> 8)), \
WRITE(img, (a)+2, (uint8_t) (v))))
#else
#define Fetch24(a) ((unsigned long) (a) & 1 ? \
(READ(a) | (READ((uint16_t *) ((a)+1)) << 8)) : \
(READ((uint16_t *) (a)) | (READ((a)+2) << 16)))
#define Store24(a,v) ((unsigned long) (a) & 1 ? \
(WRITE(a, (uint8_t) (v)), \
WRITE((uint16_t *) ((a)+1), (uint16_t) ((v) >> 8))) : \
(WRITE((uint16_t *) (a), (uint16_t) (v)), \
WRITE((a)+2, (uint8_t) ((v) >> 16))))
#define Fetch24(img,a) ((unsigned long) (a) & 1 ? \
(READ(img, a) | (READ(img, (uint16_t *) ((a)+1)) << 8)) : \
(READ(img, (uint16_t *) (a)) | (READ(img, (a)+2) << 16)))
#define Store24(img,a,v) ((unsigned long) (a) & 1 ? \
(WRITE(img, a, (uint8_t) (v)), \
WRITE(img, (uint16_t *) ((a)+1), (uint16_t) ((v) >> 8))) : \
(WRITE(img, (uint16_t *) (a), (uint16_t) (v)), \
WRITE(img, (a)+2, (uint8_t) ((v) >> 16))))
#endif
#define Alpha(x) ((x) >> 24)
@ -590,6 +637,8 @@ union pixman_image
#define DIV(a,b) ((((a) < 0) == ((b) < 0)) ? (a) / (b) : \
((a) - (b) + 1 - (((b) < 0) << 1)) / (b))
#define CLIP(a,b,c) ((a) < (b) ? (b) : ((a) > (c) ? (c) : (a)))
#if 0
/* FIXME: the MOD macro above is equivalent, but faster I think */
#define mod(a,b) ((b) == 1 ? 0 : (a) >= 0 ? (a) % (b) : (b) - (-a) % (b))
@ -636,43 +685,38 @@ union pixman_image
#ifdef PIXMAN_FB_ACCESSORS
#define READ(ptr) \
(image->common.read_func ((ptr), sizeof(*(ptr))))
#define WRITE(ptr,val) \
(image->common.write_func ((ptr), (val), sizeof (*(ptr))))
#define READ(img, ptr) \
((img)->common.read_func ((ptr), sizeof(*(ptr))))
#define WRITE(img, ptr,val) \
((img)->common.write_func ((ptr), (val), sizeof (*(ptr))))
#define MEMCPY_WRAPPED(dst, src, size) \
#define MEMCPY_WRAPPED(img, dst, src, size) \
do { \
size_t _i; \
uint8_t *_dst = (uint8_t*)(dst), *_src = (uint8_t*)(src); \
for(_i = 0; _i < size; _i++) { \
WRITE(_dst +_i, READ(_src + _i)); \
WRITE((img), _dst +_i, READ((img), _src + _i)); \
} \
} while (0)
#define MEMSET_WRAPPED(dst, val, size) \
#define MEMSET_WRAPPED(img, dst, val, size) \
do { \
size_t _i; \
uint8_t *_dst = (uint8_t*)(dst); \
for(_i = 0; _i < (size_t) size; _i++) { \
WRITE(_dst +_i, (val)); \
for(_i = 0; _i < (size_t) size; _i++) { \
WRITE((img), _dst +_i, (val)); \
} \
} while (0)
/* FIXME */
#define fbPrepareAccess(x)
#define fbFinishAccess(x)
#else
#define READ(ptr) (*(ptr))
#define WRITE(ptr, val) (*(ptr) = (val))
#define MEMCPY_WRAPPED(dst, src, size) \
#define READ(img, ptr) (*(ptr))
#define WRITE(img, ptr, val) (*(ptr) = (val))
#define MEMCPY_WRAPPED(img, dst, src, size) \
memcpy(dst, src, size)
#define MEMSET_WRAPPED(dst, val, size) \
#define MEMSET_WRAPPED(img, dst, val, size) \
memset(dst, val, size)
#define fbPrepareAccess(x)
#define fbFinishAccess(x)
#endif
#define fbComposeGetSolid(img, res, fmt) \
@ -692,21 +736,21 @@ union pixman_image
switch (PIXMAN_FORMAT_BPP((img)->bits.format)) \
{ \
case 32: \
(res) = READ((uint32_t *)bits__); \
(res) = READ(img, (uint32_t *)bits__); \
break; \
case 24: \
(res) = Fetch24 ((uint8_t *) bits__); \
(res) = Fetch24(img, (uint8_t *) bits__); \
break; \
case 16: \
(res) = READ((uint16_t *) bits__); \
(res) = READ(img, (uint16_t *) bits__); \
(res) = cvt0565to0888(res); \
break; \
case 8: \
(res) = READ((uint8_t *) bits__); \
(res) = READ(img, (uint8_t *) bits__); \
(res) = (res) << 24; \
break; \
case 1: \
(res) = READ((uint32_t *) bits__); \
(res) = READ(img, (uint32_t *) bits__); \
(res) = FbLeftStipBits((res),1) ? 0xff000000 : 0x00000000; \
break; \
default: \
@ -736,7 +780,7 @@ union pixman_image
__bits__ = pict->bits.bits; \
__stride__ = pict->bits.rowstride; \
__bpp__ = PIXMAN_FORMAT_BPP(pict->bits.format); \
(out_stride) = __stride__ * sizeof (uint32_t) / sizeof (type); \
(out_stride) = __stride__ * (int) sizeof (uint32_t) / (int) sizeof (type); \
(line) = ((type *) __bits__) + \
(out_stride) * (y) + (mul) * (x); \
} while (0)
@ -748,7 +792,7 @@ union pixman_image
#define MAX_ALPHA(n) ((1 << (n)) - 1)
#define N_Y_FRAC(n) ((n) == 1 ? 1 : (1 << ((n)/2)) - 1)
#define N_X_FRAC(n) ((1 << ((n)/2)) + 1)
#define N_X_FRAC(n) ((n) == 1 ? 1 : (1 << ((n)/2)) + 1)
#define STEP_Y_SMALL(n) (pixman_fixed_1 / N_Y_FRAC(n))
#define STEP_Y_BIG(n) (pixman_fixed_1 - (N_Y_FRAC(n) - 1) * STEP_Y_SMALL(n))
@ -838,7 +882,7 @@ void pixman_timer_register (PixmanTimer *timer);
\
timer##tname.n_times++; \
begin##tname = OIL_STAMP();
#define TIMER_END(tname) \
timer##tname.total += OIL_STAMP() - begin##tname; \
}

View File

@ -55,7 +55,6 @@ SOFTWARE.
#include <stdio.h>
#include "pixman-private.h"
#include "pixman.h"
typedef struct pixman_region16_point {
int x, y;

View File

@ -1,6 +1,4 @@
/*
* $Id: pixman-trap.c,v 1.1.1.2 2007/12/10 21:10:22 matthieu Exp $
*
* Copyright © 2004 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
@ -51,7 +49,7 @@ pixman_add_traps (pixman_image_t * image,
height = image->bits.height;
bpp = PIXMAN_FORMAT_BPP (image->bits.format);
x_off_fixed = pixman_int_to_fixed(y_off);
x_off_fixed = pixman_int_to_fixed(x_off);
y_off_fixed = pixman_int_to_fixed(y_off);
while (ntrap--)
@ -85,8 +83,6 @@ pixman_add_traps (pixman_image_t * image,
}
traps++;
}
fbFinishAccess (pPicture->pDrawable);
}
static void

View File

@ -15,7 +15,7 @@
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
* BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Keith Packard, SuSE, Inc.
@ -26,7 +26,7 @@
#endif
#include <stdlib.h>
#include "pixman.h"
#include "pixman-private.h"
#include "pixman-mmx.h"
@ -54,10 +54,10 @@ pixman_transform_point_3d (pixman_transform_t *transform,
result.vector[j] = (pixman_fixed_48_16_t) v;
}
if (!result.vector[2])
return FALSE;
*vector = result;
return TRUE;
}
@ -93,7 +93,7 @@ pixman_fill8 (uint32_t *bits,
int height,
uint32_t xor)
{
int byte_stride = stride * sizeof (uint32_t);
int byte_stride = stride * (int) sizeof (uint32_t);
uint8_t *dst = (uint8_t *) bits;
uint8_t v = xor & 0xff;
int i;
@ -118,7 +118,7 @@ pixman_fill16 (uint32_t *bits,
int height,
uint32_t xor)
{
int short_stride = (stride * sizeof (uint32_t)) / sizeof (uint16_t);
int short_stride = (stride * (int) sizeof (uint32_t)) / (int) sizeof (uint16_t);
uint16_t *dst = (uint16_t *)bits;
uint16_t v = xor & 0xffff;
int i;
@ -144,9 +144,9 @@ pixman_fill32 (uint32_t *bits,
uint32_t xor)
{
int i;
bits = bits + y * stride + x;
while (height--)
{
for (i = 0; i < width; ++i)
@ -170,7 +170,7 @@ pixman_fill (uint32_t *bits,
printf ("filling: %d %d %d %d (stride: %d, bpp: %d) pixel: %x\n",
x, y, width, height, stride, bpp, xor);
#endif
#ifdef USE_MMX
if (!pixman_have_mmx() || !pixman_fill_mmx (bits, stride, bpp, x, y, width, height, xor))
#endif
@ -180,11 +180,11 @@ pixman_fill (uint32_t *bits,
case 8:
pixman_fill8 (bits, stride, x, y, width, height, xor);
break;
case 16:
pixman_fill16 (bits, stride, x, y, width, height, xor);
break;
case 32:
pixman_fill32 (bits, stride, x, y, width, height, xor);
break;
@ -194,10 +194,10 @@ pixman_fill (uint32_t *bits,
break;
}
}
return TRUE;
}
/*
* Compute the smallest value no less than y which is on a
@ -209,7 +209,7 @@ pixman_sample_ceil_y (pixman_fixed_t y, int n)
{
pixman_fixed_t f = pixman_fixed_frac(y);
pixman_fixed_t i = pixman_fixed_floor(y);
f = ((f + Y_FRAC_FIRST(n)) / STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n);
if (f > Y_FRAC_LAST(n))
{
@ -230,7 +230,7 @@ pixman_sample_floor_y (pixman_fixed_t y, int n)
{
pixman_fixed_t f = pixman_fixed_frac(y);
pixman_fixed_t i = pixman_fixed_floor (y);
f = _div(f - Y_FRAC_FIRST(n), STEP_Y_SMALL(n)) * STEP_Y_SMALL(n) + Y_FRAC_FIRST(n);
if (f < Y_FRAC_FIRST(n))
{
@ -249,9 +249,9 @@ pixman_edge_step (pixman_edge_t *e, int n)
pixman_fixed_48_16_t ne;
e->x += n * e->stepx;
ne = e->e + n * (pixman_fixed_48_16_t) e->dx;
if (n >= 0)
{
if (ne > 0)
@ -281,7 +281,7 @@ _pixman_edge_tMultiInit (pixman_edge_t *e, int n, pixman_fixed_t *stepx_p, pixma
{
pixman_fixed_t stepx;
pixman_fixed_48_16_t ne;
ne = n * (pixman_fixed_48_16_t) e->dx;
stepx = n * e->stepx;
if (ne > 0)
@ -331,7 +331,7 @@ pixman_edge_init (pixman_edge_t *e,
e->dx = -dx % dy;
e->e = 0;
}
_pixman_edge_tMultiInit (e, STEP_Y_SMALL(n), &e->stepx_small, &e->dx_small);
_pixman_edge_tMultiInit (e, STEP_Y_BIG(n), &e->stepx_big, &e->dx_big);
}
@ -407,3 +407,183 @@ pixman_malloc_abc (unsigned int a,
else
return malloc (a * b * c);
}
/**
* pixman_version:
*
* Returns the version of the pixman library encoded in a single
* integer as per %PIXMAN_VERSION_ENCODE. The encoding ensures that
* later versions compare greater than earlier versions.
*
* A run-time comparison to check that pixman's version is greater than
* or equal to version X.Y.Z could be performed as follows:
*
* <informalexample><programlisting>
* if (pixman_version() >= PIXMAN_VERSION_ENCODE(X,Y,Z)) {...}
* </programlisting></informalexample>
*
* See also pixman_version_string() as well as the compile-time
* equivalents %PIXMAN_VERSION and %PIXMAN_VERSION_STRING.
*
* Return value: the encoded version.
**/
int
pixman_version (void)
{
return PIXMAN_VERSION;
}
/**
* pixman_version_string:
*
* Returns the version of the pixman library as a human-readable string
* of the form "X.Y.Z".
*
* See also pixman_version() as well as the compile-time equivalents
* %PIXMAN_VERSION_STRING and %PIXMAN_VERSION.
*
* Return value: a string containing the version.
**/
const char*
pixman_version_string (void)
{
return PIXMAN_VERSION_STRING;
}
/**
* pixman_format_supported_destination:
* @format: A pixman_format_code_t format
*
* Return value: whether the provided format code is a supported
* format for a pixman surface used as a destination in
* rendering.
*
* Currently, all pixman_format_code_t values are supported
* except for the YUV formats.
**/
pixman_bool_t
pixman_format_supported_destination (pixman_format_code_t format)
{
switch (format) {
/* 32 bpp formats */
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
case PIXMAN_r8g8b8:
case PIXMAN_b8g8r8:
case PIXMAN_r5g6b5:
case PIXMAN_b5g6r5:
/* 16 bpp formats */
case PIXMAN_a1r5g5b5:
case PIXMAN_x1r5g5b5:
case PIXMAN_a1b5g5r5:
case PIXMAN_x1b5g5r5:
case PIXMAN_a4r4g4b4:
case PIXMAN_x4r4g4b4:
case PIXMAN_a4b4g4r4:
case PIXMAN_x4b4g4r4:
/* 8bpp formats */
case PIXMAN_a8:
case PIXMAN_r3g3b2:
case PIXMAN_b2g3r3:
case PIXMAN_a2r2g2b2:
case PIXMAN_a2b2g2r2:
case PIXMAN_c8:
case PIXMAN_g8:
case PIXMAN_x4a4:
/* Collides with PIXMAN_c8
case PIXMAN_x4c4:
*/
/* Collides with PIXMAN_g8
case PIXMAN_x4g4:
*/
/* 4bpp formats */
case PIXMAN_a4:
case PIXMAN_r1g2b1:
case PIXMAN_b1g2r1:
case PIXMAN_a1r1g1b1:
case PIXMAN_a1b1g1r1:
case PIXMAN_c4:
case PIXMAN_g4:
/* 1bpp formats */
case PIXMAN_a1:
case PIXMAN_g1:
return TRUE;
/* YUV formats */
case PIXMAN_yuy2:
case PIXMAN_yv12:
default:
return FALSE;
}
}
/**
* pixman_format_supported_source:
* @format: A pixman_format_code_t format
*
* Return value: whether the provided format code is a supported
* format for a pixman surface used as a source in
* rendering.
*
* Currently, all pixman_format_code_t values are supported.
**/
pixman_bool_t
pixman_format_supported_source (pixman_format_code_t format)
{
switch (format) {
/* 32 bpp formats */
case PIXMAN_a8r8g8b8:
case PIXMAN_x8r8g8b8:
case PIXMAN_a8b8g8r8:
case PIXMAN_x8b8g8r8:
case PIXMAN_r8g8b8:
case PIXMAN_b8g8r8:
case PIXMAN_r5g6b5:
case PIXMAN_b5g6r5:
/* 16 bpp formats */
case PIXMAN_a1r5g5b5:
case PIXMAN_x1r5g5b5:
case PIXMAN_a1b5g5r5:
case PIXMAN_x1b5g5r5:
case PIXMAN_a4r4g4b4:
case PIXMAN_x4r4g4b4:
case PIXMAN_a4b4g4r4:
case PIXMAN_x4b4g4r4:
/* 8bpp formats */
case PIXMAN_a8:
case PIXMAN_r3g3b2:
case PIXMAN_b2g3r3:
case PIXMAN_a2r2g2b2:
case PIXMAN_a2b2g2r2:
case PIXMAN_c8:
case PIXMAN_g8:
case PIXMAN_x4a4:
/* Collides with PIXMAN_c8
case PIXMAN_x4c4:
*/
/* Collides with PIXMAN_g8
case PIXMAN_x4g4:
*/
/* 4bpp formats */
case PIXMAN_a4:
case PIXMAN_r1g2b1:
case PIXMAN_b1g2r1:
case PIXMAN_a1r1g1b1:
case PIXMAN_a1b1g1r1:
case PIXMAN_c4:
case PIXMAN_g4:
/* 1bpp formats */
case PIXMAN_a1:
case PIXMAN_g1:
/* YUV formats */
case PIXMAN_yuy2:
case PIXMAN_yv12:
return TRUE;
default:
return FALSE;
}
}

View File

@ -69,6 +69,8 @@ SOFTWARE.
#ifndef PIXMAN_H__
#define PIXMAN_H__
#include <pixman-version.h>
/*
* Standard integers
*/
@ -90,6 +92,13 @@ typedef unsigned __int64 uint64_t;
# include <stdint.h>
#endif
/* GCC visibility */
#if defined(__GNUC__) && __GNUC__ >= 4
#define PIXMAN_EXPORT __attribute__ ((visibility("default")))
#else
#define PIXMAN_EXPORT
#endif
/*
* Boolean
*/
@ -158,6 +167,7 @@ struct pixman_transform
pixman_fixed_t matrix[3][3];
};
PIXMAN_EXPORT
pixman_bool_t pixman_transform_point_3d (pixman_transform_t *transform,
pixman_vector_t *vector);
@ -221,7 +231,9 @@ typedef enum
PIXMAN_OP_CONJOINT_OUT_REVERSE = 0x28,
PIXMAN_OP_CONJOINT_ATOP = 0x29,
PIXMAN_OP_CONJOINT_ATOP_REVERSE = 0x2a,
PIXMAN_OP_CONJOINT_XOR = 0x2b
PIXMAN_OP_CONJOINT_XOR = 0x2b,
PIXMAN_OP_NONE
} pixman_op_t;
/*
@ -262,65 +274,94 @@ typedef enum
PIXMAN_REGION_PART
} pixman_region_overlap_t;
PIXMAN_EXPORT
int pixman_version (void);
PIXMAN_EXPORT
const char* pixman_version_string (void);
/* This function exists only to make it possible to preserve the X ABI - it should
* go away at first opportunity.
*/
PIXMAN_EXPORT
void pixman_region_set_static_pointers (pixman_box16_t *empty_box,
pixman_region16_data_t *empty_data,
pixman_region16_data_t *broken_data);
/* creation/destruction */
PIXMAN_EXPORT
void pixman_region_init (pixman_region16_t *region);
PIXMAN_EXPORT
void pixman_region_init_rect (pixman_region16_t *region,
int x,
int y,
unsigned int width,
unsigned int height);
PIXMAN_EXPORT
void pixman_region_init_with_extents (pixman_region16_t *region,
pixman_box16_t *extents);
PIXMAN_EXPORT
void pixman_region_fini (pixman_region16_t *region);
/* manipulation */
PIXMAN_EXPORT
void pixman_region_translate (pixman_region16_t *region,
int x,
int y);
PIXMAN_EXPORT
pixman_bool_t pixman_region_copy (pixman_region16_t *dest,
pixman_region16_t *source);
PIXMAN_EXPORT
pixman_bool_t pixman_region_intersect (pixman_region16_t *newReg,
pixman_region16_t *reg1,
pixman_region16_t *reg2);
PIXMAN_EXPORT
pixman_bool_t pixman_region_union (pixman_region16_t *newReg,
pixman_region16_t *reg1,
pixman_region16_t *reg2);
PIXMAN_EXPORT
pixman_bool_t pixman_region_union_rect (pixman_region16_t *dest,
pixman_region16_t *source,
int x,
int y,
unsigned int width,
unsigned int height);
PIXMAN_EXPORT
pixman_bool_t pixman_region_subtract (pixman_region16_t *regD,
pixman_region16_t *regM,
pixman_region16_t *regS);
PIXMAN_EXPORT
pixman_bool_t pixman_region_inverse (pixman_region16_t *newReg,
pixman_region16_t *reg1,
pixman_box16_t *invRect);
PIXMAN_EXPORT
pixman_bool_t pixman_region_contains_point (pixman_region16_t *region,
int x, int y, pixman_box16_t *box);
PIXMAN_EXPORT
pixman_region_overlap_t pixman_region_contains_rectangle (pixman_region16_t *pixman_region16_t,
pixman_box16_t *prect);
PIXMAN_EXPORT
pixman_bool_t pixman_region_not_empty (pixman_region16_t *region);
PIXMAN_EXPORT
pixman_box16_t * pixman_region_extents (pixman_region16_t *region);
PIXMAN_EXPORT
int pixman_region_n_rects (pixman_region16_t *region);
PIXMAN_EXPORT
pixman_box16_t * pixman_region_rectangles (pixman_region16_t *region,
int *n_rects);
PIXMAN_EXPORT
pixman_bool_t pixman_region_equal (pixman_region16_t *region1,
pixman_region16_t *region2);
PIXMAN_EXPORT
pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region);
PIXMAN_EXPORT
void pixman_region_reset (pixman_region16_t *region, pixman_box16_t *box);
PIXMAN_EXPORT
pixman_bool_t pixman_region_init_rects (pixman_region16_t *region,
pixman_box16_t *boxes, int count);
/* Copy / Fill */
PIXMAN_EXPORT
pixman_bool_t pixman_blt (uint32_t *src_bits,
uint32_t *dst_bits,
int src_stride,
@ -330,6 +371,7 @@ pixman_bool_t pixman_blt (uint32_t *src_bits,
int src_x, int src_y,
int dst_x, int dst_y,
int width, int height);
PIXMAN_EXPORT
pixman_bool_t pixman_fill (uint32_t *bits,
int stride,
int bpp,
@ -337,7 +379,7 @@ pixman_bool_t pixman_fill (uint32_t *bits,
int y,
int width,
int height,
uint32_t xor);
uint32_t _xor);
/*
* Images
*/
@ -397,6 +439,8 @@ struct pixman_indexed
#define PIXMAN_TYPE_ABGR 3
#define PIXMAN_TYPE_COLOR 4
#define PIXMAN_TYPE_GRAY 5
#define PIXMAN_TYPE_YUY2 6
#define PIXMAN_TYPE_YV12 7
#define PIXMAN_FORMAT_COLOR(f) (PIXMAN_FORMAT_TYPE(f) & 2)
@ -452,25 +496,41 @@ typedef enum {
/* 1bpp formats */
PIXMAN_a1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_A,1,0,0,0),
PIXMAN_g1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0)
PIXMAN_g1 = PIXMAN_FORMAT(1,PIXMAN_TYPE_GRAY,0,0,0,0),
/* YUV formats */
PIXMAN_yuy2 = PIXMAN_FORMAT(16,PIXMAN_TYPE_YUY2,0,0,0,0),
PIXMAN_yv12 = PIXMAN_FORMAT(12,PIXMAN_TYPE_YV12,0,0,0,0),
} pixman_format_code_t;
/* Querying supported format values. */
PIXMAN_EXPORT
pixman_bool_t pixman_format_supported_destination (pixman_format_code_t format);
PIXMAN_EXPORT
pixman_bool_t pixman_format_supported_source (pixman_format_code_t format);
/* Constructors */
PIXMAN_EXPORT
pixman_image_t *pixman_image_create_solid_fill (pixman_color_t *color);
PIXMAN_EXPORT
pixman_image_t *pixman_image_create_linear_gradient (pixman_point_fixed_t *p1,
pixman_point_fixed_t *p2,
const pixman_gradient_stop_t *stops,
int n_stops);
PIXMAN_EXPORT
pixman_image_t *pixman_image_create_radial_gradient (pixman_point_fixed_t *inner,
pixman_point_fixed_t *outer,
pixman_fixed_t inner_radius,
pixman_fixed_t outer_radius,
const pixman_gradient_stop_t *stops,
int n_stops);
PIXMAN_EXPORT
pixman_image_t *pixman_image_create_conical_gradient (pixman_point_fixed_t *center,
pixman_fixed_t angle,
const pixman_gradient_stop_t *stops,
int n_stops);
PIXMAN_EXPORT
pixman_image_t *pixman_image_create_bits (pixman_format_code_t format,
int width,
int height,
@ -478,44 +538,63 @@ pixman_image_t *pixman_image_create_bits (pixman_format_code_t
int rowstride_bytes);
/* Destructor */
PIXMAN_EXPORT
pixman_image_t *pixman_image_ref (pixman_image_t *image);
PIXMAN_EXPORT
pixman_bool_t pixman_image_unref (pixman_image_t *image);
/* Set properties */
PIXMAN_EXPORT
pixman_bool_t pixman_image_set_clip_region (pixman_image_t *image,
pixman_region16_t *region);
PIXMAN_EXPORT
void pixman_image_set_has_client_clip (pixman_image_t *image,
pixman_bool_t clien_clip);
PIXMAN_EXPORT
pixman_bool_t pixman_image_set_transform (pixman_image_t *image,
const pixman_transform_t *transform);
PIXMAN_EXPORT
void pixman_image_set_repeat (pixman_image_t *image,
pixman_repeat_t repeat);
PIXMAN_EXPORT
pixman_bool_t pixman_image_set_filter (pixman_image_t *image,
pixman_filter_t filter,
const pixman_fixed_t *filter_params,
int n_filter_params);
PIXMAN_EXPORT
void pixman_image_set_filter_params (pixman_image_t *image,
pixman_fixed_t *params,
int n_params);
PIXMAN_EXPORT
void pixman_image_set_source_clipping (pixman_image_t *image,
pixman_bool_t source_clipping);
PIXMAN_EXPORT
void pixman_image_set_alpha_map (pixman_image_t *image,
pixman_image_t *alpha_map,
int16_t x,
int16_t y);
PIXMAN_EXPORT
void pixman_image_set_component_alpha (pixman_image_t *image,
pixman_bool_t component_alpha);
PIXMAN_EXPORT
void pixman_image_set_accessors (pixman_image_t *image,
pixman_read_memory_func_t read_func,
pixman_write_memory_func_t write_func);
PIXMAN_EXPORT
void pixman_image_set_indexed (pixman_image_t *image,
const pixman_indexed_t *indexed);
PIXMAN_EXPORT
uint32_t *pixman_image_get_data (pixman_image_t *image);
PIXMAN_EXPORT
int pixman_image_get_width (pixman_image_t *image);
PIXMAN_EXPORT
int pixman_image_get_height (pixman_image_t *image);
PIXMAN_EXPORT
int pixman_image_get_stride (pixman_image_t *image);
PIXMAN_EXPORT
int pixman_image_get_depth (pixman_image_t *image);
PIXMAN_EXPORT
pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op,
pixman_image_t *image,
pixman_color_t *color,
@ -523,6 +602,7 @@ pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op,
const pixman_rectangle16_t *rects);
/* Composite */
PIXMAN_EXPORT
pixman_bool_t pixman_compute_composite_region (pixman_region16_t * pRegion,
pixman_image_t * pSrc,
pixman_image_t * pMask,
@ -535,6 +615,7 @@ pixman_bool_t pixman_compute_composite_region (pixman_region16_t * pRegion,
int16_t yDst,
uint16_t width,
uint16_t height);
PIXMAN_EXPORT
void pixman_image_composite (pixman_op_t op,
pixman_image_t *src,
pixman_image_t *mask,
@ -599,12 +680,16 @@ struct pixman_trap
pixman_span_fix_t top, bot;
};
PIXMAN_EXPORT
pixman_fixed_t pixman_sample_ceil_y (pixman_fixed_t y,
int bpp);
PIXMAN_EXPORT
pixman_fixed_t pixman_sample_floor_y (pixman_fixed_t y,
int bpp);
PIXMAN_EXPORT
void pixman_edge_step (pixman_edge_t *e,
int n);
PIXMAN_EXPORT
void pixman_edge_init (pixman_edge_t *e,
int bpp,
pixman_fixed_t y_start,
@ -612,31 +697,35 @@ void pixman_edge_init (pixman_edge_t *e,
pixman_fixed_t y_top,
pixman_fixed_t x_bot,
pixman_fixed_t y_bot);
PIXMAN_EXPORT
void pixman_line_fixed_edge_init (pixman_edge_t *e,
int bpp,
pixman_fixed_t y,
const pixman_line_fixed_t *line,
int x_off,
int y_off);
PIXMAN_EXPORT
void pixman_rasterize_edges (pixman_image_t *image,
pixman_edge_t *l,
pixman_edge_t *r,
pixman_fixed_t t,
pixman_fixed_t b);
PIXMAN_EXPORT
void pixman_add_traps (pixman_image_t *image,
int16_t x_off,
int16_t y_off,
int ntrap,
pixman_trap_t *traps);
PIXMAN_EXPORT
void pixman_add_trapezoids (pixman_image_t *image,
int16_t x_off,
int y_off,
int ntraps,
const pixman_trapezoid_t *traps);
PIXMAN_EXPORT
void pixman_rasterize_trapezoid (pixman_image_t *image,
const pixman_trapezoid_t *trap,
int x_off,
int y_off);
#endif /* PIXMAN_H__ */

View File

@ -1,7 +1,8 @@
if HAVE_GTK
TESTPROGRAMS = \
composite-test \
gradient-test
gradient-test \
fetch-test
noinst_PROGRAMS = $(TESTPROGRAMS)
@ -9,5 +10,6 @@ INCLUDES = -I$(top_srcdir)/pixman $(GTK_CFLAGS)
composite_test_LDADD = $(top_builddir)/pixman/libpixman-1.la $(GTK_LIBS)
gradient_test_LDADD = $(top_builddir)/pixman/libpixman-1.la $(GTK_LIBS)
fetch_test_LDADD = $(top_builddir)/pixman/libpixman-1.la
endif
endif

View File

@ -47,7 +47,7 @@ mkinstalldirs = $(SHELL) $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@HAVE_GTK_TRUE@am__EXEEXT_1 = composite-test$(EXEEXT) \
@HAVE_GTK_TRUE@ gradient-test$(EXEEXT)
@HAVE_GTK_TRUE@ gradient-test$(EXEEXT) fetch-test$(EXEEXT)
PROGRAMS = $(noinst_PROGRAMS)
composite_test_SOURCES = composite-test.c
composite_test_OBJECTS = composite-test.$(OBJEXT)
@ -55,6 +55,10 @@ am__DEPENDENCIES_1 =
@HAVE_GTK_TRUE@composite_test_DEPENDENCIES = \
@HAVE_GTK_TRUE@ $(top_builddir)/pixman/libpixman-1.la \
@HAVE_GTK_TRUE@ $(am__DEPENDENCIES_1)
fetch_test_SOURCES = fetch-test.c
fetch_test_OBJECTS = fetch-test.$(OBJEXT)
@HAVE_GTK_TRUE@fetch_test_DEPENDENCIES = \
@HAVE_GTK_TRUE@ $(top_builddir)/pixman/libpixman-1.la
gradient_test_SOURCES = gradient-test.c
gradient_test_OBJECTS = gradient-test.$(OBJEXT)
@HAVE_GTK_TRUE@gradient_test_DEPENDENCIES = \
@ -71,8 +75,8 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = composite-test.c gradient-test.c
DIST_SOURCES = composite-test.c gradient-test.c
SOURCES = composite-test.c fetch-test.c gradient-test.c
DIST_SOURCES = composite-test.c fetch-test.c gradient-test.c
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -132,13 +136,19 @@ PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PIXMAN_MAJOR = @PIXMAN_MAJOR@
PIXMAN_VERSION_MAJOR = @PIXMAN_VERSION_MAJOR@
PIXMAN_VERSION_MICRO = @PIXMAN_VERSION_MICRO@
PIXMAN_VERSION_MINOR = @PIXMAN_VERSION_MINOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SSE_CFLAGS = @SSE_CFLAGS@
STRIP = @STRIP@
USE_MMX_FALSE = @USE_MMX_FALSE@
USE_MMX_TRUE = @USE_MMX_TRUE@
USE_SSE2_FALSE = @USE_SSE2_FALSE@
USE_SSE2_TRUE = @USE_SSE2_TRUE@
USE_SSE_FALSE = @USE_SSE_FALSE@
USE_SSE_TRUE = @USE_SSE_TRUE@
VERSION = @VERSION@
@ -148,6 +158,7 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -187,11 +198,13 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@
@HAVE_GTK_TRUE@TESTPROGRAMS = \
@HAVE_GTK_TRUE@ composite-test \
@HAVE_GTK_TRUE@ gradient-test
@HAVE_GTK_TRUE@ gradient-test \
@HAVE_GTK_TRUE@ fetch-test
@HAVE_GTK_TRUE@INCLUDES = -I$(top_srcdir)/pixman $(GTK_CFLAGS)
@HAVE_GTK_TRUE@composite_test_LDADD = $(top_builddir)/pixman/libpixman-1.la $(GTK_LIBS)
@HAVE_GTK_TRUE@gradient_test_LDADD = $(top_builddir)/pixman/libpixman-1.la $(GTK_LIBS)
@HAVE_GTK_TRUE@fetch_test_LDADD = $(top_builddir)/pixman/libpixman-1.la
all: all-am
.SUFFIXES:
@ -235,6 +248,9 @@ clean-noinstPROGRAMS:
composite-test$(EXEEXT): $(composite_test_OBJECTS) $(composite_test_DEPENDENCIES)
@rm -f composite-test$(EXEEXT)
$(LINK) $(composite_test_LDFLAGS) $(composite_test_OBJECTS) $(composite_test_LDADD) $(LIBS)
fetch-test$(EXEEXT): $(fetch_test_OBJECTS) $(fetch_test_DEPENDENCIES)
@rm -f fetch-test$(EXEEXT)
$(LINK) $(fetch_test_LDFLAGS) $(fetch_test_OBJECTS) $(fetch_test_LDADD) $(LIBS)
gradient-test$(EXEEXT): $(gradient_test_OBJECTS) $(gradient_test_DEPENDENCIES)
@rm -f gradient-test$(EXEEXT)
$(LINK) $(gradient_test_LDFLAGS) $(gradient_test_OBJECTS) $(gradient_test_LDADD) $(LIBS)
@ -246,6 +262,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/composite-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fetch-test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gradient-test.Po@am__quote@
.c.o: