diff --git a/SOURCES/0001-worst-hack-of-all-time-to-qxl-driver.patch b/SOURCES/0001-worst-hack-of-all-time-to-qxl-driver.patch new file mode 100644 index 0000000..153cdbb --- /dev/null +++ b/SOURCES/0001-worst-hack-of-all-time-to-qxl-driver.patch @@ -0,0 +1,60 @@ +From a22cf06968d0bbeea4784fa3bf69628a9cbf1397 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Tue, 26 Nov 2013 10:45:26 +1000 +Subject: [PATCH] worst hack of all time to qxl driver + +--- + src/qxl_surface.c | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/src/qxl_surface.c b/src/qxl_surface.c +index 1075eae..561b416 100644 +--- a/src/qxl_surface.c ++++ b/src/qxl_surface.c +@@ -759,8 +759,9 @@ qxl_surface_composite (qxl_surface_t *dest, + qxl->bo_funcs->bo_decref(qxl, derefs[i]); + } + +-Bool +-qxl_surface_put_image (qxl_surface_t *dest, ++ ++static Bool ++qxl_surface_put_image_for_reals (qxl_surface_t *dest, + int x, int y, int width, int height, + const char *src, int src_pitch) + { +@@ -803,6 +804,31 @@ qxl_surface_put_image (qxl_surface_t *dest, + return TRUE; + } + ++#define HACK_THE_PLANET 1 ++Bool ++qxl_surface_put_image (qxl_surface_t *dest, ++ int x, int y, int width, int height, ++ const char *src, int src_pitch) ++{ ++#ifdef HACK_THE_PLANET ++ Bool use_hack = FALSE; ++ ++ /* worst heuristic ever - should really block the gnome-shell issue for now */ ++ if (width == pixman_image_get_width(dest->host_image) && height < pixman_image_get_height(dest->host_image)) ++ use_hack = TRUE; ++ ++ if (use_hack) { ++ int gross = rand() % height; ++ int h2 = height - gross; ++ if (gross > 0) ++ qxl_surface_put_image_for_reals(dest, x, y, width, gross, src, src_pitch); ++ qxl_surface_put_image_for_reals(dest, x, y + gross, width, h2, src + (gross * src_pitch), src_pitch); ++ return TRUE; ++ } else ++#endif ++ return qxl_surface_put_image_for_reals(dest, x, y, width, height, src, src_pitch); ++} ++ + void + qxl_get_formats (int bpp, SpiceSurfaceFmt *format, pixman_format_code_t *pformat) + { +-- +1.8.4.2 + diff --git a/SOURCES/disable-surfaces.patch b/SOURCES/disable-surfaces.patch new file mode 100644 index 0000000..78152cb --- /dev/null +++ b/SOURCES/disable-surfaces.patch @@ -0,0 +1,12 @@ +diff -up xf86-video-qxl-0.1.1/src/qxl_driver.c~ xf86-video-qxl-0.1.1/src/qxl_driver.c +--- xf86-video-qxl-0.1.1/src/qxl_driver.c~ 2014-03-11 03:38:00.595359221 -0400 ++++ xf86-video-qxl-0.1.1/src/qxl_driver.c 2014-03-11 12:57:54.888353415 -0400 +@@ -79,7 +79,7 @@ const OptionInfoRec DefaultOptions[] = + { OPTION_ENABLE_FALLBACK_CACHE, + "EnableFallbackCache", OPTV_BOOLEAN, { 1 }, FALSE }, + { OPTION_ENABLE_SURFACES, +- "EnableSurfaces", OPTV_BOOLEAN, { 1 }, FALSE }, ++ "EnableSurfaces", OPTV_BOOLEAN, { 0 }, FALSE }, + { OPTION_DEBUG_RENDER_FALLBACKS, + "DebugRenderFallbacks", OPTV_BOOLEAN, { 0 }, FALSE }, + { OPTION_NUM_HEADS, diff --git a/SPECS/xorg-x11-drv-qxl.spec b/SPECS/xorg-x11-drv-qxl.spec index ef9eb92..7ff6520 100644 --- a/SPECS/xorg-x11-drv-qxl.spec +++ b/SPECS/xorg-x11-drv-qxl.spec @@ -22,7 +22,7 @@ Name: xorg-x11-drv-qxl Version: 0.1.1 -Release: 5%{?gver}%{?dist} +Release: 9%{?gver}%{?dist} URL: http://www.x.org Source0: http://xorg.freedesktop.org/releases/individual/driver/%{tarball}-%{version}.tar.bz2 @@ -32,8 +32,8 @@ Patch1: qxl-kms-disable-composite.patch # This should go away with a spice server containing 1d18b7e98ab268c755933061d77ccc7a981815e2 Patch2: 0005-spiceqxl_display-only-use-qxl-interface-after-it-is-.patch -# Avoid oops in the kernel Patch3: no-surfaces-kms.patch +Patch4: 0001-worst-hack-of-all-time-to-qxl-driver.patch # Fixes for running with Xorg suid, which is the only way we ship in fedora Patch6: 0006-spiceqxl_spice_server-no-need-to-call-spice_server_s.patch @@ -42,6 +42,8 @@ Patch8: 0008-Xspice-cleanup-non-regular-files-too.patch Patch9: 0009-Xspice-fix-cleanup-when-some-processes-are-already-d.patch Patch10: 0010-Xspice-cleanup-vdagent-files.patch +Patch11: disable-surfaces.patch + # Support for old revision 1 qxl device (which won't go upstream) # These aren't currently being applied, because they're not compatible with # xserver 1.15. They could be if someone wanted, but it's been 2.5 years, @@ -91,11 +93,13 @@ XSpice is both an X and a Spice server. %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 +%patch11 -p1 %build autoreconf -f -i @@ -143,8 +147,20 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf %changelog -* Fri Nov 08 2013 Dave Airlie 0.1.1-5 -- avoid kernel oops problem (#1028273) +* Tue Mar 11 2014 Soren Sandmann 0.1.1-9 +- Disable surfaces by default -- bug 1070984 + +* Tue Jan 14 2014 Dave Airlie 0.1.1-8 +- grab patches from F20 - fix dates + +* Mon Jan 13 2014 Adam Jackson - 0.1.1-7 +- 1.15 ABI rebuild + +* Tue Dec 17 2013 Adam Jackson - 0.1.1-6 +- 1.15RC4 ABI rebuild + +* Wed Nov 20 2013 Adam Jackson - 0.1.1-5 +- 1.15RC2 ABI rebuild * Wed Nov 06 2013 Adam Jackson - 0.1.1-4 - 1.15RC1 ABI rebuild @@ -184,7 +200,7 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf * Tue May 14 2013 Dave Airlie 0.1.1-0.7 - resnapshot - fixes randr under KMS -* Sat May 14 2013 Daniel Mach - 0.1.1-0.6 +* Tue May 14 2013 Daniel Mach - 0.1.1-0.6 - Fix with_xspice macro definition (airlied - cherrypick) * Tue May 7 2013 Alon Levy 0.1.1-0.5 @@ -217,7 +233,7 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf * Wed Aug 29 2012 Adam Jackson 0.0.22-6 - Exclude Xspice from RHEL6 builds -* Thu Aug 26 2012 Alon Levy +* Sun Aug 26 2012 Alon Levy - fix uxa_xorg_enable_disable_fb_access - 0.0.22-5.20120718gitde6620788 (#844463) * Thu Aug 23 2012 Alon Levy @@ -260,10 +276,10 @@ rm -f $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf * Wed Nov 09 2011 Adam Jackson - 0.0.21-9 - ABI rebuild -* Wed Oct 28 2011 Soren Sandmann - 0.0.21-8 +* Fri Oct 28 2011 Soren Sandmann - 0.0.21-8 - Bump release -* Wed Oct 28 2011 Soren Sandmann - 0.0.21-7 +* Fri Oct 28 2011 Soren Sandmann - 0.0.21-7 - Add patch to translate access regions according to drawable offset Bug 731245.