diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 0db2883..82aeb98 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -19,7 +19,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.7.1 -Release: 11%{dist} +Release: 12%{dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -83,6 +83,7 @@ Patch6052: xserver-1.7.1-libcrypto.patch Patch6053: xserver-1.7.1-sigaction.patch Patch6054: xserver-1.7.1-stat-sanity.patch Patch6055: xserver-1.7.1-window-picture-performance-regression.patch +Patch6066: xserver-1.7.1-glx14-swrast.patch %define moduledir %{_libdir}/xorg/modules %define drimoduledir %{_libdir}/dri @@ -510,6 +511,9 @@ rm -rf $RPM_BUILD_ROOT %{xserver_source_dir} %changelog +* Tue Nov 24 2009 Adam Jackson 1.7.1-12 +- xserver-1.7.1-glx14-swrast.patch: Enable GLX 1.4 for software GLX. + * Tue Nov 24 2009 Adam Jackson 1.7.1-11 - xserver-1.7.1-window-picture-performance-regression.patch: Paper over a performance regression caused by the window picture fixes. diff --git a/xserver-1.7.1-glx14-swrast.patch b/xserver-1.7.1-glx14-swrast.patch new file mode 100644 index 0000000..2c51802 --- /dev/null +++ b/xserver-1.7.1-glx14-swrast.patch @@ -0,0 +1,26 @@ +From 25a0107768c9f25e8edc5e423ca8b1d0813f2d04 Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 24 Nov 2009 13:38:46 -0500 +Subject: [PATCH] Enable GLX 1.4 for swrast + +--- + glx/glxdriswrast.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c +index 44f658f..20f9f90 100644 +--- a/glx/glxdriswrast.c ++++ b/glx/glxdriswrast.c +@@ -510,6 +510,9 @@ __glXDRIscreenProbe(ScreenPtr pScreen) + + __glXScreenInit(&screen->base, pScreen); + ++ screen->base.GLXmajor = 1; ++ screen->base.GLXminor = 4; ++ + LogMessage(X_INFO, + "AIGLX: Loaded and initialized %s\n", filename); + +-- +1.6.5.2 + diff --git a/xserver-1.7.1-window-picture-performance-regression.patch b/xserver-1.7.1-window-picture-performance-regression.patch new file mode 100644 index 0000000..bb50ccd --- /dev/null +++ b/xserver-1.7.1-window-picture-performance-regression.patch @@ -0,0 +1,57 @@ +From 8940385270d2752e03117fa6c24adafff7586422 Mon Sep 17 00:00:00 2001 +From: Aaron Plattner +Date: Tue, 24 Nov 2009 11:08:42 -0500 +Subject: [PATCH] Patch over performance regression in KDE + +--- + fb/fbpict.c | 27 ++++++++++++++++++++++++++- + 1 files changed, 26 insertions(+), 1 deletions(-) + +diff --git a/fb/fbpict.c b/fb/fbpict.c +index 5c96427..5799e37 100644 +--- a/fb/fbpict.c ++++ b/fb/fbpict.c +@@ -317,6 +317,27 @@ destroy_drawable (pixman_image_t *image, void *data) + pScreen->DestroyPixmap ((PixmapPtr)pDrawable); + } + ++/* ++ * Returns TRUE when the specified window is fully contained within its bounding ++ * pixmap. ++ */ ++static Bool ++window_is_fully_contained(WindowPtr pWin) ++{ ++ PixmapPtr pBoundingPix = (*pWin->drawable.pScreen->GetWindowPixmap)(pWin); ++ int x = pWin->drawable.x, y = pWin->drawable.y; ++ ++#ifdef COMPOSITE ++ /* Translate from screen coordinates to pixmap coordinates */ ++ x -= pBoundingPix->screen_x; ++ y -= pBoundingPix->screen_y; ++#endif ++ ++ return x >= 0 && y >= 0 && ++ x + pWin->drawable.width <= pBoundingPix->drawable.width && ++ y + pWin->drawable.height <= pBoundingPix->drawable.height; ++} ++ + static pixman_image_t * + create_bits_picture (PicturePtr pict, + Bool has_clip, +@@ -328,7 +349,11 @@ create_bits_picture (PicturePtr pict, + pixman_image_t *image; + DrawablePtr drawable; + +- if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW) ++ /* Copy the source window if part of it lies outside its bounding pixmap to ++ * avoid reading outside that pixmap's bounds, since Pixman doesn't clip the ++ * source image per pixel */ ++ if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW && ++ !window_is_fully_contained((WindowPtr)pict->pDrawable)) + drawable = copy_drawable (pict->pDrawable); + else + drawable = pict->pDrawable; +-- +1.6.5.2 +