diff options
Diffstat (limited to 'meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch')
-rw-r--r-- | meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch | 561 |
1 files changed, 239 insertions, 322 deletions
diff --git a/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch b/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch index 00d9ca7cc2..7ec491daed 100644 --- a/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch +++ b/meta/packages/qemu/qemu-git/qemu-git-qemugl-host.patch | |||
@@ -1,21 +1,18 @@ | |||
1 | Index: git/Makefile.target | 1 | Index: qemu/Makefile.target |
2 | =================================================================== | 2 | =================================================================== |
3 | --- git.orig/Makefile.target 2009-12-02 13:13:56.000000000 +0000 | 3 | --- qemu.orig/Makefile.target 2010-05-11 18:05:22.955784896 -0400 |
4 | +++ git/Makefile.target 2010-01-14 16:34:58.000000000 +0000 | 4 | +++ qemu/Makefile.target 2010-05-14 13:34:07.721301429 -0400 |
5 | @@ -153,6 +153,10 @@ | 5 | @@ -46,6 +46,7 @@ libobj-$(CONFIG_SOFTFLOAT) += fpu/softfl |
6 | CPPFLAGS+=-I$(SRC_PATH)/fpu | 6 | libobj-$(CONFIG_NOSOFTFLOAT) += fpu/softfloat-native.o |
7 | LIBOBJS+= op_helper.o helper.o | 7 | libobj-y += op_helper.o helper.o |
8 | libobj-$(CONFIG_NEED_MMU) += mmu.o | ||
9 | +libobj-$(TARGET_I386) += helper_opengl.o opengl_exec.o | ||
10 | libobj-$(TARGET_ARM) += neon_helper.o iwmmxt_helper.o | ||
11 | libobj-$(TARGET_ALPHA) += alpha_palcode.o | ||
8 | 12 | ||
9 | +ifeq ($(TARGET_BASE_ARCH), i386) | 13 | @@ -82,6 +83,21 @@ op_helper.o cpu-exec.o: QEMU_CFLAGS += $ |
10 | +LIBOBJS+=helper_opengl.o opengl_exec.o | 14 | # cpu_signal_handler() in cpu-exec.c. |
11 | +endif | 15 | signal.o: QEMU_CFLAGS += $(HELPER_CFLAGS) |
12 | + | ||
13 | ifeq ($(TARGET_BASE_ARCH), arm) | ||
14 | LIBOBJS+= neon_helper.o iwmmxt_helper.o | ||
15 | endif | ||
16 | @@ -224,6 +228,21 @@ | ||
17 | |||
18 | cpu-exec.o: CFLAGS += $(HELPER_CFLAGS) | ||
19 | 16 | ||
20 | +parse_gl_h: parse_gl_h.c | 17 | +parse_gl_h: parse_gl_h.c |
21 | + $(HOST_CC) -g -o $@ $< | 18 | + $(HOST_CC) -g -o $@ $< |
@@ -35,29 +32,31 @@ Index: git/Makefile.target | |||
35 | ######################################################### | 32 | ######################################################### |
36 | # Linux user emulator target | 33 | # Linux user emulator target |
37 | 34 | ||
38 | @@ -584,7 +603,7 @@ | 35 | @@ -196,6 +212,10 @@ obj-i386-y += usb-uhci.o vmmouse.o vmpor |
39 | OBJS+= cirrus_vga.o apic.o parallel.o acpi.o piix_pci.o | 36 | obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o |
40 | OBJS+= usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o | 37 | obj-i386-y += ne2000-isa.o |
41 | OBJS += device-hotplug.o pci-hotplug.o | 38 | |
42 | -CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE | 39 | +ifeq ($(TARGET_BASE_ARCH), i386) |
43 | +CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE -DTARGET_OPENGL_OK | 40 | +QEMU_CFLAGS += -DTARGET_OPENGL_OK |
44 | endif | 41 | +endif |
45 | ifeq ($(TARGET_BASE_ARCH), ppc) | 42 | + |
46 | CPPFLAGS += -DHAS_AUDIO -DHAS_AUDIO_CHOICE | 43 | # shared objects |
47 | @@ -727,7 +746,7 @@ | 44 | obj-ppc-y = ppc.o ide/core.o ide/qdev.o ide/isa.o ide/pci.o ide/macio.o |
48 | $(QEMU_PROG): LIBS += $(SDL_LIBS) $(COCOA_LIBS) $(CURSES_LIBS) $(BRLAPI_LIBS) $(VDE_LIBS) | 45 | obj-ppc-y += ide/cmd646.o |
46 | @@ -303,6 +323,8 @@ vl.o: qemu-options.h | ||
49 | 47 | ||
50 | $(QEMU_PROG): $(OBJS) ../libqemu_common.a libqemu.a | 48 | monitor.o: qemu-monitor.h |
51 | - $(LINK) | ||
52 | + $(LINK) -lGL -lGLU | ||
53 | 49 | ||
54 | endif # !CONFIG_USER_ONLY | 50 | +LIBS += -lGL -lGLU |
51 | + | ||
52 | ARLIBS=../libqemu_common.a libqemu.a $(HWLIB) | ||
55 | 53 | ||
56 | Index: git/hw/pixel_ops.h | 54 | endif # CONFIG_SOFTMMU |
55 | Index: qemu/hw/pixel_ops.h | ||
57 | =================================================================== | 56 | =================================================================== |
58 | --- git.orig/hw/pixel_ops.h 2009-12-02 13:13:56.000000000 +0000 | 57 | --- qemu.orig/hw/pixel_ops.h 2010-05-11 18:05:22.959804376 -0400 |
59 | +++ git/hw/pixel_ops.h 2010-01-14 15:55:40.000000000 +0000 | 58 | +++ qemu/hw/pixel_ops.h 2010-05-12 12:10:40.092908994 -0400 |
60 | @@ -4,6 +4,12 @@ | 59 | @@ -4,6 +4,12 @@ static inline unsigned int rgb_to_pixel8 |
61 | return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6); | 60 | return ((r >> 5) << 5) | ((g >> 5) << 2) | (b >> 6); |
62 | } | 61 | } |
63 | 62 | ||
@@ -70,11 +69,11 @@ Index: git/hw/pixel_ops.h | |||
70 | static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g, | 69 | static inline unsigned int rgb_to_pixel15(unsigned int r, unsigned int g, |
71 | unsigned int b) | 70 | unsigned int b) |
72 | { | 71 | { |
73 | Index: git/hw/vmware_vga.c | 72 | Index: qemu/hw/vmware_vga.c |
74 | =================================================================== | 73 | =================================================================== |
75 | --- git.orig/hw/vmware_vga.c 2009-12-02 13:13:56.000000000 +0000 | 74 | --- qemu.orig/hw/vmware_vga.c 2010-05-11 18:05:22.959804376 -0400 |
76 | +++ git/hw/vmware_vga.c 2010-01-14 15:55:40.000000000 +0000 | 75 | +++ qemu/hw/vmware_vga.c 2010-05-12 12:10:40.124785891 -0400 |
77 | @@ -484,6 +484,8 @@ | 76 | @@ -489,6 +489,8 @@ static inline void vmsvga_cursor_define( |
78 | 77 | ||
79 | #define CMD(f) le32_to_cpu(s->cmd->f) | 78 | #define CMD(f) le32_to_cpu(s->cmd->f) |
80 | 79 | ||
@@ -83,7 +82,7 @@ Index: git/hw/vmware_vga.c | |||
83 | static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s) | 82 | static inline int vmsvga_fifo_empty(struct vmsvga_state_s *s) |
84 | { | 83 | { |
85 | if (!s->config || !s->enable) | 84 | if (!s->config || !s->enable) |
86 | @@ -493,11 +495,18 @@ | 85 | @@ -498,11 +500,18 @@ static inline int vmsvga_fifo_empty(stru |
87 | 86 | ||
88 | static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s) | 87 | static inline uint32_t vmsvga_fifo_read_raw(struct vmsvga_state_s *s) |
89 | { | 88 | { |
@@ -106,7 +105,7 @@ Index: git/hw/vmware_vga.c | |||
106 | } | 105 | } |
107 | 106 | ||
108 | static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) | 107 | static inline uint32_t vmsvga_fifo_read(struct vmsvga_state_s *s) |
109 | @@ -507,12 +516,12 @@ | 108 | @@ -512,12 +521,12 @@ static inline uint32_t vmsvga_fifo_read( |
110 | 109 | ||
111 | static void vmsvga_fifo_run(struct vmsvga_state_s *s) | 110 | static void vmsvga_fifo_run(struct vmsvga_state_s *s) |
112 | { | 111 | { |
@@ -121,7 +120,7 @@ Index: git/hw/vmware_vga.c | |||
121 | case SVGA_CMD_UPDATE: | 120 | case SVGA_CMD_UPDATE: |
122 | case SVGA_CMD_UPDATE_VERBOSE: | 121 | case SVGA_CMD_UPDATE_VERBOSE: |
123 | x = vmsvga_fifo_read(s); | 122 | x = vmsvga_fifo_read(s); |
124 | @@ -612,7 +621,7 @@ | 123 | @@ -617,7 +626,7 @@ static void vmsvga_fifo_run(struct vmsvg |
125 | while (args --) | 124 | while (args --) |
126 | vmsvga_fifo_read(s); | 125 | vmsvga_fifo_read(s); |
127 | printf("%s: Unknown command 0x%02x in SVGA command FIFO\n", | 126 | printf("%s: Unknown command 0x%02x in SVGA command FIFO\n", |
@@ -130,71 +129,24 @@ Index: git/hw/vmware_vga.c | |||
130 | break; | 129 | break; |
131 | } | 130 | } |
132 | 131 | ||
133 | @@ -914,8 +923,9 @@ | 132 | @@ -1136,6 +1145,12 @@ static void vmsvga_init(struct vmsvga_st |
134 | s->width = -1; | ||
135 | s->height = -1; | ||
136 | s->svgaid = SVGA_ID; | ||
137 | - s->depth = 24; | ||
138 | + s->depth = 32; | ||
139 | s->bypp = (s->depth + 7) >> 3; | ||
140 | + s->bypp = 4; /* XXX: until we can get host's actual depth */ | ||
141 | s->cursor.on = 0; | ||
142 | s->redraw_fifo_first = 0; | ||
143 | s->redraw_fifo_last = 0; | ||
144 | @@ -1140,6 +1150,12 @@ | ||
145 | /* XXX: use optimized standard vga accesses */ | ||
146 | cpu_register_physical_memory(VBE_DISPI_LFB_PHYSICAL_ADDRESS, | ||
147 | vga_ram_size, vga_ram_offset); | ||
148 | + | ||
149 | +#ifdef EMBED_STDVGA | ||
150 | + s->map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS; | ||
151 | + s->map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size; | ||
152 | + vga_dirty_log_start((VGAState *) s); | ||
153 | +#endif | ||
154 | #endif | ||
155 | } | ||
156 | 133 | ||
157 | Index: git/kqemu.c | 134 | vga_init_vbe(&s->vga); |
158 | =================================================================== | ||
159 | --- git.orig/kqemu.c 2009-12-02 13:13:56.000000000 +0000 | ||
160 | +++ git/kqemu.c 2010-01-14 15:55:40.000000000 +0000 | ||
161 | @@ -93,6 +93,8 @@ | ||
162 | int qpi_io_memory; | ||
163 | uint32_t kqemu_comm_base; /* physical address of the QPI communication page */ | ||
164 | 135 | ||
165 | +extern int enable_gl; | 136 | +#ifdef EMBED_STDVGA |
137 | + s->vga.map_addr = VBE_DISPI_LFB_PHYSICAL_ADDRESS; | ||
138 | + s->vga.map_end = VBE_DISPI_LFB_PHYSICAL_ADDRESS + vga_ram_size; | ||
139 | + vga_dirty_log_start(s); | ||
140 | +#endif | ||
166 | + | 141 | + |
167 | #define cpuid(index, eax, ebx, ecx, edx) \ | 142 | rom_add_vga(VGABIOS_FILENAME); |
168 | asm volatile ("cpuid" \ | ||
169 | : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \ | ||
170 | @@ -860,6 +862,22 @@ | ||
171 | else | ||
172 | env->hflags &= ~HF_OSFXSR_MASK; | ||
173 | 143 | ||
174 | + /* OPENGL Stuff */ | 144 | vmsvga_reset(s); |
175 | + if (enable_gl && ((env->hflags & HF_CPL_MASK) == 3)) { | 145 | Index: qemu/qemu-char.c |
176 | + int index = (env->eip >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); | ||
177 | + if (env->segs[R_CS].base != 0) | ||
178 | + fprintf(stderr, "env->segs[R_CS].base != 0 !\n"); | ||
179 | + else if (__builtin_expect(env->tlb_table[1][index].addr_code != | ||
180 | + (env->eip & TARGET_PAGE_MASK), 0)) | ||
181 | + ldub_code(env->eip); | ||
182 | + | ||
183 | + if (env->tlb_table[1][index].addend) { | ||
184 | + unsigned char *ptr = env->eip + env->tlb_table[1][index].addend; | ||
185 | + if (ptr[0] == 0xcd && ptr[1] == 0x99) | ||
186 | + helper_opengl(); | ||
187 | + } | ||
188 | + } | ||
189 | + | ||
190 | LOG_INT("kqemu: kqemu_cpu_exec: ret=0x%x\n", ret); | ||
191 | if (ret == KQEMU_RET_SYSCALL) { | ||
192 | /* syscall instruction */ | ||
193 | Index: git/qemu-char.c | ||
194 | =================================================================== | 146 | =================================================================== |
195 | --- git.orig/qemu-char.c 2009-12-02 13:13:56.000000000 +0000 | 147 | --- qemu.orig/qemu-char.c 2010-05-11 18:05:22.955784896 -0400 |
196 | +++ git/qemu-char.c 2010-01-14 15:55:40.000000000 +0000 | 148 | +++ qemu/qemu-char.c 2010-05-12 17:20:54.280909040 -0400 |
197 | @@ -2112,6 +2112,69 @@ | 149 | @@ -2232,6 +2232,69 @@ static CharDriverState *qemu_chr_open_so |
198 | return NULL; | 150 | return NULL; |
199 | } | 151 | } |
200 | 152 | ||
@@ -253,7 +205,7 @@ Index: git/qemu-char.c | |||
253 | + chr->opaque = chr; | 205 | + chr->opaque = chr; |
254 | + chr->chr_write = opengl_chr_write; | 206 | + chr->chr_write = opengl_chr_write; |
255 | + | 207 | + |
256 | + qemu_chr_reset(chr); | 208 | + qemu_chr_generic_open(chr); |
257 | + | 209 | + |
258 | + return chr; | 210 | + return chr; |
259 | +} | 211 | +} |
@@ -261,57 +213,66 @@ Index: git/qemu-char.c | |||
261 | +#define qemu_chr_open_opengl() 0 | 213 | +#define qemu_chr_open_opengl() 0 |
262 | +#endif | 214 | +#endif |
263 | + | 215 | + |
264 | CharDriverState *qemu_chr_open(const char *label, const char *filename, void (*init)(struct CharDriverState *s)) | 216 | QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename) |
265 | { | 217 | { |
266 | const char *p; | 218 | char host[65], port[33], width[8], height[8]; |
267 | @@ -2192,6 +2255,9 @@ | 219 | @@ -2352,6 +2415,10 @@ QemuOpts *qemu_chr_parse_compat(const ch |
268 | chr = chr_baum_init(); | 220 | qemu_opt_set(opts, "path", filename); |
269 | } else | 221 | return opts; |
270 | #endif | ||
271 | + if (!strcmp(filename, "opengl")) { | ||
272 | + chr = qemu_chr_open_opengl(); | ||
273 | + } else | ||
274 | { | ||
275 | chr = NULL; | ||
276 | } | 222 | } |
277 | Index: git/sdl.c | 223 | + if (!strcmp(filename, "opengl")){ |
224 | + qemu_opt_set(opts, "backend", "opengl"); | ||
225 | + return opts; | ||
226 | + } | ||
227 | |||
228 | fail: | ||
229 | fprintf(stderr, "%s: fail on \"%s\"\n", __FUNCTION__, filename); | ||
230 | @@ -2368,6 +2435,7 @@ static const struct { | ||
231 | { .name = "udp", .open = qemu_chr_open_udp }, | ||
232 | { .name = "msmouse", .open = qemu_chr_open_msmouse }, | ||
233 | { .name = "vc", .open = text_console_init }, | ||
234 | + { .name = "opengl", .open = qemu_chr_open_opengl }, | ||
235 | #ifdef _WIN32 | ||
236 | { .name = "file", .open = qemu_chr_open_win_file_out }, | ||
237 | { .name = "pipe", .open = qemu_chr_open_win_pipe }, | ||
238 | Index: qemu/sdl.c | ||
278 | =================================================================== | 239 | =================================================================== |
279 | --- git.orig/sdl.c 2009-12-02 13:13:56.000000000 +0000 | 240 | --- qemu.orig/sdl.c 2010-05-11 18:05:22.959804376 -0400 |
280 | +++ git/sdl.c 2010-01-14 15:55:40.000000000 +0000 | 241 | +++ qemu/sdl.c 2010-05-12 12:10:40.128783931 -0400 |
281 | @@ -54,6 +54,8 @@ | 242 | @@ -58,6 +58,8 @@ static uint8_t allocator; |
282 | static int guest_x, guest_y; | 243 | static SDL_PixelFormat host_format; |
283 | static SDL_Cursor *guest_sprite = 0; | 244 | static int scaling_active = 0; |
284 | 245 | ||
285 | +extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window); | 246 | +extern void opengl_exec_set_parent_window(Display* _dpy, Window _parent_window); |
286 | + | 247 | + |
287 | static void sdl_update(DisplayState *ds, int x, int y, int w, int h) | 248 | static void sdl_update(DisplayState *ds, int x, int y, int w, int h) |
288 | { | 249 | { |
289 | SDL_Rect rec; | 250 | // printf("updating x=%d y=%d w=%d h=%d\n", x, y, w, h); |
290 | @@ -85,7 +87,9 @@ | 251 | @@ -119,12 +121,22 @@ static void do_sdl_resize(int new_width, |
291 | 252 | ||
292 | static void sdl_resize(DisplayState *ds) | 253 | static void sdl_resize(DisplayState *ds) |
293 | { | 254 | { |
255 | - if (!allocator) { | ||
294 | + SDL_SysWMinfo info; | 256 | + SDL_SysWMinfo info; |
295 | int flags; | ||
296 | + static Display *dpy; | 257 | + static Display *dpy; |
297 | |||
298 | // printf("resizing to %d %d\n", w, h); | ||
299 | |||
300 | @@ -104,6 +108,13 @@ | ||
301 | } | ||
302 | |||
303 | sdl_setdata(ds); | ||
304 | + | 258 | + |
305 | + SDL_GetWMInfo(&info); | 259 | + if (!allocator) { |
306 | + if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display && | 260 | if (!scaling_active) |
307 | + (!dpy || dpy == info.info.x11.display)) { | 261 | do_sdl_resize(ds_get_width(ds), ds_get_height(ds), 0); |
308 | + dpy = info.info.x11.display; | 262 | else if (real_screen->format->BitsPerPixel != ds_get_bits_per_pixel(ds)) |
309 | + opengl_exec_set_parent_window(dpy, info.info.x11.window); | 263 | do_sdl_resize(real_screen->w, real_screen->h, ds_get_bits_per_pixel(ds)); |
310 | + } | 264 | sdl_setdata(ds); |
311 | } | 265 | + |
312 | 266 | + SDL_GetWMInfo(&info); | |
313 | /* generic keyboard conversion */ | 267 | + if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display && |
314 | @@ -323,7 +334,7 @@ | 268 | + (!dpy || dpy == info.info.x11.display)) { |
269 | + dpy = info.info.x11.display; | ||
270 | + opengl_exec_set_parent_window(dpy, info.info.x11.window); | ||
271 | + } | ||
272 | } else { | ||
273 | if (guest_screen != NULL) { | ||
274 | SDL_FreeSurface(guest_screen); | ||
275 | @@ -453,7 +465,7 @@ static void sdl_show_cursor(void) | ||
315 | 276 | ||
316 | if (!kbd_mouse_is_absolute()) { | 277 | if (!kbd_mouse_is_absolute()) { |
317 | SDL_ShowCursor(1); | 278 | SDL_ShowCursor(1); |
@@ -320,7 +281,7 @@ Index: git/sdl.c | |||
320 | (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) | 281 | (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) |
321 | SDL_SetCursor(guest_sprite); | 282 | SDL_SetCursor(guest_sprite); |
322 | else | 283 | else |
323 | @@ -334,7 +345,8 @@ | 284 | @@ -464,7 +476,8 @@ static void sdl_show_cursor(void) |
324 | static void sdl_grab_start(void) | 285 | static void sdl_grab_start(void) |
325 | { | 286 | { |
326 | if (guest_cursor) { | 287 | if (guest_cursor) { |
@@ -330,7 +291,7 @@ Index: git/sdl.c | |||
330 | if (!kbd_mouse_is_absolute() && !absolute_enabled) | 291 | if (!kbd_mouse_is_absolute() && !absolute_enabled) |
331 | SDL_WarpMouse(guest_x, guest_y); | 292 | SDL_WarpMouse(guest_x, guest_y); |
332 | } else | 293 | } else |
333 | @@ -375,8 +387,8 @@ | 294 | @@ -505,8 +518,8 @@ static void sdl_send_mouse_event(int dx, |
334 | absolute_enabled = 1; | 295 | absolute_enabled = 1; |
335 | } | 296 | } |
336 | 297 | ||
@@ -341,7 +302,7 @@ Index: git/sdl.c | |||
341 | } else if (absolute_enabled) { | 302 | } else if (absolute_enabled) { |
342 | sdl_show_cursor(); | 303 | sdl_show_cursor(); |
343 | absolute_enabled = 0; | 304 | absolute_enabled = 0; |
344 | @@ -606,7 +618,8 @@ | 305 | @@ -760,7 +773,8 @@ static void sdl_mouse_warp(int x, int y, |
345 | if (!guest_cursor) | 306 | if (!guest_cursor) |
346 | sdl_show_cursor(); | 307 | sdl_show_cursor(); |
347 | if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) { | 308 | if (gui_grab || kbd_mouse_is_absolute() || absolute_enabled) { |
@@ -351,18 +312,7 @@ Index: git/sdl.c | |||
351 | if (!kbd_mouse_is_absolute() && !absolute_enabled) | 312 | if (!kbd_mouse_is_absolute() && !absolute_enabled) |
352 | SDL_WarpMouse(x, y); | 313 | SDL_WarpMouse(x, y); |
353 | } | 314 | } |
354 | @@ -631,6 +644,10 @@ | 315 | @@ -814,7 +828,7 @@ static void sdl_mouse_define(int width, |
355 | line = image; | ||
356 | for (x = 0; x < width; x ++, dst ++) { | ||
357 | switch (bpp) { | ||
358 | + case 32: | ||
359 | + src = *(line ++); src |= *(line ++); | ||
360 | + src = *(line ++); src |= *(line ++); | ||
361 | + break; | ||
362 | case 24: | ||
363 | src = *(line ++); src |= *(line ++); src |= *(line ++); | ||
364 | break; | ||
365 | @@ -657,7 +674,7 @@ | ||
366 | } | 316 | } |
367 | guest_sprite = SDL_CreateCursor(sprite, mask, width, height, hot_x, hot_y); | 317 | guest_sprite = SDL_CreateCursor(sprite, mask, width, height, hot_x, hot_y); |
368 | 318 | ||
@@ -371,17 +321,17 @@ Index: git/sdl.c | |||
371 | (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) | 321 | (gui_grab || kbd_mouse_is_absolute() || absolute_enabled)) |
372 | SDL_SetCursor(guest_sprite); | 322 | SDL_SetCursor(guest_sprite); |
373 | } | 323 | } |
374 | @@ -673,6 +690,7 @@ | 324 | @@ -831,6 +845,7 @@ void sdl_display_init(DisplayState *ds, |
375 | { | ||
376 | int flags; | 325 | int flags; |
377 | uint8_t data = 0; | 326 | uint8_t data = 0; |
327 | DisplayAllocator *da; | ||
378 | + SDL_SysWMinfo info; | 328 | + SDL_SysWMinfo info; |
329 | const SDL_VideoInfo *vi; | ||
379 | 330 | ||
380 | #if defined(__APPLE__) | 331 | #if defined(__APPLE__) |
381 | /* always use generic keymaps */ | 332 | @@ -855,6 +870,12 @@ void sdl_display_init(DisplayState *ds, |
382 | @@ -694,6 +712,12 @@ | 333 | vi = SDL_GetVideoInfo(); |
383 | exit(1); | 334 | host_format = *(vi->vfmt); |
384 | } | ||
385 | 335 | ||
386 | + SDL_GetWMInfo(&info); | 336 | + SDL_GetWMInfo(&info); |
387 | + if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display) | 337 | + if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display) |
@@ -392,7 +342,7 @@ Index: git/sdl.c | |||
392 | dcl = qemu_mallocz(sizeof(DisplayChangeListener)); | 342 | dcl = qemu_mallocz(sizeof(DisplayChangeListener)); |
393 | dcl->dpy_update = sdl_update; | 343 | dcl->dpy_update = sdl_update; |
394 | dcl->dpy_resize = sdl_resize; | 344 | dcl->dpy_resize = sdl_resize; |
395 | @@ -717,4 +741,9 @@ | 345 | @@ -890,4 +911,9 @@ void sdl_display_init(DisplayState *ds, |
396 | gui_fullscreen_initial_grab = 1; | 346 | gui_fullscreen_initial_grab = 1; |
397 | sdl_grab_start(); | 347 | sdl_grab_start(); |
398 | } | 348 | } |
@@ -402,31 +352,19 @@ Index: git/sdl.c | |||
402 | + opengl_exec_set_parent_window(info.info.x11.display, | 352 | + opengl_exec_set_parent_window(info.info.x11.display, |
403 | + info.info.x11.window); | 353 | + info.info.x11.window); |
404 | } | 354 | } |
405 | Index: git/slirp/ctl.h | 355 | Index: qemu/slirp/udp.c |
406 | =================================================================== | 356 | =================================================================== |
407 | --- git.orig/slirp/ctl.h 2009-12-02 13:13:56.000000000 +0000 | 357 | --- qemu.orig/slirp/udp.c 2010-05-11 18:05:22.955784896 -0400 |
408 | +++ git/slirp/ctl.h 2010-01-14 15:55:40.000000000 +0000 | 358 | +++ qemu/slirp/udp.c 2010-05-12 12:10:40.129784123 -0400 |
409 | @@ -2,6 +2,7 @@ | ||
410 | #define CTL_EXEC 1 | ||
411 | #define CTL_ALIAS 2 | ||
412 | #define CTL_DNS 3 | ||
413 | +#define CTL_OPENGL 6 | ||
414 | |||
415 | #define CTL_SPECIAL "10.0.2.0" | ||
416 | #define CTL_LOCAL "10.0.2.15" | ||
417 | Index: git/slirp/udp.c | ||
418 | =================================================================== | ||
419 | --- git.orig/slirp/udp.c 2009-12-02 13:13:56.000000000 +0000 | ||
420 | +++ git/slirp/udp.c 2010-01-14 15:55:40.000000000 +0000 | ||
421 | @@ -40,6 +40,7 @@ | 359 | @@ -40,6 +40,7 @@ |
422 | 360 | ||
423 | #include <slirp.h> | 361 | #include <slirp.h> |
424 | #include "ip_icmp.h" | 362 | #include "ip_icmp.h" |
425 | +#include "bswap.h" | 363 | +#include "bswap.h" |
426 | 364 | ||
427 | #ifdef LOG_ENABLED | 365 | static u_int8_t udp_tos(struct socket *so); |
428 | struct udpstat udpstat; | 366 | |
429 | @@ -153,6 +154,11 @@ | 367 | @@ -125,6 +126,11 @@ udp_input(register struct mbuf *m, int i |
430 | goto bad; | 368 | goto bad; |
431 | } | 369 | } |
432 | 370 | ||
@@ -435,25 +373,25 @@ Index: git/slirp/udp.c | |||
435 | + goto bad; | 373 | + goto bad; |
436 | + } | 374 | + } |
437 | + | 375 | + |
438 | if (slirp_restrict) | 376 | if (slirp->restricted) { |
439 | goto bad; | 377 | goto bad; |
440 | 378 | } | |
441 | Index: git/sysemu.h | 379 | Index: qemu/sysemu.h |
442 | =================================================================== | 380 | =================================================================== |
443 | --- git.orig/sysemu.h 2009-12-02 13:13:56.000000000 +0000 | 381 | --- qemu.orig/sysemu.h 2010-05-11 18:05:22.959804376 -0400 |
444 | +++ git/sysemu.h 2010-01-14 15:55:40.000000000 +0000 | 382 | +++ qemu/sysemu.h 2010-05-12 12:10:40.129784123 -0400 |
445 | @@ -96,6 +96,7 @@ | 383 | @@ -141,6 +141,7 @@ extern int semihosting_enabled; |
446 | extern int no_quit; | ||
447 | extern int semihosting_enabled; | ||
448 | extern int old_param; | 384 | extern int old_param; |
385 | extern int boot_menu; | ||
386 | extern QEMUClock *rtc_clock; | ||
449 | +extern int force_pointer; | 387 | +extern int force_pointer; |
450 | extern const char *bootp_filename; | ||
451 | 388 | ||
452 | #ifdef USE_KQEMU | 389 | #define MAX_NODES 64 |
453 | Index: git/target-i386/beginend_funcs.sh | 390 | extern int nb_numa_nodes; |
391 | Index: qemu/target-i386/beginend_funcs.sh | ||
454 | =================================================================== | 392 | =================================================================== |
455 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 393 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
456 | +++ git/target-i386/beginend_funcs.sh 2010-01-14 15:55:40.000000000 +0000 | 394 | +++ qemu/target-i386/beginend_funcs.sh 2010-05-12 12:10:40.129784123 -0400 |
457 | @@ -0,0 +1,23 @@ | 395 | @@ -0,0 +1,23 @@ |
458 | +#! /bin/sh | 396 | +#! /bin/sh |
459 | +# Copyright 2008 (C) Intel Corporation | 397 | +# Copyright 2008 (C) Intel Corporation |
@@ -478,10 +416,10 @@ Index: git/target-i386/beginend_funcs.sh | |||
478 | +echo -e MAGIC_MACRO\(glCallList\)\\n | 416 | +echo -e MAGIC_MACRO\(glCallList\)\\n |
479 | +echo -e MAGIC_MACRO\(glCallLists\)\\n | 417 | +echo -e MAGIC_MACRO\(glCallLists\)\\n |
480 | +echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n | 418 | +echo -e MAGIC_MACRO\(glEdgeFlag{,v}\)\\n |
481 | Index: git/target-i386/ghash.c | 419 | Index: qemu/target-i386/ghash.c |
482 | =================================================================== | 420 | =================================================================== |
483 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 421 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
484 | +++ git/target-i386/ghash.c 2010-01-14 15:55:40.000000000 +0000 | 422 | +++ qemu/target-i386/ghash.c 2010-05-12 12:10:40.130781590 -0400 |
485 | @@ -0,0 +1,347 @@ | 423 | @@ -0,0 +1,347 @@ |
486 | +/* This is a modified and simplified version of original ghash.c */ | 424 | +/* This is a modified and simplified version of original ghash.c */ |
487 | + | 425 | + |
@@ -830,10 +768,10 @@ Index: git/target-i386/ghash.c | |||
830 | + hash_node = next; | 768 | + hash_node = next; |
831 | + } | 769 | + } |
832 | +} | 770 | +} |
833 | Index: git/target-i386/ghash.h | 771 | Index: qemu/target-i386/ghash.h |
834 | =================================================================== | 772 | =================================================================== |
835 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 773 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
836 | +++ git/target-i386/ghash.h 2010-01-14 15:55:40.000000000 +0000 | 774 | +++ qemu/target-i386/ghash.h 2010-05-12 12:10:40.130781590 -0400 |
837 | @@ -0,0 +1,59 @@ | 775 | @@ -0,0 +1,59 @@ |
838 | +/* This is a modified and simplified version of original ghash.h */ | 776 | +/* This is a modified and simplified version of original ghash.h */ |
839 | + | 777 | + |
@@ -894,10 +832,10 @@ Index: git/target-i386/ghash.h | |||
894 | + | 832 | + |
895 | +#endif /* __SIMPLE_HASH_H__ */ | 833 | +#endif /* __SIMPLE_HASH_H__ */ |
896 | + | 834 | + |
897 | Index: git/target-i386/gl_func_perso.h | 835 | Index: qemu/target-i386/gl_func_perso.h |
898 | =================================================================== | 836 | =================================================================== |
899 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 837 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
900 | +++ git/target-i386/gl_func_perso.h 2010-01-14 15:55:40.000000000 +0000 | 838 | +++ qemu/target-i386/gl_func_perso.h 2010-05-12 12:10:40.130781590 -0400 |
901 | @@ -0,0 +1,135 @@ | 839 | @@ -0,0 +1,135 @@ |
902 | +/* | 840 | +/* |
903 | + * Hand-implemented GL/GLX API | 841 | + * Hand-implemented GL/GLX API |
@@ -1034,11 +972,11 @@ Index: git/target-i386/gl_func_perso.h | |||
1034 | +MAGIC_MACRO(_glGetSelectBuffer_fake), | 972 | +MAGIC_MACRO(_glGetSelectBuffer_fake), |
1035 | +MAGIC_MACRO(_glFeedbackBuffer_fake), | 973 | +MAGIC_MACRO(_glFeedbackBuffer_fake), |
1036 | +MAGIC_MACRO(_glGetFeedbackBuffer_fake), | 974 | +MAGIC_MACRO(_glGetFeedbackBuffer_fake), |
1037 | Index: git/target-i386/helper.c | 975 | Index: qemu/target-i386/helper.c |
1038 | =================================================================== | 976 | =================================================================== |
1039 | --- git.orig/target-i386/helper.c 2009-12-02 13:13:56.000000000 +0000 | 977 | --- qemu.orig/target-i386/helper.c 2010-05-11 18:05:22.955784896 -0400 |
1040 | +++ git/target-i386/helper.c 2010-01-14 15:55:40.000000000 +0000 | 978 | +++ qemu/target-i386/helper.c 2010-05-12 12:10:40.131781711 -0400 |
1041 | @@ -1326,7 +1326,7 @@ | 979 | @@ -1433,7 +1433,7 @@ target_phys_addr_t cpu_get_phys_page_deb |
1042 | } | 980 | } |
1043 | 981 | ||
1044 | page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1); | 982 | page_offset = (addr & TARGET_PAGE_MASK) & (page_size - 1); |
@@ -1047,21 +985,21 @@ Index: git/target-i386/helper.c | |||
1047 | return paddr; | 985 | return paddr; |
1048 | } | 986 | } |
1049 | 987 | ||
1050 | Index: git/target-i386/helper.h | 988 | Index: qemu/target-i386/helper.h |
1051 | =================================================================== | 989 | =================================================================== |
1052 | --- git.orig/target-i386/helper.h 2009-12-02 13:13:56.000000000 +0000 | 990 | --- qemu.orig/target-i386/helper.h 2010-05-11 18:05:22.956804503 -0400 |
1053 | +++ git/target-i386/helper.h 2010-01-14 15:55:40.000000000 +0000 | 991 | +++ qemu/target-i386/helper.h 2010-05-12 12:10:40.131781711 -0400 |
1054 | @@ -214,4 +214,6 @@ | 992 | @@ -217,4 +217,6 @@ DEF_HELPER_2(rclq, tl, tl, tl) |
1055 | DEF_HELPER_2(rcrq, tl, tl, tl) | 993 | DEF_HELPER_2(rcrq, tl, tl, tl) |
1056 | #endif | 994 | #endif |
1057 | 995 | ||
1058 | +DEF_HELPER_0(opengl, void) | 996 | +DEF_HELPER_0(opengl, void) |
1059 | + | 997 | + |
1060 | #include "def-helper.h" | 998 | #include "def-helper.h" |
1061 | Index: git/target-i386/helper_opengl.c | 999 | Index: qemu/target-i386/helper_opengl.c |
1062 | =================================================================== | 1000 | =================================================================== |
1063 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 1001 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
1064 | +++ git/target-i386/helper_opengl.c 2010-01-14 16:36:59.000000000 +0000 | 1002 | +++ qemu/target-i386/helper_opengl.c 2010-05-12 12:10:40.132781622 -0400 |
1065 | @@ -0,0 +1,1207 @@ | 1003 | @@ -0,0 +1,1207 @@ |
1066 | +/* | 1004 | +/* |
1067 | + * Host-side implementation of GL/GLX API | 1005 | + * Host-side implementation of GL/GLX API |
@@ -1148,16 +1086,16 @@ Index: git/target-i386/helper_opengl.c | |||
1148 | + cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1)); | 1086 | + cpu_x86_handle_mmu_fault((CPUState *) env, addr, 0, 1, 1)); |
1149 | + return NULL; | 1087 | + return NULL; |
1150 | + } else { | 1088 | + } else { |
1151 | + if (ret + TARGET_PAGE_SIZE <= phys_ram_size) { | 1089 | + if (ret + TARGET_PAGE_SIZE <= last_ram_offset) { |
1152 | + return phys_ram_base + ret + | 1090 | + return qemu_get_ram_ptr(ret + |
1153 | + (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1)); | 1091 | + (((target_ulong) addr) & (TARGET_PAGE_SIZE - 1))); |
1154 | + } else { | 1092 | + } else { |
1155 | + fprintf(stderr, | 1093 | + fprintf(stderr, |
1156 | + "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == " | 1094 | + "cpu_get_phys_page_debug(env, " TARGET_FMT_lx ") == " |
1157 | + TARGET_FMT_lx "\n", addr, ret); | 1095 | + TARGET_FMT_lx "\n", addr, ret); |
1158 | + fprintf(stderr, | 1096 | + fprintf(stderr, |
1159 | + "ret=" TARGET_FMT_lx " phys_ram_size= " TARGET_FMT_lx | 1097 | + "ret=" TARGET_FMT_lx " last_ram_offset= " TARGET_FMT_lx |
1160 | + "\n", ret, (target_ulong) phys_ram_size); | 1098 | + "\n", ret, (target_ulong) last_ram_offset); |
1161 | + return NULL; | 1099 | + return NULL; |
1162 | + } | 1100 | + } |
1163 | + } | 1101 | + } |
@@ -2270,11 +2208,11 @@ Index: git/target-i386/helper_opengl.c | |||
2270 | + io_register(); | 2208 | + io_register(); |
2271 | +} | 2209 | +} |
2272 | +#endif | 2210 | +#endif |
2273 | Index: git/target-i386/kvm.c | 2211 | Index: qemu/target-i386/kvm.c |
2274 | =================================================================== | 2212 | =================================================================== |
2275 | --- git.orig/target-i386/kvm.c 2009-12-02 13:13:56.000000000 +0000 | 2213 | --- qemu.orig/target-i386/kvm.c 2010-05-11 18:05:22.956804503 -0400 |
2276 | +++ git/target-i386/kvm.c 2010-01-14 15:55:40.000000000 +0000 | 2214 | +++ qemu/target-i386/kvm.c 2010-05-12 12:10:40.132781622 -0400 |
2277 | @@ -480,7 +480,7 @@ | 2215 | @@ -528,7 +528,7 @@ static int kvm_get_fpu(CPUState *env) |
2278 | return 0; | 2216 | return 0; |
2279 | } | 2217 | } |
2280 | 2218 | ||
@@ -2283,10 +2221,10 @@ Index: git/target-i386/kvm.c | |||
2283 | { | 2221 | { |
2284 | struct kvm_sregs sregs; | 2222 | struct kvm_sregs sregs; |
2285 | uint32_t hflags; | 2223 | uint32_t hflags; |
2286 | Index: git/target-i386/mesa_enums.c | 2224 | Index: qemu/target-i386/mesa_enums.c |
2287 | =================================================================== | 2225 | =================================================================== |
2288 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 2226 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
2289 | +++ git/target-i386/mesa_enums.c 2010-01-14 15:55:40.000000000 +0000 | 2227 | +++ qemu/target-i386/mesa_enums.c 2010-05-12 12:10:40.163783695 -0400 |
2290 | @@ -0,0 +1,4890 @@ | 2228 | @@ -0,0 +1,4890 @@ |
2291 | +/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */ | 2229 | +/* DO NOT EDIT - This file generated automatically by gl_enums.py (from Mesa) script */ |
2292 | + | 2230 | + |
@@ -7178,10 +7116,10 @@ Index: git/target-i386/mesa_enums.c | |||
7178 | +} | 7116 | +} |
7179 | + | 7117 | + |
7180 | + | 7118 | + |
7181 | Index: git/target-i386/mesa_get.c | 7119 | Index: qemu/target-i386/mesa_get.c |
7182 | =================================================================== | 7120 | =================================================================== |
7183 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 7121 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
7184 | +++ git/target-i386/mesa_get.c 2010-01-14 15:55:40.000000000 +0000 | 7122 | +++ qemu/target-i386/mesa_get.c 2010-05-12 12:10:40.171781452 -0400 |
7185 | @@ -0,0 +1,5563 @@ | 7123 | @@ -0,0 +1,5563 @@ |
7186 | + | 7124 | + |
7187 | +/*** | 7125 | +/*** |
@@ -12746,10 +12684,10 @@ Index: git/target-i386/mesa_get.c | |||
12746 | + params[i] = (GLdouble) values[i]; | 12684 | + params[i] = (GLdouble) values[i]; |
12747 | +} | 12685 | +} |
12748 | + | 12686 | + |
12749 | Index: git/target-i386/mesa_gl.h | 12687 | Index: qemu/target-i386/mesa_gl.h |
12750 | =================================================================== | 12688 | =================================================================== |
12751 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 12689 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
12752 | +++ git/target-i386/mesa_gl.h 2010-01-14 15:55:40.000000000 +0000 | 12690 | +++ qemu/target-i386/mesa_gl.h 2010-05-12 12:10:40.173780926 -0400 |
12753 | @@ -0,0 +1,2251 @@ | 12691 | @@ -0,0 +1,2251 @@ |
12754 | +/* | 12692 | +/* |
12755 | + * Mesa 3-D graphics library | 12693 | + * Mesa 3-D graphics library |
@@ -15002,10 +14940,10 @@ Index: git/target-i386/mesa_gl.h | |||
15002 | +#endif | 14940 | +#endif |
15003 | + | 14941 | + |
15004 | +#endif /* __gl_h_ */ | 14942 | +#endif /* __gl_h_ */ |
15005 | Index: git/target-i386/mesa_glext.h | 14943 | Index: qemu/target-i386/mesa_glext.h |
15006 | =================================================================== | 14944 | =================================================================== |
15007 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 14945 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
15008 | +++ git/target-i386/mesa_glext.h 2010-01-14 15:55:40.000000000 +0000 | 14946 | +++ qemu/target-i386/mesa_glext.h 2010-05-12 12:10:40.180780867 -0400 |
15009 | @@ -0,0 +1,7279 @@ | 14947 | @@ -0,0 +1,7279 @@ |
15010 | +#ifndef __glext_h_ | 14948 | +#ifndef __glext_h_ |
15011 | +#define __glext_h_ | 14949 | +#define __glext_h_ |
@@ -22286,10 +22224,10 @@ Index: git/target-i386/mesa_glext.h | |||
22286 | + | 22224 | + |
22287 | +/* ERO */ | 22225 | +/* ERO */ |
22288 | +GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data); | 22226 | +GLAPI void GLAPIENTRY fake_gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *data); |
22289 | Index: git/target-i386/mesa_glu.h | 22227 | Index: qemu/target-i386/mesa_glu.h |
22290 | =================================================================== | 22228 | =================================================================== |
22291 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 22229 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
22292 | +++ git/target-i386/mesa_glu.h 2010-01-14 15:55:40.000000000 +0000 | 22230 | +++ qemu/target-i386/mesa_glu.h 2010-05-12 12:10:40.181781686 -0400 |
22293 | @@ -0,0 +1,354 @@ | 22231 | @@ -0,0 +1,354 @@ |
22294 | +/* | 22232 | +/* |
22295 | +** License Applicability. Except to the extent portions of this file are | 22233 | +** License Applicability. Except to the extent portions of this file are |
@@ -22645,10 +22583,10 @@ Index: git/target-i386/mesa_glu.h | |||
22645 | +#endif | 22583 | +#endif |
22646 | + | 22584 | + |
22647 | +#endif /* __glu_h__ */ | 22585 | +#endif /* __glu_h__ */ |
22648 | Index: git/target-i386/mesa_glx.h | 22586 | Index: qemu/target-i386/mesa_glx.h |
22649 | =================================================================== | 22587 | =================================================================== |
22650 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 22588 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
22651 | +++ git/target-i386/mesa_glx.h 2010-01-14 15:55:40.000000000 +0000 | 22589 | +++ qemu/target-i386/mesa_glx.h 2010-05-12 12:10:40.181781686 -0400 |
22652 | @@ -0,0 +1,510 @@ | 22590 | @@ -0,0 +1,510 @@ |
22653 | +/* | 22591 | +/* |
22654 | + * Mesa 3-D graphics library | 22592 | + * Mesa 3-D graphics library |
@@ -23160,10 +23098,10 @@ Index: git/target-i386/mesa_glx.h | |||
23160 | +#endif | 23098 | +#endif |
23161 | + | 23099 | + |
23162 | +#endif | 23100 | +#endif |
23163 | Index: git/target-i386/mesa_glxext.h | 23101 | Index: qemu/target-i386/mesa_glxext.h |
23164 | =================================================================== | 23102 | =================================================================== |
23165 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 23103 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
23166 | +++ git/target-i386/mesa_glxext.h 2010-01-14 15:55:40.000000000 +0000 | 23104 | +++ qemu/target-i386/mesa_glxext.h 2010-05-12 12:10:40.182781668 -0400 |
23167 | @@ -0,0 +1,785 @@ | 23105 | @@ -0,0 +1,785 @@ |
23168 | +#ifndef __glxext_h_ | 23106 | +#ifndef __glxext_h_ |
23169 | +#define __glxext_h_ | 23107 | +#define __glxext_h_ |
@@ -23950,10 +23888,10 @@ Index: git/target-i386/mesa_glxext.h | |||
23950 | +#endif | 23888 | +#endif |
23951 | + | 23889 | + |
23952 | +#endif | 23890 | +#endif |
23953 | Index: git/target-i386/mesa_mipmap.c | 23891 | Index: qemu/target-i386/mesa_mipmap.c |
23954 | =================================================================== | 23892 | =================================================================== |
23955 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 23893 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
23956 | +++ git/target-i386/mesa_mipmap.c 2010-01-14 15:55:40.000000000 +0000 | 23894 | +++ qemu/target-i386/mesa_mipmap.c 2010-05-12 12:10:40.183781579 -0400 |
23957 | @@ -0,0 +1,824 @@ | 23895 | @@ -0,0 +1,824 @@ |
23958 | + | 23896 | + |
23959 | +/* | 23897 | +/* |
@@ -24779,10 +24717,10 @@ Index: git/target-i386/mesa_mipmap.c | |||
24779 | + | 24717 | + |
24780 | + return retval; | 24718 | + return retval; |
24781 | +} | 24719 | +} |
24782 | Index: git/target-i386/opengl_exec.c | 24720 | Index: qemu/target-i386/opengl_exec.c |
24783 | =================================================================== | 24721 | =================================================================== |
24784 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 24722 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
24785 | +++ git/target-i386/opengl_exec.c 2010-01-14 16:34:53.000000000 +0000 | 24723 | +++ qemu/target-i386/opengl_exec.c 2010-05-14 13:34:05.506295624 -0400 |
24786 | @@ -0,0 +1,3931 @@ | 24724 | @@ -0,0 +1,3931 @@ |
24787 | +/* | 24725 | +/* |
24788 | + * Host-side implementation of GL/GLX API | 24726 | + * Host-side implementation of GL/GLX API |
@@ -28715,10 +28653,10 @@ Index: git/target-i386/opengl_exec.c | |||
28715 | + | 28653 | + |
28716 | + return ret_int; | 28654 | + return ret_int; |
28717 | +} | 28655 | +} |
28718 | Index: git/target-i386/opengl_func.h | 28656 | Index: qemu/target-i386/opengl_func.h |
28719 | =================================================================== | 28657 | =================================================================== |
28720 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 28658 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
28721 | +++ git/target-i386/opengl_func.h 2010-01-14 15:55:40.000000000 +0000 | 28659 | +++ qemu/target-i386/opengl_func.h 2010-05-12 12:10:40.187781086 -0400 |
28722 | @@ -0,0 +1,1108 @@ | 28660 | @@ -0,0 +1,1108 @@ |
28723 | +/* | 28661 | +/* |
28724 | + * Main header for both host and guest sides | 28662 | + * Main header for both host and guest sides |
@@ -29828,10 +29766,10 @@ Index: git/target-i386/opengl_func.h | |||
29828 | +#error Unsupported ABI | 29766 | +#error Unsupported ABI |
29829 | +#endif | 29767 | +#endif |
29830 | +#endif | 29768 | +#endif |
29831 | Index: git/target-i386/opengl_player.c | 29769 | Index: qemu/target-i386/opengl_player.c |
29832 | =================================================================== | 29770 | =================================================================== |
29833 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 29771 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
29834 | +++ git/target-i386/opengl_player.c 2010-01-14 15:55:40.000000000 +0000 | 29772 | +++ qemu/target-i386/opengl_player.c 2010-05-12 12:10:40.188781627 -0400 |
29835 | @@ -0,0 +1,1461 @@ | 29773 | @@ -0,0 +1,1461 @@ |
29836 | +/* | 29774 | +/* |
29837 | + * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server | 29775 | + * Plays a sequence of OpenGL calls recorded either under qemu or with opengl_server |
@@ -31294,10 +31232,10 @@ Index: git/target-i386/opengl_player.c | |||
31294 | + } | 31232 | + } |
31295 | + return 0; | 31233 | + return 0; |
31296 | +} | 31234 | +} |
31297 | Index: git/target-i386/opengl_server.c | 31235 | Index: qemu/target-i386/opengl_server.c |
31298 | =================================================================== | 31236 | =================================================================== |
31299 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 31237 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
31300 | +++ git/target-i386/opengl_server.c 2010-01-14 15:55:40.000000000 +0000 | 31238 | +++ qemu/target-i386/opengl_server.c 2010-05-12 12:10:40.188781627 -0400 |
31301 | @@ -0,0 +1,826 @@ | 31239 | @@ -0,0 +1,826 @@ |
31302 | +/* | 31240 | +/* |
31303 | + * TCP/IP OpenGL server | 31241 | + * TCP/IP OpenGL server |
@@ -32125,10 +32063,10 @@ Index: git/target-i386/opengl_server.c | |||
32125 | + | 32063 | + |
32126 | + return 0; | 32064 | + return 0; |
32127 | +} | 32065 | +} |
32128 | Index: git/target-i386/opengl_utils.h | 32066 | Index: qemu/target-i386/opengl_utils.h |
32129 | =================================================================== | 32067 | =================================================================== |
32130 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 32068 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
32131 | +++ git/target-i386/opengl_utils.h 2010-01-14 15:55:40.000000000 +0000 | 32069 | +++ qemu/target-i386/opengl_utils.h 2010-05-12 12:10:40.189781608 -0400 |
32132 | @@ -0,0 +1,453 @@ | 32070 | @@ -0,0 +1,453 @@ |
32133 | +/* | 32071 | +/* |
32134 | + * Functions used by host & client sides | 32072 | + * Functions used by host & client sides |
@@ -32583,10 +32521,10 @@ Index: git/target-i386/opengl_utils.h | |||
32583 | +} | 32521 | +} |
32584 | + | 32522 | + |
32585 | +#endif | 32523 | +#endif |
32586 | Index: git/target-i386/parse_gl_h.c | 32524 | Index: qemu/target-i386/parse_gl_h.c |
32587 | =================================================================== | 32525 | =================================================================== |
32588 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 32526 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
32589 | +++ git/target-i386/parse_gl_h.c 2010-01-14 15:55:40.000000000 +0000 | 32527 | +++ qemu/target-i386/parse_gl_h.c 2010-05-12 12:10:40.190781520 -0400 |
32590 | @@ -0,0 +1,1496 @@ | 32528 | @@ -0,0 +1,1496 @@ |
32591 | +/* | 32529 | +/* |
32592 | + * Parse gl.h et glx.h to auto-generate source code | 32530 | + * Parse gl.h et glx.h to auto-generate source code |
@@ -34084,10 +34022,10 @@ Index: git/target-i386/parse_gl_h.c | |||
34084 | + | 34022 | + |
34085 | + return 0; | 34023 | + return 0; |
34086 | +} | 34024 | +} |
34087 | Index: git/target-i386/parse_mesa_get_c.c | 34025 | Index: qemu/target-i386/parse_mesa_get_c.c |
34088 | =================================================================== | 34026 | =================================================================== |
34089 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | 34027 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
34090 | +++ git/target-i386/parse_mesa_get_c.c 2010-01-14 15:55:40.000000000 +0000 | 34028 | +++ qemu/target-i386/parse_mesa_get_c.c 2010-05-12 12:10:40.190781520 -0400 |
34091 | @@ -0,0 +1,225 @@ | 34029 | @@ -0,0 +1,225 @@ |
34092 | +/* | 34030 | +/* |
34093 | + * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h" | 34031 | + * Parse the "get.c" from mesa source tree to generate "glgetv_cst.h" |
@@ -34314,11 +34252,11 @@ Index: git/target-i386/parse_mesa_get_c.c | |||
34314 | + fclose(outf); | 34252 | + fclose(outf); |
34315 | + return 0; | 34253 | + return 0; |
34316 | +} | 34254 | +} |
34317 | Index: git/target-i386/translate.c | 34255 | Index: qemu/target-i386/translate.c |
34318 | =================================================================== | 34256 | =================================================================== |
34319 | --- git.orig/target-i386/translate.c 2009-12-02 13:13:56.000000000 +0000 | 34257 | --- qemu.orig/target-i386/translate.c 2010-05-11 18:05:22.957804134 -0400 |
34320 | +++ git/target-i386/translate.c 2010-01-14 15:55:40.000000000 +0000 | 34258 | +++ qemu/target-i386/translate.c 2010-05-12 12:10:40.192781553 -0400 |
34321 | @@ -741,6 +741,8 @@ | 34259 | @@ -743,6 +743,8 @@ static void gen_check_io(DisasContext *s |
34322 | int state_saved; | 34260 | int state_saved; |
34323 | target_ulong next_eip; | 34261 | target_ulong next_eip; |
34324 | 34262 | ||
@@ -34327,7 +34265,7 @@ Index: git/target-i386/translate.c | |||
34327 | state_saved = 0; | 34265 | state_saved = 0; |
34328 | if (s->pe && (s->cpl > s->iopl || s->vm86)) { | 34266 | if (s->pe && (s->cpl > s->iopl || s->vm86)) { |
34329 | if (s->cc_op != CC_OP_DYNAMIC) | 34267 | if (s->cc_op != CC_OP_DYNAMIC) |
34330 | @@ -2592,11 +2594,18 @@ | 34268 | @@ -2676,11 +2678,18 @@ static void gen_exception(DisasContext * |
34331 | s->is_jmp = 3; | 34269 | s->is_jmp = 3; |
34332 | } | 34270 | } |
34333 | 34271 | ||
@@ -34346,78 +34284,36 @@ Index: git/target-i386/translate.c | |||
34346 | if (s->cc_op != CC_OP_DYNAMIC) | 34284 | if (s->cc_op != CC_OP_DYNAMIC) |
34347 | gen_op_set_cc_op(s->cc_op); | 34285 | gen_op_set_cc_op(s->cc_op); |
34348 | gen_jmp_im(cur_eip); | 34286 | gen_jmp_im(cur_eip); |
34349 | Index: git/vl.c | 34287 | Index: qemu/vl.c |
34350 | =================================================================== | 34288 | =================================================================== |
34351 | --- git.orig/vl.c 2009-12-02 13:13:56.000000000 +0000 | 34289 | --- qemu.orig/vl.c 2010-05-11 18:05:22.959804376 -0400 |
34352 | +++ git/vl.c 2010-01-14 15:55:40.000000000 +0000 | 34290 | +++ qemu/vl.c 2010-05-12 17:10:46.174909450 -0400 |
34353 | @@ -245,6 +245,7 @@ | 34291 | @@ -238,6 +238,7 @@ int semihosting_enabled = 0; |
34354 | #ifdef TARGET_ARM | 34292 | #ifdef TARGET_ARM |
34355 | int old_param = 0; | 34293 | int old_param = 0; |
34356 | #endif | 34294 | #endif |
34357 | +int force_pointer = 0; | 34295 | +int force_pointer = 0; |
34358 | const char *qemu_name; | 34296 | const char *qemu_name; |
34359 | int alt_grab = 0; | 34297 | int alt_grab = 0; |
34360 | #if defined(TARGET_SPARC) || defined(TARGET_PPC) | 34298 | int ctrl_grab = 0; |
34361 | @@ -253,6 +254,7 @@ | 34299 | @@ -246,6 +247,7 @@ unsigned int nb_prom_envs = 0; |
34300 | const char *prom_envs[MAX_PROM_ENVS]; | ||
34362 | #endif | 34301 | #endif |
34363 | int nb_drives_opt; | 34302 | int boot_menu; |
34364 | struct drive_opt drives_opt[MAX_DRIVES]; | ||
34365 | +extern int enable_gl; | 34303 | +extern int enable_gl; |
34366 | 34304 | ||
34367 | static CPUState *cur_cpu; | 34305 | int nb_numa_nodes; |
34368 | static CPUState *next_cpu; | 34306 | uint64_t node_mem[MAX_NODES]; |
34369 | @@ -4208,12 +4210,14 @@ | 34307 | @@ -4418,6 +4420,8 @@ static void select_vgahw (const char *p) |
34370 | QEMU_OPTION_clock, | 34308 | } else if (strstart(p, "xenfb", &opts)) { |
34371 | QEMU_OPTION_localtime, | 34309 | vga_interface_type = VGA_XENFB; |
34372 | QEMU_OPTION_startdate, | 34310 | } else if (!strstart(p, "none", &opts)) { |
34373 | + QEMU_OPTION_enable_gl, | 34311 | + } |
34374 | QEMU_OPTION_icount, | 34312 | + else { |
34375 | QEMU_OPTION_echr, | ||
34376 | QEMU_OPTION_virtiocon, | ||
34377 | QEMU_OPTION_show_cursor, | ||
34378 | QEMU_OPTION_semihosting, | ||
34379 | QEMU_OPTION_old_param, | ||
34380 | + QEMU_OPTION_force_pointer, | ||
34381 | QEMU_OPTION_tb_size, | ||
34382 | QEMU_OPTION_incoming, | ||
34383 | QEMU_OPTION_chroot, | ||
34384 | @@ -4344,6 +4348,8 @@ | ||
34385 | #if defined(TARGET_ARM) | ||
34386 | { "old-param", 0, QEMU_OPTION_old_param }, | ||
34387 | #endif | ||
34388 | + { "force-pointer", 0, QEMU_OPTION_force_pointer }, | ||
34389 | + { "enable-gl", 0, QEMU_OPTION_enable_gl }, | ||
34390 | { "tb-size", HAS_ARG, QEMU_OPTION_tb_size }, | ||
34391 | { "incoming", HAS_ARG, QEMU_OPTION_incoming }, | ||
34392 | { "chroot", HAS_ARG, QEMU_OPTION_chroot }, | ||
34393 | @@ -4496,22 +4502,17 @@ | ||
34394 | { | ||
34395 | const char *opts; | ||
34396 | |||
34397 | + std_vga_enabled = 0; | ||
34398 | + cirrus_vga_enabled = 0; | ||
34399 | + vmsvga_enabled = 0; | ||
34400 | + | ||
34401 | if (strstart(p, "std", &opts)) { | ||
34402 | std_vga_enabled = 1; | ||
34403 | - cirrus_vga_enabled = 0; | ||
34404 | - vmsvga_enabled = 0; | ||
34405 | } else if (strstart(p, "cirrus", &opts)) { | ||
34406 | cirrus_vga_enabled = 1; | ||
34407 | - std_vga_enabled = 0; | ||
34408 | - vmsvga_enabled = 0; | ||
34409 | } else if (strstart(p, "vmware", &opts)) { | ||
34410 | - cirrus_vga_enabled = 0; | ||
34411 | - std_vga_enabled = 0; | ||
34412 | vmsvga_enabled = 1; | ||
34413 | } else if (strstart(p, "none", &opts)) { | ||
34414 | - cirrus_vga_enabled = 0; | ||
34415 | - std_vga_enabled = 0; | ||
34416 | - vmsvga_enabled = 0; | ||
34417 | } else { | ||
34418 | invalid_vga: | 34313 | invalid_vga: |
34419 | fprintf(stderr, "Unknown vga type: %s\n", p); | 34314 | fprintf(stderr, "Unknown vga type: %s\n", p); |
34420 | @@ -5220,6 +5221,9 @@ | 34315 | exit(1); |
34316 | @@ -5540,6 +5544,9 @@ int main(int argc, char **argv, char **e | ||
34421 | old_param = 1; | 34317 | old_param = 1; |
34422 | break; | 34318 | break; |
34423 | #endif | 34319 | #endif |
@@ -34427,20 +34323,21 @@ Index: git/vl.c | |||
34427 | case QEMU_OPTION_clock: | 34323 | case QEMU_OPTION_clock: |
34428 | configure_alarms(optarg); | 34324 | configure_alarms(optarg); |
34429 | break; | 34325 | break; |
34430 | @@ -5261,6 +5265,11 @@ | 34326 | @@ -5554,6 +5561,12 @@ int main(int argc, char **argv, char **e |
34431 | } | ||
34432 | } | 34327 | } |
34328 | configure_rtc(opts); | ||
34433 | break; | 34329 | break; |
34434 | +#ifdef TARGET_OPENGL_OK | 34330 | +#ifdef TARGET_OPENGL_OK |
34435 | + case QEMU_OPTION_enable_gl: | 34331 | + case QEMU_OPTION_enable_gl: |
34332 | + fprintf(stderr, "Enabling opengl\n"); | ||
34436 | + enable_gl = 1; | 34333 | + enable_gl = 1; |
34437 | + break; | 34334 | + break; |
34438 | +#endif | 34335 | +#endif |
34439 | case QEMU_OPTION_tb_size: | 34336 | case QEMU_OPTION_tb_size: |
34440 | tb_size = strtol(optarg, NULL, 0); | 34337 | tb_size = strtol(optarg, NULL, 0); |
34441 | if (tb_size < 0) | 34338 | if (tb_size < 0) |
34442 | @@ -5545,6 +5554,17 @@ | 34339 | @@ -5907,6 +5920,14 @@ int main(int argc, char **argv, char **e |
34443 | exit(1); | 34340 | } |
34444 | } | 34341 | } |
34445 | } | 34342 | } |
34446 | +#ifdef TARGET_OPENGL_OK | 34343 | +#ifdef TARGET_OPENGL_OK |
@@ -34448,12 +34345,32 @@ Index: git/vl.c | |||
34448 | + /* Use second serial port */ | 34345 | + /* Use second serial port */ |
34449 | + int opengl_serial = 1; | 34346 | + int opengl_serial = 1; |
34450 | + | 34347 | + |
34451 | + if (serial_devices[opengl_serial]) | 34348 | + add_device_config(DEV_SERIAL, "opengl"); |
34452 | + fprintf(stderr, "overriding second serial " | ||
34453 | + "port for OpenGL use\n"); | ||
34454 | + serial_devices[opengl_serial] = "opengl"; | ||
34455 | + } | 34349 | + } |
34456 | +#endif | 34350 | +#endif |
34457 | 34351 | ||
34458 | if (monitor_device) { | 34352 | if (foreach_device_config(DEV_SERIAL, serial_parse) < 0) |
34459 | monitor_hd = qemu_chr_open("monitor", monitor_device, NULL); | 34353 | exit(1); |
34354 | Index: qemu/qemu-options.hx | ||
34355 | =================================================================== | ||
34356 | --- qemu.orig/qemu-options.hx 2010-05-11 18:05:22.959804376 -0400 | ||
34357 | +++ qemu/qemu-options.hx 2010-05-12 17:18:10.420907903 -0400 | ||
34358 | @@ -1783,6 +1783,18 @@ many timer interrupts were not processed | ||
34359 | re-inject them. | ||
34360 | ETEXI | ||
34361 | |||
34362 | +DEF("enable-gl", 0, QEMU_OPTION_enable_gl, \ | ||
34363 | + "-enable-gl\n") | ||
34364 | +STEXI | ||
34365 | +@item -enable-gl | ||
34366 | +ETEXI | ||
34367 | + | ||
34368 | +DEF("force-pointer", 0, QEMU_OPTION_force_pointer, \ | ||
34369 | + "-force-pointer\n") | ||
34370 | +STEXI | ||
34371 | +@item -force-pointer | ||
34372 | +ETEXI | ||
34373 | + | ||
34374 | DEF("icount", HAS_ARG, QEMU_OPTION_icount, \ | ||
34375 | "-icount [N|auto]\n" \ | ||
34376 | " enable virtual instruction counter with 2^N clock ticks per\n" \ | ||