init
This commit is contained in:
parent
8cdcb5ab43
commit
dd36e83356
57
0001-worst-hack-of-all-time-to-qxl-driver.patch
Normal file
57
0001-worst-hack-of-all-time-to-qxl-driver.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
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 6a7e275..bb59f9e 100644
|
||||||
|
--- a/src/qxl_surface.c
|
||||||
|
+++ b/src/qxl_surface.c
|
||||||
|
@@ -770,8 +770,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)
|
||||||
|
{
|
||||||
|
@@ -814,6 +815,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)
|
||||||
|
{
|
||||||
74
0002-Xspice-Use-print-instead-of-print.patch
Normal file
74
0002-Xspice-Use-print-instead-of-print.patch
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christophe Fergeau <cfergeau@redhat.com>
|
||||||
|
Date: Wed, 8 Feb 2017 15:23:56 +0100
|
||||||
|
Subject: [PATCH] Xspice: Use print("") instead of print ""
|
||||||
|
|
||||||
|
This allows Xspice to run when using python3 instead of python2
|
||||||
|
---
|
||||||
|
scripts/Xspice | 16 ++++++++--------
|
||||||
|
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/Xspice b/scripts/Xspice
|
||||||
|
index ada99d1..30d10fa 100755
|
||||||
|
--- a/scripts/Xspice
|
||||||
|
+++ b/scripts/Xspice
|
||||||
|
@@ -34,7 +34,7 @@ def which(x):
|
||||||
|
candidate = os.path.join(p, x)
|
||||||
|
if os.path.exists(candidate):
|
||||||
|
return candidate
|
||||||
|
- print 'Warning: failed to find executable %s' % x
|
||||||
|
+ print('Warning: failed to find executable %s' % x)
|
||||||
|
return None
|
||||||
|
|
||||||
|
if 'XSPICE_ENABLE_GDB' in os.environ:
|
||||||
|
@@ -128,10 +128,10 @@ args, xorg_args = parser.parse_known_args(sys.argv[1:])
|
||||||
|
def agents_new_enough(args):
|
||||||
|
for f in [args.vdagent_exec, args.vdagentd_exec]:
|
||||||
|
if not f:
|
||||||
|
- print 'please specify path to vdagent/vdagentd executables'
|
||||||
|
+ print('please specify path to vdagent/vdagentd executables')
|
||||||
|
return False
|
||||||
|
if not os.path.exists(f):
|
||||||
|
- print 'error: file not found ', f
|
||||||
|
+ print('error: file not found ', f)
|
||||||
|
return False
|
||||||
|
|
||||||
|
for f in [args.vdagent_exec, args.vdagentd_exec]:
|
||||||
|
@@ -169,11 +169,11 @@ def tls_files(args):
|
||||||
|
# and it isn't supplied spice will still abort, and Xorg with it.
|
||||||
|
for key, filename in tls_files(args).items():
|
||||||
|
if not os.path.exists(filename):
|
||||||
|
- print "missing %s - %s does not exist" % (key, filename)
|
||||||
|
+ print("missing %s - %s does not exist" % (key, filename))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
def error(msg, exit_code=1):
|
||||||
|
- print "Xspice: %s" % msg
|
||||||
|
+ print("Xspice: %s" % msg)
|
||||||
|
sys.exit(exit_code)
|
||||||
|
|
||||||
|
if not args.xorg:
|
||||||
|
@@ -319,7 +319,7 @@ for arg in xorg_args:
|
||||||
|
if arg.startswith(":"):
|
||||||
|
display = arg
|
||||||
|
if not display:
|
||||||
|
- print "Error: missing display on line (i.e. :3)"
|
||||||
|
+ print("Error: missing display on line (i.e. :3)")
|
||||||
|
raise SystemExit
|
||||||
|
os.environ ['DISPLAY'] = display
|
||||||
|
|
||||||
|
@@ -343,7 +343,7 @@ time.sleep(2)
|
||||||
|
|
||||||
|
retpid,rc = os.waitpid(xorg.pid, os.WNOHANG)
|
||||||
|
if retpid != 0:
|
||||||
|
- print "Error: X server is not running"
|
||||||
|
+ print("Error: X server is not running")
|
||||||
|
else:
|
||||||
|
if args.vdagent_enabled and args.vdagent_launch:
|
||||||
|
# XXX use systemd --user for this?
|
||||||
|
@@ -361,4 +361,4 @@ else:
|
||||||
|
xorg.wait()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
# Catch Ctrl-C as that is the common way of ending this script
|
||||||
|
- print "Keyboard Interrupt"
|
||||||
|
+ print("Keyboard Interrupt")
|
||||||
26
0004-Xspice-Fix-Python3-str-vs-bytes-confusion.patch
Normal file
26
0004-Xspice-Fix-Python3-str-vs-bytes-confusion.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christophe Fergeau <cfergeau@redhat.com>
|
||||||
|
Date: Wed, 8 Feb 2017 17:07:56 +0100
|
||||||
|
Subject: [PATCH] Xspice: Fix Python3 str() vs bytes() confusion
|
||||||
|
|
||||||
|
With python3, without universal_newlines=True, Popen().stdout.read()
|
||||||
|
will return a byte array, while find(str) expects to operate on a
|
||||||
|
string.
|
||||||
|
I've checked that this still works with python2 as well.
|
||||||
|
---
|
||||||
|
scripts/Xspice | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/Xspice b/scripts/Xspice
|
||||||
|
index 41fd80c..927dcb1 100755
|
||||||
|
--- a/scripts/Xspice
|
||||||
|
+++ b/scripts/Xspice
|
||||||
|
@@ -135,7 +135,7 @@ def agents_new_enough(args):
|
||||||
|
return False
|
||||||
|
|
||||||
|
for f in [args.vdagent_exec, args.vdagentd_exec]:
|
||||||
|
- if Popen(args=[f, '-h'], stdout=PIPE).stdout.read().find('-S') == -1:
|
||||||
|
+ if Popen(args=[f, '-h'], stdout=PIPE, universal_newlines=True).stdout.read().find('-S') == -1:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Christophe Fergeau <cfergeau@redhat.com>
|
||||||
|
Date: Thu, 17 May 2018 15:31:05 +0200
|
||||||
|
Subject: [PATCH] Xspice: Adjust shebang to explicitly mention python3
|
||||||
|
|
||||||
|
---
|
||||||
|
scripts/Xspice | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/scripts/Xspice b/scripts/Xspice
|
||||||
|
index 927dcb1..78d0794 100755
|
||||||
|
--- a/scripts/Xspice
|
||||||
|
+++ b/scripts/Xspice
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/python
|
||||||
|
+#!/usr/bin/python3
|
||||||
|
|
||||||
|
"""
|
||||||
|
Xspice
|
||||||
26
0006-qxl-call-provider-init.patch
Normal file
26
0006-qxl-call-provider-init.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
Date: Wed, 8 Mar 2017 10:50:56 +1000
|
||||||
|
Subject: [PATCH] qxl: call provider init
|
||||||
|
|
||||||
|
This prevents crashes when multiple QXL devices are configured in a VM.
|
||||||
|
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1428340
|
||||||
|
---
|
||||||
|
src/qxl_drmmode.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/qxl_drmmode.c b/src/qxl_drmmode.c
|
||||||
|
index 3c288f9..41de92f 100644
|
||||||
|
--- a/src/qxl_drmmode.c
|
||||||
|
+++ b/src/qxl_drmmode.c
|
||||||
|
@@ -937,6 +937,9 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp)
|
||||||
|
for (i = 0; i < drmmode->mode_res->count_connectors; i++)
|
||||||
|
drmmode_output_init(pScrn, drmmode, i);
|
||||||
|
|
||||||
|
+#if XF86_CRTC_VERSION >= 5
|
||||||
|
+ xf86ProviderSetup(pScrn, NULL, "qxl");
|
||||||
|
+#endif
|
||||||
|
xf86InitialConfiguration(pScrn, TRUE);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
BIN
xf86-video-qxl-0.1.5.tar.bz2
Normal file
BIN
xf86-video-qxl-0.1.5.tar.bz2
Normal file
Binary file not shown.
57
xorg-x11-drv-qxl.spec
Normal file
57
xorg-x11-drv-qxl.spec
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
%undefine _hardened_build
|
||||||
|
|
||||||
|
Name: xorg-x11-drv-qxl
|
||||||
|
Version: 0.1.5
|
||||||
|
Release: 12
|
||||||
|
Summary: Qxl video driver for the X Window System
|
||||||
|
License: MIT
|
||||||
|
URL: http://www.x.org
|
||||||
|
Source0: http://xorg.freedesktop.org/releases/individual/driver/xf86-video-qxl-%{version}.tar.bz2
|
||||||
|
Patch0001: 0001-worst-hack-of-all-time-to-qxl-driver.patch
|
||||||
|
Patch0002: 0002-Xspice-Use-print-instead-of-print.patch
|
||||||
|
Patch0003: 0004-Xspice-Fix-Python3-str-vs-bytes-confusion.patch
|
||||||
|
Patch0004: 0005-Xspice-Adjust-shebang-to-explicitly-mention-python3.patch
|
||||||
|
Patch0005: 0006-qxl-call-provider-init.patch
|
||||||
|
BuildRequires: pkgconfig git-core xorg-x11-server-devel >= 1.1.0-1 spice-protocol >= 0.12.1
|
||||||
|
BuildRequires: libdrm-devel >= 2.4.46-1 spice-server-devel >= 0.8.0 glib2-devel
|
||||||
|
BuildRequires: libtool libudev-devel libXfont2-devel
|
||||||
|
Requires: Xorg %(xserver-sdk-abi-requires ansic) %(xserver-sdk-abi-requires videodrv)
|
||||||
|
|
||||||
|
%description
|
||||||
|
The xorg-x11-drv-qxl packages provide an X11 video driver for the QEMU QXL video accelerator.
|
||||||
|
|
||||||
|
%package -n xorg-x11-server-Xspice
|
||||||
|
Summary: Server for X or spice clients
|
||||||
|
Requires: Xorg %(xserver-sdk-abi-requires ansic) %(xserver-sdk-abi-requires videodrv)
|
||||||
|
Requires: xorg-x11-server-Xorg
|
||||||
|
|
||||||
|
%description -n xorg-x11-server-Xspice
|
||||||
|
Xspice creates a virtual X server that you can then connect to remotely using any Spice client.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n xf86-video-qxl-%{version} -p1
|
||||||
|
|
||||||
|
%build
|
||||||
|
autoreconf -ivf
|
||||||
|
%configure --enable-xspice
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
%install
|
||||||
|
%make_install
|
||||||
|
install -Dp -m644 examples/spiceqxl.xorg.conf.example $RPM_BUILD_ROOT%{_sysconfdir}/X11/spiceqxl.xorg.conf
|
||||||
|
%delete_la
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc COPYING README
|
||||||
|
%(pkg-config xorg-server --variable=moduledir)/drivers/qxl_drv.so
|
||||||
|
%exclude /usr/share/doc/xf86-video-qxl/spiceqxl.xorg.conf.example
|
||||||
|
|
||||||
|
%files -n xorg-x11-server-Xspice
|
||||||
|
%doc COPYING README.xspice README examples/spiceqxl.xorg.conf.example
|
||||||
|
%config(noreplace) %{_sysconfdir}/X11/spiceqxl.xorg.conf
|
||||||
|
%{_bindir}/Xspice
|
||||||
|
%(pkg-config xorg-server --variable=moduledir)/drivers/spiceqxl_drv.so
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Thu Nov 28 2019 shijian <shijian16@huawei.com> - 0.1.5-11
|
||||||
|
- Package init
|
||||||
Loading…
x
Reference in New Issue
Block a user