QEMU With E2K User Support
Go to file
aliguori 7b5d76dae3 DisplayAllocator interface (Stefano Stabellini)
Hi all,
this patch adds a DisplayAllocator interface that allows display
frontends (sdl in particular) to provide a preallocated display buffer
for the graphical backend to use.

Whenever a graphical backend cannot use
qemu_create_displaysurface_from because its own internal pixel format
cannot be exported directly (text mode or graphical mode with color
depth 8 or 24), it creates another display buffer in memory using
qemu_create_displaysurface and does the conversion.
This new buffer needs to be blitted into the sdl surface buffer every time
we need to update portions of the screen.
We can avoid this using the DisplayAllocator interace: sdl provides its
own implementation of qemu_create_displaysurface, giving back the sdl
surface buffer directly (as we used to do before the DisplayState
changes).
Since the buffer returned by sdl could be in bgr format we need to put
back in the handlers of that case.

This approach is good if the two following conditions are true:

1) the sdl surface is a software surface that resides in main memory;

2) the host display color depth is either 16 or 32 bpp.

If first condition is false we can have bad performances using sdl
and vnc together.
If the second condition is false performances are certainly not going to
improve but they shouldn't get worse either.

The first condition is always true, at least on linux/X11 systems; but I
believe is true also on other platforms.
The second condition is true in the vast majority of the cases.

This patch should also have the good side effect of solving the sdl
2D slowness malc was reporting on MacOS, because SDL_BlitSurface is not
going to be called anymore when the guest is in text mode or 24bpp.
However the root problem is still present so I suspect we may
still see some slowness on MacOS when the guest is in 32 or 16 bpp.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6839 c046a42c-6fe2-441c-8c8c-71466251a162
2009-03-13 15:02:13 +00:00
audio Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
bsd-user Fix BSD user: there is no NPTL 2009-03-07 18:59:05 +00:00
darwin-user Use a dedicated function to request exit from execution loop 2009-03-07 21:28:24 +00:00
fpu Rename one more _BSD to HOST_BSD (spotted by Hasso Tepper) 2009-03-08 15:58:00 +00:00
gdb-xml Work around QEMU GDB stub suboptimality 2009-03-07 22:00:56 +00:00
hw DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
keymaps Fix fr-be keymap 2009-02-09 23:19:44 +00:00
linux-user Use a dedicated function to request exit from execution loop 2009-03-07 21:28:24 +00:00
pc-bios Use firmware configuration instead of NVRAM (initial patch by Aurelien Jarno) 2009-03-08 09:51:29 +00:00
slirp Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
target-alpha The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
target-arm tcg: rename bswap_i32/i64 functions 2009-03-13 09:34:48 +00:00
target-cris The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
target-i386 target-i386: use the new bswap* TCG ops 2009-03-13 09:35:41 +00:00
target-m68k tcg: rename bswap_i32/i64 functions 2009-03-13 09:34:48 +00:00
target-mips target-mips: use nor instead of or + not 2009-03-10 09:03:18 +00:00
target-ppc target-ppc: use the new bswap* TCG ops 2009-03-13 09:35:34 +00:00
target-sh4 The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
target-sparc The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
tcg tcg/x86_64: add bswap16_i{32,64} and bswap32_i64 ops 2009-03-13 09:35:55 +00:00
tests Get rid of user_mode_only 2009-01-14 19:40:27 +00:00
.gitignore Extend gitignore (Jan Kiszka) 2009-01-22 17:15:25 +00:00
COPYING COPYING: update from FSF 2008-10-12 17:54:42 +00:00
COPYING.LIB Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
Changelog Add version information for 0.10.0 release. 2009-03-04 22:47:59 +00:00
LICENSE Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
MAINTAINERS Update maintainers list. 2008-08-25 22:26:03 +00:00
Makefile Call Perl directly instead of relying on shebang 2009-03-08 19:26:53 +00:00
Makefile.target From 67e94ae77f8de4d5d822917f1723cefa7ebfb64d Mon Sep 17 00:00:00 2001 2009-03-12 20:25:12 +00:00
README Add missing newline at the end of file 2008-12-14 08:50:18 +00:00
TODO Update 2008-12-04 11:29:42 +00:00
VERSION Add version information for 0.10.0 release. 2009-03-04 22:47:59 +00:00
a.out.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
acl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
acl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
aes.c Fix miscellaneous minor things, by Andre Przywara. 2007-12-17 03:15:52 +00:00
aes.h AES crypto support 2004-08-01 21:54:53 +00:00
aio.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
alpha-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
alpha.ld alpha support 2003-04-29 20:53:42 +00:00
arm-dis.c clean build: Fix arm build warnings 2009-03-07 21:48:00 +00:00
arm-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
arm.ld Link ARM prologue closer to code segment to avoid a build failure 2008-07-10 17:21:31 +00:00
balloon.h Add missing file from previous commit. 2008-12-04 20:35:16 +00:00
block-bochs.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-cloop.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-cow.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-dmg.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-nbd.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-parallels.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-qcow.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-qcow2.c Revert r6404 2009-03-11 20:05:37 +00:00
block-raw-posix.c Fix regression introduced by r6824 2009-03-13 03:12:03 +00:00
block-raw-win32.c Fix regression introduced by r6824 2009-03-13 03:12:03 +00:00
block-vmdk.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-vpc.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block-vvfat.c Use C99 initializers for BlockDriver methods 2009-03-07 22:00:29 +00:00
block.c Drop internal bdrv_pread()/bdrv_pwrite() APIs (Avi Kivity) 2009-03-12 19:57:16 +00:00
block.h Add specialized block driver scsi generic API (Avi Kivity) 2009-03-12 19:57:08 +00:00
block_int.h Drop internal bdrv_pread()/bdrv_pwrite() APIs (Avi Kivity) 2009-03-12 19:57:16 +00:00
bswap.h Sparse fixes: truncation by cast 2009-03-07 15:46:23 +00:00
bt-host.c Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-host.h Clean build: Add bt-host.h 2009-03-10 21:43:35 +00:00
bt-vhci.c Sparse fixes: NULL use, header order, ANSI prototypes, static 2009-03-07 15:32:56 +00:00
buffered_file.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
buffered_file.h Introduce a buffered file wrapper for QEMUFile 2008-10-13 03:10:22 +00:00
cache-utils.c Properly initialize len argument of sysctl and include stdio.h (perror) 2009-02-04 20:39:09 +00:00
cache-utils.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
cocoa.m Update cocoa.m to match new DisplayState code (Samuel Benson) 2009-03-04 19:25:22 +00:00
configure configure sensitive to user locale 2009-03-09 17:36:50 +00:00
console.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
console.h DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
cpu-all.h Use a dedicated function to request exit from execution loop 2009-03-07 21:28:24 +00:00
cpu-defs.h The _exit syscall is used for both thread termination in NPTL applications, 2009-03-07 15:24:59 +00:00
cpu-exec.c Fix race condition on access to env->interrupt_request 2009-03-06 21:48:00 +00:00
cris-dis.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
curses.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
curses_keys.h Sparse fixes: remove duplicate entry 2009-03-07 15:53:15 +00:00
cutils.c Add qemu_iovec_reset() (Avi Kivity) 2009-02-05 21:23:54 +00:00
d3des.c Ansify to please sparse 2008-10-27 19:49:12 +00:00
d3des.h Actually add d3des implementation files. 2007-08-25 02:09:50 +00:00
def-helper.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
device_tree.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
device_tree.h Implement device tree support needed for Bamboo emulation 2008-12-16 10:43:48 +00:00
dis-asm.h Update ppc-dis.c from binutils 2.17 2009-02-09 19:58:22 +00:00
disas.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
disas.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
dma-helpers.c Introduce block dma helpers (Avi Kivity) 2009-02-05 21:23:58 +00:00
dma.h Introduce block dma helpers (Avi Kivity) 2009-02-05 21:23:58 +00:00
dyngen-exec.h Prune unused AREGs 2009-03-08 12:41:36 +00:00
elf.h Fix most warnings that would be caused by gcc flag -Wundef 2008-09-06 17:47:39 +00:00
elf_ops.h Use load address when loading ELF images. 2008-10-22 18:20:20 +00:00
exec-all.h Remove GenOpFunc typedefs 2009-02-08 17:17:52 +00:00
exec.c Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
feature_to_c.sh Fix undeclared symbol warnings from sparse 2008-10-26 13:43:07 +00:00
gdbstub.c Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
gdbstub.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
gen-icount.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
host-utils.c Code used by the linux-user targets should not use vl.h. 2007-11-05 13:01:41 +00:00
host-utils.h Include <strings.h> for ffs(). 2008-11-12 17:18:41 +00:00
hostregs_helper.h Prune unused AREGs 2009-03-08 12:41:36 +00:00
hpet.h Add a local copy of hpet.h. 2007-09-16 20:03:23 +00:00
hppa-dis.c HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
hppa.ld HPPA (PA-RISC) host support 2008-04-12 20:14:54 +00:00
i386-dis.c Update i386-dis.c from commits before GPLv3 switch 2009-03-07 16:57:53 +00:00
i386.ld Add TLS sections. 2008-05-31 16:21:33 +00:00
ia64.ld ia64 host support (David Mosberger) 2005-04-07 22:20:31 +00:00
keymaps.c Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
keymaps.h Add missing file from previous commit 2009-03-06 22:47:54 +00:00
kqemu.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
kqemu.h kqemu API change - allow use of kqemu with 32 bit QEMU on a 64 bit host 2008-05-30 20:48:25 +00:00
kvm-all.c Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
kvm.h Guest debugging support for KVM (Jan Kiszka) 2009-03-12 20:12:48 +00:00
libfdt_env.h Implement device tree support needed for Bamboo emulation 2008-12-16 10:43:48 +00:00
loader.c fread_targphys(): Do not cut off the tail. 2009-03-09 18:08:56 +00:00
m68k-dis.c Spelling and grammar fixes 2008-11-30 16:25:37 +00:00
m68k-semi.c Fix more FSF addresses 2009-01-05 18:11:53 +00:00
m68k.ld m68k host port (Richard Zidlicky) 2003-08-10 22:14:22 +00:00
migration-exec.c monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
migration-tcp.c monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
migration.c monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka) 2009-03-05 23:01:51 +00:00
migration.h monitor: Decouple terminals (Jan Kiszka) 2009-03-05 23:01:42 +00:00
mips-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
mips.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
mipsel.ld Linker scripts for MIPS hosts. 2007-05-05 19:24:38 +00:00
monitor.c monitor: sync from kvm state before generating output (Jan Kiszka) 2009-03-12 20:12:57 +00:00
monitor.h monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka) 2009-03-05 23:01:51 +00:00
nbd.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
nbd.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net-checksum.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
net.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
net.h monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
osdep.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
osdep.h snapshot subcommand for qemu-img (Kevin Wolf) 2009-01-07 17:40:15 +00:00
pci-ids.txt List virtio console device in pci-ids.txt 2009-01-24 16:37:31 +00:00
posix-aio-compat.c Properly handle pthread_cond_timedwait timing out 2009-02-21 05:48:19 +00:00
posix-aio-compat.h Rename sigev_signo to avoid FreeBSD problems (Juergen Lock) 2009-01-24 11:54:21 +00:00
ppc-dis.c Update ppc-dis.c from binutils from 4th July, 2007, just before GPLv3 switch 2009-02-09 19:59:57 +00:00
ppc.ld Update ppc.ld to work with newer binutils. 2007-04-28 19:00:30 +00:00
ppc64.ld Correct version of Heikki Lindholms ppc64.ld script 2008-08-20 22:39:24 +00:00
qemu-aio.h Refactor AIO to allow multiple AIO implementations 2008-09-22 19:17:18 +00:00
qemu-binfmt-conf.sh Code provision for n32/n64 mips userland emulation. Not functional yet. 2007-09-30 01:58:33 +00:00
qemu-char.c Rename _BSD to HOST_BSD so that it's more obvious that it's defined by configure 2009-03-08 08:23:32 +00:00
qemu-char.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
qemu-common.h DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
qemu-doc.texi Fix texinfo syntax errors. 2009-03-07 21:28:14 +00:00
qemu-img.c Revert r6408 2009-03-11 20:05:20 +00:00
qemu-img.texi Synch code, help and docs 2009-01-24 18:19:25 +00:00
qemu-lock.h Remove all traces of __powerpc__ 2009-01-14 18:39:49 +00:00
qemu-log.h Define macros that will become the new logging API (Eduardo Habkost) 2009-01-15 21:52:11 +00:00
qemu-malloc.c Fix qemu_realloc() (Kevin Wolf) 2009-02-11 21:00:32 +00:00
qemu-nbd.c toplevel: remove error handling from qemu_malloc() callers (Avi Kivity) 2009-02-05 22:06:18 +00:00
qemu-nbd.texi Fix formatting of documentation (Stefan Weil) 2008-09-22 20:41:57 +00:00
qemu-sockets.c Fix some more warnings 2009-01-14 18:34:22 +00:00
qemu-tech.texi Update (thanks to Edgar, Thiemo, malc, Paul, Laurent and Andrzej) 2008-10-09 18:52:04 +00:00
qemu-timer.h Break up vl.h. 2007-11-17 17:14:51 +00:00
qemu-tool.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
qemu.sasl Add SASL authentication support ("Daniel P. Berrange") 2009-03-06 20:27:28 +00:00
qemu_socket.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
readline.c monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
readline.h monitor: Improve mux'ed console experience (Jan Kiszka) 2009-03-05 23:01:47 +00:00
rules.mak build system: Further improve quiet mode (Jan Kiszka) 2009-01-26 17:07:46 +00:00
s390-dis.c Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
s390.ld Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
savevm.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
sdl.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
sdl_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
sh4-dis.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu-semi.h Suppress gcc 4.x -Wpointer-sign (included in -Wall) warnings 2008-09-20 08:07:15 +00:00
softmmu_defs.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_exec.h Fix some warnings that would be generated by gcc -Wredundant-decls 2008-08-30 09:51:20 +00:00
softmmu_header.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
softmmu_template.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
sparc-dis.c Make OpenBSD sparc-softmmu compile warning free 2009-01-14 18:08:08 +00:00
sparc.ld More detabification 2007-10-06 11:28:21 +00:00
sparc64.ld Map code buffers below 2G on Sparc64 2008-07-26 15:05:57 +00:00
sys-queue.h Remove CRs 2008-12-14 08:53:17 +00:00
sysemu.h Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
tap-win32.c Fix windows build and clean up use of <windows.h> 2009-03-08 16:26:59 +00:00
texi2pod.pl Update texi2pod.pl. 2008-02-04 14:47:49 +00:00
thunk.c Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
thunk.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
translate-all.c global s/loglevel & X/qemu_loglevel_mask(X)/ (Eduardo Habkost) 2009-01-15 22:36:53 +00:00
uboot_image.h Update FSF address in GPL/LGPL boilerplate 2009-01-04 22:05:52 +00:00
usb-bsd.c Support for DragonFly BSD (Hasso Tepper) 2009-03-07 20:06:23 +00:00
usb-linux.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
usb-stub.c monitor: Rework API (Jan Kiszka) 2009-03-05 23:01:23 +00:00
vgafont.h Some little fixes on QEMU 2008-09-06 16:31:30 +00:00
vl.c DisplayAllocator interface (Stefano Stabellini) 2009-03-13 15:02:13 +00:00
vnc-auth-sasl.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
vnc-auth-sasl.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
vnc-auth-vencrypt.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-auth-vencrypt.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.c Add more missing files 2009-03-06 23:44:29 +00:00
vnc-tls.h Add more missing files 2009-03-06 23:44:29 +00:00
vnc.c Remove tabs introduced from VNC ACL series 2009-03-06 20:27:40 +00:00
vnc.h Support ACLs for controlling VNC access ("Daniel P. Berrange") 2009-03-06 20:27:37 +00:00
vnc_keysym.h Refactor keymap code to avoid duplication ("Daniel P. Berrange") 2009-03-06 20:27:10 +00:00
vnchextile.h exploiting the new interface in vnc.c (Stefano Stabellini) 2009-01-15 22:17:38 +00:00
x86_64.ld update 2005-01-06 20:50:00 +00:00
x_keymap.c Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00
x_keymap.h Fix SDL on evdev hosts (Anthony Liguori) 2009-03-03 17:37:21 +00:00

README

Read the documentation in qemu-doc.html.

Fabrice Bellard.