Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blog: Add GSoC'24 UEFI GOP, Part II post #441

Merged
merged 1 commit into from
Jul 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions content/blog/2024-07-10-gsoc-uefi-gop.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
title: "GSoC'24: UEFI Graphics Output Protocol Support in Unikraft, Part II"
description: |
This is the second post in a series of posts where I talk about my progress with the project.
publishedDate: 2024-07-10
image: /images/unikraft-gsoc24.png
authors:
- Sriprad Potukuchi
tags:
- gsoc
- gsoc24
- uefi
- booting
---

## Project Overview

The widely available and standardized [UEFI Graphics Output Protocol](https://uefi.org/specs/UEFI/2.10/12_Protocols_Console_Support.html#efi-graphics-output-protocol) (GOP) interface is an excellent alternative to VGA or serial port consoles for printing logs to the screen.

This project aims to implement a UEFI GOP based console.
For more information, check out [Part I](https://unikraft.org/blog/2024-06-18-gsoc-uefi-gop) of this series.

## Progress
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Progress
## Progress


- Using a placeholder [font](https://github.com/dhepper/font8x8), it is now possible to print null-terminated strings to the screens.
<Image
src="/images/uefi-gop-first-text-render.png"
/>

- It is also possible to scale the font in both the axes independently
- No scaling
<Image
src="/images/uefi-gop-scaled-text-1.png"
/>
- Scaled Y-axis
<Image
src="/images/uefi-gop-scaled-text-2.png"
/>

- I've also implemented scrolling. When all the lines are filled and a new log needs to be printed, the current logs on the screen are scrolled up (using `memcpy`)
<Image
src="/images/uefi-gop-before-scrolling.png"
/>
<Image
src="/images/uefi-gop-after-scrolling.png"
/>

Right now, scrolling moves all the framebuffer data in place.
Reads and writes in framebuffer memory are slower because the video adapter actually syncs the framebuffer with the screen.
This needs to be optimized!

## Next Steps
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Next Steps
## Next Steps


- Finalize a font!
- Optimize scrolling (by maintaining an additional buffer)
- Look into [this PR](https://github.com/unikraft/unikraft/pull/1464), which adds a generic console interface.

## Acknowledgement
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Acknowledgement
## Acknowledgement


I would like to thank all the great Unikraft folk for being a great community!
Binary file added public/images/uefi-gop-after-scrolling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-before-scrolling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-first-text-render.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-scaled-text-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/uefi-gop-scaled-text-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading