1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 15:07:45 +00:00

Everywhere: Purge all support and usage of framebuffer devices

Long live the DisplayConnector object!
This commit is contained in:
Liav A 2022-04-30 15:27:42 +03:00 committed by Andreas Kling
parent aad968cc5e
commit e301af8352
25 changed files with 90 additions and 995 deletions

View file

@ -231,7 +231,7 @@ bool Screen::open_device()
switch (info.mode) {
case ScreenLayout::Screen::Mode::Device: {
m_backend = make<HardwareScreenBackend>(info.device.value(), false);
m_backend = make<HardwareScreenBackend>(info.device.value());
auto return_value = m_backend->open();
if (return_value.is_error()) {
dbgln("Screen #{}: Failed to open backend: {}", index(), return_value.error());
@ -241,17 +241,6 @@ bool Screen::open_device()
set_resolution(true);
return true;
}
case ScreenLayout::Screen::Mode::DisplayConnectorDevice: {
m_backend = make<HardwareScreenBackend>(info.device.value(), true);
auto return_value = m_backend->open();
if (return_value.is_error()) {
dbgln("Screen #{}: Failed to open display connector backend: {}", index(), return_value.error());
return false;
}
set_resolution(true);
return true;
}
case ScreenLayout::Screen::Mode::Virtual: {
m_backend = make<VirtualScreenBackend>();
// Virtual device open should never fail.
@ -335,9 +324,21 @@ bool Screen::set_resolution(bool initial)
ErrorOr<void> return_value = Error::from_errno(EINVAL);
{
// FIXME: Add multihead support for one framebuffer
FBHeadResolution physical_resolution { 0, 0, info.resolution.width(), info.resolution.height() };
return_value = m_backend->set_head_resolution(physical_resolution);
GraphicsHeadModeSetting requested_mode_setting;
memset(&requested_mode_setting, 0, sizeof(GraphicsHeadModeSetting));
requested_mode_setting.horizontal_stride = info.resolution.width() * 4;
requested_mode_setting.pixel_clock_in_khz = 0;
requested_mode_setting.horizontal_active = info.resolution.width();
requested_mode_setting.horizontal_front_porch_pixels = 0;
requested_mode_setting.horizontal_sync_time_pixels = 0;
requested_mode_setting.horizontal_blank_pixels = 0;
requested_mode_setting.vertical_active = info.resolution.height();
requested_mode_setting.vertical_front_porch_lines = 0;
requested_mode_setting.vertical_sync_time_lines = 0;
requested_mode_setting.vertical_blank_lines = 0;
requested_mode_setting.horizontal_offset = 0;
requested_mode_setting.vertical_offset = 0;
return_value = m_backend->set_head_mode_setting(requested_mode_setting);
}
dbgln_if(WSSCREEN_DEBUG, "Screen #{}: fb_set_resolution() - success", index());
@ -347,8 +348,8 @@ bool Screen::set_resolution(bool initial)
TRY(m_backend->unmap_framebuffer());
TRY(m_backend->map_framebuffer());
}
auto properties = TRY(m_backend->get_head_properties());
info.resolution = { properties.width, properties.height };
auto mode_setting = TRY(m_backend->get_head_mode_setting());
info.resolution = { mode_setting.horizontal_active, mode_setting.vertical_active };
update_virtual_rect();