[packages/xorg-xserver-server] - rel 4; drop pixman cache patch; was most likely causing font corruption on binary nvidia
arekm
arekm at pld-linux.org
Tue Nov 13 09:48:51 CET 2012
commit b499a880d8148bf4b41e50717ad983c523aa6251
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Tue Nov 13 09:48:48 2012 +0100
- rel 4; drop pixman cache patch; was most likely causing font corruption on binary nvidia
pixman-cache.patch | 269 -----------------------------------------------
xorg-xserver-server.spec | 6 +-
2 files changed, 3 insertions(+), 272 deletions(-)
---
diff --git a/xorg-xserver-server.spec b/xorg-xserver-server.spec
index 240d732..6607f48 100644
--- a/xorg-xserver-server.spec
+++ b/xorg-xserver-server.spec
@@ -24,7 +24,7 @@ Summary: X.org server
Summary(pl.UTF-8): Serwer X.org
Name: xorg-xserver-server
Version: 1.13.0
-Release: 3
+Release: 4
License: MIT
Group: X11/Servers
Source0: http://xorg.freedesktop.org/releases/individual/xserver/xorg-server-%{version}.tar.bz2
@@ -35,7 +35,7 @@ Source10: %{name}-Xvfb.init
Source11: %{name}-Xvfb.sysconfig
Patch0: %{name}-xwrapper.patch
Patch1: %{name}-pic-libxf86config.patch
-Patch2: pixman-cache.patch
+
Patch3: %{name}-less-acpi-brokenness.patch
Patch4: %{name}-builtin-SHA1.patch
Patch5: %{name}-export-GetMaster.patch
@@ -358,7 +358,7 @@ Biblioteka rozszerzenia GLX dla serwera X.org.
%setup -q -n xorg-server-%{version}
%patch0 -p0
%patch1 -p1
-%patch2 -p1
+
%patch3 -p1
%patch4 -p1
%patch5 -p1
diff --git a/pixman-cache.patch b/pixman-cache.patch
deleted file mode 100644
index 2ec672b..0000000
--- a/pixman-cache.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366
-Author: Søren Sandmann Pedersen <ssp at redhat.com>
-Date: Wed May 30 05:19:08 2012 -0400
-
- Use new pixman_glyph_cache_t API that will be in pixman 0.28.0
-
- This new API allows glyphs to be cached in a data structure in pixman,
- and entire glyph strings to be composited in one go.
-
- Also bump pixman dependency to 0.27.2.
-
- Results from the cairo peformance test suite running against Xvfb with
- a screen size of 1680x1050 at 32bpp:
-
- Speedups
- ========
- xlib firefox-talos-gfx 12416.63 -> 3603.93 3.45x speedup
- ██▌
- xlib xfce4-terminal-a1 1727.57 -> 1048.85: 1.65x speedup
- ▋
- xlib evolution 1370.49 -> 869.34: 1.58x speedup
- ▋
- xlib gnome-terminal-vim 1832.83 -> 1251.94: 1.46x speedup
- ▌
- xlib poppler 1519.70 -> 1204.05: 1.26x speedup
- ▎
- xlib firefox-planet-gnome 6982.55 -> 5598.16: 1.25x speedup
- ▎
- xlib ocitysmap 1142.77 -> 1071.53: 1.07x speedup
- ▏
-
- No slowdowns were reported.
-
- Results of x11perf -aa10text:
-
- Before:
-
- 8000000 reps @ 0.0007 msec (1450000.0/sec)
- 8000000 reps @ 0.0007 msec (1460000.0/sec)
- 8000000 reps @ 0.0007 msec (1460000.0/sec)
- 8000000 reps @ 0.0007 msec (1470000.0/sec)
- 8000000 reps @ 0.0007 msec (1480000.0/sec)
- 40000000 trep @ 0.0007 msec (1460000.0/sec)
-
- After:
-
- 32000000 reps @ 0.0002 msec (4910000.0/sec)
- 32000000 reps @ 0.0002 msec (4830000.0/sec)
- 32000000 reps @ 0.0002 msec (4890000.0/sec)
- 32000000 reps @ 0.0002 msec (4830000.0/sec)
- 32000000 reps @ 0.0002 msec (4900000.0/sec)
- 160000000 trep @ 0.0002 msec (4870000.0/sec)
-
- Version 2: Destroy the glyph cache at server regen time
-
- Acked-by: Aaron Plattner <aplattner at nvidia.com>
- Reviewed-by: Keith Packard <keithp at keithp.com>
- Signed-off-by: Soren Sandmann <ssp at redhat.com>
-
-diff --git a/configure.ac b/configure.ac
-index e686614..b6ed92c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -811,7 +811,7 @@ LIBPCIACCESS="pciaccess >= 0.12.901"
- LIBUDEV="libudev >= 143"
- LIBSELINUX="libselinux >= 2.0.86"
- LIBDBUS="dbus-1 >= 1.0"
--LIBPIXMAN="pixman-1 >= 0.21.8"
-+LIBPIXMAN="pixman-1 >= 0.27.2"
-
- dnl Pixman is always required, but we separate it out so we can link
- dnl specific modules against it
-diff --git a/fb/fb.h b/fb/fb.h
-index 75596c5..b869d12 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -1344,6 +1344,9 @@ extern _X_EXPORT void
- extern _X_EXPORT Bool
- fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
-
-+extern _X_EXPORT void
-+fbDestroyGlyphCache(void);
-+
- /*
- * fbpixmap.c
- */
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 097a1a6..2804ff4 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -70,6 +70,156 @@ fbComposite(CARD8 op,
- free_pixman_pict(pDst, dest);
- }
-
-+static pixman_glyph_cache_t *glyphCache;
-+
-+void
-+fbDestroyGlyphCache(void)
-+{
-+ if (glyphCache)
-+ {
-+ pixman_glyph_cache_destroy (glyphCache);
-+ glyphCache = NULL;
-+ }
-+}
-+
-+static void
-+fbUnrealizeGlyph(ScreenPtr pScreen,
-+ GlyphPtr pGlyph)
-+{
-+ if (glyphCache)
-+ pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
-+}
-+
-+static void
-+fbGlyphs(CARD8 op,
-+ PicturePtr pSrc,
-+ PicturePtr pDst,
-+ PictFormatPtr maskFormat,
-+ INT16 xSrc,
-+ INT16 ySrc, int nlist,
-+ GlyphListPtr list,
-+ GlyphPtr *glyphs)
-+{
-+#define N_STACK_GLYPHS 512
-+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
-+ pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
-+ pixman_glyph_t *pglyphs = stack_glyphs;
-+ pixman_image_t *srcImage, *dstImage;
-+ int srcXoff, srcYoff, dstXoff, dstYoff;
-+ GlyphPtr glyph;
-+ int n_glyphs;
-+ int x, y;
-+ int i, n;
-+ int xDst = list->xOff, yDst = list->yOff;
-+
-+ miCompositeSourceValidate(pSrc);
-+
-+ n_glyphs = 0;
-+ for (i = 0; i < nlist; ++i)
-+ n_glyphs += list[i].len;
-+
-+ if (!glyphCache)
-+ glyphCache = pixman_glyph_cache_create();
-+
-+ pixman_glyph_cache_freeze (glyphCache);
-+
-+ if (n_glyphs > N_STACK_GLYPHS) {
-+ if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
-+ goto out;
-+ }
-+
-+ i = 0;
-+ x = y = 0;
-+ while (nlist--) {
-+ x += list->xOff;
-+ y += list->yOff;
-+ n = list->len;
-+ while (n--) {
-+ const void *g;
-+
-+ glyph = *glyphs++;
-+
-+ if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
-+ pixman_image_t *glyphImage;
-+ PicturePtr pPicture;
-+ int xoff, yoff;
-+
-+ pPicture = GetGlyphPicture(glyph, pScreen);
-+ if (!pPicture) {
-+ n_glyphs--;
-+ goto next;
-+ }
-+
-+ if (!(glyphImage = image_from_pict(pPicture, FALSE, &xoff, &yoff)))
-+ goto out;
-+
-+ g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
-+ glyph->info.x,
-+ glyph->info.y,
-+ glyphImage);
-+
-+ free_pixman_pict(pPicture, glyphImage);
-+
-+ if (!g)
-+ goto out;
-+ }
-+
-+ pglyphs[i].x = x;
-+ pglyphs[i].y = y;
-+ pglyphs[i].glyph = g;
-+ i++;
-+
-+ next:
-+ x += glyph->info.xOff;
-+ y += glyph->info.yOff;
-+ }
-+ list++;
-+ }
-+
-+ if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
-+ goto out;
-+
-+ if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
-+ goto out_free_src;
-+
-+ if (maskFormat) {
-+ pixman_format_code_t format;
-+ pixman_box32_t extents;
-+ int x, y;
-+
-+ format = maskFormat->format | (maskFormat->depth << 24);
-+
-+ pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents);
-+
-+ x = extents.x1;
-+ y = extents.y1;
-+
-+ pixman_composite_glyphs(op, srcImage, dstImage, format,
-+ xSrc + srcXoff + xDst, ySrc + srcYoff + yDst,
-+ x, y,
-+ x + dstXoff, y + dstYoff,
-+ extents.x2 - extents.x1,
-+ extents.y2 - extents.y1,
-+ glyphCache, n_glyphs, pglyphs);
-+ }
-+ else {
-+ pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
-+ xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
-+ dstXoff, dstYoff,
-+ glyphCache, n_glyphs, pglyphs);
-+ }
-+
-+ free_pixman_pict(pDst, dstImage);
-+
-+out_free_src:
-+ free_pixman_pict(pSrc, srcImage);
-+
-+out:
-+ pixman_glyph_cache_thaw(glyphCache);
-+ if (pglyphs != stack_glyphs)
-+ free(pglyphs);
-+}
-+
- static pixman_image_t *
- create_solid_fill_image(PicturePtr pict)
- {
-@@ -357,7 +507,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- return FALSE;
- ps = GetPictureScreen(pScreen);
- ps->Composite = fbComposite;
-- ps->Glyphs = miGlyphs;
-+ ps->Glyphs = fbGlyphs;
-+ ps->UnrealizeGlyph = fbUnrealizeGlyph;
- ps->CompositeRects = miCompositeRects;
- ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
- ps->Trapezoids = fbTrapezoids;
-diff --git a/fb/fbscreen.c b/fb/fbscreen.c
-index 7c7d656..f9080a4 100644
---- a/fb/fbscreen.c
-+++ b/fb/fbscreen.c
-@@ -32,6 +32,7 @@ fbCloseScreen(ScreenPtr pScreen)
- int d;
- DepthPtr depths = pScreen->allowedDepths;
-
-+ fbDestroyGlyphCache();
- for (d = 0; d < pScreen->numDepths; d++)
- free(depths[d].vids);
- free(depths);
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/xorg-xserver-server.git/commitdiff/b499a880d8148bf4b41e50717ad983c523aa6251
More information about the pld-cvs-commit
mailing list