summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch')
-rw-r--r--meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch66
1 files changed, 66 insertions, 0 deletions
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
new file mode 100644
index 0000000000..ddf4e4a676
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-0.15.1/opengl-args-copy-fix.patch
@@ -0,0 +1,66 @@
1This patch fix GL application failure from 64b target on 32b host
2
364b target produce 64b args buffer, but qemu parse it as 32b and get wrong
4data. To avoid this, the type of args buffer in qemu should be same as target,
5that is, target_phys_addr_t. The only potential issue is that we need copy
6the data in buffer one by one, or else data corruption when 32b/64b for
7target/host combination.
8
9Upstream-Status: Inappropriate [other] - depends on qemu gl patch
10
11Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
12
13Index: qemu-0.15.1/target-i386/opengl_func.h
14===================================================================
15--- qemu-0.15.1.orig/target-i386/opengl_func.h 2012-04-06 10:00:08.000000000 +0800
16+++ qemu-0.15.1/target-i386/opengl_func.h 2012-04-06 10:47:38.000000000 +0800
17@@ -25,10 +25,10 @@
18 #include "mesa_gl.h"
19 #include "mesa_glext.h"
20
21-/* Argument list are internally of a type that can hold a target pointer
22- * or a host pointer. If 32b target runs on 64b host, it should be big enough
23- * to hold host pointer */
24-typedef long unsigned int arg_t;
25+/* Argument list are internally of a type that point to a buffer passed from
26+ * target. It should have same type as target, so that we can support 32b
27+ * target on 64b host, and vice versa */
28+typedef target_phys_addr_t arg_t;
29
30 enum {
31 TYPE_NONE,
32Index: qemu-0.15.1/Makefile.target
33===================================================================
34--- qemu-0.15.1.orig/Makefile.target 2012-04-06 10:00:08.000000000 +0800
35+++ qemu-0.15.1/Makefile.target 2012-04-06 10:00:08.000000000 +0800
36@@ -128,7 +128,7 @@
37 gl_beginend.h: ../target-i386/beginend_funcs.sh
38 $< > $@
39 opengl_exec.o : opengl_exec.c server_stub.c gl_func.h opengl_func.h gl_beginend.h
40- $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I. -I../target-i386
41+ $(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $< -I.. -I. -I../fpu -I../target-i386 -DNEED_CPU_H
42
43 #########################################################
44 # Linux user emulator target
45Index: qemu-0.15.1/target-i386/opengl_exec.c
46===================================================================
47--- qemu-0.15.1.orig/target-i386/opengl_exec.c 2012-04-06 10:00:08.000000000 +0800
48+++ qemu-0.15.1/target-i386/opengl_exec.c 2012-04-06 10:39:22.000000000 +0800
49@@ -37,16 +37,12 @@
50 #include <mesa_gl.h>
51 #include <mesa_glx.h>
52
53-// TODO
54-typedef long unsigned int target_phys_addr_t;
55-
56+#include "exec.h"
57 #include "opengl_func.h"
58
59 #include "mesa_glu.h"
60 #include "mesa_mipmap.c"
61
62-#include "../qemu-common.h"
63-
64 //#define SYSTEMATIC_ERROR_CHECK
65 #define BUFFER_BEGINEND
66 #define glGetError() 0