id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,field_blocks,field_dependson,field_seealso 520,Driver for VESA-compatible graphics adapter,Vojtech Horky,,"Implement a driver for a VESA-compatible graphics card pluggable into the HelenOS graphics stack. Details:: HelenOS has its own compositing server but it currently depends on kernel to properly set the mode of the graphics card. Effectively this means that the configuration of the resolution is done at compile time (through a configuration menu option) and there is no way to e.g. change the resolution at run-time. [[br]][[br]] The goal of this ticket is to implement a driver for a graphics card that would be pluggable to the graphics stack and to the driver framework implemented in HelenOS and that would allow the most common operations with the graphics card. Because there is no graphics driver currently implemented in HelenOS, it is reasonable to create a rather simple variant of the driver that would not use any advanced vendor-dependent features but that would only use the VESA BIOS extensions to switch the resolution. The implemented driver shall support following features: Detect possible resolutions and inform the graphics stack about them. Provide an user interface to change the resolution, color depth and possibly refresh rate. Implement the graphics mode-setting. Detection of a second monitor would be a very nice feature. [[br]][[br]] Since the protected-mode interface of the VESA BIOS is rather complicated and generally unreliable. the preferred way is to run the real-mode VESA BIOS code in a sandbox environment (e.g. using an x86 emulator). This is a common approach in the majority of operating systems and provides the best degree of compatibility. What Gains and Benefits will this bring?:: The current VESA BIOS mode setting code in HelenOS is a very minimalistic and involves a boot-time jump to real mode and a kernel driver. Creating a full-fledged graphics driver in user space would allow to remove the kernel driver and reduce the number of relict drivers still present in kernel. It is expected that the user space driver would provide extra features (run-time detection of possible resolution, etc.) that are not available in the kernel driver and that would improve the experience when using HelenOS GUI. Difficulty:: Medium Required skills:: A successful applicant will have good skills of programming in the C language and the ability to survive in a non-standard non-POSIX environment. Previous experience with driver or graphics stack implementation would be beneficial. Documentation:: * [wiki:DeveloperDocs/Peripherals#Graphics Developer documentation] * [wiki:UsersGuide/GUI GUI user's guide] * [http://lists.modry.cz/cgi-bin/private/helenos-devel/2012-August/008625.html Announcement of the graphics stack at HelenOS mailing list] * [https://code.launchpad.net/~petr-koupy/helenos/gui lp:~petr-koupy/helenos/gui] (original GUI branch) Possible mentors:: HelenOS Core Team, Martin Decky",enhancement,new,major,,helenos/gui,mainline,,"gsoc13, gsoc14, gsoc15, ui",,,,