summaryrefslogtreecommitdiff
path: root/Kernel/Graphics
AgeCommit message (Collapse)Author
2021-06-04Kernel: Use IO ports instad of MMIO with Bochs graphics in VirtualBoxLiav A
This is needed for VirtualBox, because it doesn't support controlling the device with MMIO. Fixes #7558.
2021-06-04Kernel/Graphics: Add a proper method to check if Intel GPU is supportedLiav A
2021-06-03Kernel: Support new lines when doing critical printingLiav A
If we are printing strings in the critical path, handling new lines require us to break abstraction a bit to print new lines. Fixes #7562.
2021-06-03Kernel/Graphics: Remove unused overloaded write methods of ConsoleLiav A
If we happen to print a string, we could use a StringView instead. For now, let's remove them entirely.
2021-05-27Kernel/Graphics: Remove unnecessary derived FramebufferDevice classesLiav A
It seems like overly-specific classes were written for no good reason. Instead of making each adapter to have its own unique FramebufferDevice class, let's generalize everything to keep implementation more consistent.
2021-05-21Kernel/Graphics: Indicate initialization failed if no device was foundLiav A
2021-05-21Kernel: Fix type, dectivate_writes => deactivate_writesLiav A
2021-05-21Kernel/Graphics: Choose VMObject considering enabled state when mmapingLiav A
When mmaping a Framebuffer from userspace, we need to check whether the framebuffer device is actually enabled (e.g. graphical mode is being used) or a textual VirtualConsole is active. Considering the above state, we mmap the right VMObject to ensure we don't have graphical artifacts if we change the resolution from DisplaySettings, changed to textual mode and after the resolution change was reverted, we will see the Desktop reappearing even though we are still in textual mode.
2021-05-21Kernel: Fix framebuffer resolution modesetting after bootLiav A
If we tried to change the resolution before of this patch, we triggered a kernel crash due to mmaping the framebuffer device again. Therefore, on mmaping of the framebuffer device, we create an entire new set of VMObjects and Regions for the new settings. Then, when we change the resolution, the framebuffersconsole needs to be updated with the new resolution and also to be refreshed with the new settings. To ensure we handle both shrinking of the resolution and growth of it, we only copy the right amount of available data from the cells Region.
2021-05-17Everywhere: Fix a bunch of typosLinus Groh
2021-05-17Kernel/Graphics: Be more consistent about arguments passingLiav A
This fixes a bug that was reported on this discord server by @ElectrodeYT - due to the confusion of passing arguments in different orders, we messed up and triggered a page fault due to faulty sizes.
2021-05-16Kernel/Graphics: Round size value when mapping real framebufferLiav A
2021-05-16Kernel/Graphics: Assign console to be from VGACompatibleAdapter alwaysLiav A
If we create a VGACompatibleAdapter object with a preset framebuffer, Always assign the console so we can use it. This is useful for modesetting done by a Multiboot loader, like GRUB.
2021-05-16Kernel/Graphics: Fix a method to be more accurate about its nameLiav A
2021-05-16Kernel/Graphics + SystemServer: Support text mode properlyLiav A
As we removed the support of VBE modesetting that was done by GRUB early on boot, we need to determine if we can modeset the resolution with our drivers, and if not, we should enable text mode and ensure that SystemServer knows about it too. Also, SystemServer should first check if there's a framebuffer device node, which is an indication that text mode was not even if it was requested. Then, if it doesn't find it, it should check what boot_mode argument the user specified (in case it's self-test). This way if we try to use bochs-display device (which is not VGA compatible) and request a text mode, it will not honor the request and will continue with graphical mode. Also try to print critical messages with mininum memory allocations possible. In LibVT, We make the implementation flexible for kernel-specific methods that are implemented in ConsoleImpl class.
2021-05-16Kernel/Graphics: Add basic support for Intel native acceleratorLiav A
We simply modeset the resolution after determining the preferred resolution after getting the EDID from the attached display.
2021-05-16Kernel: Introduce a new graphics subsystemLiav A
This new subsystem is replacing the old code that was used to create device nodes of framebuffer devices in /dev. This subsystem includes for now 3 roles: 1. GraphicsManagement singleton object that is used in the boot process to enumerate and initialize display devices. 2. GraphicsDevice(s) that are used to control the display adapter. 3. FramebufferDevice(s) that are used to control the device node in /dev. For now, we support the Bochs display adapter and any other generic VGA compatible adapter that was configured by the boot loader to a known and fixed resolution. Two improvements in the Bochs display adapter code are that we can support native bochs-display device (this device doesn't expose any VGA capabilities) and also that we use the MMIO region, to configure the device, instead of setting IO ports for such tasks.