mirror of
https://github.com/genodelabs/genode.git
synced 2025-05-31 22:50:54 +00:00
sculpt: integrate intel_gpu_drv
* the GPU multiplexer now offers the platform service to the Intel framebuffer driver (driver_manager) * ajdusted drivers_managed-pc to hand out resources to the GPU driver * adjust quotas issue #4233
This commit is contained in:
parent
2fe70f111b
commit
c3e8c22a6d
@ -4,4 +4,5 @@ _/pkg/wifi
|
|||||||
_/src/rtc_drv
|
_/src/rtc_drv
|
||||||
_/src/ipxe_nic_drv
|
_/src/ipxe_nic_drv
|
||||||
_/src/nvme_drv
|
_/src/nvme_drv
|
||||||
|
_/src/intel_gpu_drv
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@
|
|||||||
<policy label_prefix="dynamic -> ahci_drv"> <pci class="AHCI"/> </policy>
|
<policy label_prefix="dynamic -> ahci_drv"> <pci class="AHCI"/> </policy>
|
||||||
<policy label_prefix="dynamic -> nvme_drv"> <pci class="NVME"/> </policy>
|
<policy label_prefix="dynamic -> nvme_drv"> <pci class="NVME"/> </policy>
|
||||||
<policy label_prefix="usb_drv"> <pci class="USB"/> </policy>
|
<policy label_prefix="usb_drv"> <pci class="USB"/> </policy>
|
||||||
<policy label_prefix="dynamic -> intel_fb_drv">
|
<policy label_prefix="dynamic -> intel_gpu_drv">
|
||||||
<pci class="VGA"/>
|
<pci class="VGA"/>
|
||||||
<pci bus="0" device="0" function="0"/>
|
<pci bus="0" device="0" function="0"/>
|
||||||
<pci class="ISABRIDGE"/>
|
<pci class="ISABRIDGE"/>
|
||||||
@ -244,7 +244,7 @@
|
|||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
<start name="dynamic" caps="1400">
|
<start name="dynamic" caps="2000">
|
||||||
<binary name="init"/>
|
<binary name="init"/>
|
||||||
<resource name="RAM" quantum="1G"/>
|
<resource name="RAM" quantum="1G"/>
|
||||||
<provides>
|
<provides>
|
||||||
|
@ -6,3 +6,4 @@ usb_session
|
|||||||
capture_session
|
capture_session
|
||||||
timer_session
|
timer_session
|
||||||
platform_session
|
platform_session
|
||||||
|
gpu_session
|
||||||
|
@ -240,8 +240,8 @@ install_config {
|
|||||||
</route>
|
</route>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
<start name="drivers" caps="3150" priority="-1" managing_system="yes">
|
<start name="drivers" caps="4000" priority="-1" managing_system="yes">
|
||||||
<resource name="RAM" quantum="128M"/>
|
<resource name="RAM" quantum="160M"/>
|
||||||
<resource name="CPU" quantum="40"/>
|
<resource name="CPU" quantum="40"/>
|
||||||
<binary name="init"/>
|
<binary name="init"/>
|
||||||
<route>
|
<route>
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include <block_session/block_session.h>
|
#include <block_session/block_session.h>
|
||||||
#include <rm_session/rm_session.h>
|
#include <rm_session/rm_session.h>
|
||||||
#include <capture_session/capture_session.h>
|
#include <capture_session/capture_session.h>
|
||||||
|
#include <gpu_session/gpu_session.h>
|
||||||
#include <io_mem_session/io_mem_session.h>
|
#include <io_mem_session/io_mem_session.h>
|
||||||
#include <io_port_session/io_port_session.h>
|
#include <io_port_session/io_port_session.h>
|
||||||
#include <timer_session/timer_session.h>
|
#include <timer_session/timer_session.h>
|
||||||
@ -31,6 +32,7 @@ namespace Driver_manager {
|
|||||||
struct Main;
|
struct Main;
|
||||||
struct Block_devices_generator;
|
struct Block_devices_generator;
|
||||||
struct Device_driver;
|
struct Device_driver;
|
||||||
|
struct Intel_gpu_driver;
|
||||||
struct Intel_fb_driver;
|
struct Intel_fb_driver;
|
||||||
struct Vesa_fb_driver;
|
struct Vesa_fb_driver;
|
||||||
struct Boot_fb_driver;
|
struct Boot_fb_driver;
|
||||||
@ -124,12 +126,40 @@ class Driver_manager::Device_driver : Noncopyable
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct Driver_manager::Intel_fb_driver : Device_driver
|
struct Driver_manager::Intel_gpu_driver : Device_driver
|
||||||
{
|
{
|
||||||
Version version { 0 };
|
Version version { 0 };
|
||||||
|
|
||||||
void generate_start_node(Xml_generator &xml) const override
|
void generate_start_node(Xml_generator &xml) const override
|
||||||
{
|
{
|
||||||
|
xml.node("start", [&] () {
|
||||||
|
_gen_common_start_node_content(xml, "intel_gpu_drv", "intel_gpu_drv",
|
||||||
|
Ram_quota{32*1024*1024}, Cap_quota{800},
|
||||||
|
Priority{0}, version);
|
||||||
|
xml.node("provides", [&] () {
|
||||||
|
xml.node("service", [&] () {
|
||||||
|
xml.attribute("name", Gpu::Session::service_name()); });
|
||||||
|
xml.node("service", [&] () {
|
||||||
|
xml.attribute("name", Platform::Session::service_name()); });
|
||||||
|
});
|
||||||
|
xml.node("route", [&] () {
|
||||||
|
_gen_default_parent_route(xml);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct Driver_manager::Intel_fb_driver : Device_driver
|
||||||
|
{
|
||||||
|
Intel_gpu_driver intel_gpu_driver { };
|
||||||
|
|
||||||
|
Version version { 0 };
|
||||||
|
|
||||||
|
void generate_start_node(Xml_generator &xml) const override
|
||||||
|
{
|
||||||
|
intel_gpu_driver.generate_start_node(xml);
|
||||||
|
|
||||||
xml.node("start", [&] () {
|
xml.node("start", [&] () {
|
||||||
_gen_common_start_node_content(xml, "intel_fb_drv", "intel_fb_drv",
|
_gen_common_start_node_content(xml, "intel_fb_drv", "intel_fb_drv",
|
||||||
Ram_quota{42*1024*1024}, Cap_quota{800},
|
Ram_quota{42*1024*1024}, Cap_quota{800},
|
||||||
@ -137,6 +167,12 @@ struct Driver_manager::Intel_fb_driver : Device_driver
|
|||||||
xml.node("heartbeat", [&] () { });
|
xml.node("heartbeat", [&] () { });
|
||||||
xml.node("route", [&] () {
|
xml.node("route", [&] () {
|
||||||
_gen_config_route(xml, "fb_drv.config");
|
_gen_config_route(xml, "fb_drv.config");
|
||||||
|
xml.node("service", [&] () {
|
||||||
|
xml.attribute("name", Platform::Session::service_name());
|
||||||
|
xml.node("child", [&] () {
|
||||||
|
xml.attribute("name", "intel_gpu_drv");
|
||||||
|
});
|
||||||
|
});
|
||||||
_gen_default_parent_route(xml);
|
_gen_default_parent_route(xml);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -369,9 +405,9 @@ struct Driver_manager::Main : private Block_devices_generator
|
|||||||
_env.ep(), *this, &Main::_handle_nvme_ns_update };
|
_env.ep(), *this, &Main::_handle_nvme_ns_update };
|
||||||
|
|
||||||
Signal_handler<Main> _dynamic_state_handler {
|
Signal_handler<Main> _dynamic_state_handler {
|
||||||
_env.ep(), *this, &Main::_handle_dyanmic_state };
|
_env.ep(), *this, &Main::_handle_dynamic_state };
|
||||||
|
|
||||||
void _handle_dyanmic_state();
|
void _handle_dynamic_state();
|
||||||
|
|
||||||
static void _gen_parent_service_xml(Xml_generator &xml, char const *name)
|
static void _gen_parent_service_xml(Xml_generator &xml, char const *name)
|
||||||
{
|
{
|
||||||
@ -728,7 +764,7 @@ void Driver_manager::Main::_generate_usb_drv_config(Reporter &usb_drv_config,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Driver_manager::Main::_handle_dyanmic_state()
|
void Driver_manager::Main::_handle_dynamic_state()
|
||||||
{
|
{
|
||||||
_dynamic_state.update();
|
_dynamic_state.update();
|
||||||
|
|
||||||
|
2
repos/os/recipes/src/intel_gpu_drv/content.mk
Normal file
2
repos/os/recipes/src/intel_gpu_drv/content.mk
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
SRC_DIR = src/drivers/gpu/intel
|
||||||
|
include $(GENODE_DIR)/repos/base/recipes/src/content.inc
|
1
repos/os/recipes/src/intel_gpu_drv/hash
Normal file
1
repos/os/recipes/src/intel_gpu_drv/hash
Normal file
@ -0,0 +1 @@
|
|||||||
|
2021-07-22 6e108df1d3dc811edacb047b765449a8da2f0726
|
5
repos/os/recipes/src/intel_gpu_drv/used_apis
Normal file
5
repos/os/recipes/src/intel_gpu_drv/used_apis
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
base
|
||||||
|
os
|
||||||
|
gpu_session
|
||||||
|
platform_session
|
||||||
|
timer_session
|
Loading…
x
Reference in New Issue
Block a user