1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
Add an option gl-accel to disable GL acceleration:
* When enabled, configure try best to enable GL acceleration and fail when
missing host dependency(libSDL and libGL), which is the default.
* When disabled, end user choose to turn off GL capability, thus remove the
host dependence in building.
Upstream-Status: Inappropriate [other] - depends on GL patch
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
Index: qemu-0.15.1/Makefile.target
===================================================================
--- qemu-0.15.1.orig/Makefile.target 2012-05-29 11:20:04.000000000 +0800
+++ qemu-0.15.1/Makefile.target 2012-05-29 11:20:04.000000000 +0800
@@ -80,13 +80,16 @@
endif
libobj-$(CONFIG_NEED_MMU) += mmu.o
ifndef CONFIG_LINUX_USER
+ifdef CONFIG_GL_ACCEL
libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o
libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o
else
-ifdef CONFIG_SDL
libobj-$(TARGET_I386) += dummygl.o
libobj-$(TARGET_X86_64) += dummygl.o
-endif
+endif #CONFIG_GL_ACCEL
+else
+libobj-$(TARGET_I386) += dummygl.o
+libobj-$(TARGET_X86_64) += dummygl.o
endif #CONFIG_LINUX_USER
libobj-$(TARGET_ARM) += dummygl.o
libobj-$(TARGET_MIPS) += dummygl.o
@@ -262,8 +265,10 @@
obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
ifeq ($(TARGET_BASE_ARCH), i386)
+ifdef CONFIG_GL_ACCEL
QEMU_CFLAGS += -DTARGET_OPENGL_OK
endif
+endif
# shared objects
obj-ppc-y = ppc.o
@@ -409,8 +414,6 @@
monitor.o: hmp-commands.h qmp-commands.h
-LIBS += -lGL -lGLU
-
$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y): $(GENERATED_HEADERS)
obj-y += $(addprefix ../, $(common-obj-y))
Index: qemu-0.15.1/configure
===================================================================
--- qemu-0.15.1.orig/configure 2012-05-29 11:20:03.000000000 +0800
+++ qemu-0.15.1/configure 2012-05-29 11:20:04.000000000 +0800
@@ -2021,6 +2021,39 @@
fi
fi
+#####################################################
+# GL acceleration probe depending on gl, glu and sdl
+if test "$gl_accel" != "no" ; then
+ if test "$sdl" = "no" ; then
+ gl_accel=no
+ echo "libSDL and header no found to build opengl acceleration for qemu-native.
+ Ubuntu package names are: libsdl1.2-dev.
+ Fedora package names are: SDL-devel."
+ exit 1;
+ fi
+
+ gl_accel_libs="-lGL -lGLU"
+ cat > $TMPC << EOF
+#include <X11/Xlib.h>
+#include <GL/gl.h>
+#include <GL/glx.h>
+#include <GL/glu.h>
+int main(void) { GL_VERSION; return 0; }
+EOF
+ if compile_prog "" "-lGL -lGLU" ; then
+ gl_accel=yes
+ libs_softmmu="$gl_accel_libs $libs_softmmu"
+ else
+ feature_not_found "gl_accel"
+ gl_accel=no
+ gl_accel_libs=
+ echo "libGL.so and libGLU.so not found to build opengl acceleration for qemu-native.
+ Ubuntu package names are: libgl1-mesa-dev, libglu1-mesa-dev and libsdl1.2-dev.
+ Fedora package names are: mesa-libGL mesa-libGLU SDL-devel."
+ exit 1;
+ fi
+fi
+
#
# Check for xxxat() functions when we are building linux-user
# emulator. This is done because older glibc versions don't
@@ -2722,6 +2755,7 @@
echo "nss used $smartcard_nss"
echo "usb net redir $usb_redir"
echo "OpenGL support $opengl"
+echo "GL acceleration support $gl_accel"
echo "build guest agent $guest_agent"
if test $sdl_too_old = "yes"; then
@@ -3025,6 +3059,10 @@
echo "CONFIG_OPENGL=y" >> $config_host_mak
fi
+if test "$gl_accel" = "yes" ; then
+ echo "CONFIG_GL_ACCEL=y" >> $config_host_mak
+fi
+
# XXX: suppress that
if [ "$bsd" = "yes" ] ; then
echo "CONFIG_BSD=y" >> $config_host_mak
Index: qemu-0.15.1/qemu-char.c
===================================================================
--- qemu-0.15.1.orig/qemu-char.c 2012-05-29 11:20:03.000000000 +0800
+++ qemu-0.15.1/qemu-char.c 2012-05-29 11:20:04.000000000 +0800
@@ -2387,7 +2387,6 @@
return d->outbuf_size;
}
-#define TARGET_OPENGL_OK
#if defined(TARGET_OPENGL_OK)
static uint8_t buffer[32];
static int buffer_len;
@@ -2447,7 +2446,7 @@
return chr;
}
#else
-#define qemu_chr_open_opengl() 0
+#define qemu_chr_open_opengl NULL
#endif
QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
|