diff --git a/repos/ports/recipes/src/seoul-nova/used_apis b/repos/ports/recipes/src/seoul-nova/used_apis index 6611fa4e3..79013acb4 100644 --- a/repos/ports/recipes/src/seoul-nova/used_apis +++ b/repos/ports/recipes/src/seoul-nova/used_apis @@ -4,6 +4,7 @@ libc os blit nitpicker_gfx +nitpicker_session framebuffer_session input_session timer_session diff --git a/repos/ports/run/seoul-disc.run b/repos/ports/run/seoul-disc.run index 9574c909e..8448b55c4 100644 --- a/repos/ports/run/seoul-disc.run +++ b/repos/ports/run/seoul-disc.run @@ -35,7 +35,7 @@ if {[have_include power_on/qemu]} { exit 1 } - append qemu_args " -m 1024 " + append qemu_args " -m 1536 " append qemu_args " -cpu phenom" append_if $use_block_sata qemu_args " -drive id=disk,file=bin/seoul-disc.raw,format=raw,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -boot d" } diff --git a/repos/ports/run/seoul.inc b/repos/ports/run/seoul.inc index dd987bdbf..3dd31a85b 100644 --- a/repos/ports/run/seoul.inc +++ b/repos/ports/run/seoul.inc @@ -5,6 +5,11 @@ # \author Alexander Boettcher # \date 2011-11-21 +create_boot_directory + +import_from_depot [depot_user]/src/[base_src] \ + [depot_user]/src/init \ + [depot_user]/src/nitpicker # # Build # @@ -21,7 +26,6 @@ source ${genode_dir}/repos/base/run/platform_drv.inc proc platform_drv_priority {} { return { priority="-1"} } set build_components { - core init timer drivers/rtc drivers/input app/seoul @@ -35,12 +39,8 @@ lappend_if $use_block_sata build_components drivers/ahci lappend_if $use_nic_session build_components drivers/nic lappend_if $use_nic_bridge build_components server/nic_bridge lappend_if $use_framebuffer build_components drivers/framebuffer -lappend_if $use_fancy_stuff build_components server/nitpicker -lappend_if $use_fancy_stuff build_components app/pointer lappend_if $use_fancy_stuff build_components app/status_bar -lappend_if $use_fancy_stuff build_components server/liquid_framebuffer lappend_if $use_fancy_stuff build_components app/launchpad -lappend_if $use_fancy_stuff build_components server/nitlog lappend_if $use_fancy_stuff build_components server/report_rom lappend_if $use_genode_iso build_components server/iso9660 lappend_if $use_genode_iso build_components server/rom_block @@ -137,8 +137,6 @@ puts $vm_cfg_fd { } close $vm_cfg_fd -create_boot_directory - # # Generate Genode config # @@ -193,7 +191,7 @@ append_if $use_block_sata config { append_if $use_block_ram config { - + } @@ -244,7 +242,7 @@ append_if $use_framebuffer config { - + } if {!$use_fancy_stuff} { @@ -260,8 +258,6 @@ append_if [expr $use_nic_session && $use_nic_bridge] config { } append_if [expr $use_nic_session && !$use_nic_bridge] config { } -append_if $use_framebuffer config { - } append_if $use_genode_iso config { @@ -284,17 +280,28 @@ append_if $use_usb config { } -append_if $use_fancy_stuff config { +append config { + + + + hover="always" xpos="10" ypos="20" height="-20"/> + + + + + @@ -305,22 +312,26 @@ append_if $use_fancy_stuff config { + - - - - - - - + + } + +append_if $use_fancy_stuff config { + + + + + + @@ -367,27 +378,12 @@ if {$use_fancy_stuff} { - - - - - - - - - - - - - - + - - @@ -406,8 +402,6 @@ install_config $config # generic modules set boot_modules { - core ld.lib.so init - timer rtc_drv seoul vm_seoul.cfg @@ -421,12 +415,8 @@ lappend_if $use_nic_session boot_modules nic_drv lappend_if $use_nic_bridge boot_modules nic_bridge lappend_if $use_framebuffer boot_modules fb_drv -lappend_if $use_fancy_stuff boot_modules nitpicker -lappend_if $use_fancy_stuff boot_modules pointer lappend_if $use_fancy_stuff boot_modules status_bar -lappend_if $use_fancy_stuff boot_modules liquid_fb lappend_if $use_fancy_stuff boot_modules launchpad -lappend_if $use_fancy_stuff boot_modules nitlog lappend_if $use_fancy_stuff boot_modules launchpad-config lappend_if $use_fancy_stuff boot_modules report_rom diff --git a/repos/ports/src/app/seoul/console.cc b/repos/ports/src/app/seoul/console.cc index 446491d2d..55d29943f 100644 --- a/repos/ports/src/app/seoul/console.cc +++ b/repos/ports/src/app/seoul/console.cc @@ -373,13 +373,14 @@ bool Seoul::Console::receive(MessageTimeout &msg) { Seoul::Console::Console(Genode::Env &env, Synced_motherboard &mb, Motherboard &unsynchronized_motherboard, - Framebuffer::Connection &framebuffer, + Nitpicker::Connection &nitpicker, Genode::Dataspace_capability guest_fb_ds) : _env(env), _unsynchronized_motherboard(unsynchronized_motherboard), _motherboard(mb), - _framebuffer(framebuffer), + _framebuffer(*nitpicker.framebuffer()), + _input(*nitpicker.input()), _guest_fb_ds(guest_fb_ds), _fb_mode(_framebuffer.mode()), _fb_size(Genode::Dataspace_client(_framebuffer.dataspace()).size()), diff --git a/repos/ports/src/app/seoul/console.h b/repos/ports/src/app/seoul/console.h index fa854f632..af17bf72e 100644 --- a/repos/ports/src/app/seoul/console.h +++ b/repos/ports/src/app/seoul/console.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -47,23 +48,23 @@ class Seoul::Console : public StaticReceiver { private: - Genode::Env &_env; - Motherboard &_unsynchronized_motherboard; - Synced_motherboard &_motherboard; - Framebuffer::Connection &_framebuffer; - Genode::Dataspace_capability _guest_fb_ds; - Framebuffer::Mode _fb_mode; - size_t _fb_size; - short *_pixels; - Genode::Surface _surface; - Input::Connection _input { _env }; - Keyboard _vkeyb { _motherboard }; - char *_guest_fb { nullptr }; - VgaRegs *_regs { nullptr }; - bool _left { false }; - bool _middle { false }; - bool _right { false }; - unsigned _timer { 0 }; + Genode::Env &_env; + Motherboard &_unsynchronized_motherboard; + Synced_motherboard &_motherboard; + Framebuffer::Session &_framebuffer; + Input::Session_client &_input; + Genode::Dataspace_capability _guest_fb_ds; + Framebuffer::Mode _fb_mode; + size_t _fb_size; + short *_pixels; + Genode::Surface _surface; + Keyboard _vkeyb { _motherboard }; + char *_guest_fb { nullptr }; + VgaRegs *_regs { nullptr }; + bool _left { false }; + bool _middle { false }; + bool _right { false }; + unsigned _timer { 0 }; unsigned _input_to_ps2mouse(Input::Event const &); unsigned _input_to_ps2wheel(Input::Event const &); @@ -93,7 +94,7 @@ class Seoul::Console : public StaticReceiver * Constructor */ Console(Genode::Env &env, Synced_motherboard &, Motherboard &, - Framebuffer::Connection &, Genode::Dataspace_capability fb_ds); + Nitpicker::Connection &, Genode::Dataspace_capability fb_ds); }; #endif /* _CONSOLE_H_ */ diff --git a/repos/ports/src/app/seoul/main.cc b/repos/ports/src/app/seoul/main.cc index 474374643..f7a95ce29 100644 --- a/repos/ports/src/app/seoul/main.cc +++ b/repos/ports/src/app/seoul/main.cc @@ -44,7 +44,6 @@ #include /* os includes */ -#include #include #include #include @@ -1435,12 +1434,32 @@ void Component::construct(Genode::Env &env) static Vmm::Virtual_reservation reservation(env, vm_size); /* setup framebuffer memory for guest */ - static Framebuffer::Connection framebuffer(env, Framebuffer::Mode(0, 0, Framebuffer::Mode::INVALID)); - Framebuffer::Mode const fb_mode = framebuffer.mode(); + static Nitpicker::Connection nitpicker { env }; + + unsigned width = config.xml().attribute_value("width", 1024U); + unsigned height = config.xml().attribute_value("height", 768U); + + nitpicker.buffer(Framebuffer::Mode(width, height, + Framebuffer::Mode::RGB565), false); + + static Framebuffer::Session &framebuffer { *nitpicker.framebuffer() }; + Framebuffer::Mode const fb_mode { framebuffer.mode() }; + size_t const fb_size = Genode::align_addr(fb_mode.width() * fb_mode.height() * fb_mode.bytes_per_pixel(), 12); + typedef Nitpicker::Session::View_handle View_handle; + typedef Nitpicker::Session::Command Command; + + View_handle view = nitpicker.create_view(); + Nitpicker::Rect rect(Nitpicker::Point(0, 0), + Nitpicker::Area(fb_mode.width(), fb_mode.height())); + + nitpicker.enqueue(view, rect); + nitpicker.enqueue(view, View_handle()); + nitpicker.execute(); + /* setup guest memory */ static Guest_memory guest_memory(env, vm_size, fb_size); @@ -1496,7 +1515,7 @@ void Component::construct(Genode::Env &env) /* create console thread */ static Seoul::Console vcon(env, machine.motherboard(), machine.unsynchronized_motherboard(), - framebuffer, + nitpicker, guest_memory.fb_ds()); vcon.register_host_operations(machine.unsynchronized_motherboard());