sculpt: add Gpu service support

Fixes #4263
This commit is contained in:
Alexander Boettcher 2021-09-21 14:26:46 +02:00 committed by Norman Feske
parent 2d2ef2a763
commit 0c2edce8ac
10 changed files with 22 additions and 5 deletions

View File

@ -35,6 +35,9 @@
<service name="Rtc">
<default-policy> <child name="rtc_drv"/> </default-policy> </service>
<service name="Gpu">
<default-policy> <child name="dynamic"/> </default-policy> </service>
<start name="report_rom">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
@ -244,12 +247,13 @@
</route>
</start>
<start name="dynamic" caps="2000">
<start name="dynamic" caps="2600">
<binary name="init"/>
<resource name="RAM" quantum="1G"/>
<provides>
<service name="Framebuffer"/>
<service name="Block"/>
<service name="Gpu"/>
</provides>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>

View File

@ -15,3 +15,4 @@ rtc_session
input_session
event_session
capture_session
gpu_session

View File

@ -240,8 +240,8 @@ install_config {
</route>
</start>
<start name="drivers" caps="4000" priority="-1" managing_system="yes">
<resource name="RAM" quantum="160M"/>
<start name="drivers" caps="4600" priority="-1" managing_system="yes">
<resource name="RAM" quantum="200M"/>
<resource name="CPU" quantum="40"/>
<binary name="init"/>
<route>
@ -273,6 +273,7 @@ install_config {
<service name="Usb"/>
<service name="Platform"/>
<service name="Rtc"/>
<service name="Gpu"/>
</provides>
</start>
@ -474,6 +475,7 @@ install_config {
<service name="Gui" label="lock_screen">
<child name="nitpicker" label="lock_screen"/> </service>
<service name="Gui"> <child name="nitpicker"/> </service>
<service name="Gpu"> <child name="drivers"/> </service>
<service name="Timer"> <child name="timer"/> </service>
<service name="Report" label_suffix="-> shape"> <child name="pointer"/> </service>
<service name="Report" label="inspect -> clipboard">

View File

@ -320,6 +320,7 @@ void Child::gen_start_node(Xml_generator &xml,
_gen_provides_sub_node(xml, service, "log", "LOG");
_gen_provides_sub_node(xml, service, "nic", "Nic");
_gen_provides_sub_node(xml, service, "gui", "Gui");
_gen_provides_sub_node(xml, service, "gpu", "Gpu");
_gen_provides_sub_node(xml, service, "report", "Report");
_gen_provides_sub_node(xml, service, "rom", "ROM");
_gen_provides_sub_node(xml, service, "terminal", "Terminal");

View File

@ -481,6 +481,7 @@ void Depot_deploy::Child::gen_start_node(Xml_generator &xml, Xml_node common,
_gen_provides_sub_node(xml, service, "log", "LOG");
_gen_provides_sub_node(xml, service, "nic", "Nic");
_gen_provides_sub_node(xml, service, "gui", "Gui");
_gen_provides_sub_node(xml, service, "gpu", "Gpu");
_gen_provides_sub_node(xml, service, "report", "Report");
_gen_provides_sub_node(xml, service, "rom", "ROM");
_gen_provides_sub_node(xml, service, "terminal", "Terminal");

View File

@ -132,9 +132,11 @@ struct Driver_manager::Intel_gpu_driver : Device_driver
void generate_start_node(Xml_generator &xml) const override
{
_gen_forwarded_service<Gpu::Session>(xml, "intel_gpu_drv");
xml.node("start", [&] () {
_gen_common_start_node_content(xml, "intel_gpu_drv", "intel_gpu_drv",
Ram_quota{32*1024*1024}, Cap_quota{800},
Ram_quota{64*1024*1024}, Cap_quota{1400},
Priority{0}, version);
xml.node("provides", [&] () {
xml.node("service", [&] () {

View File

@ -23,6 +23,7 @@
#include <io_port_session/io_port_session.h>
#include <event_session/event_session.h>
#include <capture_session/capture_session.h>
#include <gpu_session/gpu_session.h>
/* included from depot_deploy tool */
#include <children.h>
@ -1732,6 +1733,7 @@ void Sculpt::Main::_generate_runtime_config(Xml_generator &xml) const
gen_parent_service<Irq_session>(xml);
gen_parent_service<Event::Session>(xml);
gen_parent_service<Capture::Session>(xml);
gen_parent_service<Gpu::Session>(xml);
});
xml.node("affinity-space", [&] () {

View File

@ -36,6 +36,7 @@ struct Sculpt::Route : List_model<Route>::Element
case Service::Type::FILE_SYSTEM: return "file_system";
case Service::Type::NIC: return "nic";
case Service::Type::GUI: return "gui";
case Service::Type::GPU: return "gpu";
case Service::Type::RM: return "rm";
case Service::Type::IO_MEM: return "io_mem";
case Service::Type::IO_PORT: return "io_port";
@ -65,6 +66,7 @@ struct Sculpt::Route : List_model<Route>::Element
case Service::Type::FILE_SYSTEM: return "File system";
case Service::Type::NIC: return "Network";
case Service::Type::GUI: return "GUI";
case Service::Type::GPU: return "GPU";
case Service::Type::RM: return "Region maps";
case Service::Type::IO_MEM: return "Direct memory-mapped I/O";
case Service::Type::IO_PORT: return "Direct port I/O";

View File

@ -329,6 +329,7 @@ class Sculpt::Runtime_config
_backdrop { _r, Type::GUI, "desktop background", "backdrop" },
_lockscreen{ _r, Type::GUI, "desktop lock screen", "lock_screen" },
_nitpicker { _r, Type::GUI, "system GUI server" },
_gpu { _r, Type::GPU, "system GPU" },
_lz_event { _r, Type::EVENT, "management GUI events", "leitzentrale" },
_event { _r, Type::EVENT, "system input events", "global" },
_lz_capture{ _r, Type::CAPTURE, "management GUI", "leitzentrale" },

View File

@ -25,7 +25,7 @@ struct Sculpt::Service
typedef String<32> Info;
enum class Type {
AUDIO_IN, AUDIO_OUT, BLOCK, EVENT, CAPTURE, FILE_SYSTEM, NIC, GUI,
AUDIO_IN, AUDIO_OUT, BLOCK, EVENT, CAPTURE, FILE_SYSTEM, NIC, GUI, GPU,
RM, IO_MEM, IO_PORT, IRQ, REPORT, ROM, TERMINAL, TRACE, USB, RTC,
PLATFORM, VM, PD, UNDEFINED };
@ -51,6 +51,7 @@ struct Sculpt::Service
case Type::FILE_SYSTEM: return "File_system";
case Type::NIC: return "Nic";
case Type::GUI: return "Gui";
case Type::GPU: return "Gpu";
case Type::RM: return "RM";
case Type::IO_MEM: return "IO_MEM";
case Type::IO_PORT: return "IO_PORT";