genode/repos/os/run/demo.run
Norman Feske ef741ef80d Change pixel format to 32 bits per pixel
Until now, Genode's framebuffer session interface was based on the
RGB565 pixel format. This patch changes the pixel format to 32-bit
XRGB where the X part is ignored. It adapts all graphical applications
and device drivers accordingly.

The patch also adjusts the users of the drivers_interactive packages,
assigning 64 MiB RAM and 1500 caps to the drivers subsystem, which is
sufficient for covering high resolutions at 32 bits per pixel and to
accommodate multi-component USB HID input stacks.

Fixes #3784
2020-06-29 14:22:29 +02:00

237 lines
7.8 KiB
Plaintext

if {[have_spec imx6q_sabrelite] ||
[have_spec imx7d_sabre] ||
([get_cmd_switch --autopilot] && [have_spec linux]) ||
([get_cmd_switch --autopilot] && [have_include "power_on/qemu"])} {
puts "Run script does not support this platform."
exit 0
}
create_boot_directory
import_from_depot [depot_user]/src/[base_src] \
[depot_user]/pkg/[drivers_interactive_pkg] \
[depot_user]/src/rom_filter \
[depot_user]/src/report_rom \
[depot_user]/src/global_keys_handler \
[depot_user]/src/nitpicker \
[depot_user]/src/nit_focus \
[depot_user]/src/demo \
[depot_user]/src/init
build { app/status_bar test/nitpicker }
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<start name="timer">
<resource name="RAM" quantum="1M"/>
<provides><service name="Timer"/></provides>
</start>
<start name="drivers" caps="1500">
<resource name="RAM" quantum="64M" constrain_phys="yes"/>
<binary name="init"/>
<route>
<service name="ROM" label="config"> <parent label="drivers.config"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<any-service> <parent/> </any-service>
</route>
<provides>
<service name="Input"/> <service name="Framebuffer"/>
</provides>
</start>
<start name="report_rom">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="no">
<policy label="status_bar -> focus" report="nitpicker -> focus"/>
<policy label="nitpicker_config -> xray" report="global_keys_handler -> xray"/>
<policy label="global_keys_handler -> hover" report="nitpicker -> hover"/>
<policy label="nit_focus -> clicked" report="nitpicker -> clicked"/>
<policy label="nitpicker -> focus" report="nit_focus -> focus"/>
</config>
</start>
<start name="nitpicker_config">
<binary name="rom_filter"/>
<resource name="RAM" quantum="1096K"/>
<provides><service name="ROM"/></provides>
<config>
<input name="xray_enabled" rom="xray" node="xray">
<attribute name="enabled" /> </input>
<output node="config">
<attribute name="focus" value="rom"/>
<inline>
<report focus="yes" xray="yes" hover="yes" keystate="yes"
clicked="yes"/>
<domain name="pointer" layer="1" origin="pointer"
content="client" label="no"/>
<domain name="panel" layer="2"
content="client" label="no" hover="always"/>
</inline>
<if>
<has_value input="xray_enabled" value="no" />
<then>
<inline>
<domain name="launchpad" layer="3"
content="client" label="no" hover="always" focus="click"
ypos="18" height="-18" />
<domain name="" layer="3"
content="client" label="no" hover="always" focus="click"
ypos="18" height="-18" />
</inline>
</then>
<else>
<inline>
<domain name="launchpad" layer="3" color="#dd0000"
content="tinted" label="yes" hover="focused" focus="click"
ypos="18" height="-18" />
<domain name="" layer="3" color="#55dd34"
content="tinted" label="yes" hover="focused" focus="click"
ypos="18" height="-18" />
</inline>
</else>
</if>
<inline>
<policy label_prefix="pointer" domain="pointer"/>
<policy label_prefix="status_bar" domain="panel"/>
<policy label_prefix="scout -> launchpad" domain="launchpad"/>
<default-policy domain=""/>
<global-key name="KEY_SCROLLLOCK" label="global_keys_handler -> input" />
<global-key name="KEY_F1" label="global_keys_handler -> input" />
<global-key name="KEY_F2" label="global_keys_handler -> input" />
</inline>
</output>
</config>
<route>
<service name="ROM" label="xray"> <child name="report_rom"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="global_keys_handler">
<resource name="RAM" quantum="1096K"/>
<config>
<bool name="xray" initial="no"/>
<press name="KEY_SCROLLLOCK" bool="xray" change="toggle"/>
<press name="KEY_F1" bool="xray" change="on"/>
<release name="KEY_F1" bool="xray" change="off"/>
<press name="KEY_F2" bool="xray" change="toggle"/>
<report name="xray" delay_ms="125">
<hovered domain="panel"/>
<bool name="xray"/>
</report>
</config>
<route>
<service name="Report"> <child name="report_rom"/> </service>
<service name="ROM" label="hover"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="nitpicker" caps="120">
<resource name="RAM" quantum="1216K"/>
<provides> <service name="Gui"/> </provides>
<route>
<service name="ROM" label="config">
<child name="nitpicker_config"/> </service>
<service name="ROM" label="focus">
<child name="report_rom"/> </service>
<service name="Report">
<child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="pointer">
<resource name="RAM" quantum="1096K"/>
<config/>
</start>
<start name="nit_focus">
<resource name="RAM" quantum="1M"/>
<config> <default-policy focus="yes"/> </config>
<route>
<service name="ROM" label="clicked"> <child name="report_rom"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="status_bar">
<resource name="RAM" quantum="1096K"/>
<route>
<service name="ROM" label="focus"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="scout" caps="10000">
<resource name="RAM" quantum="80M" />
</start>
</config>}
#
# Create launchpad configuration
#
set launchpad_config_fd [open "bin/launchpad.config" w]
puts $launchpad_config_fd {<config>
<launcher name="testnit" ram_quota="768K" caps="50"/>
<launcher name="scout" ram_quota="41M" caps="200"/>
<launcher name="launchpad" ram_quota="6M" caps="1000">
<configfile name="launchpad.config" />
</launcher>
<launcher name="nitlog" ram_quota="1M" caps="100"/>
<launcher name="liquid_fb" ram_quota="9M" caps="100">
<config resize_handle="on" />
</launcher>
<launcher name="nitpicker" ram_quota="1M" caps="100">
<config>
<domain name="" layer="3" conten="client" label="no" focus="click"/>
<default-policy domain="" />
</config>
</launcher>
</config>}
close $launchpad_config_fd
build_boot_image { status_bar testnit launchpad.config }
if {[get_cmd_switch --autopilot]} {
run_genode_until {\[init -> scout\] png is.*\n} 40
grep_output {(requests resources: )|(Error)}
# remove Error messages which are not fatal, mostly
unify_output {(?n)^.*platform_drv] Error:.*ACPI table information is wrong.*$} ""
unify_output {(?n)^.*platform_drv] Error: adjust size from.*$} ""
unify_output {(?n)^.*platform_drv] Error: IRQ-session creation failed.*$} ""
unify_output {(?n)^.*platform_drv] Error:.*platform_info.*$} ""
unify_output {(?n)^.*acpi_drv] Error:.*platform_info.*$} ""
unify_output {(?n)^.*ps2_drv] Error: no data available.*$} ""
unify_output {(?n)^.*ps2_drv] Error: failed to read from port.*$} ""
unify_output {(?n)^.*] Error: RAM preservation exceeds available memory.*$} ""
compare_output_to {}
} else {
run_genode_until forever
}