diff options
| -rw-r--r-- | meta/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch (renamed from meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch) | 0 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/dummy-gl-config.patch | 31 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/fix-nogl.patch | 127 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/glflags.patch | 33 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch | 66 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch | 137 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/opengl-sdl-fix.patch | 43 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/qemu-git-qemugl-host.patch | 34368 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/qemugl-allow-glxcontext-release.patch | 65 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu-0.15.1/qemugl-fix.patch | 74 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu.inc | 6 | ||||
| -rw-r--r-- | meta/recipes-devtools/qemu/qemu_0.15.1.bb | 21 |
12 files changed, 2 insertions, 34969 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch b/meta/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch index c4c5424e16..c4c5424e16 100644 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch +++ b/meta/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-vmware-vga-depth.patch diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/dummy-gl-config.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/dummy-gl-config.patch deleted file mode 100644 index 8aa30aed03..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/dummy-gl-config.patch +++ /dev/null @@ -1,31 +0,0 @@ -Add a dummy option for GL acceleration to pass the configure when there is no -GL acceleration patch. The parsing function will be filled by following -opengl-disable-option.patch. - -Upstream-Status: Inappropriate [other] - depends on GL patch - -Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> - -Index: qemu-0.15.1/configure -=================================================================== ---- qemu-0.15.1.orig/configure 2012-05-14 21:23:34.000000000 +0800 -+++ qemu-0.15.1/configure 2012-05-14 21:23:36.000000000 +0800 -@@ -179,6 +179,7 @@ - smartcard_nss="" - usb_redir="" - opengl="" -+gl_accel="yes" - guest_agent="yes" - - # parse CC options first -@@ -739,6 +740,10 @@ - ;; - --enable-opengl) opengl="yes" - ;; -+ --disable-gl-accel) gl_accel="no" -+ ;; -+ --enable-gl-accel) gl_accel="yes" -+ ;; - --*dir) - ;; - --disable-rbd) rbd="no" diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/fix-nogl.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/fix-nogl.patch deleted file mode 100644 index 83b2752589..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/fix-nogl.patch +++ /dev/null @@ -1,127 +0,0 @@ -Upstream-Status: Inappropriate [configuration] - -Index: qemu-0.14.0/Makefile.target -=================================================================== ---- qemu-0.14.0.orig/Makefile.target -+++ qemu-0.14.0/Makefile.target -@@ -79,6 +79,12 @@ libobj-y += cpuid.o - endif - libobj-$(CONFIG_NEED_MMU) += mmu.o - libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o -+libobj-$(TARGET_X86_64) += helper_opengl.o opengl_exec.o -+libobj-$(TARGET_ARM) += dummygl.o -+libobj-$(TARGET_MIPS) += dummygl.o -+libobj-$(TARGET_MIPS64) += dummygl.o -+libobj-$(TARGET_PPC) += dummygl.o -+libobj-$(TARGET_SH4) += dummygl.o - libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o - - libobj-y += disas.o -Index: qemu-0.14.0/target-arm/dummygl.c -=================================================================== ---- /dev/null -+++ qemu-0.14.0/target-arm/dummygl.c -@@ -0,0 +1,22 @@ -+#include <string.h> -+#include <stdlib.h> -+#include <assert.h> -+#include <stdint.h> -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> -+ -+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window) -+{ -+ -+} -+ -+void opengl_process_enable(void) -+{ -+ -+} -+ -+ -+void mem_opengl(uint64_t ptr) -+{ -+ -+} -Index: qemu-0.14.0/target-mips/dummygl.c -=================================================================== ---- /dev/null -+++ qemu-0.14.0/target-mips/dummygl.c -@@ -0,0 +1,22 @@ -+#include <string.h> -+#include <stdlib.h> -+#include <assert.h> -+#include <stdint.h> -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> -+ -+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window) -+{ -+ -+} -+ -+void opengl_process_enable(void) -+{ -+ -+} -+ -+ -+void mem_opengl(uint64_t ptr) -+{ -+ -+} -Index: qemu-0.14.0/target-ppc/dummygl.c -=================================================================== ---- /dev/null -+++ qemu-0.14.0/target-ppc/dummygl.c -@@ -0,0 +1,22 @@ -+#include <string.h> -+#include <stdlib.h> -+#include <assert.h> -+#include <stdint.h> -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> -+ -+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window) -+{ -+ -+} -+ -+void opengl_process_enable(void) -+{ -+ -+} -+ -+ -+void mem_opengl(uint64_t ptr) -+{ -+ -+} -Index: qemu-0.14.0/target-sh4/dummygl.c -=================================================================== ---- /dev/null -+++ qemu-0.14.0/target-sh4/dummygl.c -@@ -0,0 +1,22 @@ -+#include <string.h> -+#include <stdlib.h> -+#include <assert.h> -+#include <stdint.h> -+#include <X11/Xlib.h> -+#include <X11/Xutil.h> -+ -+void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window) -+{ -+ -+} -+ -+void opengl_process_enable(void) -+{ -+ -+} -+ -+ -+void mem_opengl(uint64_t ptr) -+{ -+ -+} diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/glflags.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/glflags.patch deleted file mode 100644 index 638d2622b6..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/glflags.patch +++ /dev/null @@ -1,33 +0,0 @@ -Considering relocation, qemu-nativesdk is independent of host library except -libGL. Normal method like 'cat > $TMPC' doesn't work, so we check the library -directly. - -Upstream-Status: Inappropriate [configuration] - -Index: qemu-0.15.1/configure -=================================================================== ---- qemu-0.15.1.orig/configure 2012-05-25 18:26:05.000000000 +0800 -+++ qemu-0.15.1/configure 2012-05-29 09:43:27.000000000 +0800 -@@ -2032,15 +2032,13 @@ - 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_libs="-lGL" -+ libgl='no' -+ test -e /usr/lib/libGL.so && libgl='yes' -+ test -e /usr/lib64/libGL.so && libgl='yes' -+ test -e /usr/lib/*-linux-gnu/libGL.so && libgl='yes' -+ -+ if test "$libgl" = "yes" ; then - gl_accel=yes - libs_softmmu="$gl_accel_libs $libs_softmmu" - else diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch deleted file mode 100644 index ddf4e4a676..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch +++ /dev/null @@ -1,66 +0,0 @@ -This patch fix GL application failure from 64b target on 32b host - -64b target produce 64b args buffer, but qemu parse it as 32b and get wrong -data. To avoid this, the type of args buffer in qemu should be same as target, -that is, target_phys_addr_t. The only potential issue is that we need copy -the data in buffer one by one, or else data corruption when 32b/64b for -target/host combination. - -Upstream-Status: Inappropriate [other] - depends on qemu gl patch - -Signed-off-by: Zhai Edwin <edwin.zhai@intel.com> - -Index: qemu-0.15.1/target-i386/opengl_func.h -=================================================================== ---- qemu-0.15.1.orig/target-i386/opengl_func.h 2012-04-06 10:00:08.000000000 +0800 -+++ qemu-0.15.1/target-i386/opengl_func.h 2012-04-06 10:47:38.000000000 +0800 -@@ -25,10 +25,10 @@ - #include "mesa_gl.h" - #include "mesa_glext.h" - --/* Argument list are internally of a type that can hold a target pointer -- * or a host pointer. If 32b target runs on 64b host, it should be big enough -- * to hold host pointer */ --typedef long unsigned int arg_t; -+/* Argument list are internally of a type that point to a buffer passed from -+ * target. It should have same type as target, so that we can support 32b -+ * target on 64b host, and vice versa */ -+typedef target_phys_addr_t arg_t; - - enum { - TYPE_NONE, -Index: qemu-0.15.1/Makefile.target -=================================================================== ---- qemu-0.15.1.orig/Makefile.target 2012-04-06 10:00:08.000000000 +0800 -+++ qemu-0.15.1/Makefile.target 2012-04-06 10:00:08.000000000 +0800 -@@ -128,7 +128,7 @@ - gl_beginend.h: ../target-i386/beginend_funcs.sh - $< > $@ - opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h -- $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386 -+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H - - ######################################################### - # Linux user emulator target -Index: qemu-0.15.1/target-i386/opengl_exec.c -=================================================================== ---- qemu-0.15.1.orig/target-i386/opengl_exec.c 2012-04-06 10:00:08.000000000 +0800 -+++ qemu-0.15.1/target-i386/opengl_exec.c 2012-04-06 10:39:22.000000000 +0800 -@@ -37,16 +37,12 @@ - #include <mesa_gl.h> - #include <mesa_glx.h> - --// TODO --typedef long unsigned int target_phys_addr_t; -- -+#include "exec.h" - #include "opengl_func.h" - - #include "mesa_glu.h" - #include "mesa_mipmap.c" - --#include "../qemu-common.h" -- - //#define SYSTEMATIC_ERROR_CHECK - #define BUFFER_BEGINEND - #define glGetError() 0 diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch deleted file mode 100644 index 8dc272a926..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-disable-option.patch +++ /dev/null @@ -1,137 +0,0 @@ -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) diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-sdl-fix.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-sdl-fix.patch deleted file mode 100644 index e73bb7bfe9..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-sdl-fix.patch +++ /dev/null @@ -1,43 +0,0 @@ -Upstream-Status: Inappropriate [configuration] - -diff -u -r qemu-0.14.0/Makefile.target qemu-0.14.0-fixed/Makefile.target ---- qemu-0.14.0/Makefile.target 2011-04-26 21:22:17.627637741 -0700 -+++ qemu-0.14.0-fixed/Makefile.target 2011-04-26 21:23:02.767637747 -0700 -@@ -82,8 +82,10 @@ - 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_LINUX_USER - libobj-$(TARGET_ARM) += dummygl.o - libobj-$(TARGET_MIPS) += dummygl.o -Only in qemu-0.14.0-fixed: config.log -diff -u -r qemu-0.14.0/target-i386/helper.h qemu-0.14.0-fixed/target-i386/helper.h ---- qemu-0.14.0/target-i386/helper.h 2011-04-26 21:22:11.418637742 -0700 -+++ qemu-0.14.0-fixed/target-i386/helper.h 2011-04-26 21:23:02.539637747 -0700 -@@ -217,6 +217,9 @@ - DEF_HELPER_2(rcrq, tl, tl, tl) - #endif - -+#ifdef CONFIG_SDL - DEF_HELPER_0(opengl, void) -+#endif -+ - - #include "def-helper.h" -diff -u -r qemu-0.14.0/target-i386/translate.c qemu-0.14.0-fixed/target-i386/translate.c ---- qemu-0.14.0/target-i386/translate.c 2011-04-26 21:22:21.600637743 -0700 -+++ qemu-0.14.0-fixed/target-i386/translate.c 2011-04-26 21:23:02.538637747 -0700 -@@ -2659,7 +2659,7 @@ - static void gen_interrupt(DisasContext *s, int intno, - target_ulong cur_eip, target_ulong next_eip) - { --#if !defined(CONFIG_USER_ONLY) -+#if !defined(CONFIG_USER_ONLY) && defined(CONFIG_SDL) - if (enable_gl && intno == 0x99) { - gen_helper_opengl(); - return; - diff --git a/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-git-qemugl-host.patch b/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-git-qemugl-host.patch deleted file mode 100644 index 4fb972a60b..0000000000 --- a/meta/recipes-devtools/qemu/qemu-0.15.1/qemu-git-qemugl-host.patch +++ /dev/null @@ -1,34368 +0,0 @@ -Upstream-Status: Inappropriate [other] - qemugl patch need huge changes for upstream - -Index: qemu-0.14.0/Makefile.target -=================================================================== ---- qemu-0.14.0.orig/Makefile.target -+++ qemu-0.14.0/Makefile.target -@@ -78,6 +78,7 @@ ifeq ($(TARGET_BASE_ARCH), i386) - libobj-y += cpuid.o - endif - libobj-$(CONFIG_NEED_MMU) += mmu.o -+libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o - libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o - - libobj-y += disas.o -@@ -100,6 +101,21 @@ op_helper.o cpu-exec.o: QEMU_CFLAGS += $ - # cpu_signal_handler() in cpu-exec.c. - signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS) - -+parse_gl_h: parse_gl_h.c -+ $(HOST_CC) -g -o $@ $< -+server_stub.c: parse_gl_h -+ ./parse_gl_h -+gl_func.h: parse_gl_h -+ ./parse_gl_h -+GL_CFLAGS := -Wall -g -O2 -fno-strict-aliasing -+opengl_func.h: gl_func.h -+helper_opengl.o: helper_opengl.c opengl_func.h server_stub.c -+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H -+gl_beginend.h: ../target-i386/beginend_funcs.sh -+ $< > $@ -+opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h -+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386 -+ - ######################################################### - # Linux user emulator target - -@@ -221,6 +237,10 @@ obj-i386-y += debugcon.o multiboot.o - obj-i386-y += pc_piix.o - obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o - -+ifeq ($(TARGET_BASE_ARCH), i386) -+QEMU_CFLAGS += -DTARGET_OPENGL_OK -+endif -+ - # shared objects - obj-ppc-y = ppc.o - obj-ppc-y += vga.o -@@ -331,6 +351,8 @@ main.o: QEMU_CFLAGS+=$(GPROF_CFLAGS) - - 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.14.0/hw/pixel_ops.h -=================================================================== ---- qemu-0.14.0.orig/hw/pixel_ops.h -+++ qemu-0.14.0/hw/pixel_ops.h -@@ -4,6 +4,12 @@ static inline unsigned int rgb_to_pixel8 - return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6); - } - -+static inline unsigned int rgb_to_pixel8bgr(unsigned int r, unsigned int g, -+ unsigned int b) -+{ -+ return ((b >> 5) << 5) | ((g >> 5) << 2) | (r >> 6); -+} -+ - static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g, - unsigned int b) - { -Index: qemu-0.14.0/hw/vmware_vga.c -=================================================================== ---- qemu-0.14.0.orig/hw/vmware_vga.c -+++ qemu-0.14.0/hw/vmware_vga.c -@@ -517,6 +517,8 @@ static inline void vmsvga_cursor_define( - - #define CMD(f) le32_to_cpu(s->cmd->f) - -+static uint32_t last_cmd; -+ - static inline int vmsvga_fifo_length(struct vmsvga_state_s *s) - { - int num; -@@ -530,11 +532,18 @@ static inline int vmsvga_fifo_length(str - - static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s) - { -- uint32_t cmd = s->fifo[CMD(stop) >> 2]; -- s->cmd->stop = cpu_to_le32(CMD(stop) + 4); -- if (CMD(stop) >= CMD(max)) -+ int offset = CMD(stop); -+ -+ if (unlikely(s->cmd->next_cmd == s->cmd->stop)) { -+ fprintf(stderr, "%s: FIFO empty during CMD %i\n", -+ __FUNCTION__, last_cmd); -+ return 0x00000000; -+ } -+ -+ s->cmd->stop = cpu_to_le32(offset + 4); -+ if (offset + 4 >= CMD(max)) - s->cmd->stop = s->cmd->min; -- return cmd; -+ return s->fifo[offset >> 2]; - } - - static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) -@@ -544,7 +553,7 @@ static inline uint32_t vmsvga_fifo_read( - - static void vmsvga_fifo_run(struct vmsvga_state_s *s) - { -- uint32_t cmd, colour; -+ uint32_t colour; - int args, len; - int x, y, dx, dy, width, height; - struct vmsvga_cursor_definition_s cursor; -@@ -555,7 +564,7 @@ static void vmsvga_fifo_run(struct vmsvg - /* May need to go back to the start of the command if incomplete */ - cmd_start = s->cmd->stop; - -- switch (cmd = vmsvga_fifo_read(s)) { -+ switch (last_cmd = vmsvga_fifo_read(s)) { - case SVGA_CMD_UPDATE: - case SVGA_CMD_UPDATE_VERBOSE: - len -= 5; -@@ -695,7 +704,7 @@ static void vmsvga_fifo_run(struct vmsvg - while (args --) - vmsvga_fifo_read(s); - printf("%s: Unknown command 0x%02x in SVGA command FIFO\n", -- __FUNCTION__, cmd); -+ __FUNCTION__, last_cmd); - break; - - rewind: -@@ -1216,6 +1225,11 @@ static void vmsvga_init(struct vmsvga_st - vga_common_init(&s->vga, vga_ram_size); - vga_init(&s->vga); - vmstate_register(NULL, 0, &vmstate_vga_common, &s->vga); -+#ifdef EMBED_STDVGA -+ s->vga.map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS; -+ s->vga.map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size; -+ vga_dirty_log_start(s); -+#endif - - vmsvga_reset(s); - } -Index: qemu-0.14.0/qemu-char.c -=================================================================== ---- qemu-0.14.0.orig/qemu-char.c -+++ qemu-0.14.0/qemu-char.c -@@ -2334,6 +2334,69 @@ size_t qemu_chr_mem_osize(const CharDriv - return d->outbuf_size; - } - -+#define TARGET_OPENGL_OK -+#if defined(TARGET_OPENGL_OK) -+static uint8_t buffer[32]; -+static int buffer_len; -+static int hexdigit[128] = { -+ ['0'] = 0x0, -+ ['1'] = 0x1, -+ ['2'] = 0x2, -+ ['3'] = 0x3, -+ ['4'] = 0x4, -+ ['5'] = 0x5, -+ ['6'] = 0x6, -+ ['7'] = 0x7, -+ ['8'] = 0x8, -+ ['9'] = 0x9, -+ ['a'] = 0xa, -+ ['b'] = 0xb, -+ ['c'] = 0xc, -+ ['d'] = 0xd, -+ ['e'] = 0xe, -+ ['f'] = 0xf, -+}; -+ -+static int opengl_chr_write(CharDriverState *chr, const uint8_t *buf, int len) -+{ -+ uint64_t ptr = 0; -+ int i; -+ -+ if (memchr(buf, 'x', len)) -+ opengl_process_enable(); -+ return len; -+ memcpy(buffer + buffer_len, buf, len); -+ buffer_len += len; -+ -+ if (buffer_len >= 16) { -+ for (i = 0; i < 16; i ++) -+ ptr = (ptr << 4) + hexdigit[buffer[i]]; -+ -+ buffer_len -= 16; -+ if (buffer_len) -+ memcpy(buffer, buffer + 16, buffer_len); -+ -+ mem_opengl(ptr); -+ } -+ -+ return len; -+} -+ -+CharDriverState *qemu_chr_open_opengl(void) -+{ -+ CharDriverState *chr = qemu_mallocz(sizeof(CharDriverState)); -+ -+ chr->opaque = chr; -+ chr->chr_write = opengl_chr_write; -+ -+ qemu_chr_generic_open(chr); -+ -+ return chr; -+} -+#else -+#define qemu_chr_open_opengl() 0 -+#endif -+ - QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename) - { - char host[65], port[33], width[8], height[8]; -@@ -2452,6 +2515,10 @@ QemuOpts *qemu_chr_parse_compat(const ch - qemu_opt_set(opts, "path", filename); - return opts; - } -+ if (!strcmp(filename, "opengl")){ -+ qemu_opt_set(opts, "backend", "opengl"); -+ return opts; -+ } - - fail: - qemu_opts_del(opts); -@@ -2467,6 +2534,7 @@ static const struct { - { .name = "udp", .open = qemu_chr_open_udp }, - { .name = "msmouse", .open = qemu_chr_open_msmouse }, - { .name = "vc", .open = text_console_init }, -+ { .name = "opengl", .open = qemu_chr_open_opengl }, - #ifdef _WIN32 - { .name = "file", .open = qemu_chr_open_win_file_out }, - { .name = "pipe", .open = qemu_chr_open_win_pipe }, -Index: qemu-0.14.0/slirp/udp.c -=================================================================== ---- qemu-0.14.0.orig/slirp/udp.c -+++ qemu-0.14.0/slirp/udp.c -@@ -40,6 +40,7 @@ - - #include <slirp.h> - #include "ip_icmp.h" -+#include "bswap.h" - - static uint8_t udp_tos(struct socket *so); - -@@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i - goto bad; - } - -+ if (ntohs(uh->uh_dport) == 9999 && m->m_len - iphlen == 16) { -+ mem_opengl(le64_to_cpup((uint64_t *) (m->m_data + iphlen + 8))); -+ goto bad; -+ } -+ - if (slirp->restricted) { - goto bad; - } -Index: qemu-0.14.0/sysemu.h -=================================================================== ---- qemu-0.14.0.orig/sysemu.h -+++ qemu-0.14.0/sysemu.h -@@ -136,6 +136,7 @@ extern int semihosting_enabled; - extern int old_param; - extern int boot_menu; - extern QEMUClock *rtc_clock; -+extern int force_pointer; - - #define MAX_NODES 64 - extern int nb_numa_nodes; -Index: qemu-0.14.0/target-i386/beginend_funcs.sh -=================================================================== ---- /dev/null -+++ qemu-0.14.0/target-i386/beginend_funcs.sh -@@ -0,0 +1,23 @@ -+#! /bin/bash -+# Copyright 2008 (C) Intel Corporation -+# -+# echo names of functions that are legal between a glBegin and glEnd pair. -+echo -e MAGIC_MACRO\(glVertex{2,3,4}{s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glMultiTexCoord{1,2,3,4}{s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glNormal3{b,s,i,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glFogCoord{f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glColor{3,4}{b,s,i,f,d,ub,us,ui}{,v}\)\\n -+echo -e MAGIC_MACRO\(glSecondaryColor3{b,s,i,f,d,ub,us,ui}{,v}\)\\n -+echo -e MAGIC_MACRO\(glIndex{s,i,f,d,ub}{,v}\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib{1,2,3,4}{s,f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib4{b,i,ub,us,ui}v\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib4Nub\)\\n -+echo -e MAGIC_MACRO\(glVertexAttrib4N{b,s,i,ub,us,ui}v\)\\n -+echo -e MAGIC_MACRO\(glArrayElement\)\\n -+echo -e MAGIC_MACRO\(glEvalCoord{1,2}{f,d}{,v}\)\\n -+echo -e MAGIC_MACRO\(glEvalPoint{1,2}\)\\n -+echo -e MAGIC_MACRO\(glMaterial{i,f}{,v}\)\\n -+echo -e MAGIC_MACRO\(glCallList\)\\n -+echo -e MAGIC_MACRO\(glCallLists\)\\n -+echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n -Index: qemu-0.14.0/target-i386/ghash.c -=================================================================== ---- /dev/null -+++ qemu-0.14.0/target-i386/ghash.c -@@ -0,0 +1,347 @@ -+/* This is a modified and simplified version of original ghash.c */ -+ -+/* GLIB - Library of useful routines for C programming -+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the -+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ * Boston, MA 02111-1307, USA. -+ */ -+ -+/* -+ * Modified by the GLib Team and others 1997-2000. See the AUTHORS -+ * file for a list of people on the GLib Team. See the ChangeLog -+ * files for a list of changes. These files are distributed with -+ * GLib at ftp://ftp.gtk.org/pub/gtk/. -+ */ -+ -+ -+#include <stdlib.h> -+ -+#include "ghash.h" -+ -+#define HASH_TABLE_MIN_SIZE 11 -+#define HASH_TABLE_MAX_SIZE 13845163 -+ -+#define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) -+ -+ -+typedef struct _SimpleHashNode SimpleHashNode; -+ -+struct _SimpleHashNode -+{ -+ int key; -+ void* value; -+ SimpleHashNode *next; -+}; -+ -+struct _SimpleHashTable -+{ -+ int size; -+ int nnodes; -+ SimpleHashNode **nodes; -+ SimpleDestroyNotify value_destroy_func; -+}; -+ -+static const unsigned int simple_primes[] = -+{ -+ 11, -+ 19, -+ 37, -+ 73, -+ 109, -+ 163, -+ 251, -+ 367, -+ 557, -+ 823, -+ 1237, -+ 1861, -+ 2777, -+ 4177, -+ 6247, -+ 9371, -+ 14057, -+ 21089, -+ 31627, -+ 47431, -+ 71143, -+ 106721, -+ 160073, -+ 240101, -+ 360163, -+ 540217, -+ 810343, -+ 1215497, -+ 1823231, -+ 2734867, -+ 4102283, -+ 6153409, -+ 9230113, -+ 13845163, -+}; -+ -+static const unsigned int simple_nprimes = sizeof (simple_primes) / sizeof (simple_primes[0]); -+ -+unsigned int simple_spaced_primes_closest (unsigned int num) -+{ -+ int i; -+ -+ for (i = 0; i < simple_nprimes; i++) -+ if (simple_primes[i] > num) -+ return simple_primes[i]; -+ -+ return simple_primes[simple_nprimes - 1]; -+} -+ -+#define HASH_TABLE_RESIZE(hash_table) \ -+ do { \ -+ if ((hash_table->size >= 3 * hash_table->nnodes && \ -+ hash_table->size > HASH_TABLE_MIN_SIZE) || \ -+ (3 * hash_table->size <= hash_table->nnodes && \ -+ hash_table->size < HASH_TABLE_MAX_SIZE)) \ -+ simple_hash_table_resize (hash_table); \ -+ } while(0) -+ -+static void simple_hash_table_resize (SimpleHashTable *hash_table); -+static SimpleHashNode** simple_hash_table_lookup_node (SimpleHashTable *hash_table, -+ int key); -+static SimpleHashNode* simple_hash_node_new (int key, -+ void* value); -+static void simple_hash_nodes_destroy (SimpleHashNode *hash_node, -+ SimpleDestroyNotify value_destroy_func); -+ -+ -+#define alloc0(type, n) (type*)calloc(n, sizeof(type)) -+ -+SimpleHashTable* -+simple_hash_table_new (SimpleDestroyNotify value_destroy_func) -+{ -+ SimpleHashTable *hash_table; -+ -+ hash_table = alloc0(SimpleHashTable, 1); -+ hash_table->size = HASH_TABLE_MIN_SIZE; -+ hash_table->nnodes = 0; -+ hash_table->value_destroy_func = value_destroy_func; -+ hash_table->nodes = alloc0 (SimpleHashNode*, hash_table->size); -+ -+ return hash_table; -+} -+ -+SimpleHashTable* simple_hash_table_clone(SimpleHashTable *hash_table, -+ SimpleCloneValue clone_value_func) -+{ -+ SimpleHashTable *hash_table_new; -+ SimpleHashNode *new_node; -+ SimpleHashNode *node; -+ int i; -+ -+ hash_table_new = alloc0 (SimpleHashTable, 1); -+ hash_table_new->size = hash_table->size; -+ hash_table_new->nnodes = hash_table->nnodes; -+ hash_table_new->value_destroy_func = hash_table->value_destroy_func; -+ hash_table_new->nodes = alloc0 (SimpleHashNode*, hash_table_new->size); -+ for (i = 0; i < hash_table->size; i++) -+ { -+ node = hash_table->nodes[i]; -+ while(node) -+ { -+ SimpleHashNode *next = hash_table_new->nodes[i]; -+ new_node = simple_hash_node_new(node->key, -+ (clone_value_func)? clone_value_func(node->value) : node->value); -+ new_node->next = next; -+ hash_table_new->nodes[i] = new_node; -+ node = node->next; -+ } -+ } -+ return hash_table_new; -+} -+ -+void -+simple_hash_table_destroy (SimpleHashTable *hash_table) -+{ -+ int i; -+ -+ for (i = 0; i < hash_table->size; i++) -+ { -+ simple_hash_nodes_destroy (hash_table->nodes[i], -+ hash_table->value_destroy_func); -+ hash_table->nodes[i] = NULL; -+ } -+ free (hash_table->nodes); -+ free (hash_table); -+} -+ -+static inline SimpleHashNode** -+simple_hash_table_lookup_node (SimpleHashTable *hash_table, -+ int key) -+{ -+ SimpleHashNode **node; -+ -+ node = &hash_table->nodes[(unsigned int)key % hash_table->size]; -+ while (*node && (*node)->key != key) -+ node = &(*node)-&g |
